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


#if 0 /* expanded by -frewrite-includes */
#include <iostream>
#endif /* expanded by -frewrite-includes */
# 31 "/usr/src/contrib/googletest/googlemock/src/gmock_main.cc"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 1 3
// -*- C++ -*-
//===--------------------------- iostream ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_IOSTREAM
#define _LIBCPP_IOSTREAM

/*
    iostream synopsis

#include <ios>
#include <istream>
#include <ostream>
#include <streambuf>

namespace std {

extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 1 3
// -*- C++ -*-
//===--------------------------- __config ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CONFIG
#define _LIBCPP_CONFIG

#if 0 /* expanded by -frewrite-includes */
#include <__config_site>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config_site" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CONFIG_SITE
#define _LIBCPP_CONFIG_SITE

/* #undef _LIBCPP_ABI_VERSION */
/* #undef _LIBCPP_ABI_UNSTABLE */
/* #undef _LIBCPP_ABI_FORCE_ITANIUM */
/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
/* #undef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT */
/* #undef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE */
/* #undef _LIBCPP_HAS_NO_STDIN */
/* #undef _LIBCPP_HAS_NO_STDOUT */
/* #undef _LIBCPP_HAS_NO_THREADS */
/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
/* #undef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS */
/* #undef _LIBCPP_HAS_MUSL_LIBC */
/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
/* #undef _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL */
/* #undef _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS */
#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
/* #undef _LIBCPP_NO_VCRUNTIME */
/* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */
/* #undef _LIBCPP_ABI_NAMESPACE */
/* #undef _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY */
/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */
/* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */
/* #undef _LIBCPP_HAS_NO_LOCALIZATION */
/* #undef _LIBCPP_HAS_NO_INCOMPLETE_FORMAT */
/* #undef _LIBCPP_HAS_NO_INCOMPLETE_RANGES */



#endif // _LIBCPP_CONFIG_SITE
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config_site" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 2 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER) && !defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#  endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __cplusplus

#ifdef __GNUC__
#  define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__)
// The _GNUC_VER_NEW macro better represents the new GCC versioning scheme
// introduced in GCC 5.0.
#  define _GNUC_VER_NEW (_GNUC_VER * 10 + __GNUC_PATCHLEVEL__)
#else
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _GNUC_VER 0
#  define _GNUC_VER_NEW 0
#endif
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_VERSION 13000

#ifndef _LIBCPP_ABI_VERSION
#  define _LIBCPP_ABI_VERSION 1
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __STDC_HOSTED__ == 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FREESTANDING
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_STD_VER
#if 0 /* disabled by -frewrite-includes */
#  if  __cplusplus <= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_STD_VER 11
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif __cplusplus <= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_STD_VER 14
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif __cplusplus <= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_STD_VER 17
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif __cplusplus <= 202002L
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_STD_VER 20
#  else
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_STD_VER 21  // current year, or date of c++2b ratification
#  endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // _LIBCPP_STD_VER
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__ELF__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_OBJECT_FORMAT_ELF   1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__MACH__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_OBJECT_FORMAT_MACHO 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_OBJECT_FORMAT_COFF  1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__wasm__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_OBJECT_FORMAT_WASM  1
#else
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
   // ... add new file formats here ...
#endif
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// Change short string representation so that string data starts at offset 0,
// improving its alignment in some cases.
#  define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
// Fix deque iterator type in order to support incomplete types.
#  define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE
// Fix undefined behavior in how std::list stores its linked nodes.
#  define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB
// Fix undefined behavior in  how __tree stores its end and parent nodes.
#  define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB
// Fix undefined behavior in how __hash_table stores its pointer types.
#  define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB
#  define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB
#  define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE
// Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr
// provided under the alternate keyword __nullptr, which changes the mangling
// of nullptr_t. This option is ABI incompatible with GCC in C++03 mode.
#  define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR
// Define a key function for `bad_function_call` in the library, to centralize
// its vtable and typeinfo to libc++ rather than having all other libraries
// using that class define their own copies.
#  define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION
// Enable optimized version of __do_get_(un)signed which avoids redundant copies.
#  define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
// In C++20 and later, don't derive std::plus from std::binary_function,
// nor std::negate from std::unary_function.
#  define _LIBCPP_ABI_NO_BINDER_BASES
// Give reverse_iterator<T> one data member of type T, not two.
// Also, in C++17 and later, don't derive iterator types from std::iterator.
#  define _LIBCPP_ABI_NO_ITERATOR_BASES
// Use the smallest possible integer type to represent the index of the variant.
// Previously libc++ used "unsigned int" exclusively.
#  define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION
// Unstable attempt to provide a more optimized std::function
#  define _LIBCPP_ABI_OPTIMIZED_FUNCTION
// All the regex constants must be distinct and nonzero.
#  define _LIBCPP_ABI_REGEX_CONSTANTS_NONZERO
// Use raw pointers, not wrapped ones, for std::span's iterator type.
#  define _LIBCPP_ABI_SPAN_POINTER_ITERATORS
// Re-worked external template instantiations for std::string with a focus on
// performance and fast-path inlining.
#  define _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION
// Enable clang::trivial_abi on std::unique_ptr.
#  define _LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI
// Enable clang::trivial_abi on std::shared_ptr and std::weak_ptr
#  define _LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_ABI_VERSION == 1
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// Enable compiling copies of now inline methods into the dylib to support
// applications compiled against older libraries. This is unnecessary with
// COFF dllexport semantics, since dllexport forces a non-inline definition
// of inline functions to be emitted anyway. Our own non-inline copy would
// conflict with the dllexport-emitted copy, so we disable it.
#    define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS
#  endif
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// Feature macros for disabling pre ABI v1 features. All of these options
// are deprecated.
#if 0 /* disabled by -frewrite-includes */
#  if defined(__FreeBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR
#  endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// Enable additional explicit instantiations of iostreams components. This
// reduces the number of weak definitions generated in programs that use
// iostreams by providing a single strong definition in the shared library.
# define _LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1
#endif
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y
#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y)

#ifndef _LIBCPP_ABI_NAMESPACE
# define _LIBCPP_ABI_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
#endif
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_CXX03_LANG
#endif
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_attribute
#define __has_attribute(__x) 0
#endif
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_builtin
#define __has_builtin(__x) 0
#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_extension
#define __has_extension(__x) 0
#endif
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_feature
#define __has_feature(__x) 0
#endif
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_cpp_attribute
#define __has_cpp_attribute(__x) 0
#endif
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// '__is_identifier' returns '0' if '__x' is a reserved identifier provided by
// the compiler and '1' otherwise.
#ifndef __is_identifier
#define __is_identifier(__x) 1
#endif
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __has_declspec_attribute
#define __has_declspec_attribute(__x) 0
#endif
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define __has_keyword(__x) !(__is_identifier(__x))

#ifndef __has_include
#define __has_include(...) 0
#endif
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__apple_build_version__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_COMPILER_CLANG_BASED
#  define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_COMPILER_CLANG_BASED
#  define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_COMPILER_GCC
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_COMPILER_MSVC
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__IBMCPP__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_COMPILER_IBM
#endif
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_GCC) && __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#error "libc++ does not support using GCC with C++03. Please enable C++11"
#endif
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// FIXME: ABI detection should be done via compiler builtin macros. This
// is just a placeholder until Clang implements such macros. For now assume
// that Windows compilers pretending to be MSVC++ target the Microsoft ABI,
// and allow the user to explicitly specify the ABI to handle cases where this
// heuristic falls short.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_ABI_FORCE_ITANIUM)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_ABI_ITANIUM
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_ABI_FORCE_MICROSOFT)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_ABI_MICROSOFT
#else
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(_WIN32) && defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_ABI_MICROSOFT
#  else
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_ABI_ITANIUM
#  endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_ABI_VCRUNTIME
#endif
# 229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Need to detect which libc we're using if we're on Linux.
#if 0 /* disabled by -frewrite-includes */
#if defined(__linux__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* expanded by -frewrite-includes */
#  include <features.h>
#endif /* expanded by -frewrite-includes */
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(__GLIBC_PREREQ)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
#  else
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_GLIBC_PREREQ(a, b) 0
#  endif // defined(__GLIBC_PREREQ)
# 238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // defined(__linux__)
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __LITTLE_ENDIAN__
#if 0 /* disabled by -frewrite-includes */
#  if __LITTLE_ENDIAN__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_LITTLE_ENDIAN
#  endif  // __LITTLE_ENDIAN__
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __LITTLE_ENDIAN__
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __BIG_ENDIAN__
#if 0 /* disabled by -frewrite-includes */
#  if __BIG_ENDIAN__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  endif  // __BIG_ENDIAN__
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __BIG_ENDIAN__
# 251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __BYTE_ORDER__
#if 0 /* disabled by -frewrite-includes */
#  if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_LITTLE_ENDIAN
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 256 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
# 258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __BYTE_ORDER__
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __FreeBSD__
#if 0 /* expanded by -frewrite-includes */
#  include <sys/endian.h>
#endif /* expanded by -frewrite-includes */
# 261 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2002 Thomas Moestl <tmm@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_ENDIAN_H_
#define _SYS_ENDIAN_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1991, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Berkeley Software Design, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
 * $FreeBSD$
 */

#ifndef	_SYS_CDEFS_H_
#define	_SYS_CDEFS_H_

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) && defined(_STANDALONE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#error "_KERNEL and _STANDALONE are mutually exclusive"
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Testing against Clang-specific extensions.
 */
#ifndef	__has_attribute
#define	__has_attribute(x)	0
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef	__has_extension
#define	__has_extension		__has_feature
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef	__has_feature
#define	__has_feature(x)	0
#endif
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef	__has_include
#define	__has_include(x)	0
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef	__has_builtin
#define	__has_builtin(x)	0
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__BEGIN_DECLS	extern "C" {
#define	__END_DECLS	}
#else
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__BEGIN_DECLS
#define	__END_DECLS
#endif
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * This code has been put in place to help reduce the addition of
 * compiler specific defines in FreeBSD code.  It helps to aid in
 * having a compiler-agnostic source tree.
 */

#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC__ >= 3
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUCLIKE_ASM 3
#define	__GNUCLIKE_MATH_BUILTIN_CONSTANTS
#else
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUCLIKE_ASM 2
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUCLIKE___TYPEOF 1
#define	__GNUCLIKE___OFFSETOF 1
#define	__GNUCLIKE___SECTION 1

#define	__GNUCLIKE_CTOR_SECTION_HANDLING 1

#define	__GNUCLIKE_BUILTIN_CONSTANT_P 1

#if 0 /* disabled by -frewrite-includes */
#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUCLIKE_BUILTIN_VARARGS 1
#define	__GNUCLIKE_BUILTIN_STDARG 1
#define	__GNUCLIKE_BUILTIN_VAALIST 1
#endif
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#define	__GNUC_VA_LIST_COMPATIBILITY 1

/*
 * Compiler memory barriers, specific to gcc and clang.
 */
#define	__compiler_membar()	__asm __volatile(" " : : : "memory")

#define	__GNUCLIKE_BUILTIN_NEXT_ARG 1
#define	__GNUCLIKE_MATH_BUILTIN_RELOPS

#define	__GNUCLIKE_BUILTIN_MEMCPY 1

/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
#define	__CC_SUPPORTS_INLINE 1
#define	__CC_SUPPORTS___INLINE 1
#define	__CC_SUPPORTS___INLINE__ 1

#define	__CC_SUPPORTS___FUNC__ 1
#define	__CC_SUPPORTS_WARNING 1

#define	__CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */

#define	__CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1

#endif /* __GNUC__ */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Macro to test if we're using a specific version of gcc or later.
 */
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUC_PREREQ__(ma, mi)	\
	(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
#else
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__GNUC_PREREQ__(ma, mi)	0
#endif
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
 * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
 * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
 * mode -- there must be no spaces between its arguments, and for nested
 * __CONCAT's, all the __CONCAT's must be at the left.  __CONCAT can also
 * concatenate double-quoted strings produced by the __STRING macro, but
 * this only works with ANSI C.
 *
 * __XSTRING is like __STRING, but it expands any macros in its argument
 * first.  It is only available with ANSI C.
 */
#if 0 /* disabled by -frewrite-includes */
#if defined(__STDC__) || defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__P(protos)	protos		/* full-blown ANSI C */
#define	__CONCAT1(x,y)	x ## y
#define	__CONCAT(x,y)	__CONCAT1(x,y)
#define	__STRING(x)	#x		/* stringify without expanding x */
#define	__XSTRING(x)	__STRING(x)	/* expand x, then stringify */

#define	__const		const		/* define reserved names to standard */
#define	__signed	signed
#define	__volatile	volatile
#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__inline	inline		/* convert to C++ keyword */
#else
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !(defined(__CC_SUPPORTS___INLINE))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__inline			/* delete GCC keyword */
#endif /* ! __CC_SUPPORTS___INLINE */
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif /* !__cplusplus */
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#else	/* !(__STDC__ || __cplusplus) */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__P(protos)	()		/* traditional C preprocessor */
#define	__CONCAT(x,y)	x/**/y
#define	__STRING(x)	"x"

#if 0 /* disabled by -frewrite-includes */
#if !defined(__CC_SUPPORTS___INLINE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__const				/* delete pseudo-ANSI C keywords */
#define	__inline
#define	__signed
#define	__volatile
/*
 * In non-ANSI C environments, new programs will want ANSI-only C keywords
 * deleted from the program and old programs will want them left alone.
 * When using a compiler other than gcc, programs using the ANSI C keywords
 * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
 * When using "gcc -traditional", we assume that this is the intent; if
 * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
 */
#ifndef	NO_ANSI_KEYWORDS
#define	const				/* delete ANSI C keywords */
#define	inline
#define	signed
#define	volatile
#endif	/* !NO_ANSI_KEYWORDS */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif	/* !__CC_SUPPORTS___INLINE */
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif	/* !(__STDC__ || __cplusplus) */
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Compiler-dependent macros to help declare dead (non-returning) and
 * pure (no side effects) functions, and unused variables.  They are
 * null except for versions of gcc that are known to support the features
 * properly (old versions of gcc-2 supported the dead and pure features
 * in a different (wrong) way).  If we do not provide an implementation
 * for a given compiler, let the compile fail if it is told to use
 * a feature that we cannot live without.
 */
#define	__weak_symbol	__attribute__((__weak__))
#if 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ__(2, 5)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__dead2
#define	__pure2
#define	__unused
#endif
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__dead2		__attribute__((__noreturn__))
#define	__pure2		__attribute__((__const__))
#define	__unused
/* XXX Find out what to do for __packed, __aligned and __section */
#endif
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(2, 7)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__dead2		__attribute__((__noreturn__))
#define	__pure2		__attribute__((__const__))
#define	__unused	__attribute__((__unused__))
#define	__used		__attribute__((__used__))
#define	__packed	__attribute__((__packed__))
#define	__aligned(x)	__attribute__((__aligned__(x)))
#define	__section(x)	__attribute__((__section__(x)))
#endif
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__alloc_size(x)	__attribute__((__alloc_size__(x)))
#define	__alloc_size2(n, x)	__attribute__((__alloc_size__(n, x)))
#else
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__alloc_size(x)
#define	__alloc_size2(n, x)
#endif
# 230 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 231 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__alloc_align(x)	__attribute__((__alloc_align__(x)))
#else
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__alloc_align(x)
#endif
# 235 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ__(2, 95)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 237 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__alignof(x)	__offsetof(struct { char __a; x __b; }, __b)
#endif
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Keywords added in C11.
 */

#if 0 /* disabled by -frewrite-includes */
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !__has_extension(c_alignas)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
    __has_extension(cxx_alignas)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 249 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Alignas(x)		alignas(x)
#else
# 251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/* XXX: Only emulates _Alignas(constant-expression); not _Alignas(type-name). */
#define	_Alignas(x)		__aligned(x)
#endif
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 257 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Alignof(x)		alignof(x)
#else
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Alignof(x)		__alignof(x)
#endif
# 261 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cplusplus) && !__has_extension(c_atomic) && \
	!__has_extension(cxx_atomic) && !__GNUC_PREREQ__(4, 7)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/*
 * No native support for _Atomic(). Place object in structure to prevent
 * most forms of direct non-atomic access.
 */
#define	_Atomic(T)		struct { T volatile __val; }
#endif
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Noreturn		[[noreturn]]
#else
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Noreturn		__dead2
#endif
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !__has_extension(c_static_assert)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
    __has_extension(cxx_static_assert)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Static_assert(x, y)	static_assert(x, y)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/* Nothing, gcc 4.6 and higher has _Static_assert built-in */
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__COUNTER__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Static_assert(x, y)	__Static_assert(x, __COUNTER__)
#define	__Static_assert(x, y)	___Static_assert(x, y)
#define	___Static_assert(x, y)	typedef char __assert_ ## y[(x) ? 1 : -1] \
				__unused
#else
# 289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Static_assert(x, y)	struct __hack
#endif
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !__has_extension(c_thread_local)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/*
 * XXX: Some compilers (Clang 3.3, GCC 4.7) falsely announce C++11 mode
 * without actually supporting the thread_local keyword. Don't check for
 * the presence of C++11 when defining _Thread_local.
 */
#if 0 /* disabled by -frewrite-includes */
#if /* (defined(__cplusplus) && __cplusplus >= 201103L) || */ \
    __has_extension(cxx_thread_local)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Thread_local		thread_local
#else
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Thread_local		__thread
#endif
# 305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#endif /* __STDC_VERSION__ || __STDC_VERSION__ < 201112L */
# 308 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Emulation of C11 _Generic().  Unlike the previously defined C11
 * keywords, it is not possible to implement this using exactly the same
 * syntax.  Therefore implement something similar under the name
 * __generic().  Unlike _Generic(), this macro can only distinguish
 * between a single type, so it requires nested invocations to
 * distinguish multiple cases.
 */

#if 0 /* disabled by -frewrite-includes */
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
    __has_extension(c_generic_selections)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 320 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__generic(expr, t, yes, no)					\
	_Generic(expr, t: yes, default: no)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 323 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__generic(expr, t, yes, no)					\
	__builtin_choose_expr(						\
	    __builtin_types_compatible_p(__typeof(expr), t), yes, no)
#endif
# 327 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * C99 Static array indices in function parameter declarations.  Syntax such as:
 * void bar(int myArray[static 10]);
 * is allowed in C99 but not in C++.  Define __min_size appropriately so
 * headers using it can be compiled in either language.  Use like this:
 * void bar(int myArray[__min_size(10)]);
 */
#if 0 /* disabled by -frewrite-includes */
#if !defined(__cplusplus) && \
    (defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \
    (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >= 199901))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 338 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __min_size(x)	static (x)
#else
# 340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __min_size(x)	(x)
#endif
# 342 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(2, 96)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 344 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__malloc_like	__attribute__((__malloc__))
#define	__pure		__attribute__((__pure__))
#else
# 347 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__malloc_like
#define	__pure
#endif
# 350 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(3, 1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__always_inline	__attribute__((__always_inline__))
#else
# 354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__always_inline
#endif
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(3, 1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 358 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__noinline	__attribute__ ((__noinline__))
#else
# 360 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__noinline
#endif
# 362 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(3, 4)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 364 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__fastcall	__attribute__((__fastcall__))
#define	__result_use_check	__attribute__((__warn_unused_result__))
#else
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__fastcall
#define	__result_use_check
#endif
# 370 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 372 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__returns_twice	__attribute__((__returns_twice__))
#else
# 374 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__returns_twice
#endif
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 378 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__unreachable()	__builtin_unreachable()
#else
# 380 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__unreachable()	((void)0)
#endif
# 382 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
#if 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ__(2, 7)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__func__	NULL
#endif
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if (defined(__GNUC__) && __GNUC__ >= 2) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 389 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__LONG_LONG_SUPPORTED
#endif
# 391 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* C++11 exposes a load of C99 stuff */
#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__LONG_LONG_SUPPORTED
#ifndef	__STDC_LIMIT_MACROS
#define	__STDC_LIMIT_MACROS
#endif
# 398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef	__STDC_CONSTANT_MACROS
#define	__STDC_CONSTANT_MACROS
#endif
# 401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * GCC 2.95 provides `__restrict' as an extension to C90 to support the
 * C99-specific `restrict' type qualifier.  We happen to use `__restrict' as
 * a way to define the `restrict' type qualifier without disturbing older
 * software that is unaware of C99 keywords.
 */
#if 0 /* disabled by -frewrite-includes */
#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__restrict
#else
# 413 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__restrict	restrict
#endif
# 415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * GNU C version 2.96 adds explicit branch prediction so that
 * the CPU back-end can hint the processor and also so that
 * code blocks can be reordered such that the predicted path
 * sees a more linear flow, thus improving cache behavior, etc.
 *
 * The following two macros provide us with a way to utilize this
 * compiler feature.  Use __predict_true() if you expect the expression
 * to evaluate to true, and __predict_false() if you expect the
 * expression to evaluate to false.
 *
 * A few notes about usage:
 *
 *	* Generally, __predict_false() error condition checks (unless
 *	  you have some _strong_ reason to do otherwise, in which case
 *	  document it), and/or __predict_true() `no-error' condition
 *	  checks, assuming you want to optimize for the no-error case.
 *
 *	* Other than that, if you don't know the likelihood of a test
 *	  succeeding from empirical or other `hard' evidence, don't
 *	  make predictions.
 *
 *	* These are meant to be used in places that are run `a lot'.
 *	  It is wasteful to make predictions in code that is run
 *	  seldomly (e.g. at subsystem initialization time) as the
 *	  basic block reordering that this affects can often generate
 *	  larger code.
 */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(2, 96)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 446 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__predict_true(exp)     __builtin_expect((exp), 1)
#define	__predict_false(exp)    __builtin_expect((exp), 0)
#else
# 449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__predict_true(exp)     (exp)
#define	__predict_false(exp)    (exp)
#endif
# 452 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 0)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__null_sentinel	__attribute__((__sentinel__))
#define	__exported	__attribute__((__visibility__("default")))
#define	__hidden	__attribute__((__visibility__("hidden")))
#else
# 458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__null_sentinel
#define	__exported
#define	__hidden
#endif
# 462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h>
 * require it.
 */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(4, 1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 468 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__offsetof(type, field)	 __builtin_offsetof(type, field)
#else
# 470 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifndef __cplusplus
#define	__offsetof(type, field) \
	((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field))
#else
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__offsetof(type, field)					\
  (__offsetof__ (reinterpret_cast <__size_t>			\
                 (&reinterpret_cast <const volatile char &>	\
                  (static_cast<type *> (0)->field))))
#endif
# 479 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 480 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__rangeof(type, start, end) \
	(__offsetof(type, end) - __offsetof(type, start))

/*
 * Given the pointer x to the member m of the struct s, return
 * a pointer to the containing structure.  When using GCC, we first
 * assign pointer x to a local variable, to check that its type is
 * compatible with member m.
 */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ__(3, 1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__containerof(x, s, m) ({					\
	const volatile __typeof(((s *)0)->m) *__x = (x);		\
	__DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
})
#else
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__containerof(x, s, m)						\
	__DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
#endif
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Compiler-dependent macros to declare that functions take printf-like
 * or scanf-like arguments.  They are null except for versions of gcc
 * that are known to support the features properly (old versions of gcc-2
 * didn't permit keeping the keywords out of the application namespace).
 */
#if 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ__(2, 7)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__printflike(fmtarg, firstvararg)
#define	__scanflike(fmtarg, firstvararg)
#define	__format_arg(fmtarg)
#define	__strfmonlike(fmtarg, firstvararg)
#define	__strftimelike(fmtarg, firstvararg)
#else
# 512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__printflike(fmtarg, firstvararg) \
	    __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define	__scanflike(fmtarg, firstvararg) \
	    __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
#define	__format_arg(fmtarg)	__attribute__((__format_arg__ (fmtarg)))
#define	__strfmonlike(fmtarg, firstvararg) \
	    __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
#define	__strftimelike(fmtarg, firstvararg) \
	    __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
#endif
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
#if 0 /* disabled by -frewrite-includes */
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \
    defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__printf0like(fmtarg, firstvararg) \
	    __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
#else
# 529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__printf0like(fmtarg, firstvararg)
#endif
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__strong_reference(sym,aliassym)	\
	extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
#ifdef __STDC__
#define	__weak_reference(sym,alias)	\
	__asm__(".weak " #alias);	\
	__asm__(".equ "  #alias ", " #sym)
#define	__warn_references(sym,msg)	\
	__asm__(".section .gnu.warning." #sym);	\
	__asm__(".asciz \"" msg "\"");	\
	__asm__(".previous")
#define	__sym_compat(sym,impl,verid)	\
	__asm__(".symver " #impl ", " #sym "@" #verid)
#define	__sym_default(sym,impl,verid)	\
	__asm__(".symver " #impl ", " #sym "@@@" #verid)
#else
# 548 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__weak_reference(sym,alias)	\
	__asm__(".weak alias");		\
	__asm__(".equ alias, sym")
#define	__warn_references(sym,msg)	\
	__asm__(".section .gnu.warning.sym"); \
	__asm__(".asciz \"msg\"");	\
	__asm__(".previous")
#define	__sym_compat(sym,impl,verid)	\
	__asm__(".symver impl, sym@verid")
#define	__sym_default(impl,sym,verid)	\
	__asm__(".symver impl, sym@@@verid")
#endif	/* __STDC__ */
# 560 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif	/* __GNUC__ */
# 561 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#define	__GLOBL(sym)	__asm__(".globl " __XSTRING(sym))
#define	__WEAK(sym)	__asm__(".weak " __XSTRING(sym))

#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 566 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__IDSTRING(name,string)	__asm__(".ident\t\"" string "\"")
#else
# 568 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/*
 * The following definition might not work well if used in header files,
 * but it should be better than nothing.  If you want a "do nothing"
 * version, then it should generate some harmless declaration, such as:
 *    #define	__IDSTRING(name,string)	struct __hack
 */
#define	__IDSTRING(name,string)	static const char name[] __unused = string
#endif
# 576 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Embed the rcs id of a source file in the resulting library.  Note that in
 * more recent ELF binutils, we use .ident allowing the ID to be stripped.
 * Usage:
 *	__FBSDID("$FreeBSD$");
 */
#ifndef	__FBSDID
#if 0 /* disabled by -frewrite-includes */
#if !defined(STRIP_FBSDID)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__FBSDID(s)	__IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
#else
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__FBSDID(s)	struct __hack
#endif
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__RCSID
#ifndef	NO__RCSID
#define	__RCSID(s)	__IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
#else
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__RCSID(s)	struct __hack
#endif
# 597 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__RCSID_SOURCE
#ifndef	NO__RCSID_SOURCE
#define	__RCSID_SOURCE(s)	__IDSTRING(__CONCAT(__rcsid_source_,__LINE__),s)
#else
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__RCSID_SOURCE(s)	struct __hack
#endif
# 605 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__SCCSID
#ifndef	NO__SCCSID
#define	__SCCSID(s)	__IDSTRING(__CONCAT(__sccsid_,__LINE__),s)
#else
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__SCCSID(s)	struct __hack
#endif
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 614 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__COPYRIGHT
#ifndef	NO__COPYRIGHT
#define	__COPYRIGHT(s)	__IDSTRING(__CONCAT(__copyright_,__LINE__),s)
#else
# 619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__COPYRIGHT(s)	struct __hack
#endif
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 622 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__DECONST
#define	__DECONST(type, var)	((type)(__uintptr_t)(const void *)(var))
#endif
# 626 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__DEVOLATILE
#define	__DEVOLATILE(type, var)	((type)(__uintptr_t)(volatile void *)(var))
#endif
# 630 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#ifndef	__DEQUALIFY
#define	__DEQUALIFY(type, var)	((type)(__uintptr_t)(const volatile void *)(var))
#endif
# 634 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*-
 * The following definitions are an extension of the behavior originally
 * implemented in <sys/_posix.h>, but with a different level of granularity.
 * POSIX.1 requires that the macros we test be defined before any standard
 * header file is included.
 *
 * Here's a quick run-down of the versions:
 *  defined(_POSIX_SOURCE)		1003.1-1988
 *  _POSIX_C_SOURCE == 1		1003.1-1990
 *  _POSIX_C_SOURCE == 2		1003.2-1992 C Language Binding Option
 *  _POSIX_C_SOURCE == 199309		1003.1b-1993
 *  _POSIX_C_SOURCE == 199506		1003.1c-1995, 1003.1i-1995,
 *					and the omnibus ISO/IEC 9945-1: 1996
 *  _POSIX_C_SOURCE == 200112		1003.1-2001
 *  _POSIX_C_SOURCE == 200809		1003.1-2008
 *
 * In addition, the X/Open Portability Guide, which is now the Single UNIX
 * Specification, defines a feature-test macro which indicates the version of
 * that specification, and which subsumes _POSIX_C_SOURCE.
 *
 * Our macros begin with two underscores to avoid namespace screwage.
 */

/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
#if 0 /* disabled by -frewrite-includes */
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 660 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#undef _POSIX_C_SOURCE		/* Probably illegal, but beyond caring now. */
#define	_POSIX_C_SOURCE		199009
#endif
# 663 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
#if 0 /* disabled by -frewrite-includes */
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#undef _POSIX_C_SOURCE
#define	_POSIX_C_SOURCE		199209
#endif
# 669 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
#ifdef _XOPEN_SOURCE
#if 0 /* disabled by -frewrite-includes */
#if _XOPEN_SOURCE - 0 >= 700
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__XSI_VISIBLE		700
#undef _POSIX_C_SOURCE
#define	_POSIX_C_SOURCE		200809
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _XOPEN_SOURCE - 0 >= 600
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__XSI_VISIBLE		600
#undef _POSIX_C_SOURCE
#define	_POSIX_C_SOURCE		200112
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _XOPEN_SOURCE - 0 >= 500
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__XSI_VISIBLE		500
#undef _POSIX_C_SOURCE
#define	_POSIX_C_SOURCE		199506
#endif
# 685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Deal with all versions of POSIX.  The ordering relative to the tests above is
 * important.
 */
#if 0 /* disabled by -frewrite-includes */
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_POSIX_C_SOURCE		198808
#endif
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifdef _POSIX_C_SOURCE
#if 0 /* disabled by -frewrite-includes */
#if _POSIX_C_SOURCE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		200809
#define	__ISO_C_VISIBLE		1999
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _POSIX_C_SOURCE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		200112
#define	__ISO_C_VISIBLE		1999
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _POSIX_C_SOURCE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		199506
#define	__ISO_C_VISIBLE		1990
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _POSIX_C_SOURCE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 705 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		199309
#define	__ISO_C_VISIBLE		1990
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _POSIX_C_SOURCE >= 199209
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		199209
#define	__ISO_C_VISIBLE		1990
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _POSIX_C_SOURCE >= 199009
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		199009
#define	__ISO_C_VISIBLE		1990
#else
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		198808
#define	__ISO_C_VISIBLE		0
#endif /* _POSIX_C_SOURCE */
# 717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/*
 * Both glibc and OpenBSD enable c11 features when _ISOC11_SOURCE is defined, or
 * when compiling with -stdc=c11. A strict reading of the standard would suggest
 * doing it only for the former. However, a strict reading also requires C99
 * mode only, so building with C11 is already undefined. Follow glibc's and
 * OpenBSD's lead for this non-standard configuration for maximum compatibility.
 */
#if 0 /* disabled by -frewrite-includes */
#if _ISOC11_SOURCE || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#undef __ISO_C_VISIBLE
#define __ISO_C_VISIBLE		2011
#endif
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#else
# 729 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
/*-
 * Deal with _ANSI_SOURCE:
 * If it is defined, and no other compilation environment is explicitly
 * requested, then define our internal feature-test macros to zero.  This
 * makes no difference to the preprocessor (undefined symbols in preprocessing
 * expressions are defined to have value zero), but makes it more convenient for
 * a test program to print out the values.
 *
 * If a program mistakenly defines _ANSI_SOURCE and some other macro such as
 * _POSIX_C_SOURCE, we will assume that it wants the broader compilation
 * environment (and in fact we will never get here).
 */
#if 0 /* disabled by -frewrite-includes */
#if defined(_ANSI_SOURCE)	/* Hide almost everything. */
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 742 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		0
#define	__XSI_VISIBLE		0
#define	__BSD_VISIBLE		0
#define	__ISO_C_VISIBLE		1990
#define	__EXT1_VISIBLE		0
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_C99_SOURCE)	/* Localism to specify strict C99 env. */
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		0
#define	__XSI_VISIBLE		0
#define	__BSD_VISIBLE		0
#define	__ISO_C_VISIBLE		1999
#define	__EXT1_VISIBLE		0
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_C11_SOURCE)	/* Localism to specify strict C11 env. */
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		0
#define	__XSI_VISIBLE		0
#define	__BSD_VISIBLE		0
#define	__ISO_C_VISIBLE		2011
#define	__EXT1_VISIBLE		0
#else				/* Default environment: show everything. */
# 760 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__POSIX_VISIBLE		200809
#define	__XSI_VISIBLE		700
#define	__BSD_VISIBLE		1
#define	__ISO_C_VISIBLE		2011
#define	__EXT1_VISIBLE		1
#endif
# 766 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 767 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* User override __EXT1_VISIBLE */
#if 0 /* disabled by -frewrite-includes */
#if defined(__STDC_WANT_LIB_EXT1__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 770 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#undef	__EXT1_VISIBLE
#if 0 /* disabled by -frewrite-includes */
#if __STDC_WANT_LIB_EXT1__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 772 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__EXT1_VISIBLE		1
#else
# 774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__EXT1_VISIBLE		0
#endif
# 776 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif /* __STDC_WANT_LIB_EXT1__ */
# 777 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Old versions of GCC use non-standard ARM arch symbols; acle-compat.h
 * translates them to __ARM_ARCH and the modern feature symbols defined by ARM.
 */
#if 0 /* disabled by -frewrite-includes */
#if defined(__arm__) && !defined(__ARM_ARCH)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 783 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/acle-compat.h>
#endif /* expanded by -frewrite-includes */
# 783 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
# 784 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#endif
# 785 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Nullability qualifiers: currently only supported by Clang.
 */
#if 0 /* disabled by -frewrite-includes */
#if !(defined(__clang__) && __has_feature(nullability))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 790 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	_Nonnull
#define	_Nullable
#define	_Null_unspecified
#define	__NULLABILITY_PRAGMA_PUSH
#define	__NULLABILITY_PRAGMA_POP
#else
# 796 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__NULLABILITY_PRAGMA_PUSH _Pragma("clang diagnostic push")	\
	_Pragma("clang diagnostic ignored \"-Wnullability-completeness\"")
#define	__NULLABILITY_PRAGMA_POP _Pragma("clang diagnostic pop")
#endif
# 800 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Type Safety Checking
 *
 * Clang provides additional attributes to enable checking type safety
 * properties that cannot be enforced by the C type system. 
 */

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__argument_with_type_tag__) && \
    __has_attribute(__type_tag_for_datatype__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 810 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__arg_type_tag(arg_kind, arg_idx, type_tag_idx) \
	    __attribute__((__argument_with_type_tag__(arg_kind, arg_idx, type_tag_idx)))
#define	__datatype_type_tag(kind, type) \
	    __attribute__((__type_tag_for_datatype__(kind, type)))
#else
# 815 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__arg_type_tag(arg_kind, arg_idx, type_tag_idx)
#define	__datatype_type_tag(kind, type)
#endif
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/*
 * Lock annotations.
 *
 * Clang provides support for doing basic thread-safety tests at
 * compile-time, by marking which locks will/should be held when
 * entering/leaving a functions.
 *
 * Furthermore, it is also possible to annotate variables and structure
 * members to enforce that they are only accessed when certain locks are
 * held.
 */

#if 0 /* disabled by -frewrite-includes */
#if __has_extension(c_thread_safety_attributes)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 832 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__lock_annotate(x)	__attribute__((x))
#else
# 834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define	__lock_annotate(x)
#endif
# 836 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* Structure implements a lock. */
#define	__lockable		__lock_annotate(lockable)

/* Function acquires an exclusive or shared lock. */
#define	__locks_exclusive(...) \
	__lock_annotate(exclusive_lock_function(__VA_ARGS__))
#define	__locks_shared(...) \
	__lock_annotate(shared_lock_function(__VA_ARGS__))

/* Function attempts to acquire an exclusive or shared lock. */
#define	__trylocks_exclusive(...) \
	__lock_annotate(exclusive_trylock_function(__VA_ARGS__))
#define	__trylocks_shared(...) \
	__lock_annotate(shared_trylock_function(__VA_ARGS__))

/* Function releases a lock. */
#define	__unlocks(...)		__lock_annotate(unlock_function(__VA_ARGS__))

/* Function asserts that an exclusive or shared lock is held. */
#define	__asserts_exclusive(...) \
	__lock_annotate(assert_exclusive_lock(__VA_ARGS__))
#define	__asserts_shared(...) \
	__lock_annotate(assert_shared_lock(__VA_ARGS__))

/* Function requires that an exclusive or shared lock is or is not held. */
#define	__requires_exclusive(...) \
	__lock_annotate(exclusive_locks_required(__VA_ARGS__))
#define	__requires_shared(...) \
	__lock_annotate(shared_locks_required(__VA_ARGS__))
#define	__requires_unlocked(...) \
	__lock_annotate(locks_excluded(__VA_ARGS__))

/* Function should not be analyzed. */
#define	__no_lock_analysis	__lock_annotate(no_thread_safety_analysis)

/*
 * Function or variable should not be sanitized, e.g., by AddressSanitizer.
 * GCC has the nosanitize attribute, but as a function attribute only, and
 * warns on use as a variable attribute.
 */
#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(no_sanitize) && defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 878 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#ifdef _KERNEL
#define __nosanitizeaddress	__attribute__((no_sanitize("kernel-address")))
#define __nosanitizememory	__attribute__((no_sanitize("kernel-memory")))
#else
# 882 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __nosanitizeaddress	__attribute__((no_sanitize("address")))
#define __nosanitizememory	__attribute__((no_sanitize("memory")))
#endif
# 885 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __nosanitizethread	__attribute__((no_sanitize("thread")))
#else
# 887 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __nosanitizeaddress
#define __nosanitizememory
#define __nosanitizethread
#endif
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

/* Guard variables and structure members by lock. */
#define	__guarded_by(x)		__lock_annotate(guarded_by(x))
#define	__pt_guarded_by(x)	__lock_annotate(pt_guarded_by(x))

/* Alignment builtins for better type checking and improved code generation. */
/* Provide fallback versions for other compilers (GCC/Clang < 10): */
#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__builtin_is_aligned)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 899 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __builtin_is_aligned(x, align)	\
	(((__uintptr_t)x & ((align) - 1)) == 0)
#endif
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__builtin_align_up)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 903 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __builtin_align_up(x, align)	\
	((__typeof__(x))(((__uintptr_t)(x)+((align)-1))&(~((align)-1))))
#endif
# 906 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__builtin_align_down)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 907 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
#define __builtin_align_down(x, align)	\
	((__typeof__(x))((x)&(~((align)-1))))
#endif
# 910 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4

#define __align_up(x, y) __builtin_align_up(x, y)
#define __align_down(x, y) __builtin_align_down(x, y)
#define __is_aligned(x, y) __builtin_is_aligned(x, y)

#endif /* !_SYS_CDEFS_H_ */
# 916 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cdefs.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__TYPES_H_
#define _SYS__TYPES_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_types.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_types.h" 1 3 4
/*-
 * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
 * Copyright (c) 1990, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	From: @(#)ansi.h	8.2 (Berkeley) 1/4/94
 *	From: @(#)types.h	8.3 (Berkeley) 1/5/94
 * $FreeBSD$
 */

#ifndef _MACHINE__TYPES_H_
#define	_MACHINE__TYPES_H_

#ifndef _SYS_CDEFS_H_
#error this file needs sys/cdefs.h as a prerequisite
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_types.h" 3 4

/*
 * Basic types upon which most other types are built.
 */
typedef	signed char		__int8_t;
typedef	unsigned char		__uint8_t;
typedef	short			__int16_t;
typedef	unsigned short		__uint16_t;
typedef	int			__int32_t;
typedef	unsigned int		__uint32_t;
typedef	long			__int64_t;
typedef	unsigned long		__uint64_t;

/*
 * Standard type definitions.
 */
typedef	__int32_t	__clock_t;		/* clock()... */
typedef	__int64_t	__critical_t;
#ifndef _STANDALONE
typedef	double		__double_t;
typedef	float		__float_t;
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_types.h" 3 4
typedef	__int64_t	__intfptr_t;
typedef	__int64_t	__intmax_t;
typedef	__int64_t	__intptr_t;
typedef	__int32_t	__int_fast8_t;
typedef	__int32_t	__int_fast16_t;
typedef	__int32_t	__int_fast32_t;
typedef	__int64_t	__int_fast64_t;
typedef	__int8_t	__int_least8_t;
typedef	__int16_t	__int_least16_t;
typedef	__int32_t	__int_least32_t;
typedef	__int64_t	__int_least64_t;
typedef	__int64_t	__ptrdiff_t;		/* ptr1 - ptr2 */
typedef	__int64_t	__register_t;
typedef	__int64_t	__segsz_t;		/* segment size (in pages) */
typedef	__uint64_t	__size_t;		/* sizeof() */
typedef	__int64_t	__ssize_t;		/* byte count or error */
typedef	__int64_t	__time_t;		/* time()... */
typedef	__uint64_t	__uintfptr_t;
typedef	__uint64_t	__uintmax_t;
typedef	__uint64_t	__uintptr_t;
typedef	__uint32_t	__uint_fast8_t;
typedef	__uint32_t	__uint_fast16_t;
typedef	__uint32_t	__uint_fast32_t;
typedef	__uint64_t	__uint_fast64_t;
typedef	__uint8_t	__uint_least8_t;
typedef	__uint16_t	__uint_least16_t;
typedef	__uint32_t	__uint_least32_t;
typedef	__uint64_t	__uint_least64_t;
typedef	__uint64_t	__u_register_t;
typedef	__uint64_t	__vm_offset_t;
typedef	__uint64_t	__vm_paddr_t;
typedef	__uint64_t	__vm_size_t;
typedef	unsigned int	___wchar_t;

#define	__WCHAR_MIN	0		/* min value for a wchar_t */
#define	__WCHAR_MAX	__UINT_MAX	/* max value for a wchar_t */

#endif /* !_MACHINE__TYPES_H_ */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_types.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 2 3 4

/*
 * Standard type definitions.
 */
typedef	__int32_t	__blksize_t;	/* file block size */
typedef	__int64_t	__blkcnt_t;	/* file block count */
typedef	__int32_t	__clockid_t;	/* clock_gettime()... */
typedef	__uint32_t	__fflags_t;	/* file flags */
typedef	__uint64_t	__fsblkcnt_t;
typedef	__uint64_t	__fsfilcnt_t;
typedef	__uint32_t	__gid_t;
typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, or uid_t */
typedef	__uint64_t	__ino_t;	/* inode number */
typedef	long		__key_t;	/* IPC key (for Sys V IPC) */
typedef	__int32_t	__lwpid_t;	/* Thread ID (a.k.a. LWP) */
typedef	__uint16_t	__mode_t;	/* permissions */
typedef	int		__accmode_t;	/* access permissions */
typedef	int		__nl_item;
typedef	__uint64_t	__nlink_t;	/* link count */
typedef	__int64_t	__off_t;	/* file offset */
typedef	__int64_t	__off64_t;	/* file offset (alias) */
typedef	__int32_t	__pid_t;	/* process [group] */
typedef	__int64_t	__rlim_t;	/* resource limit - intentionally */
					/* signed, because of legacy code */
					/* that uses -1 for RLIM_INFINITY */
typedef	__uint8_t	__sa_family_t;
typedef	__uint32_t	__socklen_t;
typedef	long		__suseconds_t;	/* microseconds (signed) */
typedef	struct __timer	*__timer_t;	/* timer_gettime()... */
typedef	struct __mq	*__mqd_t;	/* mq_open()... */
typedef	__uint32_t	__uid_t;
typedef	unsigned int	__useconds_t;	/* microseconds (unsigned) */
typedef	int		__cpuwhich_t;	/* which parameter for cpuset. */
typedef	int		__cpulevel_t;	/* level parameter for cpuset. */
typedef int		__cpusetid_t;	/* cpuset identifier. */
typedef __int64_t	__daddr_t;	/* bwrite(3), FIOBMAP2, etc */

/*
 * Unusual type definitions.
 */
/*
 * rune_t is declared to be an ``int'' instead of the more natural
 * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
 * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
 * it looks like 10646 will be a 31 bit standard.  This means that if your
 * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
 * chosen over a long is that the is*() and to*() routines take ints (says
 * ANSI C), but they use __ct_rune_t instead of int.
 *
 * NOTE: rune_t is not covered by ANSI nor other standards, and should not
 * be instantiated outside of lib/libc/locale.  Use wchar_t.  wint_t and
 * rune_t must be the same type.  Also, wint_t should be able to hold all
 * members of the largest character set plus one extra value (WEOF), and
 * must be at least 16 bits.
 */
typedef	int		__ct_rune_t;	/* arg type for ctype funcs */
typedef	__ct_rune_t	__rune_t;	/* rune_t (see above) */
typedef	__ct_rune_t	__wint_t;	/* wint_t (see above) */

/* Clang already provides these types as built-ins, but only in C++ mode. */
#if 0 /* disabled by -frewrite-includes */
#if !defined(__clang__) || !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
typedef	__uint_least16_t __char16_t;
typedef	__uint_least32_t __char32_t;
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
/* In C++11, char16_t and char32_t are built-in types. */
#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
#define	_CHAR16_T_DECLARED
#define	_CHAR32_T_DECLARED
#endif
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4

typedef struct {
	long long __max_align1 __aligned(_Alignof(long long));
#ifndef _STANDALONE
	long double __max_align2 __aligned(_Alignof(long double));
#endif
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
} __max_align_t;

typedef	__uint64_t	__dev_t;	/* device number */

typedef	__uint32_t	__fixpt_t;	/* fixed point number */

/*
 * mbstate_t is an opaque object to keep conversion state during multibyte
 * stream conversions.
 */
typedef union {
	char		__mbstate8[128];
	__int64_t	_mbstateL;	/* for alignment */
} __mbstate_t;

typedef __uintmax_t     __rman_res_t;

/*
 * Types for varargs. These are all provided by builtin types these
 * days, so centralize their definition.
 */
#ifdef __GNUCLIKE_BUILTIN_VARARGS
typedef	__builtin_va_list	__va_list;	/* internally known to gcc */
#else
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
#error "No support for your compiler for stdargs"
#endif
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC_VA_LIST_COMPATIBILITY) && !defined(__GNUC_VA_LIST) \
    && !defined(__NO_GNUC_VA_LIST)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
#define __GNUC_VA_LIST
typedef __va_list		__gnuc_va_list;	/* compatibility w/GNU headers*/
#endif
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4

/*
 * When the following macro is defined, the system uses 64-bit inode numbers.
 * Programs can use this to avoid including <sys/param.h>, with its associated
 * namespace pollution.
 */
#define	__INO64

#endif /* !_SYS__TYPES_H_ */
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_types.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/endian.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 1 3 4
/*-
 * Copyright (c) 2001 David E. O'Brien
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)endian.h	8.1 (Berkeley) 6/10/93
 * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $
 * $FreeBSD$
 */

#ifndef _MACHINE_ENDIAN_H_
#define	_MACHINE_ENDIAN_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_endian.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1987, 1991 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#ifndef _SYS__ENDIAN_H_
#define	_SYS__ENDIAN_H_

#ifndef _MACHINE_ENDIAN_H_
#error "sys/_endian.h should not be included directly"
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4

/* BSD Compatiblity */
#define	_BYTE_ORDER	__BYTE_ORDER__

/*
 * Definitions for byte order, according to byte significance from low
 * address to high.
 */
#define	_LITTLE_ENDIAN	__ORDER_LITTLE_ENDIAN__ /* LSB first: 1234 */
#define	_BIG_ENDIAN	__ORDER_BIG_ENDIAN__    /* MSB first: 4321 */
#define	_PDP_ENDIAN	__ORDER_PDP_ENDIAN__    /* LSB first in word,
						 * MSW first in long: 3412 */

/*
 * Define the order of 32-bit words in 64-bit words.
 */
#if 0 /* disabled by -frewrite-includes */
#if _BYTE_ORDER == _LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#define	_QUAD_HIGHWORD	1
#define	_QUAD_LOWWORD	0
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _BYTE_ORDER == _BIG_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#define	_QUAD_HIGHWORD	0
#define	_QUAD_LOWWORD	1
#else
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#error "Unsupported endian"
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4

/*
 * Deprecated variants that don't have enough underscores to be useful in more
 * strict namespaces.
 */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#define	LITTLE_ENDIAN   _LITTLE_ENDIAN
#define	BIG_ENDIAN      _BIG_ENDIAN
#define	PDP_ENDIAN      _PDP_ENDIAN
#define	BYTE_ORDER      _BYTE_ORDER
#endif
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4

/* bswap primitives, based on compiler builtins */
#define	__bswap16(x)	__builtin_bswap16(x)
#define	__bswap32(x)	__builtin_bswap32(x)
#define	__bswap64(x)	__builtin_bswap64(x)

#if 0 /* disabled by -frewrite-includes */
#if _BYTE_ORDER == _LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#define	__ntohl(x)	(__bswap32(x))
#define	__ntohs(x)	(__bswap16(x))
#define	__htonl(x)	(__bswap32(x))
#define	__htons(x)	(__bswap16(x))
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _BYTE_ORDER == _BIG_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
#define	__htonl(x)	((__uint32_t)(x))
#define	__htons(x)	((__uint16_t)(x))
#define	__ntohl(x)	((__uint32_t)(x))
#define	__ntohs(x)	((__uint16_t)(x))
#endif
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4

#endif /* _SYS__ENDIAN_H_ */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_endian.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 2 3 4

#endif /* !_MACHINE_ENDIAN_H_ */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/endian.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 2 3 4

#ifndef _UINT8_T_DECLARED
typedef	__uint8_t	uint8_t;
#define	_UINT8_T_DECLARED
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4

#ifndef _UINT16_T_DECLARED
typedef	__uint16_t	uint16_t;
#define	_UINT16_T_DECLARED
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4

#ifndef _UINT32_T_DECLARED
typedef	__uint32_t	uint32_t;
#define	_UINT32_T_DECLARED
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4

#ifndef _UINT64_T_DECLARED
typedef	__uint64_t	uint64_t;
#define	_UINT64_T_DECLARED
#endif
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4

/*
 * General byte order swapping functions.
 */
#define	bswap16(x)	__bswap16(x)
#define	bswap32(x)	__bswap32(x)
#define	bswap64(x)	__bswap64(x)

/*
 * Host to big endian, host to little endian, big endian to host, and little
 * endian to host byte order functions as detailed in byteorder(9).
 */
#if 0 /* disabled by -frewrite-includes */
#if _BYTE_ORDER == _LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
#define	htobe16(x)	bswap16((x))
#define	htobe32(x)	bswap32((x))
#define	htobe64(x)	bswap64((x))
#define	htole16(x)	((uint16_t)(x))
#define	htole32(x)	((uint32_t)(x))
#define	htole64(x)	((uint64_t)(x))

#define	be16toh(x)	bswap16((x))
#define	be32toh(x)	bswap32((x))
#define	be64toh(x)	bswap64((x))
#define	le16toh(x)	((uint16_t)(x))
#define	le32toh(x)	((uint32_t)(x))
#define	le64toh(x)	((uint64_t)(x))
#else /* _BYTE_ORDER != _LITTLE_ENDIAN */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
#define	htobe16(x)	((uint16_t)(x))
#define	htobe32(x)	((uint32_t)(x))
#define	htobe64(x)	((uint64_t)(x))
#define	htole16(x)	bswap16((x))
#define	htole32(x)	bswap32((x))
#define	htole64(x)	bswap64((x))

#define	be16toh(x)	((uint16_t)(x))
#define	be32toh(x)	((uint32_t)(x))
#define	be64toh(x)	((uint64_t)(x))
#define	le16toh(x)	bswap16((x))
#define	le32toh(x)	bswap32((x))
#define	le64toh(x)	bswap64((x))
#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4

/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */

static __inline uint16_t
be16dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return ((p[0] << 8) | p[1]);
}

static __inline uint32_t
be32dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
}

static __inline uint64_t
be64dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
}

static __inline uint16_t
le16dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return ((p[1] << 8) | p[0]);
}

static __inline uint32_t
le32dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
}

static __inline uint64_t
le64dec(const void *pp)
{
	uint8_t const *p = (uint8_t const *)pp;

	return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
}

static __inline void
be16enc(void *pp, uint16_t u)
{
	uint8_t *p = (uint8_t *)pp;

	p[0] = (u >> 8) & 0xff;
	p[1] = u & 0xff;
}

static __inline void
be32enc(void *pp, uint32_t u)
{
	uint8_t *p = (uint8_t *)pp;

	p[0] = (u >> 24) & 0xff;
	p[1] = (u >> 16) & 0xff;
	p[2] = (u >> 8) & 0xff;
	p[3] = u & 0xff;
}

static __inline void
be64enc(void *pp, uint64_t u)
{
	uint8_t *p = (uint8_t *)pp;

	be32enc(p, (uint32_t)(u >> 32));
	be32enc(p + 4, (uint32_t)(u & 0xffffffffU));
}

static __inline void
le16enc(void *pp, uint16_t u)
{
	uint8_t *p = (uint8_t *)pp;

	p[0] = u & 0xff;
	p[1] = (u >> 8) & 0xff;
}

static __inline void
le32enc(void *pp, uint32_t u)
{
	uint8_t *p = (uint8_t *)pp;

	p[0] = u & 0xff;
	p[1] = (u >> 8) & 0xff;
	p[2] = (u >> 16) & 0xff;
	p[3] = (u >> 24) & 0xff;
}

static __inline void
le64enc(void *pp, uint64_t u)
{
	uint8_t *p = (uint8_t *)pp;

	le32enc(p, (uint32_t)(u & 0xffffffffU));
	le32enc(p + 4, (uint32_t)(u >> 32));
}

#endif	/* _SYS_ENDIAN_H_ */
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/endian.h" 3 4
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 2 3
#if 0 /* expanded by -frewrite-includes */
#  include <osreldate.h>
#endif /* expanded by -frewrite-includes */
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/osreldate.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause
 *
 * Copyright (c) 1992-2021 The FreeBSD Project.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */
#ifdef _KERNEL
#error "<osreldate.h> cannot be used in the kernel, use <sys/param.h>"
#else
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/osreldate.h" 3 4
#undef __FreeBSD_version
#define __FreeBSD_version 1300524
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/osreldate.h" 3 4
# 263 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 2 3
#if 0 /* disabled by -frewrite-includes */
#  if _BYTE_ORDER == _LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_LITTLE_ENDIAN
#  else  // _BYTE_ORDER == _LITTLE_ENDIAN
# 266 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  endif  // _BYTE_ORDER == _LITTLE_ENDIAN
# 268 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  ifndef __LONG_LONG_SUPPORTED
#    define _LIBCPP_HAS_NO_LONG_LONG
#  endif  // __LONG_LONG_SUPPORTED
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __FreeBSD__
# 272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__NetBSD__) || defined(__OpenBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* expanded by -frewrite-includes */
#  include <sys/endian.h>
#endif /* expanded by -frewrite-includes */
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if _BYTE_ORDER == _LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_LITTLE_ENDIAN
#  else  // _BYTE_ORDER == _LITTLE_ENDIAN
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  endif  // _BYTE_ORDER == _LITTLE_ENDIAN
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // defined(__NetBSD__) || defined(__OpenBSD__)
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_WIN32API
#  define _LIBCPP_LITTLE_ENDIAN
#  define _LIBCPP_SHORT_WCHAR   1
// Both MinGW and native MSVC provide a "MSVC"-like environment
#  define _LIBCPP_MSVCRT_LIKE
// If mingw not explicitly detected, assume using MS C runtime only if
// a MS compatibility version is specified.
#if 0 /* disabled by -frewrite-includes */
#  if defined(_MSC_VER) && !defined(__MINGW32__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
#  endif
# 293 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_BITSCAN64
#  endif
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_OPEN_WITH_WCHAR
#if 0 /* disabled by -frewrite-includes */
#  if defined(_LIBCPP_MSVCRT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_QUICK_EXIT
#  endif
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Some CRT APIs are unavailable to store apps
#if 0 /* disabled by -frewrite-includes */
#  if defined(WINAPI_FAMILY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* expanded by -frewrite-includes */
#    include <winapifamily.h>
#endif /* expanded by -frewrite-includes */
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) &&                  \
        (!defined(WINAPI_PARTITION_SYSTEM) ||                                  \
         !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTEM))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 307 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_WINDOWS_STORE_APP
#    endif
# 309 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  endif
# 310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // defined(_WIN32)
# 311 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __sun__
#if 0 /* expanded by -frewrite-includes */
#  include <sys/isa_defs.h>
#endif /* expanded by -frewrite-includes */
# 313 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 314 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  ifdef _LITTLE_ENDIAN
#    define _LIBCPP_LITTLE_ENDIAN
#  else
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  endif
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __sun__
# 320 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__OpenBSD__) || defined(__CloudABI__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 322 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
   // Certain architectures provide arc4random(). Prefer using
   // arc4random() over /dev/{u,}random to make it possible to obtain
   // random data even when using sandboxing mechanisms such as chroots,
   // Capsicum, etc.
#  define _LIBCPP_USING_ARC4_RANDOM
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__Fuchsia__) || defined(__wasi__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_USING_GETENTROPY
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__native_client__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
   // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access,
   // including accesses to the special files under /dev. C++11's
   // std::random_device is instead exposed through a NaCl syscall.
#  define _LIBCPP_USING_NACL_RANDOM
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_WIN32API)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 335 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_USING_WIN32_RANDOM
#else
# 337 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_USING_DEV_RANDOM
#endif
# 339 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* expanded by -frewrite-includes */
#  include <endian.h>
#endif /* expanded by -frewrite-includes */
# 341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 342 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if __BYTE_ORDER == __LITTLE_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 343 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_LITTLE_ENDIAN
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif __BYTE_ORDER == __BIG_ENDIAN
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_BIG_ENDIAN
#  else  // __BYTE_ORDER == __BIG_ENDIAN
# 347 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    error unable to determine endian
#  endif
# 349 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN)
# 350 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi")))
#else
# 354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_CFI
#endif
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// If the compiler supports using_if_exists, pretend we have those functions and they'll
// be picked up if the C library provides them.
//
// TODO: Once we drop support for Clang 12, we can assume the compiler supports using_if_exists
//       for platforms that don't have a conforming C11 library, so we can drop this whole thing.
#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(using_if_exists)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_HAS_TIMESPEC_GET
# define _LIBCPP_HAS_QUICK_EXIT
# define _LIBCPP_HAS_ALIGNED_ALLOC
#else
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if (defined(__ISO_C_VISIBLE) && (__ISO_C_VISIBLE >= 2011)) || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(__FreeBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 369 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_ALIGNED_ALLOC
#    define _LIBCPP_HAS_QUICK_EXIT
#if 0 /* disabled by -frewrite-includes */
#    if __FreeBSD_version >= 1300064 || \
       (__FreeBSD_version >= 1201504 && __FreeBSD_version < 1300000)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 373 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_TIMESPEC_GET
#    endif
# 375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__BIONIC__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if __ANDROID_API__ >= 21
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 377 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_QUICK_EXIT
#    endif
# 379 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if __ANDROID_API__ >= 28
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 380 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_ALIGNED_ALLOC
#    endif
# 382 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if __ANDROID_API__ >= 29
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_TIMESPEC_GET
#    endif
# 385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__Fuchsia__) || defined(__wasi__) || defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_ALIGNED_ALLOC
#    define _LIBCPP_HAS_QUICK_EXIT
#    define _LIBCPP_HAS_TIMESPEC_GET
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__OpenBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_ALIGNED_ALLOC
#    define _LIBCPP_HAS_TIMESPEC_GET
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__linux__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if !defined(_LIBCPP_HAS_MUSL_LIBC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#      if _LIBCPP_GLIBC_PREREQ(2, 15) || defined(__BIONIC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 395 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#        define _LIBCPP_HAS_QUICK_EXIT
#      endif
# 397 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#      if _LIBCPP_GLIBC_PREREQ(2, 17)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#        define _LIBCPP_HAS_ALIGNED_ALLOC
#        define _LIBCPP_HAS_TIMESPEC_GET
#      endif
# 401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    else // defined(_LIBCPP_HAS_MUSL_LIBC)
# 402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_ALIGNED_ALLOC
#      define _LIBCPP_HAS_QUICK_EXIT
#      define _LIBCPP_HAS_TIMESPEC_GET
#    endif
# 406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(_LIBCPP_MSVCRT)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
     // Using Microsoft's C Runtime library, not MinGW
#    define _LIBCPP_HAS_TIMESPEC_GET
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__APPLE__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
     // timespec_get and aligned_alloc were introduced in macOS 10.15 and
     // aligned releases
#if 0 /* disabled by -frewrite-includes */
#    if ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101500) || \
         (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130000) || \
         (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 130000) || \
         (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 60000))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_ALIGNED_ALLOC
#      define _LIBCPP_HAS_TIMESPEC_GET
#    endif
# 419 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  endif // __APPLE__
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 421 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // __has_attribute(using_if_exists)
# 422 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_CXX03_LANG
# define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_CLANG_BASED)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_ALIGNOF(_Tp) _Alignof(_Tp)
#else
# 428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# error "We don't know a correct way to implement alignof(T) in C++03 outside of Clang"
#endif
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp)

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_CLANG_BASED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ALTERNATE_STRING_LAYOUT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 436 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  error _LIBCPP_ALTERNATE_STRING_LAYOUT is deprecated, please use _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT instead
#endif
# 438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) &&       \
    (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 440 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
#endif
# 442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_alignas)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 444 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _ALIGNAS_TYPE(x) alignas(x)
#  define _ALIGNAS(x) alignas(x)
#else
# 447 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
#  define _ALIGNAS(x) __attribute__((__aligned__(x)))
#endif
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 452 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
typedef __char16_t char16_t;
typedef __char32_t char32_t;
#endif
# 455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(cxx_exceptions)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 457 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_EXCEPTIONS
#endif
# 459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !(__has_feature(cxx_strong_enums))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 461 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_STRONG_ENUMS
#endif
# 463 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_attributes)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 465 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NORETURN [[noreturn]]
#else
# 467 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NORETURN __attribute__ ((noreturn))
#endif
# 469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !(__has_feature(cxx_nullptr))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if (__has_extension(cxx_nullptr) || __has_keyword(__nullptr)) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 472 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define nullptr __nullptr
#  else
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_NO_NULLPTR
#  endif
# 476 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 477 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Objective-C++ features (opt-in)
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(objc_arc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 480 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_OBJC_ARC
#endif
# 482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(objc_arc_weak)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 484 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_OBJC_ARC_WEAK
#endif
# 486 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_extension(blocks)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 488 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_EXTENSION_BLOCKS
#endif
# 490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_BLOCKS_RUNTIME
#endif
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !(__has_feature(cxx_relaxed_constexpr))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
#endif
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !(__has_feature(cxx_variable_templates))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
#endif
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !(__has_feature(cxx_noexcept))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_NOEXCEPT
#endif
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(address_sanitizer)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_ASAN
#endif
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Allow for build-time disabling of unsigned integer sanitization
#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(no_sanitize)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow")))
#endif
# 515 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__builtin_launder)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 517 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER
#endif
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__builtin_constant_p)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_COMPILER_HAS_BUILTIN_CONSTANT_P
#endif
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__is_identifier(__has_unique_object_representations)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 525 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS
#endif
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__))

// Literal operators ""d and ""y are supported starting with LLVM Clang 8 and AppleClang 10.0.1
#if 0 /* disabled by -frewrite-includes */
#if (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 800) ||                 \
    (defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER < 1001)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS
#endif
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _ALIGNAS(x) __attribute__((__aligned__(x)))
#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))

#define _LIBCPP_NORETURN __attribute__((noreturn))

#if 0 /* disabled by -frewrite-includes */
#if !defined(__EXCEPTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 546 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_EXCEPTIONS
#endif
# 548 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Determine if GCC supports relaxed constexpr
#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_constexpr) || __cpp_constexpr < 201304L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 551 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
#endif
# 553 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// GCC 5 supports variable templates
#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_variable_templates) || __cpp_variable_templates < 201304L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 556 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
#endif
# 558 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__SANITIZE_ADDRESS__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 560 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_ASAN
#endif
# 562 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _GNUC_VER >= 700
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 564 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER
#define _LIBCPP_COMPILER_HAS_BUILTIN_CONSTANT_P
#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS
#endif
# 568 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__))

#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_MSVC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 574 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_TOSTRING2(x) #x
#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
#define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))

#if 0 /* disabled by -frewrite-includes */
#if _MSC_VER < 1900
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#error "MSVC versions prior to Visual Studio 2015 are not supported"
#endif
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
#define __alignof__ __alignof
#define _LIBCPP_NORETURN __declspec(noreturn)
#define _ALIGNAS(x) __declspec(align(x))
#define _ALIGNAS_TYPE(x) alignas(x)

#define _LIBCPP_WEAK

#define _LIBCPP_HAS_NO_ASAN

#define _LIBCPP_ALWAYS_INLINE __forceinline

#define _LIBCPP_HAS_NO_VECTOR_EXTENSION

#define _LIBCPP_DISABLE_EXTENSION_WARNING

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_IBM)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _ALIGNAS(x) __attribute__((__aligned__(x)))
#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
#define _ATTRIBUTE(x) __attribute__((x))
#define _LIBCPP_NORETURN __attribute__((noreturn))

#define _LIBCPP_HAS_NO_UNICODE_CHARS
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES

#if 0 /* disabled by -frewrite-includes */
#if defined(_AIX)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define __MULTILOCALE_API
#endif
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_HAS_NO_ASAN

#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__))

#define _LIBCPP_HAS_NO_VECTOR_EXTENSION

#define _LIBCPP_DISABLE_EXTENSION_WARNING

#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM]
# 623 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_OBJECT_FORMAT_COFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 625 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _DLL
#  define _LIBCPP_CRT_FUNC __declspec(dllimport)
#else
# 629 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CRT_FUNC
#endif
# 631 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 633 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  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
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 639 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DLL_VIS __declspec(dllexport)
#if 0 /* disabled by -frewrite-includes */
#  if defined(__MINGW32__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 641 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
#    define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#  else
# 644 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#    define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS
#  endif
# 647 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS
#  define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport)
#else
# 650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  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
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#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

#endif // defined(_LIBCPP_OBJECT_FORMAT_COFF)
# 667 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HIDDEN
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
#  else
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDDEN
#  endif
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// The inline should be removed once PR32114 is resolved
#    define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN
#  else
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#  endif
# 683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_FUNC_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default")))
#  else
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_FUNC_VIS
#  endif
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_TYPE_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
#  else
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_TYPE_VIS
#  endif
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_TEMPLATE_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if __has_attribute(__type_visibility__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_TEMPLATE_VIS __attribute__ ((__type_visibility__("default")))
#    else
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_TEMPLATE_VIS __attribute__ ((__visibility__("default")))
#    endif
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  else
# 709 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_TEMPLATE_VIS
#  endif
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_TEMPLATE_DATA_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 715 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_TEMPLATE_DATA_VIS __attribute__ ((__visibility__("default")))
#  else
# 717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_TEMPLATE_DATA_VIS
#  endif
# 719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 720 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_EXPORTED_FROM_ABI
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 723 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXPORTED_FROM_ABI __attribute__((__visibility__("default")))
#  else
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXPORTED_FROM_ABI
#  endif
# 727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
#define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS
#endif
# 732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_EXCEPTION_ABI
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
#  else
# 737 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXCEPTION_ABI
#  endif
# 739 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 740 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_ENUM_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 743 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_ENUM_VIS __attribute__ ((__type_visibility__("default")))
#  else
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_ENUM_VIS
#  endif
# 747 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#if 0 /* disabled by -frewrite-includes */
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default")))
#  else
# 753 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#  endif
# 755 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 756 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#endif
# 760 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(internal_linkage)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 762 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_INTERNAL_LINKAGE __attribute__ ((internal_linkage))
#else
# 764 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_INTERNAL_LINKAGE _LIBCPP_ALWAYS_INLINE
#endif
# 766 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(exclude_from_explicit_instantiation)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 768 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION __attribute__ ((__exclude_from_explicit_instantiation__))
#else
# 770 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
   // Try to approximate the effect of exclude_from_explicit_instantiation
   // (which is that entities are not assumed to be provided by explicit
   // template instantiations in the dylib) by always inlining those entities.
#  define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION _LIBCPP_ALWAYS_INLINE
#endif
# 775 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU
#  ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT
#    define _LIBCPP_HIDE_FROM_ABI_PER_TU 0
#  else
# 780 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDE_FROM_ABI_PER_TU 1
#  endif
# 782 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 783 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HIDE_FROM_ABI
#if 0 /* disabled by -frewrite-includes */
#  if _LIBCPP_HIDE_FROM_ABI_PER_TU
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 786 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_INTERNAL_LINKAGE
#  else
# 788 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION
#  endif
# 790 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 791 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_BUILDING_LIBRARY
#if 0 /* disabled by -frewrite-includes */
#  if _LIBCPP_ABI_VERSION > 1
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 794 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
#  else
# 796 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HIDE_FROM_ABI_AFTER_V1
#  endif
# 798 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#else
# 799 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
#endif
# 801 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Just so we can migrate to the new macros gradually.
#define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI

// Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect.
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE {
#define _LIBCPP_END_NAMESPACE_STD  } }
#define _VSTD std::_LIBCPP_ABI_NAMESPACE
_LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 812 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
  _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem {
#else
# 815 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \
  _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem {
#endif
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#define _LIBCPP_END_NAMESPACE_FILESYSTEM \
  _LIBCPP_END_NAMESPACE_STD } }

#define _VSTD_FS _VSTD::__fs::filesystem

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__enable_if__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 825 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, "")))
#endif
# 827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HAS_NO_NOEXCEPT
#  define _NOEXCEPT noexcept
#  define _NOEXCEPT_(x) noexcept(x)
#else
# 832 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _NOEXCEPT throw()
#  define _NOEXCEPT_(x)
#endif
# 835 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
typedef unsigned short char16_t;
typedef unsigned int   char32_t;
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 840 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __SIZEOF_INT128__
#define _LIBCPP_HAS_NO_INT128
#endif
# 844 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_CXX03_LANG
# define static_assert(...) _Static_assert(__VA_ARGS__)
# define decltype(...) __decltype(__VA_ARGS__)
#endif // _LIBCPP_CXX03_LANG
# 849 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_CXX03_LANG
#  define _LIBCPP_CONSTEXPR
#else
# 853 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR constexpr
#endif
# 855 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef __cpp_consteval
#  define _LIBCPP_CONSTEVAL _LIBCPP_CONSTEXPR
#else
# 859 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEVAL consteval
#endif
# 861 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_concepts) || __cpp_concepts < 201907L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 863 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_CONCEPTS
#endif
# 865 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 867 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_RANGES
#endif
# 869 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_CXX03_LANG
#  define _LIBCPP_DEFAULT {}
#else
# 873 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEFAULT = default;
#endif
# 875 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_CXX03_LANG
#  define _LIBCPP_EQUAL_DELETE
#else
# 879 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_EQUAL_DELETE = delete
#endif
# 881 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __GNUC__
#  define _LIBCPP_NOALIAS __attribute__((__malloc__))
#else
# 885 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NOALIAS
#endif
# 887 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(using_if_exists)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 889 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_USING_IF_EXISTS __attribute__((using_if_exists))
#else
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_USING_IF_EXISTS
#endif
# 893 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
#  define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx
#  define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \
     __lx __v_; \
     _LIBCPP_INLINE_VISIBILITY x(__lx __v) : __v_(__v) {} \
     _LIBCPP_INLINE_VISIBILITY explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \
     _LIBCPP_INLINE_VISIBILITY operator int() const {return __v_;} \
     };
#else  // _LIBCPP_HAS_NO_STRONG_ENUMS
# 903 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x
#  define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x)
#endif // _LIBCPP_HAS_NO_STRONG_ENUMS
# 906 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// _LIBCPP_DEBUG potential values:
//  - undefined: No assertions. This is the default.
//  - 0:         Basic assertions
//  - 1:         Basic assertions + iterator validity checks.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DEBUG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 912 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_DEBUG_LEVEL 0
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_DEBUG == 0
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 914 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_DEBUG_LEVEL 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_DEBUG == 1
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 916 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_DEBUG_LEVEL 2
#else
# 918 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# error Supported values for _LIBCPP_DEBUG are 0 and 1
#endif
# 920 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Libc++ allows disabling extern template instantiation declarations by
// means of users defining _LIBCPP_DISABLE_EXTERN_TEMPLATE.
//
// Furthermore, when the Debug mode is enabled, we disable extern declarations
// when building user code because we don't want to use the functions compiled
// in the library, which might not have had the debug mode enabled when built.
// However, some extern declarations need to be used, because code correctness
// depends on it (several instances in <locale>). Those special declarations
// are declared with _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE, which is enabled
// even when the debug mode is enabled.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DISABLE_EXTERN_TEMPLATE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 932 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_EXTERN_TEMPLATE(...) /* nothing */
#   define _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(...) /* nothing */
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_DEBUG_LEVEL >= 1 && !defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 935 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_EXTERN_TEMPLATE(...) /* nothing */
#   define _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(...) extern template __VA_ARGS__;
#else
# 938 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
#   define _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(...) extern template __VA_ARGS__;
#endif
# 941 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || \
    defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 944 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_LOCALE__L_EXTENSIONS 1
#endif
# 946 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef __FreeBSD__
#define _DECLARE_C99_LDBL_MATH 1
#endif
# 950 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// If we are getting operator new from the MSVC CRT, then allocation overloads
// for align_val_t were added in 19.12, aka VS 2017 version 15.3.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 954 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_ABI_VCRUNTIME) && !defined(__cpp_aligned_new)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 956 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
   // We're deferring to Microsoft's STL to provide aligned new et al. We don't
   // have it unless the language feature test macro is defined.
#  define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__MVS__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 960 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
#endif
# 962 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 964 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
      defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 966 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
#  endif
# 968 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // defined(__APPLE__)
# 969 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || \
    (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 972 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
#endif
# 974 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) || defined(__FreeBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 976 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_DEFAULTRUNELOCALE
#endif
# 978 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 980 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_WCTYPE_IS_MASK
#endif
# 982 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || !defined(__cpp_char8_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 984 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_CHAR8_T
#endif
# 986 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Deprecation macros.
//
// Deprecations warnings are always enabled, except when users explicitly opt-out
// by defining _LIBCPP_DISABLE_DEPRECATION_WARNINGS.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 992 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if __has_attribute(deprecated)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 993 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 995 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_DEPRECATED [[deprecated]]
#  else
# 997 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_DEPRECATED
#  endif
# 999 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#else
# 1000 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED
#endif
# 1002 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1004 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED
#else
# 1006 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX11
#endif
# 1008 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1010 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED
#else
# 1012 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX14
#endif
# 1014 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1016 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
#else
# 1018 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX17
#endif
# 1020 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1022 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_DEPRECATED
#else
# 1024 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_IN_CXX20
#endif
# 1026 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_CHAR8_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1028 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_WITH_CHAR8_T _LIBCPP_DEPRECATED
#else
# 1030 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DEPRECATED_WITH_CHAR8_T
#endif
# 1032 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Macros to enter and leave a state where deprecation warnings are suppressed.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_CLANG_BASED) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1035 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \
        _Pragma("GCC diagnostic push") \
        _Pragma("GCC diagnostic ignored \"-Wdeprecated\"") \
        _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
#   define _LIBCPP_SUPPRESS_DEPRECATED_POP \
        _Pragma("GCC diagnostic pop")
#else
# 1042 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_SUPPRESS_DEPRECATED_PUSH
#   define _LIBCPP_SUPPRESS_DEPRECATED_POP
#endif
# 1045 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1047 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_EXPLICIT_AFTER_CXX11
#else
# 1049 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit
#endif
# 1051 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1053 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr
#else
# 1055 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX11
#endif
# 1057 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1059 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX14 constexpr
#else
# 1061 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX14
#endif
# 1063 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1065 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX17 constexpr
#else
# 1067 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_CONSTEXPR_AFTER_CXX17
#endif
# 1069 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// The _LIBCPP_NODISCARD_ATTRIBUTE should only be used to define other
// NODISCARD macros to the correct attribute.
#if 0 /* disabled by -frewrite-includes */
#if __has_cpp_attribute(nodiscard) || defined(_LIBCPP_COMPILER_MSVC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1073 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_ATTRIBUTE [[nodiscard]]
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_CLANG_BASED) && !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1075 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_ATTRIBUTE [[clang::warn_unused_result]]
#else
# 1077 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// We can't use GCC's [[gnu::warn_unused_result]] and
// __attribute__((warn_unused_result)), because GCC does not silence them via
// (void) cast.
#  define _LIBCPP_NODISCARD_ATTRIBUTE
#endif
# 1082 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// _LIBCPP_NODISCARD_EXT may be used to apply [[nodiscard]] to entities not
// specified as such as an extension.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_NODISCARD) && !defined(_LIBCPP_DISABLE_NODISCARD_EXT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1086 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_EXT _LIBCPP_NODISCARD_ATTRIBUTE
#else
# 1088 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_EXT
#endif
# 1090 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_NODISCARD_AFTER_CXX17) && \
    (_LIBCPP_STD_VER > 17 || defined(_LIBCPP_ENABLE_NODISCARD))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1093 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD_ATTRIBUTE
#else
# 1095 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NODISCARD_AFTER_CXX17
#endif
# 1097 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && defined(__cpp_inline_variables) && (__cpp_inline_variables >= 201606L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1099 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_INLINE_VAR inline
#else
# 1101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_INLINE_VAR
#endif
# 1103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DEBUG) || defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_CONSTEXPR_IF_NODEBUG
#else
# 1107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_CONSTEXPR_IF_NODEBUG constexpr
#endif
# 1109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(no_destroy)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__))
#else
# 1113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_DESTROY
#endif
# 1115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_HAS_NO_ASAN
extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container(
  const void *, const void *, const void *, const void *);
#endif
# 1120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Try to find out if RTTI is disabled.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_CLANG_BASED) && !__has_feature(cxx_rtti)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_RTTI
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GNUC__) && !defined(__GXX_RTTI)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_RTTI
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_MSVC) && !defined(_CPPRTTI)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1127 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_NO_RTTI
#endif
# 1129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_WEAK
#define _LIBCPP_WEAK __attribute__((__weak__))
#endif
# 1133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Thread API
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_THREADS) && \
    !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \
    !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \
    !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(__FreeBSD__) || \
      defined(__wasi__) || \
      defined(__NetBSD__) || \
      defined(__OpenBSD__) || \
      defined(__NuttX__) || \
      defined(__linux__) || \
      defined(__GNU__) || \
      defined(__APPLE__) || \
      defined(__CloudABI__) || \
      defined(__sun__) || \
      defined(__MVS__) || \
      defined(_AIX) || \
      (defined(__MINGW32__) && __has_include(<pthread.h>))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_THREAD_API_PTHREAD
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(__Fuchsia__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
     // TODO(44575): Switch to C11 thread API when possible.
#    define _LIBCPP_HAS_THREAD_API_PTHREAD
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif defined(_LIBCPP_WIN32API)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_HAS_THREAD_API_WIN32
#  else
# 1159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    error "No thread API"
#  endif // _LIBCPP_HAS_THREAD_API
# 1161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // _LIBCPP_HAS_NO_THREADS
# 1162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__ANDROID__) && __ANDROID_API__ >= 30
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_COND_CLOCKWAIT
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_GLIBC_PREREQ)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_GLIBC_PREREQ(2, 30)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_COND_CLOCKWAIT
#endif
# 1170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 1171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 1172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#error _LIBCPP_HAS_THREAD_API_PTHREAD may only be defined when \
       _LIBCPP_HAS_NO_THREADS is not defined.
#endif
# 1177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1179 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \
       _LIBCPP_HAS_NO_THREADS is defined.
#endif
# 1182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \
       _LIBCPP_HAS_NO_THREADS is defined.
#endif
# 1187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(__STDCPP_THREADS__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define __STDCPP_THREADS__ 1
#endif
# 1191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// The glibc and Bionic implementation of pthreads implements
// pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32
// mutexes have no destroy mechanism.
//
// This optimization can't be performed on Apple platforms, where
// pthread_mutex_destroy can allow the kernel to release resources.
// See https://llvm.org/D64298 for details.
//
// TODO(EricWF): Enable this optimization on Bionic after speaking to their
//               respective stakeholders.
#if 0 /* disabled by -frewrite-includes */
#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__GLIBC__)) \
  || (defined(_LIBCPP_HAS_THREAD_API_C11) && defined(__Fuchsia__)) \
  || defined(_LIBCPP_HAS_THREAD_API_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION
#endif
# 1207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Destroying a condvar is a nop on Windows.
//
// This optimization can't be performed on Apple platforms, where
// pthread_cond_destroy can allow the kernel to release resources.
// See https://llvm.org/D64298 for details.
//
// TODO(EricWF): This is potentially true for some pthread implementations
// as well.
#if 0 /* disabled by -frewrite-includes */
#if (defined(_LIBCPP_HAS_THREAD_API_C11) && defined(__Fuchsia__)) || \
     defined(_LIBCPP_HAS_THREAD_API_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION
#endif
# 1220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Systems that use capability-based security (FreeBSD with Capsicum,
// Nuxi CloudABI) may only provide local filesystem access (using *at()).
// Functions like open(), rename(), unlink() and stat() should not be
// used, as they attempt to access the global filesystem namespace.
#ifdef __CloudABI__
#define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
#endif
# 1228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// CloudABI is intended for running networked services. Processes do not
// have standard input and output channels.
#ifdef __CloudABI__
#define _LIBCPP_HAS_NO_STDIN
#define _LIBCPP_HAS_NO_STDOUT
#endif
# 1235 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Some systems do not provide gets() in their C library, for security reasons.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_MSVCRT) || \
    (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) || \
    defined(__OpenBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_C_HAS_NO_GETS
#endif
# 1242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__BIONIC__) || defined(__CloudABI__) || defined(__NuttX__) ||      \
    defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC) || \
    defined(__MVS__) || defined(__OpenBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
#endif
# 1248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Thread-unsafe functions such as strtok() and localtime()
// are not available.
#ifdef __CloudABI__
#define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
#endif
# 1254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1256 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_C_ATOMIC_IMP
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_GCC_ATOMIC_IMP
#endif
# 1260 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && \
     !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) && \
     !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP)) \
     || defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1265 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_HAS_NO_ATOMIC_HEADER
#else
# 1267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  ifndef _LIBCPP_ATOMIC_FLAG_TYPE
#    define _LIBCPP_ATOMIC_FLAG_TYPE bool
#  endif
# 1270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  ifdef _LIBCPP_FREESTANDING
#    define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS
#  endif
# 1273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 1274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
#endif
# 1278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(__clang__) && __has_attribute(acquire_capability)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
// Work around the attribute handling in clang.  When both __declspec and
// __attribute__ are present, the processing goes awry preventing the definition
// of the types.
#if 0 /* disabled by -frewrite-includes */
#    if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
#    endif
# 1287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  endif
# 1288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif
# 1289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
#   define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) __attribute__((x))
#else
# 1293 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_THREAD_SAFETY_ANNOTATION(x)
#endif
# 1295 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(require_constant_initialization)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1297 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__))
#else
# 1299 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_SAFE_STATIC
#endif
# 1301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
#endif
# 1305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__builtin_is_constant_evaluated) && _GNUC_VER < 900
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1307 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED
#endif
# 1309 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(diagnose_if) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1311 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DIAGNOSE_WARNING(...) \
     __attribute__((diagnose_if(__VA_ARGS__, "warning")))
#  define _LIBCPP_DIAGNOSE_ERROR(...) \
     __attribute__((diagnose_if(__VA_ARGS__, "error")))
#else
# 1316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DIAGNOSE_WARNING(...)
#  define _LIBCPP_DIAGNOSE_ERROR(...)
#endif
# 1319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Use a function like macro to imply that it must be followed by a semicolon
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1322 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FALLTHROUGH() [[fallthrough]]
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __has_cpp_attribute(clang::fallthrough)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 1324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FALLTHROUGH() [[clang::fallthrough]]
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __has_attribute(fallthrough) || _GNUC_VER >= 700
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__))
#else
# 1328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FALLTHROUGH() ((void)0)
#endif
# 1330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__nodebug__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_NODEBUG __attribute__((__nodebug__))
#else
# 1334 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_NODEBUG
#endif
# 1336 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__nodebug__) && (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 900)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1338 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_NODEBUG_TYPE __attribute__((nodebug))
#else
# 1340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#   define _LIBCPP_NODEBUG_TYPE
#endif
# 1342 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__standalone_debug__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1344 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_STANDALONE_DEBUG __attribute__((__standalone_debug__))
#else
# 1346 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_STANDALONE_DEBUG
#endif
# 1348 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(__preferred_name__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1350 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_PREFERRED_NAME(x) __attribute__((__preferred_name__(x)))
#else
# 1352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_PREFERRED_NAME(x)
#endif
# 1354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_MICROSOFT) && \
    (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
#else
# 1359 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_DECLSPEC_EMPTY_BASES
#endif
# 1361 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR
#define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS
#define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE
#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS
#endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES
# 1368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1370 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS
#define _LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
#define _LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
#define _LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR
#define _LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS
#endif // _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES
# 1376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1378 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_DEDUCTION_GUIDES
#endif
# 1380 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !__has_keyword(__is_aggregate) && (_GNUC_VER_NEW < 7001)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1382 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_IS_AGGREGATE
#endif
# 1384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_COROUTINES
#endif
# 1388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_SPACESHIP_OPERATOR
#endif
# 1392 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_IBM)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO
#endif
# 1396 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_PUSH_MACROS
#  define _LIBCPP_POP_MACROS
#else
# 1401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
  // Don't warn about macro conflicts when we can restore them at the
  // end of the header.
#  ifndef _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS
#    define _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS
#  endif
# 1406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(_LIBCPP_COMPILER_MSVC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_PUSH_MACROS    \
       __pragma(push_macro("min")) \
       __pragma(push_macro("max"))
#    define _LIBCPP_POP_MACROS     \
       __pragma(pop_macro("min"))  \
       __pragma(pop_macro("max"))
#  else
# 1414 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#    define _LIBCPP_PUSH_MACROS        \
       _Pragma("push_macro(\"min\")")  \
       _Pragma("push_macro(\"max\")")
#    define _LIBCPP_POP_MACROS         \
       _Pragma("pop_macro(\"min\")")   \
       _Pragma("pop_macro(\"max\")")
#  endif
# 1421 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO)
# 1422 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifndef _LIBCPP_NO_AUTO_LINK
#if 0 /* disabled by -frewrite-includes */
#  if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#if 0 /* disabled by -frewrite-includes */
#    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      pragma comment(lib, "c++.lib")
#    else
# 1428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#      pragma comment(lib, "libc++.lib")
#    endif
# 1430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY)
# 1431 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#endif // _LIBCPP_NO_AUTO_LINK
# 1432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Configures the fopen close-on-exec mode character, if any. This string will
// be appended to any mode string used by fstream for fopen/fdopen.
//
// Not all platforms support this, but it helps avoid fd-leaks on platforms that
// do.
#if 0 /* disabled by -frewrite-includes */
#if defined(__BIONIC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1439 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FOPEN_CLOEXEC_MODE "e"
#else
# 1441 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#  define _LIBCPP_FOPEN_CLOEXEC_MODE
#endif
# 1443 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#ifdef _LIBCPP_COMPILER_HAS_BUILTIN_CONSTANT_P
#define _LIBCPP_BUILTIN_CONSTANT_P(x) __builtin_constant_p(x)
#else
# 1447 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_BUILTIN_CONSTANT_P(x) false
#endif
# 1449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

// Support for _FILE_OFFSET_BITS=64 landed gradually in Android, so the full set
// of functions used in cstdio may not be available for low API levels when
// using 64-bit file offsets on LP32.
#if 0 /* disabled by -frewrite-includes */
#if defined(__BIONIC__) && defined(__USE_FILE_OFFSET64) && __ANDROID_API__ < 24
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_HAS_NO_FGETPOS_FSETPOS
#endif
# 1456 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_attribute(init_priority)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((init_priority(101)))
#else
# 1460 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# define _LIBCPP_INIT_PRIORITY_MAX
#endif
# 1462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) || defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_FORMAT_PRINTF(a, b)                                            \
  __attribute__((__format__(__printf__, a, b)))
#else
# 1467 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
#define _LIBCPP_FORMAT_PRINTF(a, b)
#endif
# 1469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#endif // __cplusplus
# 1471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3

#endif // _LIBCPP_CONFIG
# 1473 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__config" 3
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <ios>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 1 3
// -*- C++ -*-
//===---------------------------- ios -------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_IOS
#define _LIBCPP_IOS

/*
    ios synopsis

#include <iosfwd>

namespace std
{

typedef OFF_T streamoff;
typedef SZ_T streamsize;
template <class stateT> class fpos;

class ios_base
{
public:
    class failure;

    typedef T1 fmtflags;
    static constexpr fmtflags boolalpha;
    static constexpr fmtflags dec;
    static constexpr fmtflags fixed;
    static constexpr fmtflags hex;
    static constexpr fmtflags internal;
    static constexpr fmtflags left;
    static constexpr fmtflags oct;
    static constexpr fmtflags right;
    static constexpr fmtflags scientific;
    static constexpr fmtflags showbase;
    static constexpr fmtflags showpoint;
    static constexpr fmtflags showpos;
    static constexpr fmtflags skipws;
    static constexpr fmtflags unitbuf;
    static constexpr fmtflags uppercase;
    static constexpr fmtflags adjustfield;
    static constexpr fmtflags basefield;
    static constexpr fmtflags floatfield;

    typedef T2 iostate;
    static constexpr iostate badbit;
    static constexpr iostate eofbit;
    static constexpr iostate failbit;
    static constexpr iostate goodbit;

    typedef T3 openmode;
    static constexpr openmode app;
    static constexpr openmode ate;
    static constexpr openmode binary;
    static constexpr openmode in;
    static constexpr openmode out;
    static constexpr openmode trunc;

    typedef T4 seekdir;
    static constexpr seekdir beg;
    static constexpr seekdir cur;
    static constexpr seekdir end;

    class Init;

    // 27.5.2.2 fmtflags state:
    fmtflags flags() const;
    fmtflags flags(fmtflags fmtfl);
    fmtflags setf(fmtflags fmtfl);
    fmtflags setf(fmtflags fmtfl, fmtflags mask);
    void unsetf(fmtflags mask);

    streamsize precision() const;
    streamsize precision(streamsize prec);
    streamsize width() const;
    streamsize width(streamsize wide);

    // 27.5.2.3 locales:
    locale imbue(const locale& loc);
    locale getloc() const;

    // 27.5.2.5 storage:
    static int xalloc();
    long& iword(int index);
    void*& pword(int index);

    // destructor
    virtual ~ios_base();

    // 27.5.2.6 callbacks;
    enum event { erase_event, imbue_event, copyfmt_event };
    typedef void (*event_callback)(event, ios_base&, int index);
    void register_callback(event_callback fn, int index);

    ios_base(const ios_base&) = delete;
    ios_base& operator=(const ios_base&) = delete;

    static bool sync_with_stdio(bool sync = true);

protected:
    ios_base();
};

template <class charT, class traits = char_traits<charT> >
class basic_ios
    : public ios_base
{
public:
    // types:
    typedef charT char_type;
    typedef typename traits::int_type int_type;  // removed in C++17
    typedef typename traits::pos_type pos_type;  // removed in C++17
    typedef typename traits::off_type off_type;  // removed in C++17
    typedef traits traits_type;

    operator unspecified-bool-type() const;
    bool operator!() const;
    iostate rdstate() const;
    void clear(iostate state = goodbit);
    void setstate(iostate state);
    bool good() const;
    bool eof() const;
    bool fail() const;
    bool bad() const;

    iostate exceptions() const;
    void exceptions(iostate except);

    // 27.5.4.1 Constructor/destructor:
    explicit basic_ios(basic_streambuf<charT,traits>* sb);
    virtual ~basic_ios();

    // 27.5.4.2 Members:
    basic_ostream<charT,traits>* tie() const;
    basic_ostream<charT,traits>* tie(basic_ostream<charT,traits>* tiestr);

    basic_streambuf<charT,traits>* rdbuf() const;
    basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb);

    basic_ios& copyfmt(const basic_ios& rhs);

    char_type fill() const;
    char_type fill(char_type ch);

    locale imbue(const locale& loc);

    char narrow(char_type c, char dfault) const;
    char_type widen(char c) const;

    basic_ios(const basic_ios& ) = delete;
    basic_ios& operator=(const basic_ios&) = delete;

protected:
    basic_ios();
    void init(basic_streambuf<charT,traits>* sb);
    void move(basic_ios& rhs);
    void swap(basic_ios& rhs) noexcept;
    void set_rdbuf(basic_streambuf<charT, traits>* sb);
};

// 27.5.5, manipulators:
ios_base& boolalpha (ios_base& str);
ios_base& noboolalpha(ios_base& str);
ios_base& showbase (ios_base& str);
ios_base& noshowbase (ios_base& str);
ios_base& showpoint (ios_base& str);
ios_base& noshowpoint(ios_base& str);
ios_base& showpos (ios_base& str);
ios_base& noshowpos (ios_base& str);
ios_base& skipws (ios_base& str);
ios_base& noskipws (ios_base& str);
ios_base& uppercase (ios_base& str);
ios_base& nouppercase(ios_base& str);
ios_base& unitbuf (ios_base& str);
ios_base& nounitbuf (ios_base& str);

// 27.5.5.2 adjustfield:
ios_base& internal (ios_base& str);
ios_base& left (ios_base& str);
ios_base& right (ios_base& str);

// 27.5.5.3 basefield:
ios_base& dec (ios_base& str);
ios_base& hex (ios_base& str);
ios_base& oct (ios_base& str);

// 27.5.5.4 floatfield:
ios_base& fixed (ios_base& str);
ios_base& scientific (ios_base& str);
ios_base& hexfloat (ios_base& str);
ios_base& defaultfloat(ios_base& str);

// 27.5.5.5 error reporting:
enum class io_errc
{
    stream = 1
};

concept_map ErrorCodeEnum<io_errc> { };
error_code make_error_code(io_errc e) noexcept;
error_condition make_error_condition(io_errc e) noexcept;
storage-class-specifier const error_category& iostream_category() noexcept;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#if 0 /* expanded by -frewrite-includes */
#include <__locale>
#endif /* expanded by -frewrite-includes */
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___LOCALE
#define _LIBCPP___LOCALE

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___AVAILABILITY
#define _LIBCPP___AVAILABILITY

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#if 0 /* expanded by -frewrite-includes */
#   pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

// Libc++ is shipped by various vendors. In particular, it is used as a system
// library on macOS, iOS and other Apple platforms. In order for users to be
// able to compile a binary that is intended to be deployed to an older version
// of a platform, Clang provides availability attributes [1]. These attributes
// can be placed on declarations and are used to describe the life cycle of a
// symbol in the library.
//
// The main goal is to ensure a compile-time error if a symbol that hasn't been
// introduced in a previously released library is used in a program that targets
// that previously released library. Normally, this would be a load-time error
// when one tries to launch the program against the older library.
//
// For example, the filesystem library was introduced in the dylib in macOS 10.15.
// If a user compiles on a macOS 10.15 host but targets macOS 10.13 with their
// program, the compiler would normally not complain (because the required
// declarations are in the headers), but the dynamic loader would fail to find
// the symbols when actually trying to launch the program on macOS 10.13. To
// turn this into a compile-time issue instead, declarations are annotated with
// when they were introduced, and the compiler can produce a diagnostic if the
// program references something that isn't available on the deployment target.
//
// This mechanism is general in nature, and any vendor can add their markup to
// the library (see below). Whenever a new feature is added that requires support
// in the shared library, a macro should be added below to mark this feature
// as unavailable. When vendors decide to ship the feature as part of their
// shared library, they can update the markup appropriately.
//
// Furthermore, many features in the standard library have corresponding
// feature-test macros. When a feature is made unavailable on some deployment
// target, a macro should be defined to signal that it is unavailable. That
// macro can then be picked up when feature-test macros are generated (see
// generate_feature_test_macro_components.py) to make sure that feature-test
// macros don't announce a feature as being implemented if it has been marked
// as unavailable.
//
// Note that this mechanism is disabled by default in the "upstream" libc++.
// Availability annotations are only meaningful when shipping libc++ inside
// a platform (i.e. as a system library), and so vendors that want them should
// turn those annotations on at CMake configuration time.
//
// [1]: https://clang.llvm.org/docs/AttributeReference.html#availability


// For backwards compatibility, allow users to define _LIBCPP_DISABLE_AVAILABILITY
// for a while.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DISABLE_AVAILABILITY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#if 0 /* disabled by -frewrite-includes */
#   if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#       define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
#   endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

// Availability markup is disabled when building the library, or when the compiler
// doesn't support the proper attributes.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_BUILDING_LIBRARY) ||                                        \
    defined(_LIBCXXABI_BUILDING_LIBRARY) ||                                     \
    !__has_feature(attribute_availability_with_strict) ||                       \
    !__has_feature(attribute_availability_in_templates) ||                      \
    !__has_extension(pragma_clang_attribute_external_declaration)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#if 0 /* disabled by -frewrite-includes */
#   if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#       define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
#   endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

    // This controls the availability of std::shared_mutex and std::shared_timed_mutex,
    // which were added to the dylib later.
#   define _LIBCPP_AVAILABILITY_SHARED_MUTEX
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_mutex
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_timed_mutex

    // These macros control the availability of std::bad_optional_access and
    // other exception types. These were put in the shared library to prevent
    // code bloat from every user program defining the vtable for these exception
    // types.
#   define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
#   define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
#   define _LIBCPP_AVAILABILITY_BAD_ANY_CAST

    // This controls the availability of std::uncaught_exceptions().
#   define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS

    // This controls the availability of the sized version of ::operator delete,
    // which was added to the dylib later.
#   define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE

    // This controls the availability of the std::future_error exception.
#   define _LIBCPP_AVAILABILITY_FUTURE_ERROR

    // This controls the availability of std::type_info's vtable.
    // I can't imagine how using std::type_info can work at all if
    // this isn't supported.
#   define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE

    // This controls the availability of std::locale::category members
    // (e.g. std::locale::collate), which are defined in the dylib.
#   define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY

    // This controls the availability of atomic operations on std::shared_ptr
    // (e.g. `std::atomic_store(std::shared_ptr)`), which require a shared
    // lock table located in the dylib.
#   define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR

    // These macros control the availability of all parts of <filesystem> that
    // depend on something in the dylib.
#   define _LIBCPP_AVAILABILITY_FILESYSTEM
#   define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH
#   define _LIBCPP_AVAILABILITY_FILESYSTEM_POP
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_filesystem

    // This controls the availability of std::to_chars.
#   define _LIBCPP_AVAILABILITY_TO_CHARS

    // This controls the availability of the C++20 synchronization library,
    // which requires shared library support for various operations
    // (see libcxx/src/atomic.cpp).
#   define _LIBCPP_AVAILABILITY_SYNC
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_atomic_wait
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_latch
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_semaphore

    // This controls the availability of the C++20 format library.
    // The library is in development and not ABI stable yet. Currently
    // P2216 is aiming to be retroactively accepted in C++20. This paper
    // contains ABI breaking changes.
#   define _LIBCPP_AVAILABILITY_FORMAT
// #   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__APPLE__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#   define _LIBCPP_AVAILABILITY_SHARED_MUTEX                                    \
        __attribute__((availability(macosx,strict,introduced=10.12)))           \
        __attribute__((availability(ios,strict,introduced=10.0)))               \
        __attribute__((availability(tvos,strict,introduced=10.0)))              \
        __attribute__((availability(watchos,strict,introduced=3.0)))
#if 0 /* disabled by -frewrite-includes */
#   if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200) ||    \
        (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000) || \
        (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000) ||         \
        (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_mutex
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_timed_mutex
#   endif
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#   define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS                             \
        __attribute__((availability(macosx,strict,introduced=10.13)))           \
        __attribute__((availability(ios,strict,introduced=11.0)))               \
        __attribute__((availability(tvos,strict,introduced=11.0)))              \
        __attribute__((availability(watchos,strict,introduced=4.0)))
#   define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS                              \
        _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
#   define _LIBCPP_AVAILABILITY_BAD_ANY_CAST                                    \
        _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS

#   define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS                             \
        __attribute__((availability(macosx,strict,introduced=10.12)))           \
        __attribute__((availability(ios,strict,introduced=10.0)))               \
        __attribute__((availability(tvos,strict,introduced=10.0)))              \
        __attribute__((availability(watchos,strict,introduced=3.0)))

#   define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE                                \
        __attribute__((availability(macosx,strict,introduced=10.12)))           \
        __attribute__((availability(ios,strict,introduced=10.0)))               \
        __attribute__((availability(tvos,strict,introduced=10.0)))              \
        __attribute__((availability(watchos,strict,introduced=3.0)))

#   define _LIBCPP_AVAILABILITY_FUTURE_ERROR                                    \
        __attribute__((availability(ios,strict,introduced=6.0)))

#   define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE                                 \
        __attribute__((availability(macosx,strict,introduced=10.9)))            \
        __attribute__((availability(ios,strict,introduced=7.0)))

#   define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY                                 \
        __attribute__((availability(macosx,strict,introduced=10.9)))            \
        __attribute__((availability(ios,strict,introduced=7.0)))

#   define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR                               \
        __attribute__((availability(macosx,strict,introduced=10.9)))            \
        __attribute__((availability(ios,strict,introduced=7.0)))

#   define _LIBCPP_AVAILABILITY_FILESYSTEM                                      \
        __attribute__((availability(macosx,strict,introduced=10.15)))           \
        __attribute__((availability(ios,strict,introduced=13.0)))               \
        __attribute__((availability(tvos,strict,introduced=13.0)))              \
        __attribute__((availability(watchos,strict,introduced=6.0)))
#   define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH                                 \
        _Pragma("clang attribute push(__attribute__((availability(macosx,strict,introduced=10.15))), apply_to=any(function,record))") \
        _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))")     \
        _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))")    \
        _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))")
#   define _LIBCPP_AVAILABILITY_FILESYSTEM_POP                                  \
        _Pragma("clang attribute pop")                                          \
        _Pragma("clang attribute pop")                                          \
        _Pragma("clang attribute pop")                                          \
        _Pragma("clang attribute pop")
#if 0 /* disabled by -frewrite-includes */
#   if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101500) ||    \
        (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 130000) || \
        (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 130000) ||         \
        (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 60000)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_filesystem
#   endif
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#   define _LIBCPP_AVAILABILITY_TO_CHARS                                        \
        _LIBCPP_AVAILABILITY_FILESYSTEM

#   define _LIBCPP_AVAILABILITY_SYNC                                            \
        __attribute__((availability(macosx,strict,introduced=11.0)))            \
        __attribute__((availability(ios,strict,introduced=14.0)))               \
        __attribute__((availability(tvos,strict,introduced=14.0)))              \
        __attribute__((availability(watchos,strict,introduced=7.0)))
#if 0 /* disabled by -frewrite-includes */
#   if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 110000) ||    \
        (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 140000) || \
        (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 140000) ||         \
        (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 70000)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_atomic_wait
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_latch
#       define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_semaphore
#   endif
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

    // This controls the availability of the C++20 format library.
    // The library is in development and not ABI stable yet. Currently
    // P2216 is aiming to be retroactively accepted in C++20. This paper
    // contains ABI breaking changes.
#   define _LIBCPP_AVAILABILITY_FORMAT                                          \
        __attribute__((unavailable))
#   define _LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format
#else
# 248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

// ...New vendors can add availability markup here...

#   error "It looks like you're trying to enable vendor availability markup, but you haven't defined the corresponding macros yet!"

#endif
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

// Define availability attributes that depend on _LIBCPP_NO_EXCEPTIONS.
// Those are defined in terms of the availability attributes above, and
// should not be vendor-specific.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_NO_EXCEPTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#   define _LIBCPP_AVAILABILITY_FUTURE
#   define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
#   define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
#   define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
#else
# 264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
#   define _LIBCPP_AVAILABILITY_FUTURE                    _LIBCPP_AVAILABILITY_FUTURE_ERROR
#   define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST        _LIBCPP_AVAILABILITY_BAD_ANY_CAST
#   define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
#   define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS  _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
#endif
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3

#endif // _LIBCPP___AVAILABILITY
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__availability" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 1 3
// -*- C++ -*-
//===--------------------------- string -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STRING
#define _LIBCPP_STRING

/*
    string synopsis

namespace std
{

template <class stateT>
class fpos
{
private:
    stateT st;
public:
    fpos(streamoff = streamoff());

    operator streamoff() const;

    stateT state() const;
    void state(stateT);

    fpos& operator+=(streamoff);
    fpos  operator+ (streamoff) const;
    fpos& operator-=(streamoff);
    fpos  operator- (streamoff) const;
};

template <class stateT> streamoff operator-(const fpos<stateT>& x, const fpos<stateT>& y);

template <class stateT> bool operator==(const fpos<stateT>& x, const fpos<stateT>& y);
template <class stateT> bool operator!=(const fpos<stateT>& x, const fpos<stateT>& y);

template <class charT>
struct char_traits
{
    typedef charT     char_type;
    typedef ...       int_type;
    typedef streamoff off_type;
    typedef streampos pos_type;
    typedef mbstate_t state_type;

    static void assign(char_type& c1, const char_type& c2) noexcept;
    static constexpr bool eq(char_type c1, char_type c2) noexcept;
    static constexpr bool lt(char_type c1, char_type c2) noexcept;

    static int              compare(const char_type* s1, const char_type* s2, size_t n);
    static size_t           length(const char_type* s);
    static const char_type* find(const char_type* s, size_t n, const char_type& a);
    static char_type*       move(char_type* s1, const char_type* s2, size_t n);
    static char_type*       copy(char_type* s1, const char_type* s2, size_t n);
    static char_type*       assign(char_type* s, size_t n, char_type a);

    static constexpr int_type  not_eof(int_type c) noexcept;
    static constexpr char_type to_char_type(int_type c) noexcept;
    static constexpr int_type  to_int_type(char_type c) noexcept;
    static constexpr bool      eq_int_type(int_type c1, int_type c2) noexcept;
    static constexpr int_type  eof() noexcept;
};

template <> struct char_traits<char>;
template <> struct char_traits<wchar_t>;
template <> struct char_traits<char8_t>;  // C++20
template <> struct char_traits<char16_t>;
template <> struct char_traits<char32_t>;

template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
class basic_string
{
public:
// types:
    typedef traits traits_type;
    typedef typename traits_type::char_type value_type;
    typedef Allocator allocator_type;
    typedef typename allocator_type::size_type size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef typename allocator_type::reference reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef typename allocator_type::pointer pointer;
    typedef typename allocator_type::const_pointer const_pointer;
    typedef implementation-defined iterator;
    typedef implementation-defined const_iterator;
    typedef std::reverse_iterator<iterator> reverse_iterator;
    typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

    static const size_type npos = -1;

    basic_string()
        noexcept(is_nothrow_default_constructible<allocator_type>::value);
    explicit basic_string(const allocator_type& a);
    basic_string(const basic_string& str);
    basic_string(basic_string&& str)
        noexcept(is_nothrow_move_constructible<allocator_type>::value);
    basic_string(const basic_string& str, size_type pos,
                 const allocator_type& a = allocator_type());
    basic_string(const basic_string& str, size_type pos, size_type n,
                 const Allocator& a = Allocator());
    template<class T>
        basic_string(const T& t, size_type pos, size_type n, const Allocator& a = Allocator()); // C++17
    template <class T>
        explicit basic_string(const T& t, const Allocator& a = Allocator()); // C++17
    basic_string(const value_type* s, const allocator_type& a = allocator_type());
    basic_string(const value_type* s, size_type n, const allocator_type& a = allocator_type());
    basic_string(nullptr_t) = delete; // C++2b
    basic_string(size_type n, value_type c, const allocator_type& a = allocator_type());
    template<class InputIterator>
        basic_string(InputIterator begin, InputIterator end,
                     const allocator_type& a = allocator_type());
    basic_string(initializer_list<value_type>, const Allocator& = Allocator());
    basic_string(const basic_string&, const Allocator&);
    basic_string(basic_string&&, const Allocator&);

    ~basic_string();

    operator basic_string_view<charT, traits>() const noexcept;

    basic_string& operator=(const basic_string& str);
    template <class T>
        basic_string& operator=(const T& t); // C++17
    basic_string& operator=(basic_string&& str)
        noexcept(
             allocator_type::propagate_on_container_move_assignment::value ||
             allocator_type::is_always_equal::value ); // C++17
    basic_string& operator=(const value_type* s);
    basic_string& operator=(nullptr_t) = delete; // C++2b
    basic_string& operator=(value_type c);
    basic_string& operator=(initializer_list<value_type>);

    iterator       begin() noexcept;
    const_iterator begin() const noexcept;
    iterator       end() noexcept;
    const_iterator end() const noexcept;

    reverse_iterator       rbegin() noexcept;
    const_reverse_iterator rbegin() const noexcept;
    reverse_iterator       rend() noexcept;
    const_reverse_iterator rend() const noexcept;

    const_iterator         cbegin() const noexcept;
    const_iterator         cend() const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend() const noexcept;

    size_type size() const noexcept;
    size_type length() const noexcept;
    size_type max_size() const noexcept;
    size_type capacity() const noexcept;

    void resize(size_type n, value_type c);
    void resize(size_type n);

    void reserve(size_type res_arg);
    void reserve(); // deprecated in C++20
    void shrink_to_fit();
    void clear() noexcept;
    bool empty() const noexcept;

    const_reference operator[](size_type pos) const;
    reference       operator[](size_type pos);

    const_reference at(size_type n) const;
    reference       at(size_type n);

    basic_string& operator+=(const basic_string& str);
    template <class T>
        basic_string& operator+=(const T& t);              // C++17
    basic_string& operator+=(const value_type* s);
    basic_string& operator+=(value_type c);
    basic_string& operator+=(initializer_list<value_type>);

    basic_string& append(const basic_string& str);
    template <class T>
        basic_string& append(const T& t);                 // C++17
    basic_string& append(const basic_string& str, size_type pos, size_type n=npos); //C++14
    template <class T>
        basic_string& append(const T& t, size_type pos, size_type n=npos); // C++17
    basic_string& append(const value_type* s, size_type n);
    basic_string& append(const value_type* s);
    basic_string& append(size_type n, value_type c);
    template<class InputIterator>
        basic_string& append(InputIterator first, InputIterator last);
    basic_string& append(initializer_list<value_type>);

    void push_back(value_type c);
    void pop_back();
    reference       front();
    const_reference front() const;
    reference       back();
    const_reference back() const;

    basic_string& assign(const basic_string& str);
    template <class T>
        basic_string& assign(const T& t);  // C++17
    basic_string& assign(basic_string&& str);
    basic_string& assign(const basic_string& str, size_type pos, size_type n=npos); // C++14
    template <class T>
        basic_string& assign(const T& t, size_type pos, size_type n=npos); // C++17
    basic_string& assign(const value_type* s, size_type n);
    basic_string& assign(const value_type* s);
    basic_string& assign(size_type n, value_type c);
    template<class InputIterator>
        basic_string& assign(InputIterator first, InputIterator last);
    basic_string& assign(initializer_list<value_type>);

    basic_string& insert(size_type pos1, const basic_string& str);
    template <class T>
        basic_string& insert(size_type pos1, const T& t);
    basic_string& insert(size_type pos1, const basic_string& str,
                         size_type pos2, size_type n);
    template <class T>
        basic_string& insert(size_type pos1, const T& t, size_type pos2, size_type n); // C++17
    basic_string& insert(size_type pos, const value_type* s, size_type n=npos); //C++14
    basic_string& insert(size_type pos, const value_type* s);
    basic_string& insert(size_type pos, size_type n, value_type c);
    iterator      insert(const_iterator p, value_type c);
    iterator      insert(const_iterator p, size_type n, value_type c);
    template<class InputIterator>
        iterator insert(const_iterator p, InputIterator first, InputIterator last);
    iterator      insert(const_iterator p, initializer_list<value_type>);

    basic_string& erase(size_type pos = 0, size_type n = npos);
    iterator      erase(const_iterator position);
    iterator      erase(const_iterator first, const_iterator last);

    basic_string& replace(size_type pos1, size_type n1, const basic_string& str);
    template <class T>
    basic_string& replace(size_type pos1, size_type n1, const T& t);  // C++17
    basic_string& replace(size_type pos1, size_type n1, const basic_string& str,
                          size_type pos2, size_type n2=npos); // C++14
    template <class T>
        basic_string& replace(size_type pos1, size_type n1, const T& t,
                              size_type pos2, size_type n); // C++17
    basic_string& replace(size_type pos, size_type n1, const value_type* s, size_type n2);
    basic_string& replace(size_type pos, size_type n1, const value_type* s);
    basic_string& replace(size_type pos, size_type n1, size_type n2, value_type c);
    basic_string& replace(const_iterator i1, const_iterator i2, const basic_string& str);
    template <class T>
        basic_string& replace(const_iterator i1, const_iterator i2, const T& t);  // C++17
    basic_string& replace(const_iterator i1, const_iterator i2, const value_type* s, size_type n);
    basic_string& replace(const_iterator i1, const_iterator i2, const value_type* s);
    basic_string& replace(const_iterator i1, const_iterator i2, size_type n, value_type c);
    template<class InputIterator>
        basic_string& replace(const_iterator i1, const_iterator i2, InputIterator j1, InputIterator j2);
    basic_string& replace(const_iterator i1, const_iterator i2, initializer_list<value_type>);

    size_type copy(value_type* s, size_type n, size_type pos = 0) const;
    basic_string substr(size_type pos = 0, size_type n = npos) const;

    void swap(basic_string& str)
        noexcept(allocator_traits<allocator_type>::propagate_on_container_swap::value ||
                 allocator_traits<allocator_type>::is_always_equal::value);  // C++17

    const value_type* c_str() const noexcept;
    const value_type* data() const noexcept;
          value_type* data()       noexcept;   // C++17

    allocator_type get_allocator() const noexcept;

    size_type find(const basic_string& str, size_type pos = 0) const noexcept;
    template <class T>
        size_type find(const T& t, size_type pos = 0) const noexcept; // C++17, noexcept as an extension
    size_type find(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type find(const value_type* s, size_type pos = 0) const noexcept;
    size_type find(value_type c, size_type pos = 0) const noexcept;

    size_type rfind(const basic_string& str, size_type pos = npos) const noexcept;
    template <class T>
        size_type rfind(const T& t, size_type pos = npos) const noexcept; // C++17, noexcept as an extension
    size_type rfind(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type rfind(const value_type* s, size_type pos = npos) const noexcept;
    size_type rfind(value_type c, size_type pos = npos) const noexcept;

    size_type find_first_of(const basic_string& str, size_type pos = 0) const noexcept;
    template <class T>
        size_type find_first_of(const T& t, size_type pos = 0) const noexcept; // C++17, noexcept as an extension
    size_type find_first_of(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type find_first_of(const value_type* s, size_type pos = 0) const noexcept;
    size_type find_first_of(value_type c, size_type pos = 0) const noexcept;

    size_type find_last_of(const basic_string& str, size_type pos = npos) const noexcept;
    template <class T>
        size_type find_last_of(const T& t, size_type pos = npos) const noexcept noexcept; // C++17, noexcept as an extension
    size_type find_last_of(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type find_last_of(const value_type* s, size_type pos = npos) const noexcept;
    size_type find_last_of(value_type c, size_type pos = npos) const noexcept;

    size_type find_first_not_of(const basic_string& str, size_type pos = 0) const noexcept;
    template <class T>
        size_type find_first_not_of(const T& t, size_type pos = 0) const noexcept; // C++17, noexcept as an extension
    size_type find_first_not_of(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type find_first_not_of(const value_type* s, size_type pos = 0) const noexcept;
    size_type find_first_not_of(value_type c, size_type pos = 0) const noexcept;

    size_type find_last_not_of(const basic_string& str, size_type pos = npos) const noexcept;
    template <class T>
        size_type find_last_not_of(const T& t, size_type pos = npos) const noexcept; // C++17, noexcept as an extension
    size_type find_last_not_of(const value_type* s, size_type pos, size_type n) const noexcept;
    size_type find_last_not_of(const value_type* s, size_type pos = npos) const noexcept;
    size_type find_last_not_of(value_type c, size_type pos = npos) const noexcept;

    int compare(const basic_string& str) const noexcept;
    template <class T>
        int compare(const T& t) const noexcept;  // C++17, noexcept as an extension
    int compare(size_type pos1, size_type n1, const basic_string& str) const;
    template <class T>
        int compare(size_type pos1, size_type n1, const T& t) const;  // C++17
    int compare(size_type pos1, size_type n1, const basic_string& str,
                size_type pos2, size_type n2=npos) const; // C++14
    template <class T>
        int compare(size_type pos1, size_type n1, const T& t,
                    size_type pos2, size_type n2=npos) const; // C++17
    int compare(const value_type* s) const noexcept;
    int compare(size_type pos1, size_type n1, const value_type* s) const;
    int compare(size_type pos1, size_type n1, const value_type* s, size_type n2) const;

    bool starts_with(basic_string_view<charT, traits> sv) const noexcept; // C++20
    bool starts_with(charT c) const noexcept;                             // C++20
    bool starts_with(const charT* s) const;                               // C++20
    bool ends_with(basic_string_view<charT, traits> sv) const noexcept;   // C++20
    bool ends_with(charT c) const noexcept;                               // C++20
    bool ends_with(const charT* s) const;                                 // C++20

    constexpr bool contains(basic_string_view<charT, traits> sv) const noexcept; // C++2b
    constexpr bool contains(charT c) const noexcept;                             // C++2b
    constexpr bool contains(const charT* s) const;                               // C++2b

    bool __invariants() const;
};

template<class InputIterator,
         class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
basic_string(InputIterator, InputIterator, Allocator = Allocator())
   -> basic_string<typename iterator_traits<InputIterator>::value_type,
                  char_traits<typename iterator_traits<InputIterator>::value_type>,
                  Allocator>;   // C++17

template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs,
          const basic_string<charT, traits, Allocator>& rhs);

template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const charT* lhs , const basic_string<charT,traits,Allocator>&rhs);

template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(charT lhs, const basic_string<charT,traits,Allocator>& rhs);

template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs);

template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs, charT rhs);

template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT, traits, Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator==(const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator!=(const basic_string<charT,traits,Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator!=(const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator!=(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator< (const basic_string<charT, traits, Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator< (const basic_string<charT, traits, Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator< (const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator> (const basic_string<charT, traits, Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator> (const basic_string<charT, traits, Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator> (const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator<=(const basic_string<charT, traits, Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator<=(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator<=(const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator>=(const basic_string<charT, traits, Allocator>& lhs,
                const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator>=(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs) noexcept;

template<class charT, class traits, class Allocator>
bool operator>=(const charT* lhs, const basic_string<charT, traits, Allocator>& rhs) noexcept;

template<class charT, class traits, class Allocator>
void swap(basic_string<charT, traits, Allocator>& lhs,
          basic_string<charT, traits, Allocator>& rhs)
            noexcept(noexcept(lhs.swap(rhs)));

template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
operator>>(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str);

template<class charT, class traits, class Allocator>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const basic_string<charT, traits, Allocator>& str);

template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str,
        charT delim);

template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str);

template<class charT, class traits, class Allocator, class U>
typename basic_string<charT, traits, Allocator>::size_type
erase(basic_string<charT, traits, Allocator>& c, const U& value);    // C++20
template<class charT, class traits, class Allocator, class Predicate>
typename basic_string<charT, traits, Allocator>::size_type
erase_if(basic_string<charT, traits, Allocator>& c, Predicate pred); // C++20

typedef basic_string<char>    string;
typedef basic_string<wchar_t> wstring;
typedef basic_string<char8_t> u8string; // C++20
typedef basic_string<char16_t> u16string;
typedef basic_string<char32_t> u32string;

int                stoi  (const string& str, size_t* idx = nullptr, int base = 10);
long               stol  (const string& str, size_t* idx = nullptr, int base = 10);
unsigned long      stoul (const string& str, size_t* idx = nullptr, int base = 10);
long long          stoll (const string& str, size_t* idx = nullptr, int base = 10);
unsigned long long stoull(const string& str, size_t* idx = nullptr, int base = 10);

float       stof (const string& str, size_t* idx = nullptr);
double      stod (const string& str, size_t* idx = nullptr);
long double stold(const string& str, size_t* idx = nullptr);

string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);

int                stoi  (const wstring& str, size_t* idx = nullptr, int base = 10);
long               stol  (const wstring& str, size_t* idx = nullptr, int base = 10);
unsigned long      stoul (const wstring& str, size_t* idx = nullptr, int base = 10);
long long          stoll (const wstring& str, size_t* idx = nullptr, int base = 10);
unsigned long long stoull(const wstring& str, size_t* idx = nullptr, int base = 10);

float       stof (const wstring& str, size_t* idx = nullptr);
double      stod (const wstring& str, size_t* idx = nullptr);
long double stold(const wstring& str, size_t* idx = nullptr);

wstring to_wstring(int val);
wstring to_wstring(unsigned val);
wstring to_wstring(long val);
wstring to_wstring(unsigned long val);
wstring to_wstring(long long val);
wstring to_wstring(unsigned long long val);
wstring to_wstring(float val);
wstring to_wstring(double val);
wstring to_wstring(long double val);

template <> struct hash<string>;
template <> struct hash<u8string>; // C++20
template <> struct hash<u16string>;
template <> struct hash<u32string>;
template <> struct hash<wstring>;

basic_string<char>     operator "" s( const char *str,     size_t len ); // C++14
basic_string<wchar_t>  operator "" s( const wchar_t *str,  size_t len ); // C++14
basic_string<char8_t>  operator "" s( const char8_t *str,  size_t len ); // C++20
basic_string<char16_t> operator "" s( const char16_t *str, size_t len ); // C++14
basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++14

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 1 3
// -*- C++ -*-
//===--------------------------- __debug ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_DEBUG_H
#define _LIBCPP_DEBUG_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 1 3
// -*- C++ -*-
//===--------------------------- iosfwd -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_IOSFWD
#define _LIBCPP_IOSFWD

/*
    iosfwd synopsis

namespace std
{

template<class charT> struct char_traits;
template<>            struct char_traits<char>;
template<>            struct char_traits<char8_t>;  // C++20
template<>            struct char_traits<char16_t>;
template<>            struct char_traits<char32_t>;
template<>            struct char_traits<wchar_t>;

template<class T>     class allocator;

class ios_base;
template <class charT, class traits = char_traits<charT> > class basic_ios;

template <class charT, class traits = char_traits<charT> > class basic_streambuf;
template <class charT, class traits = char_traits<charT> > class basic_istream;
template <class charT, class traits = char_traits<charT> > class basic_ostream;
template <class charT, class traits = char_traits<charT> > class basic_iostream;

template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
    class basic_stringbuf;
template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
    class basic_istringstream;
template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
    class basic_ostringstream;
template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
    class basic_stringstream;

template <class charT, class traits = char_traits<charT> > class basic_filebuf;
template <class charT, class traits = char_traits<charT> > class basic_ifstream;
template <class charT, class traits = char_traits<charT> > class basic_ofstream;
template <class charT, class traits = char_traits<charT> > class basic_fstream;

template <class charT, class traits = char_traits<charT> > class istreambuf_iterator;
template <class charT, class traits = char_traits<charT> > class ostreambuf_iterator;

typedef basic_ios<char>              ios;
typedef basic_ios<wchar_t>           wios;

typedef basic_streambuf<char>        streambuf;
typedef basic_istream<char>          istream;
typedef basic_ostream<char>          ostream;
typedef basic_iostream<char>         iostream;

typedef basic_stringbuf<char>        stringbuf;
typedef basic_istringstream<char>    istringstream;
typedef basic_ostringstream<char>    ostringstream;
typedef basic_stringstream<char>     stringstream;

typedef basic_filebuf<char>          filebuf;
typedef basic_ifstream<char>         ifstream;
typedef basic_ofstream<char>         ofstream;
typedef basic_fstream<char>          fstream;

typedef basic_streambuf<wchar_t>     wstreambuf;
typedef basic_istream<wchar_t>       wistream;
typedef basic_ostream<wchar_t>       wostream;
typedef basic_iostream<wchar_t>      wiostream;

typedef basic_stringbuf<wchar_t>     wstringbuf;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<wchar_t>  wstringstream;

typedef basic_filebuf<wchar_t>       wfilebuf;
typedef basic_ifstream<wchar_t>      wifstream;
typedef basic_ofstream<wchar_t>      wofstream;
typedef basic_fstream<wchar_t>       wfstream;

template <class state> class fpos;
using streampos  = fpos<char_traits<char>::state_type>;
using wstreampos = fpos<char_traits<wchar_t>::state_type>;
using u8streampos = fpos<char_traits<char8_t>::state_type>; // C++20
using u16streampos = fpos<char_traits<char16_t>::state_type>;
using u32streampos = fpos<char_traits<char32_t>::state_type>;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
#if 0 /* expanded by -frewrite-includes */
#include <wchar.h>  // for mbstate_t
#endif /* expanded by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 1 3
// -*- C++ -*-
//===--------------------------- wchar.h ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_wint_t) || defined(__need_mbstate_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <wchar.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_WCHAR_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#define _LIBCPP_WCHAR_H

/*
    wchar.h synopsis

Macros:

    NULL
    WCHAR_MAX
    WCHAR_MIN
    WEOF

Types:

    mbstate_t
    size_t
    tm
    wint_t

int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...);
int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...);
int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...);
int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...);
int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);  // C99
int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg);
int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg);  // C99
int vwprintf(const wchar_t* restrict format, va_list arg);
int vwscanf(const wchar_t* restrict format, va_list arg);  // C99
int wprintf(const wchar_t* restrict format, ...);
int wscanf(const wchar_t* restrict format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* restrict s, FILE* restrict stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar();
wint_t putwc(wchar_t c, FILE* stream);
wint_t putwchar(wchar_t c);
wint_t ungetwc(wint_t c, FILE* stream);
double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr);
float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr);         // C99
long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr);  // C99
long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
int wcscmp(const wchar_t* s1, const wchar_t* s2);
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
const wchar_t* wcschr(const wchar_t* s, wchar_t c);
      wchar_t* wcschr(      wchar_t* s, wchar_t c);
size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
size_t wcslen(const wchar_t* s);
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
      wchar_t* wcsrchr(      wchar_t* s, wchar_t c);
size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);
wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr);
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
      wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);
int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format,
                const tm* restrict timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps);
size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len,
                 mbstate_t* restrict ps);
size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
                 mbstate_t* restrict ps);

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <stddef.h>
#endif /* expanded by -frewrite-includes */
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 1 3
// -*- C++ -*-
//===--------------------------- stddef.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_ptrdiff_t) || defined(__need_size_t) || \
    defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#endif
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stddef.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDDEF_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#define _LIBCPP_STDDEF_H

/*
    stddef.h synopsis

Macros:

    offsetof(type,member-designator)
    NULL

Types:

    ptrdiff_t
    size_t
    max_align_t // C++11
    nullptr_t

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stddef.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1990, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)stddef.h	8.1 (Berkeley) 6/2/93
 *
 * $FreeBSD$
 */

#ifndef _STDDEF_H_
#define _STDDEF_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2003 Marcel Moolenaar
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef NULL

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#define	NULL	((void *)0)
#else
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#define	NULL	nullptr
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GNUG__) && defined(__GNUC__) && __GNUC__ >= 4
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#define	NULL	__null
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__LP64__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#define	NULL	(0L)
#else
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#define	NULL	0
#endif	/* __LP64__ */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#endif	/* __GNUG__ */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
#endif	/* !__cplusplus */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4

#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_null.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#ifndef _PTRDIFF_T_DECLARED
typedef	__ptrdiff_t	ptrdiff_t;
#define	_PTRDIFF_T_DECLARED
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#ifndef _RUNE_T_DECLARED
typedef	__rune_t	rune_t;
#define	_RUNE_T_DECLARED
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#ifndef	__cplusplus
#ifndef _WCHAR_T_DECLARED
typedef	___wchar_t	wchar_t;
#define	_WCHAR_T_DECLARED
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#endif
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#ifndef __CLANG_MAX_ALIGN_T_DEFINED
typedef	__max_align_t	max_align_t;
#define __CLANG_MAX_ALIGN_T_DEFINED
#define _GCC_MAX_ALIGN_T
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#endif
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#define	offsetof(type, field)	__offsetof(type, field)

#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
/* ISO/IEC 9899:2011 K.3.3.2 */
#ifndef _RSIZE_T_DEFINED
#define _RSIZE_T_DEFINED
typedef size_t rsize_t;
#endif
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
#endif /* __EXT1_VISIBLE */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4

#endif /* _STDDEF_H_ */
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stddef.h" 3 4
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 2 3

#ifdef __cplusplus

extern "C++" {
#if 0 /* expanded by -frewrite-includes */
#include <__nullptr>
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 1 3
// -*- C++ -*-
//===--------------------------- __nullptr --------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_NULLPTR
#define _LIBCPP_NULLPTR

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3

#ifdef _LIBCPP_HAS_NO_NULLPTR

_LIBCPP_BEGIN_NAMESPACE_STD

struct _LIBCPP_TEMPLATE_VIS nullptr_t
{
    void* __lx;

    struct __nat {int __for_bool_;};

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t() : __lx(0) {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t(int __nat::*) : __lx(0) {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;}

    template <class _Tp>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
        operator _Tp* () const {return 0;}

    template <class _Tp, class _Up>
        _LIBCPP_INLINE_VISIBILITY
        operator _Tp _Up::* () const {return 0;}

    friend _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bool operator==(nullptr_t, nullptr_t) {return true;}
    friend _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bool operator!=(nullptr_t, nullptr_t) {return false;}
};

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t() {return nullptr_t(0);}

#define nullptr _VSTD::__get_nullptr_t()

_LIBCPP_END_NAMESPACE_STD

#else  // _LIBCPP_HAS_NO_NULLPTR
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3

namespace std
{
    typedef decltype(nullptr) nullptr_t;
}

#endif // _LIBCPP_HAS_NO_NULLPTR
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3

#endif // _LIBCPP_NULLPTR
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__nullptr" 3
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 2 3
using std::nullptr_t;
}

#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#endif // _LIBCPP_STDDEF_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#ifdef __cplusplus
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <wchar.h>
#endif /* expanded by -frewrite-includes */
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 1 3 4
/*-
 * SPDX-License-Identifier: (BSD-2-Clause AND BSD-2-Clause-NetBSD)
 *
 * Copyright (c)1999 Citrus Project,
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

/*-
 * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Julian Coleman.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 *	$NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
 */

#ifndef _WCHAR_H_
#define _WCHAR_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_limits.h" 1 3 4
/*-
 * Copyright (c) 1988, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)limits.h	8.3 (Berkeley) 1/4/94
 * $FreeBSD$
 */

#ifndef _MACHINE__LIMITS_H_
#define	_MACHINE__LIMITS_H_

/*
 * According to ANSI (section 2.2.4.2), the values below must be usable by
 * #if preprocessing directives.  Additionally, the expression must have the
 * same type as would an expression that is an object of the corresponding
 * type converted according to the integral promotions.  The subtraction for
 * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
 * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
 */

#define	__CHAR_BIT	8		/* number of bits in a char */

#define	__SCHAR_MAX	0x7f		/* max value for a signed char */
#define	__SCHAR_MIN	(-0x7f - 1)	/* min value for a signed char */

#define	__UCHAR_MAX	0xff		/* max value for an unsigned char */

#define	__USHRT_MAX	0xffff		/* max value for an unsigned short */
#define	__SHRT_MAX	0x7fff		/* max value for a short */
#define	__SHRT_MIN	(-0x7fff - 1)	/* min value for a short */

#define	__UINT_MAX	0xffffffff	/* max value for an unsigned int */
#define	__INT_MAX	0x7fffffff	/* max value for an int */
#define	__INT_MIN	(-0x7fffffff - 1)	/* min value for an int */

#define	__ULONG_MAX	0xffffffffffffffffUL	/* max for an unsigned long */
#define	__LONG_MAX	0x7fffffffffffffffL	/* max for a long */
#define	__LONG_MIN	(-0x7fffffffffffffffL - 1) /* min for a long */

/* Long longs have the same size but not the same type as longs. */
			/* max for an unsigned long long */
#define	__ULLONG_MAX	0xffffffffffffffffULL
#define	__LLONG_MAX	0x7fffffffffffffffLL	/* max for a long long */
#define	__LLONG_MIN	(-0x7fffffffffffffffLL - 1) /* min for a long long */

#define	__SSIZE_MAX	__LONG_MAX	/* max value for a ssize_t */

#define	__SIZE_T_MAX	__ULONG_MAX	/* max value for a size_t */

#define	__OFF_MAX	__LONG_MAX	/* max value for an off_t */
#define	__OFF_MIN	__LONG_MIN	/* min value for an off_t */

/* Quads and longs are the same size.  Ensure they stay in sync. */
#define	__UQUAD_MAX	(__ULONG_MAX)	/* max value for a uquad_t */
#define	__QUAD_MAX	(__LONG_MAX)	/* max value for a quad_t */
#define	__QUAD_MIN	(__LONG_MIN)	/* min value for a quad_t */

#define	__LONG_BIT	64
#define	__WORD_BIT	32

/* Minimum signal stack size. */
#define	__MINSIGSTKSZ	(1024 * 4)

#endif /* !_MACHINE__LIMITS_H_ */
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_limits.h" 3 4
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <_ctype.h>
#endif /* expanded by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * This code is derived from software contributed to Berkeley by
 * Paul Borman at Krystal Technologies.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * From @(#)ctype.h	8.4 (Berkeley) 1/21/94
 * From FreeBSD: src/include/ctype.h,v 1.27 2004/06/23 07:11:39 tjr Exp
 * $FreeBSD$
 */

#ifndef __CTYPE_H_
#define	__CTYPE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4

#define	_CTYPE_A	0x00000100L		/* Alpha */
#define	_CTYPE_C	0x00000200L		/* Control */
#define	_CTYPE_D	0x00000400L		/* Digit */
#define	_CTYPE_G	0x00000800L		/* Graph */
#define	_CTYPE_L	0x00001000L		/* Lower */
#define	_CTYPE_P	0x00002000L		/* Punct */
#define	_CTYPE_S	0x00004000L		/* Space */
#define	_CTYPE_U	0x00008000L		/* Upper */
#define	_CTYPE_X	0x00010000L		/* X digit */
#define	_CTYPE_B	0x00020000L		/* Blank */
#define	_CTYPE_R	0x00040000L		/* Print */
#define	_CTYPE_I	0x00080000L		/* Ideogram */
#define	_CTYPE_T	0x00100000L		/* Special */
#define	_CTYPE_Q	0x00200000L		/* Phonogram */
#define	_CTYPE_N 	0x00400000L		/* Number (superset of digit) */
#define	_CTYPE_SW0	0x20000000L		/* 0 width character */
#define	_CTYPE_SW1	0x40000000L		/* 1 width character */
#define	_CTYPE_SW2	0x80000000L		/* 2 width character */
#define	_CTYPE_SW3	0xc0000000L		/* 3 width character */
#define	_CTYPE_SWM	0xe0000000L		/* Mask for screen width data */
#define	_CTYPE_SWS	30			/* Bits to shift to get width */

/* See comments in <sys/_types.h> about __ct_rune_t. */
__BEGIN_DECLS
unsigned long	___runetype(__ct_rune_t) __pure;
__ct_rune_t	___tolower(__ct_rune_t) __pure;
__ct_rune_t	___toupper(__ct_rune_t) __pure;
__END_DECLS

/*
 * _EXTERNALIZE_CTYPE_INLINES_ is defined in locale/nomacros.c to tell us
 * to generate code for extern versions of all our inline functions.
 */
#ifdef _EXTERNALIZE_CTYPE_INLINES_
#define	_USE_CTYPE_INLINE_
#define	static
#define	__inline
#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4

extern int __mb_sb_limit;

/*
 * Use inline functions if we are allowed to and the compiler supports them.
 */
#if 0 /* disabled by -frewrite-includes */
#if !defined(_DONT_USE_CTYPE_INLINE_) && \
    (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <runetype.h>
#endif /* expanded by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Paul Borman at Krystal Technologies.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)runetype.h	8.1 (Berkeley) 6/2/93
 * $FreeBSD$
 */

#ifndef	_RUNETYPE_H_
#define	_RUNETYPE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4

#define	_CACHED_RUNES	(1 <<8 )	/* Must be a power of 2 */
#define	_CRMASK		(~(_CACHED_RUNES - 1))

/*
 * The lower 8 bits of runetype[] contain the digit value of the rune.
 */
typedef struct {
	__rune_t	__min;		/* First rune of the range */
	__rune_t	__max;		/* Last rune (inclusive) of the range */
	__rune_t	__map;		/* What first maps to in maps */
	unsigned long	*__types;	/* Array of types in range */
} _RuneEntry;

typedef struct {
	int		__nranges;	/* Number of ranges stored */
	_RuneEntry	*__ranges;	/* Pointer to the ranges */
} _RuneRange;

typedef struct {
	char		__magic[8];	/* Magic saying what version we are */
	char		__encoding[32];	/* ASCII name of this encoding */

	__rune_t	(*__sgetrune)(const char *, __size_t, char const **);
	int		(*__sputrune)(__rune_t, char *, __size_t, char **);
	__rune_t	__invalid_rune;

	unsigned long	__runetype[_CACHED_RUNES];
	__rune_t	__maplower[_CACHED_RUNES];
	__rune_t	__mapupper[_CACHED_RUNES];

	/*
	 * The following are to deal with Runes larger than _CACHED_RUNES - 1.
	 * Their data is actually contiguous with this structure so as to make
	 * it easier to read/write from/to disk.
	 */
	_RuneRange	__runetype_ext;
	_RuneRange	__maplower_ext;
	_RuneRange	__mapupper_ext;

	void		*__variable;	/* Data which depends on the encoding */
	int		__variable_len;	/* how long that data is */
} _RuneLocale;

#define	_RUNE_MAGIC_1	"RuneMagi"	/* Indicates version 0 of RuneLocale */
__BEGIN_DECLS
extern const _RuneLocale _DefaultRuneLocale;
extern const _RuneLocale *_CurrentRuneLocale;
#ifdef __RUNETYPE_INTERNAL
extern const _RuneLocale *__getCurrentRuneLocale(void);
#else
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
static __inline const _RuneLocale *__getCurrentRuneLocale(void)
{

	if (_ThreadRuneLocale) 
		return _ThreadRuneLocale;
	return _CurrentRuneLocale;
}
#endif /*__RUNETYPE_INTERNAL */
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
#define _CurrentRuneLocale (__getCurrentRuneLocale())
__END_DECLS

#endif	/* !_RUNETYPE_H_ */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/runetype.h" 3 4
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 2 3 4

static __inline int
__maskrune(__ct_rune_t _c, unsigned long _f)
{
	return ((_c < 0 || _c >= _CACHED_RUNES) ? ___runetype(_c) :
		_CurrentRuneLocale->__runetype[_c]) & _f;
}

static __inline int
__sbmaskrune(__ct_rune_t _c, unsigned long _f)
{
	return (_c < 0 || _c >= __mb_sb_limit) ? 0 :
	       _CurrentRuneLocale->__runetype[_c] & _f;
}

static __inline int
__istype(__ct_rune_t _c, unsigned long _f)
{
	return (!!__maskrune(_c, _f));
}

static __inline int
__sbistype(__ct_rune_t _c, unsigned long _f)
{
	return (!!__sbmaskrune(_c, _f));
}

static __inline int
__isctype(__ct_rune_t _c, unsigned long _f)
{
	return (_c < 0 || _c >= 128) ? 0 :
	       !!(_DefaultRuneLocale.__runetype[_c] & _f);
}

static __inline __ct_rune_t
__toupper(__ct_rune_t _c)
{
	return (_c < 0 || _c >= _CACHED_RUNES) ? ___toupper(_c) :
	       _CurrentRuneLocale->__mapupper[_c];
}

static __inline __ct_rune_t
__sbtoupper(__ct_rune_t _c)
{
	return (_c < 0 || _c >= __mb_sb_limit) ? _c :
	       _CurrentRuneLocale->__mapupper[_c];
}

static __inline __ct_rune_t
__tolower(__ct_rune_t _c)
{
	return (_c < 0 || _c >= _CACHED_RUNES) ? ___tolower(_c) :
	       _CurrentRuneLocale->__maplower[_c];
}

static __inline __ct_rune_t
__sbtolower(__ct_rune_t _c)
{
	return (_c < 0 || _c >= __mb_sb_limit) ? _c :
	       _CurrentRuneLocale->__maplower[_c];
}

static __inline int
__wcwidth(__ct_rune_t _c)
{
	unsigned int _x;

	if (_c == 0)
		return (0);
	_x = (unsigned int)__maskrune(_c, _CTYPE_SWM|_CTYPE_R);
	if ((_x & _CTYPE_SWM) != 0)
		return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
	return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}

#else /* not using inlines */
# 174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4

__BEGIN_DECLS
int		__maskrune(__ct_rune_t, unsigned long);
int		__sbmaskrune(__ct_rune_t, unsigned long);
int		__istype(__ct_rune_t, unsigned long);
int		__sbistype(__ct_rune_t, unsigned long);
int		__isctype(__ct_rune_t, unsigned long);
__ct_rune_t	__toupper(__ct_rune_t);
__ct_rune_t	__sbtoupper(__ct_rune_t);
__ct_rune_t	__tolower(__ct_rune_t);
__ct_rune_t	__sbtolower(__ct_rune_t);
int		__wcwidth(__ct_rune_t);
__END_DECLS
#endif /* using inlines */
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4

#endif /* !__CTYPE_H_ */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/_ctype.h" 3 4
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 2 3 4

#ifndef _MBSTATE_T_DECLARED
typedef	__mbstate_t	mbstate_t;
#define	_MBSTATE_T_DECLARED
#endif
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#ifndef _VA_LIST_DECLARED
typedef	__va_list	va_list;
#define	_VA_LIST_DECLARED
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#endif
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#ifndef	__cplusplus
#ifndef _WCHAR_T_DECLARED
typedef	___wchar_t	wchar_t;
#define	_WCHAR_T_DECLARED
#endif
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#endif
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#ifndef _WINT_T_DECLARED
typedef	__wint_t	wint_t;
#define	_WINT_T_DECLARED
#endif
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#define	WCHAR_MIN	__WCHAR_MIN
#define	WCHAR_MAX	__WCHAR_MAX

#ifndef WEOF
#define	WEOF 	((wint_t)-1)
#endif
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#ifndef _STDFILE_DECLARED
#define _STDFILE_DECLARED
typedef struct __sFILE FILE;
#endif
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
struct tm;

__BEGIN_DECLS
wint_t	btowc(int);
wint_t	fgetwc(FILE *);
wchar_t	*
	fgetws(wchar_t * __restrict, int, FILE * __restrict);
wint_t	fputwc(wchar_t, FILE *);
int	fputws(const wchar_t * __restrict, FILE * __restrict);
int	fwide(FILE *, int);
int	fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
int	fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
wint_t	getwc(FILE *);
wint_t	getwchar(void);
size_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
size_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
	    mbstate_t * __restrict);
int	mbsinit(const mbstate_t *);
size_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
	    mbstate_t * __restrict);
wint_t	putwc(wchar_t, FILE *);
wint_t	putwchar(wchar_t);
int	swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
	    ...);
int	swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
wint_t	ungetwc(wint_t, FILE *);
int	vfwprintf(FILE * __restrict, const wchar_t * __restrict,
	    __va_list);
int	vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
	    __va_list);
int	vwprintf(const wchar_t * __restrict, __va_list);
size_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
wchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
wchar_t	*wcschr(const wchar_t *, wchar_t) __pure;
int	wcscmp(const wchar_t *, const wchar_t *) __pure;
int	wcscoll(const wchar_t *, const wchar_t *);
wchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
size_t	wcscspn(const wchar_t *, const wchar_t *) __pure;
size_t	wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
	    const struct tm * __restrict);
size_t	wcslen(const wchar_t *) __pure;
wchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
	    size_t);
int	wcsncmp(const wchar_t *, const wchar_t *, size_t) __pure;
wchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
wchar_t	*wcspbrk(const wchar_t *, const wchar_t *) __pure;
wchar_t	*wcsrchr(const wchar_t *, wchar_t) __pure;
size_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
	    mbstate_t * __restrict);
size_t	wcsspn(const wchar_t *, const wchar_t *) __pure;
wchar_t	*wcsstr(const wchar_t * __restrict, const wchar_t * __restrict)
	    __pure;
size_t	wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t);
int	wctob(wint_t);
double	wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
wchar_t	*wcstok(wchar_t * __restrict, const wchar_t * __restrict,
	    wchar_t ** __restrict);
long	 wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
unsigned long
	 wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
wchar_t	*wmemchr(const wchar_t *, wchar_t, size_t) __pure;
int	wmemcmp(const wchar_t *, const wchar_t *, size_t) __pure;
wchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
wchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 176 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
wchar_t	*wmempcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
#endif
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
wchar_t	*wmemset(wchar_t *, wchar_t, size_t);
int	wprintf(const wchar_t * __restrict, ...);
int	wscanf(const wchar_t * __restrict, ...);

#ifndef _STDSTREAM_DECLARED
extern FILE *__stdinp;
extern FILE *__stdoutp;
extern FILE *__stderrp;
#define	_STDSTREAM_DECLARED
#endif
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#define	getwc(fp)	fgetwc(fp)
#define	getwchar()	fgetwc(__stdinp)
#define	putwc(wc, fp)	fputwc(wc, fp)
#define	putwchar(wc)	fputwc(wc, __stdoutp)

#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
int	vfwscanf(FILE * __restrict, const wchar_t * __restrict,
	    __va_list);
int	vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
	    __va_list);
int	vwscanf(const wchar_t * __restrict, __va_list);
float	wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
long double
	wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
#ifdef __LONG_LONG_SUPPORTED
/* LONGLONG */
long long
	wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
/* LONGLONG */
unsigned long long
	 wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
#endif
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#endif	/* __ISO_C_VISIBLE >= 1999 */
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
int	wcswidth(const wchar_t *, size_t);
int	wcwidth(wchar_t);
#define	wcwidth(_c)	__wcwidth(_c)
#endif
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
	    size_t, mbstate_t * __restrict);
FILE	*open_wmemstream(wchar_t **, size_t *);
wchar_t	*wcpcpy(wchar_t * __restrict, const wchar_t * __restrict);
wchar_t	*wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
wchar_t	*wcsdup(const wchar_t *) __malloc_like;
int	wcscasecmp(const wchar_t *, const wchar_t *);
int	wcsncasecmp(const wchar_t *, const wchar_t *, size_t n);
size_t	wcsnlen(const wchar_t *, size_t) __pure;
size_t	wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
	    size_t, mbstate_t * __restrict);
#endif
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
wchar_t	*fgetwln(FILE * __restrict, size_t * __restrict);
size_t	wcslcat(wchar_t *, const wchar_t *, size_t);
size_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
#endif
# 238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_wchar.h>
#endif /* expanded by -frewrite-includes */
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4

#ifndef _XLOCALE_WCHAR1_H
#define _XLOCALE_WCHAR1_H
int			 wcscasecmp_l(const wchar_t *, const wchar_t *,
			   locale_t);
int			 wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t,
			   locale_t);
int			 wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
size_t			 wcsxfrm_l(wchar_t * __restrict,
			   const wchar_t * __restrict, size_t, locale_t);

#endif /* _XLOCALE_WCHAR1_H */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4

/*
 * Only declare the non-POSIX functions if we're included from xlocale.h.
 */

#ifdef _XLOCALE_H_
#ifndef _XLOCALE_WCHAR2_H
#define _XLOCALE_WCHAR2_H

wint_t			 btowc_l(int, locale_t);
wint_t			 fgetwc_l(FILE *, locale_t);
wchar_t			*fgetws_l(wchar_t * __restrict, int, FILE * __restrict,
			    locale_t);
wint_t			 fputwc_l(wchar_t, FILE *, locale_t);
int			 fputws_l(const wchar_t * __restrict, FILE * __restrict,
			   locale_t);
int			 fwprintf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, ...);
int			 fwscanf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, ...);
wint_t			 getwc_l(FILE *, locale_t);
wint_t			 getwchar_l(locale_t);
size_t			 mbrlen_l(const char * __restrict, size_t,
			   mbstate_t * __restrict, locale_t);
size_t			 mbrtowc_l(wchar_t * __restrict,
			    const char * __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
int			 mbsinit_l(const mbstate_t *, locale_t);
size_t			 mbsrtowcs_l(wchar_t * __restrict,
			    const char ** __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
wint_t			 putwc_l(wchar_t, FILE *, locale_t);
wint_t			 putwchar_l(wchar_t, locale_t);
int			 swprintf_l(wchar_t * __restrict, size_t n, locale_t,
			    const wchar_t * __restrict, ...);
int			 swscanf_l(const wchar_t * __restrict, locale_t,
			   const wchar_t * __restrict, ...);
wint_t			 ungetwc_l(wint_t, FILE *, locale_t);
int			 vfwprintf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vswprintf_l(wchar_t * __restrict, size_t n, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vwprintf_l(locale_t, const wchar_t * __restrict,
			    __va_list);
size_t			 wcrtomb_l(char * __restrict, wchar_t,
			    mbstate_t * __restrict, locale_t);
size_t			 wcsftime_l(wchar_t * __restrict, size_t,
			    const wchar_t * __restrict,
			    const struct tm * __restrict, locale_t);
size_t			 wcsrtombs_l(char * __restrict,
			    const wchar_t ** __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
double			 wcstod_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long			 wcstol_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
unsigned long		 wcstoul_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
int			 wcswidth_l(const wchar_t *, size_t, locale_t);
int			 wctob_l(wint_t, locale_t);
int			 wcwidth_l(wchar_t, locale_t);
int			 wprintf_l(locale_t, const wchar_t * __restrict, ...);
int			 wscanf_l(locale_t, const wchar_t * __restrict, ...);
int			 vfwscanf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vswscanf_l(const wchar_t * __restrict, locale_t,
			    const wchar_t *__restrict, __va_list);
int			 vwscanf_l(locale_t, const wchar_t * __restrict,
			    __va_list);
float			 wcstof_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long double		 wcstold_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long long		 wcstoll_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
unsigned long long	 wcstoull_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
size_t			 mbsnrtowcs_l(wchar_t * __restrict,
			    const char ** __restrict, size_t, size_t,
			    mbstate_t * __restrict, locale_t);
size_t			 wcsnrtombs_l(char * __restrict,
			    const wchar_t ** __restrict, size_t, size_t,
			    mbstate_t * __restrict, locale_t);

#endif /* _XLOCALE_WCHAR_H */
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4
#endif /* _XLOCALE_H_ */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 2 3 4
#endif
# 242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
__END_DECLS

#endif /* !_WCHAR_H_ */
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wchar.h" 3 4
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 2 3

// Determine whether we have const-correct overloads for wcschr and friends.
#if 0 /* disabled by -frewrite-includes */
#if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#  define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GLIBC_PREREQ)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#  if __GLIBC_PREREQ(2, 10)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#    define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#  endif
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_MSVCRT)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(_CRT_CONST_CORRECT_OVERLOADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#    define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#  endif
# 132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && !defined(_LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
extern "C++" {
inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcschr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcschr(      wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcspbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcspbrk(      wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcsrchr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcsrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcsrchr(      wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcsstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcsstr(      wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return (wchar_t*)wmemchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wmemchr(      wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);}
}
#endif
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
extern "C" {
size_t mbsnrtowcs(wchar_t *__restrict dst, const char **__restrict src,
                  size_t nmc, size_t len, mbstate_t *__restrict ps);
size_t wcsnrtombs(char *__restrict dst, const wchar_t **__restrict src,
                  size_t nwc, size_t len, mbstate_t *__restrict ps);
}  // extern "C++"
#endif // __cplusplus && _LIBCPP_MSVCRT
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#endif // _LIBCPP_WCHAR_H
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
#endif
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3

_LIBCPP_BEGIN_NAMESPACE_STD

class _LIBCPP_TYPE_VIS ios_base;

template<class _CharT>  struct _LIBCPP_TEMPLATE_VIS char_traits;
template<> struct char_traits<char>;
#ifndef _LIBCPP_HAS_NO_CHAR8_T
template<> struct char_traits<char8_t>;
#endif
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
template<> struct char_traits<char16_t>;
template<> struct char_traits<char32_t>;
template<> struct char_traits<wchar_t>;

template<class _Tp>     class _LIBCPP_TEMPLATE_VIS allocator;

template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_ios;

template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_streambuf;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_istream;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_ostream;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_iostream;

template <class _CharT, class _Traits = char_traits<_CharT>,
          class _Allocator = allocator<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_stringbuf;
template <class _CharT, class _Traits = char_traits<_CharT>,
          class _Allocator = allocator<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_istringstream;
template <class _CharT, class _Traits = char_traits<_CharT>,
          class _Allocator = allocator<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_ostringstream;
template <class _CharT, class _Traits = char_traits<_CharT>,
          class _Allocator = allocator<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_stringstream;

template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_filebuf;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_ifstream;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_ofstream;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_fstream;

template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS istreambuf_iterator;
template <class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator;

typedef basic_ios<char>              ios;
typedef basic_ios<wchar_t>           wios;

typedef basic_streambuf<char>        streambuf;
typedef basic_istream<char>          istream;
typedef basic_ostream<char>          ostream;
typedef basic_iostream<char>         iostream;

typedef basic_stringbuf<char>        stringbuf;
typedef basic_istringstream<char>    istringstream;
typedef basic_ostringstream<char>    ostringstream;
typedef basic_stringstream<char>     stringstream;

typedef basic_filebuf<char>          filebuf;
typedef basic_ifstream<char>         ifstream;
typedef basic_ofstream<char>         ofstream;
typedef basic_fstream<char>          fstream;

typedef basic_streambuf<wchar_t>     wstreambuf;
typedef basic_istream<wchar_t>       wistream;
typedef basic_ostream<wchar_t>       wostream;
typedef basic_iostream<wchar_t>      wiostream;

typedef basic_stringbuf<wchar_t>     wstringbuf;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<wchar_t>  wstringstream;

typedef basic_filebuf<wchar_t>       wfilebuf;
typedef basic_ifstream<wchar_t>      wifstream;
typedef basic_ofstream<wchar_t>      wofstream;
typedef basic_fstream<wchar_t>       wfstream;

template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_PREFERRED_NAME(wios) basic_ios;

template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(streambuf) _LIBCPP_PREFERRED_NAME(wstreambuf) basic_streambuf;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(istream) _LIBCPP_PREFERRED_NAME(wistream) basic_istream;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(ostream) _LIBCPP_PREFERRED_NAME(wostream) basic_ostream;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(iostream) _LIBCPP_PREFERRED_NAME(wiostream) basic_iostream;

template <class _CharT, class _Traits, class _Allocator>
    class _LIBCPP_PREFERRED_NAME(stringbuf) _LIBCPP_PREFERRED_NAME(wstringbuf) basic_stringbuf;
template <class _CharT, class _Traits, class _Allocator>
    class _LIBCPP_PREFERRED_NAME(istringstream) _LIBCPP_PREFERRED_NAME(wistringstream) basic_istringstream;
template <class _CharT, class _Traits, class _Allocator>
    class _LIBCPP_PREFERRED_NAME(ostringstream) _LIBCPP_PREFERRED_NAME(wostringstream) basic_ostringstream;
template <class _CharT, class _Traits, class _Allocator>
    class _LIBCPP_PREFERRED_NAME(stringstream) _LIBCPP_PREFERRED_NAME(wstringstream) basic_stringstream;

template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(filebuf) _LIBCPP_PREFERRED_NAME(wfilebuf) basic_filebuf;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(ifstream) _LIBCPP_PREFERRED_NAME(wifstream) basic_ifstream;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(ofstream) _LIBCPP_PREFERRED_NAME(wofstream) basic_ofstream;
template <class _CharT, class _Traits>
    class _LIBCPP_PREFERRED_NAME(fstream) _LIBCPP_PREFERRED_NAME(wfstream) basic_fstream;

template <class _State>             class _LIBCPP_TEMPLATE_VIS fpos;
typedef fpos<mbstate_t>    streampos;
typedef fpos<mbstate_t>    wstreampos;
#ifndef _LIBCPP_HAS_NO_CHAR8_T
typedef fpos<mbstate_t>    u8streampos;
#endif
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
typedef fpos<mbstate_t>    u16streampos;
typedef fpos<mbstate_t>    u32streampos;
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 231 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_NEWLIB_VERSION)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
// On newlib, off_t is 'long int'
typedef long int streamoff;         // for char_traits in <string>
#else
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
typedef long long streamoff;        // for char_traits in <string>
#endif
# 238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3

template <class _CharT,             // for <stdexcept>
          class _Traits = char_traits<_CharT>,
          class _Allocator = allocator<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_string;
typedef basic_string<char, char_traits<char>, allocator<char> > string;
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;

template <class _CharT, class _Traits, class _Allocator>
    class _LIBCPP_PREFERRED_NAME(string) _LIBCPP_PREFERRED_NAME(wstring) basic_string;

// Include other forward declarations here
template <class _Tp, class _Alloc = allocator<_Tp> >
class _LIBCPP_TEMPLATE_VIS vector;

template <class _CharT, class _Traits>
class __save_flags
{
    typedef basic_ios<_CharT, _Traits> __stream_type;
    typedef typename __stream_type::fmtflags fmtflags;

    __stream_type& __stream_;
    fmtflags       __fmtflags_;
    _CharT         __fill_;

    __save_flags(const __save_flags&);
    __save_flags& operator=(const __save_flags&);
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __save_flags(__stream_type& __stream)
        : __stream_(__stream),
          __fmtflags_(__stream.flags()),
          __fill_(__stream.fill())
        {}
    _LIBCPP_INLINE_VISIBILITY
    ~__save_flags()
    {
        __stream_.flags(__fmtflags_);
        __stream_.fill(__fill_);
    }
};

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_IOSFWD
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iosfwd" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_NULLPTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
# include <cstddef>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
#   include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
#   include <cstdio>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#if 0 /* expanded by -frewrite-includes */
#   include <cstddef>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#endif
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 0
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#   define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
#   define _LIBCPP_ASSERT_IMPL(x, m) ((void)0)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_DEBUG_LEVEL == 1
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#   define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
#   define _LIBCPP_ASSERT_IMPL(x, m) ((x) ? (void)0 : _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#   define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(x, m)
#   define _LIBCPP_ASSERT_IMPL(x, m) ((x) ? (void)0 : _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
#else
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#   error _LIBCPP_DEBUG_LEVEL must be one of 0, 1, 2
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ASSERT)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
#   define _LIBCPP_ASSERT(x, m) _LIBCPP_ASSERT_IMPL(x, m)
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

_LIBCPP_BEGIN_NAMESPACE_STD

struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info {
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __libcpp_debug_info()
      : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {}
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m)
    : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {}

  _LIBCPP_FUNC_VIS string what() const;

  const char* __file_;
  int __line_;
  const char* __pred_;
  const char* __msg_;
};

/// __libcpp_debug_function_type - The type of the assertion failure handler.
typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&);

/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
///    fails.
extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function;

/// __libcpp_abort_debug_function - A debug handler that aborts when called.
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
void __libcpp_abort_debug_function(__libcpp_debug_info const&);

/// __libcpp_set_debug_function - Set the debug handler to the specified
///    function.
_LIBCPP_FUNC_VIS
bool __libcpp_set_debug_function(__libcpp_debug_function_type __func);

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2 || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

struct _LIBCPP_TYPE_VIS __c_node;

struct _LIBCPP_TYPE_VIS __i_node
{
    void* __i_;
    __i_node* __next_;
    __c_node* __c_;

#ifndef _LIBCPP_CXX03_LANG
    __i_node(const __i_node&) = delete;
    __i_node& operator=(const __i_node&) = delete;
#else
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
private:
    __i_node(const __i_node&);
    __i_node& operator=(const __i_node&);
public:
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
    _LIBCPP_INLINE_VISIBILITY
    __i_node(void* __i, __i_node* __next, __c_node* __c)
        : __i_(__i), __next_(__next), __c_(__c) {}
    ~__i_node();
};

struct _LIBCPP_TYPE_VIS __c_node
{
    void* __c_;
    __c_node* __next_;
    __i_node** beg_;
    __i_node** end_;
    __i_node** cap_;

#ifndef _LIBCPP_CXX03_LANG
    __c_node(const __c_node&) = delete;
    __c_node& operator=(const __c_node&) = delete;
#else
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
private:
    __c_node(const __c_node&);
    __c_node& operator=(const __c_node&);
public:
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
    _LIBCPP_INLINE_VISIBILITY
    __c_node(void* __c, __c_node* __next)
        : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {}
    virtual ~__c_node();

    virtual bool __dereferenceable(const void*) const = 0;
    virtual bool __decrementable(const void*) const = 0;
    virtual bool __addable(const void*, ptrdiff_t) const = 0;
    virtual bool __subscriptable(const void*, ptrdiff_t) const = 0;

    void __add(__i_node* __i);
    _LIBCPP_HIDDEN void __remove(__i_node* __i);
};

template <class _Cont>
struct _C_node
    : public __c_node
{
    _C_node(void* __c, __c_node* __n)
        : __c_node(__c, __n) {}

    virtual bool __dereferenceable(const void*) const;
    virtual bool __decrementable(const void*) const;
    virtual bool __addable(const void*, ptrdiff_t) const;
    virtual bool __subscriptable(const void*, ptrdiff_t) const;
};

template <class _Cont>
inline bool
_C_node<_Cont>::__dereferenceable(const void* __i) const
{
    typedef typename _Cont::const_iterator iterator;
    const iterator* __j = static_cast<const iterator*>(__i);
    _Cont* _Cp = static_cast<_Cont*>(__c_);
    return _Cp->__dereferenceable(__j);
}

template <class _Cont>
inline bool
_C_node<_Cont>::__decrementable(const void* __i) const
{
    typedef typename _Cont::const_iterator iterator;
    const iterator* __j = static_cast<const iterator*>(__i);
    _Cont* _Cp = static_cast<_Cont*>(__c_);
    return _Cp->__decrementable(__j);
}

template <class _Cont>
inline bool
_C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const
{
    typedef typename _Cont::const_iterator iterator;
    const iterator* __j = static_cast<const iterator*>(__i);
    _Cont* _Cp = static_cast<_Cont*>(__c_);
    return _Cp->__addable(__j, __n);
}

template <class _Cont>
inline bool
_C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const
{
    typedef typename _Cont::const_iterator iterator;
    const iterator* __j = static_cast<const iterator*>(__i);
    _Cont* _Cp = static_cast<_Cont*>(__c_);
    return _Cp->__subscriptable(__j, __n);
}

class _LIBCPP_TYPE_VIS __libcpp_db
{
    __c_node** __cbeg_;
    __c_node** __cend_;
    size_t   __csz_;
    __i_node** __ibeg_;
    __i_node** __iend_;
    size_t   __isz_;

    __libcpp_db();
public:
#ifndef _LIBCPP_CXX03_LANG
    __libcpp_db(const __libcpp_db&) = delete;
    __libcpp_db& operator=(const __libcpp_db&) = delete;
#else
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
private:
    __libcpp_db(const __libcpp_db&);
    __libcpp_db& operator=(const __libcpp_db&);
public:
#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
    ~__libcpp_db();

    class __db_c_iterator;
    class __db_c_const_iterator;
    class __db_i_iterator;
    class __db_i_const_iterator;

    __db_c_const_iterator __c_end() const;
    __db_i_const_iterator __i_end() const;

    typedef __c_node*(_InsertConstruct)(void*, void*, __c_node*);

    template <class _Cont>
    _LIBCPP_INLINE_VISIBILITY static __c_node* __create_C_node(void *__mem, void *__c, __c_node *__next) {
        return ::new (__mem) _C_node<_Cont>(__c, __next);
    }

    template <class _Cont>
    _LIBCPP_INLINE_VISIBILITY
    void __insert_c(_Cont* __c)
    {
        __insert_c(static_cast<void*>(__c), &__create_C_node<_Cont>);
    }

    void __insert_i(void* __i);
    void __insert_c(void* __c, _InsertConstruct* __fn);
    void __erase_c(void* __c);

    void __insert_ic(void* __i, const void* __c);
    void __iterator_copy(void* __i, const void* __i0);
    void __erase_i(void* __i);

    void* __find_c_from_i(void* __i) const;
    void __invalidate_all(void* __c);
    __c_node* __find_c_and_lock(void* __c) const;
    __c_node* __find_c(void* __c) const;
    void unlock() const;

    void swap(void* __c1, void* __c2);


    bool __dereferenceable(const void* __i) const;
    bool __decrementable(const void* __i) const;
    bool __addable(const void* __i, ptrdiff_t __n) const;
    bool __subscriptable(const void* __i, ptrdiff_t __n) const;
    bool __less_than_comparable(const void* __i, const void* __j) const;
private:
    _LIBCPP_HIDDEN
    __i_node* __insert_iterator(void* __i);
    _LIBCPP_HIDDEN
    __i_node* __find_iterator(const void* __i) const;

    friend _LIBCPP_FUNC_VIS __libcpp_db* __get_db();
};

_LIBCPP_FUNC_VIS __libcpp_db* __get_db();
_LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db();


#endif // _LIBCPP_DEBUG_LEVEL == 2 || defined(_LIBCPP_BUILDING_LIBRARY)
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_DEBUG_H
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__debug" 3
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_FUNCTIONAL_BASE
#define _LIBCPP_FUNCTIONAL_BASE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H
#define _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Arg1, class _Arg2, class _Result>
struct _LIBCPP_TEMPLATE_VIS binary_function
{
    typedef _Arg1   first_argument_type;
    typedef _Arg2   second_argument_type;
    typedef _Result result_type;
};

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_function.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_INVOKE_H
#define _LIBCPP___FUNCTIONAL_INVOKE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/weak_result_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H
#define _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H
#define _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Arg, class _Result>
struct _LIBCPP_TEMPLATE_VIS unary_function
{
    typedef _Arg    argument_type;
    typedef _Result result_type;
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_function.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 1 3
// -*- C++ -*-
//===------------------------ type_traits ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_TYPE_TRAITS
#define _LIBCPP_TYPE_TRAITS

/*
    type_traits synopsis

namespace std
{

    // helper class:
    template <class T, T v> struct integral_constant;
    typedef integral_constant<bool, true>  true_type;   // C++11
    typedef integral_constant<bool, false> false_type;  // C++11

    template <bool B>                                   // C++14
    using bool_constant = integral_constant<bool, B>;   // C++14
    typedef bool_constant<true> true_type;              // C++14
    typedef bool_constant<false> false_type;            // C++14

    // helper traits
    template <bool, class T = void> struct enable_if;
    template <bool, class T, class F> struct conditional;

    // Primary classification traits:
    template <class T> struct is_void;
    template <class T> struct is_null_pointer;  // C++14
    template <class T> struct is_integral;
    template <class T> struct is_floating_point;
    template <class T> struct is_array;
    template <class T> struct is_pointer;
    template <class T> struct is_lvalue_reference;
    template <class T> struct is_rvalue_reference;
    template <class T> struct is_member_object_pointer;
    template <class T> struct is_member_function_pointer;
    template <class T> struct is_enum;
    template <class T> struct is_union;
    template <class T> struct is_class;
    template <class T> struct is_function;

    // Secondary classification traits:
    template <class T> struct is_reference;
    template <class T> struct is_arithmetic;
    template <class T> struct is_fundamental;
    template <class T> struct is_member_pointer;
    template <class T> struct is_scoped_enum; // C++2b
    template <class T> struct is_scalar;
    template <class T> struct is_object;
    template <class T> struct is_compound;

    // Const-volatile properties and transformations:
    template <class T> struct is_const;
    template <class T> struct is_volatile;
    template <class T> struct remove_const;
    template <class T> struct remove_volatile;
    template <class T> struct remove_cv;
    template <class T> struct add_const;
    template <class T> struct add_volatile;
    template <class T> struct add_cv;

    // Reference transformations:
    template <class T> struct remove_reference;
    template <class T> struct add_lvalue_reference;
    template <class T> struct add_rvalue_reference;

    // Pointer transformations:
    template <class T> struct remove_pointer;
    template <class T> struct add_pointer;

    template<class T> struct type_identity;                     // C++20
    template<class T>
      using type_identity_t = typename type_identity<T>::type;  // C++20

    // Integral properties:
    template <class T> struct is_signed;
    template <class T> struct is_unsigned;
    template <class T> struct make_signed;
    template <class T> struct make_unsigned;

    // Array properties and transformations:
    template <class T> struct rank;
    template <class T, unsigned I = 0> struct extent;
    template <class T> struct remove_extent;
    template <class T> struct remove_all_extents;

    template <class T> struct is_bounded_array;                 // C++20
    template <class T> struct is_unbounded_array;               // C++20

    // Member introspection:
    template <class T> struct is_pod;
    template <class T> struct is_trivial;
    template <class T> struct is_trivially_copyable;
    template <class T> struct is_standard_layout;
    template <class T> struct is_literal_type; // Deprecated in C++17; removed in C++20
    template <class T> struct is_empty;
    template <class T> struct is_polymorphic;
    template <class T> struct is_abstract;
    template <class T> struct is_final; // C++14
    template <class T> struct is_aggregate; // C++17

    template <class T, class... Args> struct is_constructible;
    template <class T>                struct is_default_constructible;
    template <class T>                struct is_copy_constructible;
    template <class T>                struct is_move_constructible;
    template <class T, class U>       struct is_assignable;
    template <class T>                struct is_copy_assignable;
    template <class T>                struct is_move_assignable;
    template <class T, class U>       struct is_swappable_with;       // C++17
    template <class T>                struct is_swappable;            // C++17
    template <class T>                struct is_destructible;

    template <class T, class... Args> struct is_trivially_constructible;
    template <class T>                struct is_trivially_default_constructible;
    template <class T>                struct is_trivially_copy_constructible;
    template <class T>                struct is_trivially_move_constructible;
    template <class T, class U>       struct is_trivially_assignable;
    template <class T>                struct is_trivially_copy_assignable;
    template <class T>                struct is_trivially_move_assignable;
    template <class T>                struct is_trivially_destructible;

    template <class T, class... Args> struct is_nothrow_constructible;
    template <class T>                struct is_nothrow_default_constructible;
    template <class T>                struct is_nothrow_copy_constructible;
    template <class T>                struct is_nothrow_move_constructible;
    template <class T, class U>       struct is_nothrow_assignable;
    template <class T>                struct is_nothrow_copy_assignable;
    template <class T>                struct is_nothrow_move_assignable;
    template <class T, class U>       struct is_nothrow_swappable_with; // C++17
    template <class T>                struct is_nothrow_swappable;      // C++17
    template <class T>                struct is_nothrow_destructible;

    template <class T> struct has_virtual_destructor;

    template<class T> struct has_unique_object_representations;         // C++17

    // Relationships between types:
    template <class T, class U> struct is_same;
    template <class Base, class Derived> struct is_base_of;

    template <class From, class To> struct is_convertible;
    template <typename From, typename To> struct is_nothrow_convertible;                  // C++20
    template <typename From, typename To> inline constexpr bool is_nothrow_convertible_v; // C++20

    template <class Fn, class... ArgTypes> struct is_invocable;
    template <class R, class Fn, class... ArgTypes> struct is_invocable_r;

    template <class Fn, class... ArgTypes> struct is_nothrow_invocable;
    template <class R, class Fn, class... ArgTypes> struct is_nothrow_invocable_r;

    // Alignment properties and transformations:
    template <class T> struct alignment_of;
    template <size_t Len, size_t Align = most_stringent_alignment_requirement>
        struct aligned_storage;
    template <size_t Len, class... Types> struct aligned_union;
    template <class T> struct remove_cvref; // C++20

    template <class T> struct decay;
    template <class... T> struct common_type;
    template <class T> struct underlying_type;
    template <class> class result_of; // undefined; deprecated in C++17; removed in C++20
    template <class Fn, class... ArgTypes> class result_of<Fn(ArgTypes...)>; // deprecated in C++17; removed in C++20
    template <class Fn, class... ArgTypes> struct invoke_result;  // C++17

    // const-volatile modifications:
    template <class T>
      using remove_const_t    = typename remove_const<T>::type;  // C++14
    template <class T>
      using remove_volatile_t = typename remove_volatile<T>::type;  // C++14
    template <class T>
      using remove_cv_t       = typename remove_cv<T>::type;  // C++14
    template <class T>
      using add_const_t       = typename add_const<T>::type;  // C++14
    template <class T>
      using add_volatile_t    = typename add_volatile<T>::type;  // C++14
    template <class T>
      using add_cv_t          = typename add_cv<T>::type;  // C++14

    // reference modifications:
    template <class T>
      using remove_reference_t     = typename remove_reference<T>::type;  // C++14
    template <class T>
      using add_lvalue_reference_t = typename add_lvalue_reference<T>::type;  // C++14
    template <class T>
      using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;  // C++14

    // sign modifications:
    template <class T>
      using make_signed_t   = typename make_signed<T>::type;  // C++14
    template <class T>
      using make_unsigned_t = typename make_unsigned<T>::type;  // C++14

    // array modifications:
    template <class T>
      using remove_extent_t      = typename remove_extent<T>::type;  // C++14
    template <class T>
      using remove_all_extents_t = typename remove_all_extents<T>::type;  // C++14

    template <class T>
      inline constexpr bool is_bounded_array_v
        = is_bounded_array<T>::value;                                     // C++20
      inline constexpr bool is_unbounded_array_v
        = is_unbounded_array<T>::value;                                   // C++20

    // pointer modifications:
    template <class T>
      using remove_pointer_t = typename remove_pointer<T>::type;  // C++14
    template <class T>
      using add_pointer_t    = typename add_pointer<T>::type;  // C++14

    // other transformations:
    template <size_t Len, size_t Align=default-alignment>
      using aligned_storage_t = typename aligned_storage<Len,Align>::type;  // C++14
    template <size_t Len, class... Types>
      using aligned_union_t   = typename aligned_union<Len,Types...>::type;  // C++14
    template <class T>
      using remove_cvref_t    = typename remove_cvref<T>::type;  // C++20
    template <class T>
      using decay_t           = typename decay<T>::type;  // C++14
    template <bool b, class T=void>
      using enable_if_t       = typename enable_if<b,T>::type;  // C++14
    template <bool b, class T, class F>
      using conditional_t     = typename conditional<b,T,F>::type;  // C++14
    template <class... T>
      using common_type_t     = typename common_type<T...>::type;  // C++14
    template <class T>
      using underlying_type_t = typename underlying_type<T>::type;  // C++14
    template <class T>
      using result_of_t       = typename result_of<T>::type;  // C++14; deprecated in C++17; removed in C++20
    template <class Fn, class... ArgTypes>
      using invoke_result_t   = typename invoke_result<Fn, ArgTypes...>::type;  // C++17

    template <class...>
      using void_t = void;   // C++17

      // See C++14 20.10.4.1, primary type categories
      template <class T> inline constexpr bool is_void_v
        = is_void<T>::value;                                             // C++17
      template <class T> inline constexpr bool is_null_pointer_v
        = is_null_pointer<T>::value;                                     // C++17
      template <class T> inline constexpr bool is_integral_v
        = is_integral<T>::value;                                         // C++17
      template <class T> inline constexpr bool is_floating_point_v
        = is_floating_point<T>::value;                                   // C++17
      template <class T> inline constexpr bool is_array_v
        = is_array<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_pointer_v
        = is_pointer<T>::value;                                          // C++17
      template <class T> inline constexpr bool is_lvalue_reference_v
        = is_lvalue_reference<T>::value;                                 // C++17
      template <class T> inline constexpr bool is_rvalue_reference_v
        = is_rvalue_reference<T>::value;                                 // C++17
      template <class T> inline constexpr bool is_member_object_pointer_v
        = is_member_object_pointer<T>::value;                            // C++17
      template <class T> inline constexpr bool is_member_function_pointer_v
        = is_member_function_pointer<T>::value;                          // C++17
      template <class T> inline constexpr bool is_enum_v
        = is_enum<T>::value;                                             // C++17
      template <class T> inline constexpr bool is_union_v
        = is_union<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_class_v
        = is_class<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_function_v
        = is_function<T>::value;                                         // C++17

      // See C++14 20.10.4.2, composite type categories
      template <class T> inline constexpr bool is_reference_v
        = is_reference<T>::value;                                        // C++17
      template <class T> inline constexpr bool is_arithmetic_v
        = is_arithmetic<T>::value;                                       // C++17
      template <class T> inline constexpr bool is_fundamental_v
        = is_fundamental<T>::value;                                      // C++17
      template <class T> inline constexpr bool is_object_v
        = is_object<T>::value;                                           // C++17
      template <class T> inline constexpr bool is_scalar_v
        = is_scalar<T>::value;                                           // C++17
      template <class T> inline constexpr bool is_compound_v
        = is_compound<T>::value;                                         // C++17
      template <class T> inline constexpr bool is_member_pointer_v
        = is_member_pointer<T>::value;                                   // C++17
      template <class T> inline constexpr bool is_scoped_enum_v
        = is_scoped_enum<T>::value;                                      // C++2b

      // See C++14 20.10.4.3, type properties
      template <class T> inline constexpr bool is_const_v
        = is_const<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_volatile_v
        = is_volatile<T>::value;                                         // C++17
      template <class T> inline constexpr bool is_trivial_v
        = is_trivial<T>::value;                                          // C++17
      template <class T> inline constexpr bool is_trivially_copyable_v
        = is_trivially_copyable<T>::value;                               // C++17
      template <class T> inline constexpr bool is_standard_layout_v
        = is_standard_layout<T>::value;                                  // C++17
      template <class T> inline constexpr bool is_pod_v
        = is_pod<T>::value;                                              // C++17
      template <class T> inline constexpr bool is_literal_type_v
        = is_literal_type<T>::value;                                     // C++17; deprecated in C++17; removed in C++20
      template <class T> inline constexpr bool is_empty_v
        = is_empty<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_polymorphic_v
        = is_polymorphic<T>::value;                                      // C++17
      template <class T> inline constexpr bool is_abstract_v
        = is_abstract<T>::value;                                         // C++17
      template <class T> inline constexpr bool is_final_v
        = is_final<T>::value;                                            // C++17
      template <class T> inline constexpr bool is_aggregate_v
        = is_aggregate<T>::value;                                        // C++17
      template <class T> inline constexpr bool is_signed_v
        = is_signed<T>::value;                                           // C++17
      template <class T> inline constexpr bool is_unsigned_v
        = is_unsigned<T>::value;                                         // C++17
      template <class T, class... Args> inline constexpr bool is_constructible_v
        = is_constructible<T, Args...>::value;                           // C++17
      template <class T> inline constexpr bool is_default_constructible_v
        = is_default_constructible<T>::value;                            // C++17
      template <class T> inline constexpr bool is_copy_constructible_v
        = is_copy_constructible<T>::value;                               // C++17
      template <class T> inline constexpr bool is_move_constructible_v
        = is_move_constructible<T>::value;                               // C++17
      template <class T, class U> inline constexpr bool is_assignable_v
        = is_assignable<T, U>::value;                                    // C++17
      template <class T> inline constexpr bool is_copy_assignable_v
        = is_copy_assignable<T>::value;                                  // C++17
      template <class T> inline constexpr bool is_move_assignable_v
        = is_move_assignable<T>::value;                                  // C++17
      template <class T, class U> inline constexpr bool is_swappable_with_v
        = is_swappable_with<T, U>::value;                                // C++17
      template <class T> inline constexpr bool is_swappable_v
        = is_swappable<T>::value;                                        // C++17
      template <class T> inline constexpr bool is_destructible_v
        = is_destructible<T>::value;                                     // C++17
      template <class T, class... Args> inline constexpr bool is_trivially_constructible_v
        = is_trivially_constructible<T, Args...>::value;                 // C++17
      template <class T> inline constexpr bool is_trivially_default_constructible_v
        = is_trivially_default_constructible<T>::value;                  // C++17
      template <class T> inline constexpr bool is_trivially_copy_constructible_v
        = is_trivially_copy_constructible<T>::value;                     // C++17
      template <class T> inline constexpr bool is_trivially_move_constructible_v
        = is_trivially_move_constructible<T>::value;                     // C++17
      template <class T, class U> inline constexpr bool is_trivially_assignable_v
        = is_trivially_assignable<T, U>::value;                          // C++17
      template <class T> inline constexpr bool is_trivially_copy_assignable_v
        = is_trivially_copy_assignable<T>::value;                        // C++17
      template <class T> inline constexpr bool is_trivially_move_assignable_v
        = is_trivially_move_assignable<T>::value;                        // C++17
      template <class T> inline constexpr bool is_trivially_destructible_v
        = is_trivially_destructible<T>::value;                           // C++17
      template <class T, class... Args> inline constexpr bool is_nothrow_constructible_v
        = is_nothrow_constructible<T, Args...>::value;                   // C++17
      template <class T> inline constexpr bool is_nothrow_default_constructible_v
        = is_nothrow_default_constructible<T>::value;                    // C++17
      template <class T> inline constexpr bool is_nothrow_copy_constructible_v
        = is_nothrow_copy_constructible<T>::value;                       // C++17
      template <class T> inline constexpr bool is_nothrow_move_constructible_v
        = is_nothrow_move_constructible<T>::value;                       // C++17
      template <class T, class U> inline constexpr bool is_nothrow_assignable_v
        = is_nothrow_assignable<T, U>::value;                            // C++17
      template <class T> inline constexpr bool is_nothrow_copy_assignable_v
        = is_nothrow_copy_assignable<T>::value;                          // C++17
      template <class T> inline constexpr bool is_nothrow_move_assignable_v
        = is_nothrow_move_assignable<T>::value;                          // C++17
      template <class T, class U> inline constexpr bool is_nothrow_swappable_with_v
        = is_nothrow_swappable_with<T, U>::value;                       // C++17
      template <class T> inline constexpr bool is_nothrow_swappable_v
        = is_nothrow_swappable<T>::value;                               // C++17
      template <class T> inline constexpr bool is_nothrow_destructible_v
        = is_nothrow_destructible<T>::value;                             // C++17
      template <class T> inline constexpr bool has_virtual_destructor_v
        = has_virtual_destructor<T>::value;                              // C++17
      template<class T> inline constexpr bool has_unique_object_representations_v // C++17
        = has_unique_object_representations<T>::value;

      // See C++14 20.10.5, type property queries
      template <class T> inline constexpr size_t alignment_of_v
        = alignment_of<T>::value;                                        // C++17
      template <class T> inline constexpr size_t rank_v
        = rank<T>::value;                                                // C++17
      template <class T, unsigned I = 0> inline constexpr size_t extent_v
        = extent<T, I>::value;                                           // C++17

      // See C++14 20.10.6, type relations
      template <class T, class U> inline constexpr bool is_same_v
        = is_same<T, U>::value;                                          // C++17
      template <class Base, class Derived> inline constexpr bool is_base_of_v
        = is_base_of<Base, Derived>::value;                              // C++17
      template <class From, class To> inline constexpr bool is_convertible_v
        = is_convertible<From, To>::value;                               // C++17
      template <class Fn, class... ArgTypes> inline constexpr bool is_invocable_v
        = is_invocable<Fn, ArgTypes...>::value;                          // C++17
      template <class R, class Fn, class... ArgTypes> inline constexpr bool is_invocable_r_v
        = is_invocable_r<R, Fn, ArgTypes...>::value;                     // C++17
      template <class Fn, class... ArgTypes> inline constexpr bool is_nothrow_invocable_v
        = is_nothrow_invocable<Fn, ArgTypes...>::value;                  // C++17
      template <class R, class Fn, class... ArgTypes> inline constexpr bool is_nothrow_invocable_r_v
        = is_nothrow_invocable_r<R, Fn, ArgTypes...>::value;             // C++17

      // [meta.logical], logical operator traits:
      template<class... B> struct conjunction;                           // C++17
      template<class... B>
        inline constexpr bool conjunction_v = conjunction<B...>::value;  // C++17
      template<class... B> struct disjunction;                           // C++17
      template<class... B>
        inline constexpr bool disjunction_v = disjunction<B...>::value;  // C++17
      template<class B> struct negation;                                 // C++17
      template<class B>
        inline constexpr bool negation_v = negation<B>::value;           // C++17

}

*/
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 419 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 1 3
// -*- C++ -*-
//===--------------------------- cstddef ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTDDEF
#define _LIBCPP_CSTDDEF

/*
    cstddef synopsis

Macros:

    offsetof(type,member-designator)
    NULL

namespace std
{

Types:

    ptrdiff_t
    size_t
    max_align_t // C++11
    nullptr_t
    byte // C++17

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 1 3
// -*- C++ -*-
//===--------------------------- version ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_VERSIONH
#define _LIBCPP_VERSIONH

/*
  version synopsis

Macro name                                              Value   Headers
__cpp_lib_addressof_constexpr                           201603L <memory>
__cpp_lib_allocator_traits_is_always_equal              201411L <deque> <forward_list> <list>
                                                                <map> <memory> <scoped_allocator>
                                                                <set> <string> <unordered_map>
                                                                <unordered_set> <vector>
__cpp_lib_any                                           201606L <any>
__cpp_lib_apply                                         201603L <tuple>
__cpp_lib_array_constexpr                               201811L <array> <iterator>
                                                        201603L // C++17
__cpp_lib_as_const                                      201510L <utility>
__cpp_lib_assume_aligned                                201811L <memory>
__cpp_lib_atomic_flag_test                              201907L <atomic>
__cpp_lib_atomic_float                                  201711L <atomic>
__cpp_lib_atomic_is_always_lock_free                    201603L <atomic>
__cpp_lib_atomic_lock_free_type_aliases                 201907L <atomic>
__cpp_lib_atomic_ref                                    201806L <atomic>
__cpp_lib_atomic_shared_ptr                             201711L <atomic>
__cpp_lib_atomic_value_initialization                   201911L <atomic> <memory>
__cpp_lib_atomic_wait                                   201907L <atomic>
__cpp_lib_barrier                                       201907L <barrier>
__cpp_lib_bind_front                                    201907L <functional>
__cpp_lib_bit_cast                                      201806L <bit>
__cpp_lib_bitops                                        201907L <bit>
__cpp_lib_bool_constant                                 201505L <type_traits>
__cpp_lib_bounded_array_traits                          201902L <type_traits>
__cpp_lib_boyer_moore_searcher                          201603L <functional>
__cpp_lib_byte                                          201603L <cstddef>
__cpp_lib_char8_t                                       201811L <atomic> <filesystem> <istream>
                                                                <limits> <locale> <ostream>
                                                                <string> <string_view>
__cpp_lib_chrono                                        201611L <chrono>
__cpp_lib_chrono_udls                                   201304L <chrono>
__cpp_lib_clamp                                         201603L <algorithm>
__cpp_lib_complex_udls                                  201309L <complex>
__cpp_lib_concepts                                      202002L <concepts>
__cpp_lib_constexpr_algorithms                          201806L <algorithm>
__cpp_lib_constexpr_complex                             201711L <complex>
__cpp_lib_constexpr_dynamic_alloc                       201907L <memory>
__cpp_lib_constexpr_functional                          201907L <functional>
__cpp_lib_constexpr_iterator                            201811L <iterator>
__cpp_lib_constexpr_memory                              201811L <memory>
__cpp_lib_constexpr_numeric                             201911L <numeric>
__cpp_lib_constexpr_string                              201811L <string>
__cpp_lib_constexpr_string_view                         201811L <string_view>
__cpp_lib_constexpr_tuple                               201811L <tuple>
__cpp_lib_constexpr_utility                             201811L <utility>
__cpp_lib_constexpr_vector                              201907L <vector>
__cpp_lib_coroutine                                     201902L <coroutine>
__cpp_lib_destroying_delete                             201806L <new>
__cpp_lib_enable_shared_from_this                       201603L <memory>
__cpp_lib_endian                                        201907L <bit>
__cpp_lib_erase_if                                      202002L <deque> <forward_list> <list>
                                                                <map> <set> <string>
                                                                <unordered_map> <unordered_set> <vector>
__cpp_lib_exchange_function                             201304L <utility>
__cpp_lib_execution                                     201902L <execution>
                                                        201603L // C++17
__cpp_lib_filesystem                                    201703L <filesystem>
__cpp_lib_format                                        201907L <format>
__cpp_lib_gcd_lcm                                       201606L <numeric>
__cpp_lib_generic_associative_lookup                    201304L <map> <set>
__cpp_lib_generic_unordered_lookup                      201811L <unordered_map> <unordered_set>
__cpp_lib_hardware_interference_size                    201703L <new>
__cpp_lib_has_unique_object_representations             201606L <type_traits>
__cpp_lib_hypot                                         201603L <cmath>
__cpp_lib_incomplete_container_elements                 201505L <forward_list> <list> <vector>
__cpp_lib_int_pow2                                      202002L <bit>
__cpp_lib_integer_comparison_functions                  202002L <utility>
__cpp_lib_integer_sequence                              201304L <utility>
__cpp_lib_integral_constant_callable                    201304L <type_traits>
__cpp_lib_interpolate                                   201902L <cmath> <numeric>
__cpp_lib_invoke                                        201411L <functional>
__cpp_lib_is_aggregate                                  201703L <type_traits>
__cpp_lib_is_constant_evaluated                         201811L <type_traits>
__cpp_lib_is_final                                      201402L <type_traits>
__cpp_lib_is_invocable                                  201703L <type_traits>
__cpp_lib_is_layout_compatible                          201907L <type_traits>
__cpp_lib_is_nothrow_convertible                        201806L <type_traits>
__cpp_lib_is_null_pointer                               201309L <type_traits>
__cpp_lib_is_pointer_interconvertible                   201907L <type_traits>
__cpp_lib_is_scoped_enum                                202011L <type_traits>
__cpp_lib_is_swappable                                  201603L <type_traits>
__cpp_lib_jthread                                       201911L <stop_token> <thread>
__cpp_lib_latch                                         201907L <latch>
__cpp_lib_launder                                       201606L <new>
__cpp_lib_list_remove_return_type                       201806L <forward_list> <list>
__cpp_lib_logical_traits                                201510L <type_traits>
__cpp_lib_make_from_tuple                               201606L <tuple>
__cpp_lib_make_reverse_iterator                         201402L <iterator>
__cpp_lib_make_unique                                   201304L <memory>
__cpp_lib_map_try_emplace                               201411L <map>
__cpp_lib_math_constants                                201907L <numbers>
__cpp_lib_math_special_functions                        201603L <cmath>
__cpp_lib_memory_resource                               201603L <memory_resource>
__cpp_lib_node_extract                                  201606L <map> <set> <unordered_map>
                                                                <unordered_set>
__cpp_lib_nonmember_container_access                    201411L <array> <deque> <forward_list>
                                                                <iterator> <list> <map>
                                                                <regex> <set> <string>
                                                                <unordered_map> <unordered_set> <vector>
__cpp_lib_not_fn                                        201603L <functional>
__cpp_lib_null_iterators                                201304L <iterator>
__cpp_lib_optional                                      201606L <optional>
__cpp_lib_parallel_algorithm                            201603L <algorithm> <numeric>
__cpp_lib_polymorphic_allocator                         201902L <memory>
__cpp_lib_quoted_string_io                              201304L <iomanip>
__cpp_lib_ranges                                        201811L <algorithm> <functional> <iterator>
                                                                <memory> <ranges>
__cpp_lib_raw_memory_algorithms                         201606L <memory>
__cpp_lib_remove_cvref                                  201711L <type_traits>
__cpp_lib_result_of_sfinae                              201210L <functional> <type_traits>
__cpp_lib_robust_nonmodifying_seq_ops                   201304L <algorithm>
__cpp_lib_sample                                        201603L <algorithm>
__cpp_lib_scoped_lock                                   201703L <mutex>
__cpp_lib_semaphore                                     201907L <semaphore>
__cpp_lib_shared_mutex                                  201505L <shared_mutex>
__cpp_lib_shared_ptr_arrays                             201611L <memory>
__cpp_lib_shared_ptr_weak_type                          201606L <memory>
__cpp_lib_shared_timed_mutex                            201402L <shared_mutex>
__cpp_lib_shift                                         201806L <algorithm>
__cpp_lib_smart_ptr_for_overwrite                       202002L <memory>
__cpp_lib_source_location                               201907L <source_location>
__cpp_lib_span                                          202002L <span>
__cpp_lib_ssize                                         201902L <iterator>
__cpp_lib_stacktrace                                    202011L <stacktrace>
__cpp_lib_starts_ends_with                              201711L <string> <string_view>
__cpp_lib_stdatomic_h                                   202011L <stdatomic.h>
__cpp_lib_string_contains                               202011L <string> <string_view>
__cpp_lib_string_udls                                   201304L <string>
__cpp_lib_string_view                                   201803L <string> <string_view>
                                                        201606L // C++17
__cpp_lib_syncbuf                                       201803L <syncstream>
__cpp_lib_three_way_comparison                          201907L <compare>
__cpp_lib_to_address                                    201711L <memory>
__cpp_lib_to_array                                      201907L <array>
__cpp_lib_to_chars                                      201611L <utility>
__cpp_lib_to_underlying                                 202102L <utility>
__cpp_lib_transformation_trait_aliases                  201304L <type_traits>
__cpp_lib_transparent_operators                         201510L <functional> <memory>
                                                        201210L // C++14
__cpp_lib_tuple_element_t                               201402L <tuple>
__cpp_lib_tuples_by_type                                201304L <tuple> <utility>
__cpp_lib_type_trait_variable_templates                 201510L <type_traits>
__cpp_lib_uncaught_exceptions                           201411L <exception>
__cpp_lib_unordered_map_try_emplace                     201411L <unordered_map>
__cpp_lib_unwrap_ref                                    201811L <functional>
__cpp_lib_variant                                       202102L <variant>
__cpp_lib_void_t                                        201411L <type_traits>

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

// clang-format off

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_chrono_udls                          201304L
# define __cpp_lib_complex_udls                         201309L
# define __cpp_lib_exchange_function                    201304L
# define __cpp_lib_generic_associative_lookup           201304L
# define __cpp_lib_integer_sequence                     201304L
# define __cpp_lib_integral_constant_callable           201304L
# define __cpp_lib_is_final                             201402L
# define __cpp_lib_is_null_pointer                      201309L
# define __cpp_lib_make_reverse_iterator                201402L
# define __cpp_lib_make_unique                          201304L
# define __cpp_lib_null_iterators                       201304L
# define __cpp_lib_quoted_string_io                     201304L
# define __cpp_lib_result_of_sfinae                     201210L
# define __cpp_lib_robust_nonmodifying_seq_ops          201304L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_timed_mutex)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_shared_timed_mutex                 201402L
# endif
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_string_udls                          201304L
# define __cpp_lib_transformation_trait_aliases         201304L
# define __cpp_lib_transparent_operators                201210L
# define __cpp_lib_tuple_element_t                      201402L
# define __cpp_lib_tuples_by_type                       201304L
#endif
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_BUILTIN_ADDRESSOF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_addressof_constexpr                201603L
# endif
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_allocator_traits_is_always_equal     201411L
# define __cpp_lib_any                                  201606L
# define __cpp_lib_apply                                201603L
# define __cpp_lib_array_constexpr                      201603L
# define __cpp_lib_as_const                             201510L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_atomic_is_always_lock_free         201603L
# endif
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_bool_constant                        201505L
// # define __cpp_lib_boyer_moore_searcher                 201603L
# define __cpp_lib_byte                                 201603L
# define __cpp_lib_chrono                               201611L
# define __cpp_lib_clamp                                201603L
# define __cpp_lib_enable_shared_from_this              201603L
// # define __cpp_lib_execution                            201603L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_filesystem)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_filesystem                         201703L
# endif
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_gcd_lcm                              201606L
// # define __cpp_lib_hardware_interference_size           201703L
#if 0 /* disabled by -frewrite-includes */
# if defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_has_unique_object_representations  201606L
# endif
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_hypot                                201603L
# define __cpp_lib_incomplete_container_elements        201505L
# define __cpp_lib_invoke                               201411L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_IS_AGGREGATE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_is_aggregate                       201703L
# endif
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_is_invocable                         201703L
# define __cpp_lib_is_swappable                         201603L
# define __cpp_lib_launder                              201606L
# define __cpp_lib_logical_traits                       201510L
# define __cpp_lib_make_from_tuple                      201606L
# define __cpp_lib_map_try_emplace                      201411L
// # define __cpp_lib_math_special_functions               201603L
// # define __cpp_lib_memory_resource                      201603L
# define __cpp_lib_node_extract                         201606L
# define __cpp_lib_nonmember_container_access           201411L
# define __cpp_lib_not_fn                               201603L
# define __cpp_lib_optional                             201606L
// # define __cpp_lib_parallel_algorithm                   201603L
# define __cpp_lib_raw_memory_algorithms                201606L
# define __cpp_lib_sample                               201603L
# define __cpp_lib_scoped_lock                          201703L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_shared_mutex)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_shared_mutex                       201505L
# endif
# 253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_shared_ptr_arrays                    201611L
# define __cpp_lib_shared_ptr_weak_type                 201606L
# define __cpp_lib_string_view                          201606L
// # define __cpp_lib_to_chars                             201611L
# undef  __cpp_lib_transparent_operators
# define __cpp_lib_transparent_operators                201510L
# define __cpp_lib_type_trait_variable_templates        201510L
# define __cpp_lib_uncaught_exceptions                  201411L
# define __cpp_lib_unordered_map_try_emplace            201411L
# define __cpp_lib_variant                              202102L
# define __cpp_lib_void_t                               201411L
#endif
# 265 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# undef  __cpp_lib_array_constexpr
# define __cpp_lib_array_constexpr                      201811L
// # define __cpp_lib_assume_aligned                       201811L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_atomic_flag_test                   201907L
# endif
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// #   define __cpp_lib_atomic_float                       201711L
# endif
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_atomic_lock_free_type_aliases      201907L
# endif
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// #   define __cpp_lib_atomic_ref                         201806L
# endif
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// #   define __cpp_lib_atomic_shared_ptr                  201711L
# endif
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_atomic_value_initialization        201911L
# endif
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_atomic_wait)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_atomic_wait                        201907L
# endif
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_barrier)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_barrier                            201907L
# endif
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_bind_front                           201907L
// # define __cpp_lib_bit_cast                             201806L
// # define __cpp_lib_bitops                               201907L
# define __cpp_lib_bounded_array_traits                 201902L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_CHAR8_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 299 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_char8_t                            201811L
# endif
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_concepts                             202002L
# define __cpp_lib_constexpr_algorithms                 201806L
// # define __cpp_lib_constexpr_complex                    201711L
# define __cpp_lib_constexpr_dynamic_alloc              201907L
# define __cpp_lib_constexpr_functional                 201907L
# define __cpp_lib_constexpr_iterator                   201811L
# define __cpp_lib_constexpr_memory                     201811L
# define __cpp_lib_constexpr_numeric                    201911L
# define __cpp_lib_constexpr_string                     201811L
# define __cpp_lib_constexpr_string_view                201811L
# define __cpp_lib_constexpr_tuple                      201811L
# define __cpp_lib_constexpr_utility                    201811L
// # define __cpp_lib_constexpr_vector                     201907L
// # define __cpp_lib_coroutine                            201902L
#if 0 /* disabled by -frewrite-includes */
# if _LIBCPP_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_destroying_delete                  201806L
# endif
# 318 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_endian                               201907L
# define __cpp_lib_erase_if                             202002L
# undef  __cpp_lib_execution
// # define __cpp_lib_execution                            201902L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 323 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// #   define __cpp_lib_format                             201907L
# endif
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_generic_unordered_lookup             201811L
# define __cpp_lib_int_pow2                             202002L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_integer_comparison_functions       202002L
# endif
# 330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_interpolate                          201902L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_is_constant_evaluated              201811L
# endif
# 334 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// # define __cpp_lib_is_layout_compatible                 201907L
# define __cpp_lib_is_nothrow_convertible               201806L
// # define __cpp_lib_is_pointer_interconvertible          201907L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 338 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// #   define __cpp_lib_jthread                            201911L
# endif
# 340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_latch)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_latch                              201907L
# endif
# 343 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_list_remove_return_type              201806L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_math_constants                     201907L
# endif
# 347 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
// # define __cpp_lib_polymorphic_allocator                201902L
// # define __cpp_lib_ranges                               201811L
# define __cpp_lib_remove_cvref                         201711L
#if 0 /* disabled by -frewrite-includes */
# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_semaphore)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 351 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
#   define __cpp_lib_semaphore                          201907L
# endif
# 353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_shift                                201806L
// # define __cpp_lib_smart_ptr_for_overwrite              202002L
// # define __cpp_lib_source_location                      201907L
# define __cpp_lib_span                                 202002L
# define __cpp_lib_ssize                                201902L
# define __cpp_lib_starts_ends_with                     201711L
# undef  __cpp_lib_string_view
# define __cpp_lib_string_view                          201803L
// # define __cpp_lib_syncbuf                              201803L
// # define __cpp_lib_three_way_comparison                 201907L
# define __cpp_lib_to_address                           201711L
# define __cpp_lib_to_array                             201907L
# define __cpp_lib_unwrap_ref                           201811L
#endif
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 369 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# define __cpp_lib_is_scoped_enum                       202011L
// # define __cpp_lib_stacktrace                           202011L
// # define __cpp_lib_stdatomic_h                          202011L
# define __cpp_lib_string_contains                      202011L
# define __cpp_lib_to_underlying                        202102L
#endif
# 375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3

// clang-format on

#endif // _LIBCPP_VERSIONH
# 379 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/version" 3
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3

// Don't include our own <stddef.h>; we don't want to declare ::nullptr_t.
#if 0 /* expanded by -frewrite-includes */
#include_next <stddef.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
#if 0 /* expanded by -frewrite-includes */
#include <__nullptr>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::ptrdiff_t _LIBCPP_USING_IF_EXISTS;
using ::size_t _LIBCPP_USING_IF_EXISTS;

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
using ::max_align_t _LIBCPP_USING_IF_EXISTS;
#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3

template <class _Tp> struct __libcpp_is_integral                     { enum { value = 0 }; };
template <>          struct __libcpp_is_integral<bool>               { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<char>               { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<signed char>        { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<unsigned char>      { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<wchar_t>            { enum { value = 1 }; };
#ifndef _LIBCPP_HAS_NO_CHAR8_T
template <>          struct __libcpp_is_integral<char8_t>            { enum { value = 1 }; };
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
template <>          struct __libcpp_is_integral<char16_t>           { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<char32_t>           { enum { value = 1 }; };
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
template <>          struct __libcpp_is_integral<short>              { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<unsigned short>     { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<int>                { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<unsigned int>       { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<long>               { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<unsigned long>      { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<long long>          { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<unsigned long long> { enum { value = 1 }; };
#ifndef _LIBCPP_HAS_NO_INT128
template <>          struct __libcpp_is_integral<__int128_t>         { enum { value = 1 }; };
template <>          struct __libcpp_is_integral<__uint128_t>        { enum { value = 1 }; };
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3

_LIBCPP_END_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
namespace std  // purposefully not versioned
{
enum class byte : unsigned char {};


template <bool> struct __enable_if_integral_imp {};
template <> struct __enable_if_integral_imp<true> { using type = byte; };
template <class _Tp> using _EnableByteOverload = typename __enable_if_integral_imp<__libcpp_is_integral<_Tp>::value>::type;

constexpr byte  operator| (byte  __lhs, byte __rhs) noexcept
{
    return static_cast<byte>(
      static_cast<unsigned char>(
         static_cast<unsigned int>(__lhs) | static_cast<unsigned int>(__rhs)
    ));
}

constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept
{ return __lhs = __lhs | __rhs; }

constexpr byte  operator& (byte  __lhs, byte __rhs) noexcept
{
    return static_cast<byte>(
      static_cast<unsigned char>(
         static_cast<unsigned int>(__lhs) & static_cast<unsigned int>(__rhs)
    ));
}

constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept
{ return __lhs = __lhs & __rhs; }

constexpr byte  operator^ (byte  __lhs, byte __rhs) noexcept
{
    return static_cast<byte>(
      static_cast<unsigned char>(
         static_cast<unsigned int>(__lhs) ^ static_cast<unsigned int>(__rhs)
    ));
}

constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept
{ return __lhs = __lhs ^ __rhs; }

constexpr byte  operator~ (byte __b) noexcept
{
    return static_cast<byte>(
      static_cast<unsigned char>(
        ~static_cast<unsigned int>(__b)
    ));
}
template <class _Integer>
  constexpr _EnableByteOverload<_Integer> &
  operator<<=(byte& __lhs, _Integer __shift) noexcept
  { return __lhs = __lhs << __shift; }

template <class _Integer>
  constexpr _EnableByteOverload<_Integer>
  operator<< (byte  __lhs, _Integer __shift) noexcept
  { return static_cast<byte>(static_cast<unsigned char>(static_cast<unsigned int>(__lhs) << __shift)); }

template <class _Integer>
  constexpr _EnableByteOverload<_Integer> &
  operator>>=(byte& __lhs, _Integer __shift) noexcept
  { return __lhs = __lhs >> __shift; }

template <class _Integer>
  constexpr _EnableByteOverload<_Integer>
  operator>> (byte  __lhs, _Integer __shift) noexcept
  { return static_cast<byte>(static_cast<unsigned char>(static_cast<unsigned int>(__lhs) >> __shift)); }

template <class _Integer, class = _EnableByteOverload<_Integer> >
  _LIBCPP_NODISCARD_EXT constexpr _Integer
  to_integer(byte __b) noexcept { return static_cast<_Integer>(__b); }
}

#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3

#endif // _LIBCPP_CSTDDEF
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstddef" 3
# 421 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 421 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# 422 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 424 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#endif
# 426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS pair;
template <class _Tp> class _LIBCPP_TEMPLATE_VIS reference_wrapper;
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS hash;

template <class _Tp, _Tp __v>
struct _LIBCPP_TEMPLATE_VIS integral_constant
{
  static _LIBCPP_CONSTEXPR const _Tp      value = __v;
  typedef _Tp               value_type;
  typedef integral_constant type;
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR operator value_type() const _NOEXCEPT {return value;}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
  _LIBCPP_INLINE_VISIBILITY
  constexpr value_type operator ()() const _NOEXCEPT {return value;}
#endif
# 445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
};

template <class _Tp, _Tp __v>
_LIBCPP_CONSTEXPR const _Tp integral_constant<_Tp, __v>::value;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 451 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <bool __b>
using bool_constant = integral_constant<bool, __b>;
#define _LIBCPP_BOOL_CONSTANT(__b) bool_constant<(__b)>
#else
# 455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#define _LIBCPP_BOOL_CONSTANT(__b) integral_constant<bool,(__b)>
#endif
# 457 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

typedef _LIBCPP_BOOL_CONSTANT(true)  true_type;
typedef _LIBCPP_BOOL_CONSTANT(false) false_type;

template <bool _Val>
using _BoolConstant _LIBCPP_NODEBUG_TYPE = integral_constant<bool, _Val>;

template <bool> struct _MetaBase;
template <>
struct _MetaBase<true> {
  template <class _Tp, class _Up>
  using _SelectImpl _LIBCPP_NODEBUG_TYPE = _Tp;
  template <template <class...> class _FirstFn, template <class...> class, class ..._Args>
  using _SelectApplyImpl _LIBCPP_NODEBUG_TYPE = _FirstFn<_Args...>;
  template <class _First, class...>
  using _FirstImpl _LIBCPP_NODEBUG_TYPE = _First;
  template <class, class _Second, class...>
  using _SecondImpl _LIBCPP_NODEBUG_TYPE = _Second;
  template <class _Tp = void>
  using _EnableIfImpl _LIBCPP_NODEBUG_TYPE = _Tp;
  template <class _Result, class _First, class ..._Rest>
  using _OrImpl _LIBCPP_NODEBUG_TYPE = typename _MetaBase<_First::value != true && sizeof...(_Rest) != 0>::template _OrImpl<_First, _Rest...>;
};

template <>
struct _MetaBase<false> {
  template <class _Tp, class _Up>
  using _SelectImpl _LIBCPP_NODEBUG_TYPE = _Up;
  template <template <class...> class, template <class...> class _SecondFn, class ..._Args>
  using _SelectApplyImpl _LIBCPP_NODEBUG_TYPE = _SecondFn<_Args...>;
  template <class _Result, class ...>
  using _OrImpl _LIBCPP_NODEBUG_TYPE = _Result;
};
template <bool _Cond, class _Ret = void>
using _EnableIf _LIBCPP_NODEBUG_TYPE = typename _MetaBase<_Cond>::template _EnableIfImpl<_Ret>;
template <bool _Cond, class _IfRes, class _ElseRes>
using _If _LIBCPP_NODEBUG_TYPE = typename _MetaBase<_Cond>::template _SelectImpl<_IfRes, _ElseRes>;
template <class ..._Rest>
using _Or _LIBCPP_NODEBUG_TYPE = typename _MetaBase< sizeof...(_Rest) != 0 >::template _OrImpl<false_type, _Rest...>;
template <class _Pred>
struct _Not : _BoolConstant<!_Pred::value> {};
template <class ..._Args>
using _FirstType _LIBCPP_NODEBUG_TYPE = typename _MetaBase<(sizeof...(_Args) >= 1)>::template _FirstImpl<_Args...>;
template <class ..._Args>
using _SecondType _LIBCPP_NODEBUG_TYPE = typename _MetaBase<(sizeof...(_Args) >= 2)>::template _SecondImpl<_Args...>;

template <class ...> using __expand_to_true = true_type;
template <class ..._Pred>
__expand_to_true<_EnableIf<_Pred::value>...> __and_helper(int);
template <class ...>
false_type __and_helper(...);
template <class ..._Pred>
using _And _LIBCPP_NODEBUG_TYPE = decltype(__and_helper<_Pred...>(0));

template <template <class...> class _Func, class ..._Args>
struct _Lazy : _Func<_Args...> {};

// Member detector base

template <template <class...> class _Templ, class ..._Args, class = _Templ<_Args...> >
true_type __sfinae_test_impl(int);
template <template <class...> class, class ...>
false_type __sfinae_test_impl(...);

template <template <class ...> class _Templ, class ..._Args>
using _IsValidExpansion _LIBCPP_NODEBUG_TYPE = decltype(__sfinae_test_impl<_Templ, _Args...>(0));

template <class>
struct __void_t { typedef void type; };

template <class _Tp>
struct __identity { typedef _Tp type; };

template <class _Tp>
using __identity_t _LIBCPP_NODEBUG_TYPE = typename __identity<_Tp>::type;

template <class _Tp, bool>
struct _LIBCPP_TEMPLATE_VIS __dependent_type : public _Tp {};


template <bool _Bp, class _If, class _Then>
    struct _LIBCPP_TEMPLATE_VIS conditional {typedef _If type;};
template <class _If, class _Then>
    struct _LIBCPP_TEMPLATE_VIS conditional<false, _If, _Then> {typedef _Then type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 543 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <bool _Bp, class _If, class _Then> using conditional_t = typename conditional<_Bp, _If, _Then>::type;
#endif
# 545 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <bool, class _Tp = void> struct _LIBCPP_TEMPLATE_VIS enable_if {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS enable_if<true, _Tp> {typedef _Tp type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 550 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <bool _Bp, class _Tp = void> using enable_if_t = typename enable_if<_Bp, _Tp>::type;
#endif
# 552 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_same

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_same)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 556 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Up>
struct _LIBCPP_TEMPLATE_VIS is_same : _BoolConstant<__is_same(_Tp, _Up)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 561 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Up>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_same_v = __is_same(_Tp, _Up);
#endif
# 564 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 566 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Up> struct _LIBCPP_TEMPLATE_VIS is_same           : public false_type {};
template <class _Tp>            struct _LIBCPP_TEMPLATE_VIS is_same<_Tp, _Tp> : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Up>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_same_v
    = is_same<_Tp, _Up>::value;
#endif
# 575 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __is_same
# 577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Up>
using _IsSame = _BoolConstant<
#ifdef __clang__
    __is_same(_Tp, _Up)
#else
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    is_same<_Tp, _Up>::value
#endif
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
>;

template <class _Tp, class _Up>
using _IsNotSame = _BoolConstant<
#ifdef __clang__
    !__is_same(_Tp, _Up)
#else
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    !is_same<_Tp, _Up>::value
#endif
# 594 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
>;


template <class _Tp>
using __test_for_primary_template = _EnableIf<
    _IsSame<_Tp, typename _Tp::__primary_template>::value
  >;
template <class _Tp>
using __is_primary_template = _IsValidExpansion<
    __test_for_primary_template, _Tp
  >;

struct __two {char __lx[2];};

// helper class:

// is_const

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_const)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_const : _BoolConstant<__is_const(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 618 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_const_v = __is_const(_Tp);
#endif
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 623 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_const            : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_const<_Tp const> : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 628 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_const_v
    = is_const<_Tp>::value;
#endif
# 632 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_const)
# 634 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_volatile

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_volatile)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 638 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_volatile : _BoolConstant<__is_volatile(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 643 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_volatile_v = __is_volatile(_Tp);
#endif
# 646 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 648 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_volatile               : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_volatile<_Tp volatile> : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_volatile_v
    = is_volatile<_Tp>::value;
#endif
# 657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_volatile)
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_const

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__remove_const)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 663 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS remove_const {typedef __remove_const(_Tp) type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 668 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_const_t = __remove_const(_Tp);
#endif
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_const            {typedef _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_const<const _Tp> {typedef _Tp type;};
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_const_t = typename remove_const<_Tp>::type;
#endif
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__remove_const)
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_volatile

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__remove_volatile)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS remove_volatile {typedef __remove_volatile(_Tp) type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_volatile_t = __remove_volatile(_Tp);
#endif
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_volatile               {typedef _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_volatile<volatile _Tp> {typedef _Tp type;};
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_volatile_t = typename remove_volatile<_Tp>::type;
#endif
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__remove_volatile)
# 701 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_cv

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__remove_cv)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 705 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS remove_cv {typedef __remove_cv(_Tp) type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 710 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_cv_t = __remove_cv(_Tp);
#endif
# 712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_cv
{typedef typename remove_volatile<typename remove_const<_Tp>::type>::type type;};
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_cv_t = typename remove_cv<_Tp>::type;
#endif
# 720 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__remove_cv)
# 722 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_void

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_void)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_void : _BoolConstant<__is_void(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 731 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_void_v = __is_void(_Tp);
#endif
# 734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 736 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_void
    : public is_same<typename remove_cv<_Tp>::type, void> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 741 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_void_v
    = is_void<_Tp>::value;
#endif
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_void)
# 747 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __is_nullptr_t

template <class _Tp> struct __is_nullptr_t_impl       : public false_type {};
template <>          struct __is_nullptr_t_impl<nullptr_t> : public true_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS __is_nullptr_t
    : public __is_nullptr_t_impl<typename remove_cv<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 757 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_null_pointer
    : public __is_nullptr_t_impl<typename remove_cv<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 761 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_null_pointer_v
    = is_null_pointer<_Tp>::value;
#endif
# 765 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#endif // _LIBCPP_STD_VER > 11
# 766 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_integral

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_integral)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 770 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_integral : _BoolConstant<__is_integral(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 775 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_v = __is_integral(_Tp);
#endif
# 778 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 780 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_integral
    : public _BoolConstant<__libcpp_is_integral<typename remove_cv<_Tp>::type>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 785 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_v
    = is_integral<_Tp>::value;
#endif
# 789 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_integral)
# 791 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __libcpp_is_signed_integer, __libcpp_is_unsigned_integer

// [basic.fundamental] defines five standard signed integer types;
// __int128_t is an extended signed integer type.
// The signed and unsigned integer types, plus bool and the
// five types with "char" in their name, compose the "integral" types.

template <class _Tp> struct __libcpp_is_signed_integer : public false_type {};
template <> struct __libcpp_is_signed_integer<signed char>      : public true_type {};
template <> struct __libcpp_is_signed_integer<signed short>     : public true_type {};
template <> struct __libcpp_is_signed_integer<signed int>       : public true_type {};
template <> struct __libcpp_is_signed_integer<signed long>      : public true_type {};
template <> struct __libcpp_is_signed_integer<signed long long> : public true_type {};
#ifndef _LIBCPP_HAS_NO_INT128
template <> struct __libcpp_is_signed_integer<__int128_t>       : public true_type {};
#endif
# 808 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_is_unsigned_integer : public false_type {};
template <> struct __libcpp_is_unsigned_integer<unsigned char>      : public true_type {};
template <> struct __libcpp_is_unsigned_integer<unsigned short>     : public true_type {};
template <> struct __libcpp_is_unsigned_integer<unsigned int>       : public true_type {};
template <> struct __libcpp_is_unsigned_integer<unsigned long>      : public true_type {};
template <> struct __libcpp_is_unsigned_integer<unsigned long long> : public true_type {};
#ifndef _LIBCPP_HAS_NO_INT128
template <> struct __libcpp_is_unsigned_integer<__uint128_t>        : public true_type {};
#endif
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_floating_point

template <class _Tp> struct __libcpp_is_floating_point              : public false_type {};
template <>          struct __libcpp_is_floating_point<float>       : public true_type {};
template <>          struct __libcpp_is_floating_point<double>      : public true_type {};
template <>          struct __libcpp_is_floating_point<long double> : public true_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_floating_point
    : public __libcpp_is_floating_point<typename remove_cv<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_floating_point_v
    = is_floating_point<_Tp>::value;
#endif
# 834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_array

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_array)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 838 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_array : _BoolConstant<__is_array(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 843 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_array_v = __is_array(_Tp);
#endif
# 846 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 848 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_array
    : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_array<_Tp[]>
    : public true_type {};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS is_array<_Tp[_Np]>
    : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 857 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_array_v
    = is_array<_Tp>::value;
#endif
# 861 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_array)
# 863 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_pointer

// Before Clang 11 / AppleClang 12.0.5, __is_pointer didn't work for Objective-C types.
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_pointer) &&                                             \
    !(defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1100) &&               \
    !(defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER < 1205)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 870 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_pointer : _BoolConstant<__is_pointer(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 875 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pointer_v = __is_pointer(_Tp);
#endif
# 878 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_pointer)
# 880 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_is_pointer       : public false_type {};
template <class _Tp> struct __libcpp_is_pointer<_Tp*> : public true_type {};

template <class _Tp> struct __libcpp_remove_objc_qualifiers { typedef _Tp type; };
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_OBJC_ARC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 886 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> struct __libcpp_remove_objc_qualifiers<_Tp __strong> { typedef _Tp type; };
template <class _Tp> struct __libcpp_remove_objc_qualifiers<_Tp __weak> { typedef _Tp type; };
template <class _Tp> struct __libcpp_remove_objc_qualifiers<_Tp __autoreleasing> { typedef _Tp type; };
template <class _Tp> struct __libcpp_remove_objc_qualifiers<_Tp __unsafe_unretained> { typedef _Tp type; };
#endif
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pointer
    : public __libcpp_is_pointer<typename __libcpp_remove_objc_qualifiers<typename remove_cv<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 896 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pointer_v
    = is_pointer<_Tp>::value;
#endif
# 900 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_pointer)
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_reference

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_lvalue_reference) && \
    __has_keyword(__is_rvalue_reference) && \
    __has_keyword(__is_reference)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 908 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> { };

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference : _BoolConstant<__is_rvalue_reference(_Tp)> { };

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_reference : _BoolConstant<__is_reference(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 919 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_reference_v = __is_reference(_Tp);

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_lvalue_reference_v = __is_lvalue_reference(_Tp);

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_rvalue_reference_v = __is_rvalue_reference(_Tp);
#endif
# 928 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_lvalue_reference) && etc...
# 930 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference       : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference<_Tp&> : public true_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference        : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference<_Tp&&> : public true_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference        : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&>  : public true_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&&> : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 942 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_reference_v
    = is_reference<_Tp>::value;

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_lvalue_reference_v
    = is_lvalue_reference<_Tp>::value;

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_rvalue_reference_v
    = is_rvalue_reference<_Tp>::value;
#endif
# 954 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_lvalue_reference) && etc...
# 956 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_union

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_union) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 960 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_union
    : public integral_constant<bool, __is_union(_Tp)> {};

#else
# 965 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_union : public false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_union
    : public __libcpp_union<typename remove_cv<_Tp>::type> {};

#endif
# 971 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 973 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_union_v
    = is_union<_Tp>::value;
#endif
# 977 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_class

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_class) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 981 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_class
    : public integral_constant<bool, __is_class(_Tp)> {};

#else
# 986 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

namespace __is_class_imp
{
template <class _Tp> char  __test(int _Tp::*);
template <class _Tp> __two __test(...);
}

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_class
    : public integral_constant<bool, sizeof(__is_class_imp::__test<_Tp>(0)) == 1 && !is_union<_Tp>::value> {};

#endif
# 997 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 999 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_class_v
    = is_class<_Tp>::value;
#endif
# 1003 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_function

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_function
    : public _BoolConstant<
#ifdef __clang__
    __is_function(_Tp)
#else
# 1011 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
 !(is_reference<_Tp>::value || is_const<const _Tp>::value)
#endif
# 1013 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    > {};


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1017 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_function_v
    = is_function<_Tp>::value;
#endif
# 1021 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_is_member_pointer {
  enum {
    __is_member = false,
    __is_func = false,
    __is_obj = false
  };
};
template <class _Tp, class _Up> struct __libcpp_is_member_pointer<_Tp _Up::*> {
  enum {
    __is_member = true,
    __is_func = is_function<_Tp>::value,
    __is_obj = !__is_func,
  };
};

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_member_function_pointer)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1038 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer
    : _BoolConstant<__is_member_function_pointer(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1044 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_function_pointer_v
    = __is_member_function_pointer(_Tp);
#endif
# 1048 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_member_function_pointer)
# 1050 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer
    : public _BoolConstant< __libcpp_is_member_pointer<typename remove_cv<_Tp>::type>::__is_func > {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1055 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_function_pointer_v
    = is_member_function_pointer<_Tp>::value;
#endif
# 1059 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_member_function_pointer)
# 1061 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_member_pointer

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_member_pointer)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1065 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_member_pointer : _BoolConstant<__is_member_pointer(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1070 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_pointer_v = __is_member_pointer(_Tp);
#endif
# 1073 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_member_pointer)
# 1075 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_pointer
 : public _BoolConstant< __libcpp_is_member_pointer<typename remove_cv<_Tp>::type>::__is_member > {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1080 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_pointer_v
    = is_member_pointer<_Tp>::value;
#endif
# 1084 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_member_pointer)
# 1086 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_member_object_pointer

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_member_object_pointer)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1090 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer
    : _BoolConstant<__is_member_object_pointer(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1096 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_object_pointer_v
    = __is_member_object_pointer(_Tp);
#endif
# 1100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_member_object_pointer)
# 1102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer
    : public _BoolConstant< __libcpp_is_member_pointer<typename remove_cv<_Tp>::type>::__is_obj >  {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_object_pointer_v
    = is_member_object_pointer<_Tp>::value;
#endif
# 1111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_member_object_pointer)
# 1113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_enum

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_enum) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum
    : public integral_constant<bool, __is_enum(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_enum_v = __is_enum(_Tp);
#endif
# 1125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else
# 1127 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum
    : public integral_constant<bool, !is_void<_Tp>::value             &&
                                     !is_integral<_Tp>::value         &&
                                     !is_floating_point<_Tp>::value   &&
                                     !is_array<_Tp>::value            &&
                                     !is_pointer<_Tp>::value          &&
                                     !is_reference<_Tp>::value        &&
                                     !is_member_pointer<_Tp>::value   &&
                                     !is_union<_Tp>::value            &&
                                     !is_class<_Tp>::value            &&
                                     !is_function<_Tp>::value         > {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_enum_v
    = is_enum<_Tp>::value;
#endif
# 1145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_feature(is_enum) || defined(_LIBCPP_COMPILER_GCC)
# 1147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_arithmetic


template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_arithmetic
    : public integral_constant<bool, is_integral<_Tp>::value      ||
                                     is_floating_point<_Tp>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_arithmetic_v
    = is_arithmetic<_Tp>::value;
#endif
# 1160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_fundamental

// Before Clang 10, __is_fundamental didn't work for nullptr_t.
// In C++03 nullptr_t is library-provided but must still count as "fundamental."
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_fundamental) &&                                         \
    !(defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1000) &&               \
    !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_fundamental : _BoolConstant<__is_fundamental(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_fundamental_v = __is_fundamental(_Tp);
#endif
# 1176 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_fundamental)
# 1178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_fundamental
    : public integral_constant<bool, is_void<_Tp>::value        ||
                                     __is_nullptr_t<_Tp>::value ||
                                     is_arithmetic<_Tp>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_fundamental_v
    = is_fundamental<_Tp>::value;
#endif
# 1189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_fundamental)
# 1191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_scalar

// In C++03 nullptr_t is library-provided but must still count as "scalar."
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_scalar) && !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_scalar : _BoolConstant<__is_scalar(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scalar_v = __is_scalar(_Tp);
#endif
# 1204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_scalar)
# 1206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __is_block : false_type {};
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_EXTENSION_BLOCKS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Rp, class ..._Args> struct __is_block<_Rp (^)(_Args...)> : true_type {};
#endif
# 1211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_scalar
    : public integral_constant<bool, is_arithmetic<_Tp>::value     ||
                                     is_member_pointer<_Tp>::value ||
                                     is_pointer<_Tp>::value        ||
                                     __is_nullptr_t<_Tp>::value    ||
                                     __is_block<_Tp>::value        ||
                                     is_enum<_Tp>::value           > {};

template <> struct _LIBCPP_TEMPLATE_VIS is_scalar<nullptr_t> : public true_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scalar_v
    = is_scalar<_Tp>::value;
#endif
# 1227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_scalar)
# 1229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_object

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_object)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_object : _BoolConstant<__is_object(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_object_v = __is_object(_Tp);
#endif
# 1241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_object)
# 1243 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_object
    : public integral_constant<bool, is_scalar<_Tp>::value ||
                                     is_array<_Tp>::value  ||
                                     is_union<_Tp>::value  ||
                                     is_class<_Tp>::value  > {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_object_v
    = is_object<_Tp>::value;
#endif
# 1255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_object)
# 1257 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_compound

// >= 11 because in C++03 nullptr isn't actually nullptr
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_compound) && !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_compound : _BoolConstant<__is_compound(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_compound_v = __is_compound(_Tp);
#endif
# 1270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_compound)
# 1272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_compound
    : public integral_constant<bool, !is_fundamental<_Tp>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_compound_v
    = is_compound<_Tp>::value;
#endif
# 1281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_compound)
# 1283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __is_referenceable  [defns.referenceable]

struct __is_referenceable_impl {
    template <class _Tp> static _Tp& __test(int);
    template <class _Tp> static __two __test(...);
};

template <class _Tp>
struct __is_referenceable : integral_constant<bool,
    _IsNotSame<decltype(__is_referenceable_impl::__test<_Tp>(0)), __two>::value> {};


// add_const

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_const {
  typedef _LIBCPP_NODEBUG_TYPE const _Tp type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_const_t = typename add_const<_Tp>::type;
#endif
# 1305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// add_volatile

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_volatile {
  typedef _LIBCPP_NODEBUG_TYPE volatile _Tp type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1313 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_volatile_t = typename add_volatile<_Tp>::type;
#endif
# 1315 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// add_cv
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_cv {
  typedef _LIBCPP_NODEBUG_TYPE const volatile _Tp type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1322 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_cv_t = typename add_cv<_Tp>::type;
#endif
# 1324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_reference

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__remove_reference)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS remove_reference { typedef __remove_reference(_Tp) type; };

#else // __has_keyword(__remove_reference)
# 1333 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference        {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&>  {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&&> {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1339 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_reference_t = typename remove_reference<_Tp>::type;
#endif
# 1341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__remove_reference)
# 1343 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// add_lvalue_reference

template <class _Tp, bool = __is_referenceable<_Tp>::value> struct __add_lvalue_reference_impl            { typedef _LIBCPP_NODEBUG_TYPE _Tp  type; };
template <class _Tp                                       > struct __add_lvalue_reference_impl<_Tp, true> { typedef _LIBCPP_NODEBUG_TYPE _Tp& type; };

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_lvalue_reference
{typedef _LIBCPP_NODEBUG_TYPE typename  __add_lvalue_reference_impl<_Tp>::type type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type;
#endif
# 1355 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = __is_referenceable<_Tp>::value> struct __add_rvalue_reference_impl            { typedef _LIBCPP_NODEBUG_TYPE  _Tp   type; };
template <class _Tp                                       > struct __add_rvalue_reference_impl<_Tp, true> { typedef _LIBCPP_NODEBUG_TYPE  _Tp&& type; };

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_rvalue_reference
{typedef _LIBCPP_NODEBUG_TYPE  typename __add_rvalue_reference_impl<_Tp>::type type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type;
#endif
# 1365 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// Suppress deprecation notice for volatile-qualified return type resulting
// from volatile-qualified types _Tp.
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp> _Tp&& __declval(int);
template <class _Tp> _Tp   __declval(long);
_LIBCPP_SUPPRESS_DEPRECATED_POP

template <class _Tp>
decltype(__declval<_Tp>(0))
declval() _NOEXCEPT;

// __uncvref

template <class _Tp>
struct __uncvref  {
    typedef _LIBCPP_NODEBUG_TYPE typename remove_cv<typename remove_reference<_Tp>::type>::type type;
};

template <class _Tp>
struct __unconstref {
    typedef _LIBCPP_NODEBUG_TYPE typename remove_const<typename remove_reference<_Tp>::type>::type type;
};

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
using __uncvref_t _LIBCPP_NODEBUG_TYPE = typename __uncvref<_Tp>::type;
#endif
# 1393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __is_same_uncvref

template <class _Tp, class _Up>
struct __is_same_uncvref : _IsSame<typename __uncvref<_Tp>::type,
                                   typename __uncvref<_Up>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// remove_cvref - same as __uncvref
template <class _Tp>
struct remove_cvref : public __uncvref<_Tp> {};

template <class _Tp> using remove_cvref_t = typename remove_cvref<_Tp>::type;
#endif
# 1407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3


struct __any
{
    __any(...);
};

// remove_pointer

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer                      {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp*>                {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* const>          {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* volatile>       {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* const volatile> {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1423 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_pointer_t = typename remove_pointer<_Tp>::type;
#endif
# 1425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// add_pointer

template <class _Tp,
        bool = __is_referenceable<_Tp>::value ||
                _IsSame<typename remove_cv<_Tp>::type, void>::value>
struct __add_pointer_impl
    {typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tp>::type* type;};
template <class _Tp> struct __add_pointer_impl<_Tp, false>
    {typedef _LIBCPP_NODEBUG_TYPE _Tp type;};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_pointer
    {typedef _LIBCPP_NODEBUG_TYPE typename __add_pointer_impl<_Tp>::type type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1440 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using add_pointer_t = typename add_pointer<_Tp>::type;
#endif
# 1442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// type_identity
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template<class _Tp> struct type_identity { typedef _Tp type; };
template<class _Tp> using type_identity_t = typename type_identity<_Tp>::type;
#endif
# 1448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_signed

// Before Clang 10, __is_signed didn't work for floating-point types or enums.
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_signed) &&                                              \
    !(defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1000)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_signed : _BoolConstant<__is_signed(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_signed_v = __is_signed(_Tp);
#endif
# 1462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_signed)
# 1464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = is_integral<_Tp>::value>
struct __libcpp_is_signed_impl : public _LIBCPP_BOOL_CONSTANT(_Tp(-1) < _Tp(0)) {};

template <class _Tp>
struct __libcpp_is_signed_impl<_Tp, false> : public true_type {};  // floating point

template <class _Tp, bool = is_arithmetic<_Tp>::value>
struct __libcpp_is_signed : public __libcpp_is_signed_impl<_Tp> {};

template <class _Tp> struct __libcpp_is_signed<_Tp, false> : public false_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_signed : public __libcpp_is_signed<_Tp> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1479 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_signed_v
    = is_signed<_Tp>::value;
#endif
# 1483 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_signed)
# 1485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_unsigned

// Before Clang 13, __is_unsigned returned true for enums with signed underlying type.
// No currently-released version of AppleClang contains the fixed intrinsic.
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_unsigned) &&                                            \
    !(defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1300) &&               \
    !defined(_LIBCPP_APPLE_CLANG_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_unsigned : _BoolConstant<__is_unsigned(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_unsigned_v = __is_unsigned(_Tp);
#endif
# 1501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_unsigned)
# 1503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = is_integral<_Tp>::value>
struct __libcpp_is_unsigned_impl : public _LIBCPP_BOOL_CONSTANT(_Tp(0) < _Tp(-1)) {};

template <class _Tp>
struct __libcpp_is_unsigned_impl<_Tp, false> : public false_type {};  // floating point

template <class _Tp, bool = is_arithmetic<_Tp>::value>
struct __libcpp_is_unsigned : public __libcpp_is_unsigned_impl<_Tp> {};

template <class _Tp> struct __libcpp_is_unsigned<_Tp, false> : public false_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_unsigned : public __libcpp_is_unsigned<_Tp> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_unsigned_v
    = is_unsigned<_Tp>::value;
#endif
# 1522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_unsigned)
# 1524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// rank

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS rank
    : public integral_constant<size_t, 0> {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[]>
    : public integral_constant<size_t, rank<_Tp>::value + 1> {};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[_Np]>
    : public integral_constant<size_t, rank<_Tp>::value + 1> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t rank_v
    = rank<_Tp>::value;
#endif
# 1539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// extent

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__array_extent)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1543 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp, size_t _Dim = 0>
struct _LIBCPP_TEMPLATE_VIS extent
    : integral_constant<size_t, __array_extent(_Tp, _Dim)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1549 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, unsigned _Ip = 0>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t extent_v = __array_extent(_Tp, _Ip);
#endif
# 1552 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__array_extent)
# 1554 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, unsigned _Ip = 0> struct _LIBCPP_TEMPLATE_VIS extent
    : public integral_constant<size_t, 0> {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[], 0>
    : public integral_constant<size_t, 0> {};
template <class _Tp, unsigned _Ip> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[], _Ip>
    : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[_Np], 0>
    : public integral_constant<size_t, _Np> {};
template <class _Tp, size_t _Np, unsigned _Ip> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[_Np], _Ip>
    : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1567 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, unsigned _Ip = 0>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t extent_v
    = extent<_Tp, _Ip>::value;
#endif
# 1571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__array_extent)
# 1573 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_extent

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_extent
    {typedef _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_extent<_Tp[]>
    {typedef _Tp type;};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS remove_extent<_Tp[_Np]>
    {typedef _Tp type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_extent_t = typename remove_extent<_Tp>::type;
#endif
# 1586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// remove_all_extents

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_all_extents
    {typedef _Tp type;};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_all_extents<_Tp[]>
    {typedef typename remove_all_extents<_Tp>::type type;};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS remove_all_extents<_Tp[_Np]>
    {typedef typename remove_all_extents<_Tp>::type type;};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1597 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using remove_all_extents_t = typename remove_all_extents<_Tp>::type;
#endif
# 1599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// is_bounded_array

template <class>                 struct _LIBCPP_TEMPLATE_VIS is_bounded_array           : false_type {};
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS is_bounded_array<_Tp[_Np]> : true_type {};

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR
bool is_bounded_array_v  = is_bounded_array<_Tp>::value;

// is_unbounded_array

template <class>     struct _LIBCPP_TEMPLATE_VIS is_unbounded_array        : false_type {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_unbounded_array<_Tp[]> : true_type {};

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR
bool is_unbounded_array_v  = is_unbounded_array<_Tp>::value;
#endif
# 1619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// decay

template <class _Up, bool>
struct __decay {
    typedef _LIBCPP_NODEBUG_TYPE typename remove_cv<_Up>::type type;
};

template <class _Up>
struct __decay<_Up, true> {
public:
    typedef _LIBCPP_NODEBUG_TYPE typename conditional
                     <
                         is_array<_Up>::value,
                         typename remove_extent<_Up>::type*,
                         typename conditional
                         <
                              is_function<_Up>::value,
                              typename add_pointer<_Up>::type,
                              typename remove_cv<_Up>::type
                         >::type
                     >::type type;
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS decay
{
private:
    typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tp>::type _Up;
public:
    typedef _LIBCPP_NODEBUG_TYPE typename __decay<_Up, __is_referenceable<_Up>::value>::type type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using decay_t = typename decay<_Tp>::type;
#endif
# 1655 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_abstract

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_abstract
    : public integral_constant<bool, __is_abstract(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1662 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_abstract_v
    = is_abstract<_Tp>::value;
#endif
# 1666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_final

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS
__libcpp_is_final : public integral_constant<bool, __is_final(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS
is_final : public integral_constant<bool, __is_final(_Tp)> {};
#endif
# 1676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_final_v
    = is_final<_Tp>::value;
#endif
# 1682 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_aggregate
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_IS_AGGREGATE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS
is_aggregate : public integral_constant<bool, __is_aggregate(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr bool is_aggregate_v
    = is_aggregate<_Tp>::value;
#endif
# 1694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_IS_AGGREGATE)
# 1696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_base_of

template <class _Bp, class _Dp>
struct _LIBCPP_TEMPLATE_VIS is_base_of
    : public integral_constant<bool, __is_base_of(_Bp, _Dp)> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Bp, class _Dp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_base_of_v
    = is_base_of<_Bp, _Dp>::value;
#endif
# 1708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __is_core_convertible

// [conv.general]/3 says "E is convertible to T" whenever "T t=E;" is well-formed.
// We can't test for that, but we can test implicit convertibility by passing it
// to a function. Notice that __is_core_convertible<void,void> is false,
// and __is_core_convertible<immovable-type,immovable-type> is true in C++17 and later.

template <class _Tp, class _Up, class = void>
struct __is_core_convertible : public false_type {};

template <class _Tp, class _Up>
struct __is_core_convertible<_Tp, _Up, decltype(
    static_cast<void(*)(_Up)>(0) ( static_cast<_Tp(*)()>(0)() )
)> : public true_type {};

// is_convertible

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_convertible_to) && !defined(_LIBCPP_USE_IS_CONVERTIBLE_FALLBACK)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS is_convertible
    : public integral_constant<bool, __is_convertible_to(_T1, _T2)> {};

#else  // __has_feature(is_convertible_to)
# 1732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

namespace __is_convertible_imp
{
template <class _Tp> void  __test_convert(_Tp);

template <class _From, class _To, class = void>
struct __is_convertible_test : public false_type {};

template <class _From, class _To>
struct __is_convertible_test<_From, _To,
    decltype(__is_convertible_imp::__test_convert<_To>(declval<_From>()))> : public true_type
{};

template <class _Tp, bool _IsArray =    is_array<_Tp>::value,
                     bool _IsFunction = is_function<_Tp>::value,
                     bool _IsVoid =     is_void<_Tp>::value>
                     struct __is_array_function_or_void                          {enum {value = 0};};
template <class _Tp> struct __is_array_function_or_void<_Tp, true, false, false> {enum {value = 1};};
template <class _Tp> struct __is_array_function_or_void<_Tp, false, true, false> {enum {value = 2};};
template <class _Tp> struct __is_array_function_or_void<_Tp, false, false, true> {enum {value = 3};};
}

template <class _Tp,
    unsigned = __is_convertible_imp::__is_array_function_or_void<typename remove_reference<_Tp>::type>::value>
struct __is_convertible_check
{
    static const size_t __v = 0;
};

template <class _Tp>
struct __is_convertible_check<_Tp, 0>
{
    static const size_t __v = sizeof(_Tp);
};

template <class _T1, class _T2,
    unsigned _T1_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T1>::value,
    unsigned _T2_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T2>::value>
struct __is_convertible
    : public integral_constant<bool,
        __is_convertible_imp::__is_convertible_test<_T1, _T2>::value
    >
{};

template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 1> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 1> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 1> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 1> : public false_type {};

template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 2> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 2> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 2> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 2> : public false_type {};

template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 3> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 3> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 3> : public false_type {};
template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 3> : public true_type {};

template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS is_convertible
    : public __is_convertible<_T1, _T2>
{
    static const size_t __complete_check1 = __is_convertible_check<_T1>::__v;
    static const size_t __complete_check2 = __is_convertible_check<_T2>::__v;
};

#endif // __has_feature(is_convertible_to)
# 1799 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1801 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _From, class _To>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_convertible_v
    = is_convertible<_From, _To>::value;
#endif
# 1805 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_convertible

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1809 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <typename _Tp>
static void __test_noexcept(_Tp) noexcept;

template<typename _Fm, typename _To>
static bool_constant<noexcept(_VSTD::__test_noexcept<_To>(declval<_Fm>()))>
__is_nothrow_convertible_test();

template <typename _Fm, typename _To>
struct __is_nothrow_convertible_helper: decltype(__is_nothrow_convertible_test<_Fm, _To>())
{ };

template <typename _Fm, typename _To>
struct is_nothrow_convertible : _Or<
    _And<is_void<_To>, is_void<_Fm>>,
    _Lazy<_And, is_convertible<_Fm, _To>, __is_nothrow_convertible_helper<_Fm, _To>>
>::type { };

template <typename _Fm, typename _To>
inline constexpr bool is_nothrow_convertible_v = is_nothrow_convertible<_Fm, _To>::value;

#endif // _LIBCPP_STD_VER > 17
# 1831 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_empty

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_empty) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1835 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_empty
    : public integral_constant<bool, __is_empty(_Tp)> {};

#else  // __has_feature(is_empty)
# 1841 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct __is_empty1
    : public _Tp
{
    double __lx;
};

struct __is_empty2
{
    double __lx;
};

template <class _Tp, bool = is_class<_Tp>::value>
struct __libcpp_empty : public integral_constant<bool, sizeof(__is_empty1<_Tp>) == sizeof(__is_empty2)> {};

template <class _Tp> struct __libcpp_empty<_Tp, false> : public false_type {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_empty : public __libcpp_empty<_Tp> {};

#endif // __has_feature(is_empty)
# 1862 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1864 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_empty_v
    = is_empty<_Tp>::value;
#endif
# 1868 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_polymorphic

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_polymorphic) || defined(_LIBCPP_COMPILER_MSVC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1872 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_polymorphic
    : public integral_constant<bool, __is_polymorphic(_Tp)> {};

#else
# 1878 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<typename _Tp> char &__is_polymorphic_impl(
    typename enable_if<sizeof((_Tp*)dynamic_cast<const volatile void*>(declval<_Tp*>())) != 0,
                       int>::type);
template<typename _Tp> __two &__is_polymorphic_impl(...);

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_polymorphic
    : public integral_constant<bool, sizeof(__is_polymorphic_impl<_Tp>(0)) == 1> {};

#endif // __has_feature(is_polymorphic)
# 1888 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1890 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_polymorphic_v
    = is_polymorphic<_Tp>::value;
#endif
# 1894 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// has_virtual_destructor

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(has_virtual_destructor) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1898 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_virtual_destructor
    : public integral_constant<bool, __has_virtual_destructor(_Tp)> {};

#else
# 1903 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_virtual_destructor
    : public false_type {};

#endif
# 1908 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1910 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool has_virtual_destructor_v
    = has_virtual_destructor<_Tp>::value;
#endif
# 1914 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// has_unique_object_representations

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1918 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_unique_object_representations
    : public integral_constant<bool,
       __has_unique_object_representations(remove_cv_t<remove_all_extents_t<_Tp>>)> {};

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1924 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool has_unique_object_representations_v
    = has_unique_object_representations<_Tp>::value;
#endif
# 1928 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif
# 1930 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// alignment_of

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS alignment_of
    : public integral_constant<size_t, _LIBCPP_ALIGNOF(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1937 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t alignment_of_v
    = alignment_of<_Tp>::value;
#endif
# 1941 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// aligned_storage

template <class _Hp, class _Tp>
struct __type_list
{
    typedef _Hp _Head;
    typedef _Tp _Tail;
};

struct __nat
{
#ifndef _LIBCPP_CXX03_LANG
    __nat() = delete;
    __nat(const __nat&) = delete;
    __nat& operator=(const __nat&) = delete;
    ~__nat() = delete;
#endif
# 1959 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
};

template <class _Tp>
struct __align_type
{
    static const size_t value = _LIBCPP_PREFERRED_ALIGNOF(_Tp);
    typedef _Tp type;
};

struct __struct_double {long double __lx;};
struct __struct_double4 {double __lx[4];};

typedef
    __type_list<__align_type<unsigned char>,
    __type_list<__align_type<unsigned short>,
    __type_list<__align_type<unsigned int>,
    __type_list<__align_type<unsigned long>,
    __type_list<__align_type<unsigned long long>,
    __type_list<__align_type<double>,
    __type_list<__align_type<long double>,
    __type_list<__align_type<__struct_double>,
    __type_list<__align_type<__struct_double4>,
    __type_list<__align_type<int*>,
    __nat
    > > > > > > > > > > __all_types;

template <size_t _Align>
struct _ALIGNAS(_Align) __fallback_overaligned {};

template <class _TL, size_t _Align> struct __find_pod;

template <class _Hp, size_t _Align>
struct __find_pod<__type_list<_Hp, __nat>, _Align>
{
    typedef typename conditional<
                             _Align == _Hp::value,
                             typename _Hp::type,
                             __fallback_overaligned<_Align>
                         >::type type;
};

template <class _Hp, class _Tp, size_t _Align>
struct __find_pod<__type_list<_Hp, _Tp>, _Align>
{
    typedef typename conditional<
                             _Align == _Hp::value,
                             typename _Hp::type,
                             typename __find_pod<_Tp, _Align>::type
                         >::type type;
};

template <class _TL, size_t _Len> struct __find_max_align;

template <class _Hp, size_t _Len>
struct __find_max_align<__type_list<_Hp, __nat>, _Len> : public integral_constant<size_t, _Hp::value> {};

template <size_t _Len, size_t _A1, size_t _A2>
struct __select_align
{
private:
    static const size_t __min = _A2 < _A1 ? _A2 : _A1;
    static const size_t __max = _A1 < _A2 ? _A2 : _A1;
public:
    static const size_t value = _Len < __max ? __min : __max;
};

template <class _Hp, class _Tp, size_t _Len>
struct __find_max_align<__type_list<_Hp, _Tp>, _Len>
    : public integral_constant<size_t, __select_align<_Len, _Hp::value, __find_max_align<_Tp, _Len>::value>::value> {};

template <size_t _Len, size_t _Align = __find_max_align<__all_types, _Len>::value>
struct _LIBCPP_TEMPLATE_VIS aligned_storage
{
    typedef typename __find_pod<__all_types, _Align>::type _Aligner;
    union type
    {
        _Aligner __align;
        unsigned char __data[(_Len + _Align - 1)/_Align * _Align];
    };
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2041 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <size_t _Len, size_t _Align = __find_max_align<__all_types, _Len>::value>
    using aligned_storage_t = typename aligned_storage<_Len, _Align>::type;
#endif
# 2044 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#define _CREATE_ALIGNED_STORAGE_SPECIALIZATION(n) \
template <size_t _Len>\
struct _LIBCPP_TEMPLATE_VIS aligned_storage<_Len, n>\
{\
    struct _ALIGNAS(n) type\
    {\
        unsigned char __lx[(_Len + n - 1)/n * n];\
    };\
}

_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x8);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x10);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x20);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x40);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x80);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x100);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x200);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x400);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x800);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1000);
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2000);
// PE/COFF does not support alignment beyond 8192 (=0x2000)
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2071 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
_CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4000);
#endif // !defined(_LIBCPP_OBJECT_FORMAT_COFF)
# 2073 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#undef _CREATE_ALIGNED_STORAGE_SPECIALIZATION


// aligned_union

template <size_t _I0, size_t ..._In>
struct __static_max;

template <size_t _I0>
struct __static_max<_I0>
{
    static const size_t value = _I0;
};

template <size_t _I0, size_t _I1, size_t ..._In>
struct __static_max<_I0, _I1, _In...>
{
    static const size_t value = _I0 >= _I1 ? __static_max<_I0, _In...>::value :
                                             __static_max<_I1, _In...>::value;
};

template <size_t _Len, class _Type0, class ..._Types>
struct aligned_union
{
    static const size_t alignment_value = __static_max<_LIBCPP_PREFERRED_ALIGNOF(_Type0),
                                                       _LIBCPP_PREFERRED_ALIGNOF(_Types)...>::value;
    static const size_t __len = __static_max<_Len, sizeof(_Type0),
                                             sizeof(_Types)...>::value;
    typedef typename aligned_storage<__len, alignment_value>::type type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <size_t _Len, class ..._Types> using aligned_union_t = typename aligned_union<_Len, _Types...>::type;
#endif
# 2108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct __numeric_type
{
   static void __test(...);
   static float __test(float);
   static double __test(char);
   static double __test(int);
   static double __test(unsigned);
   static double __test(long);
   static double __test(unsigned long);
   static double __test(long long);
   static double __test(unsigned long long);
   static double __test(double);
   static long double __test(long double);

   typedef decltype(__test(declval<_Tp>())) type;
   static const bool value = _IsNotSame<type, void>::value;
};

template <>
struct __numeric_type<void>
{
   static const bool value = true;
};

// __promote

template <class _A1, class _A2 = void, class _A3 = void,
          bool = __numeric_type<_A1>::value &&
                 __numeric_type<_A2>::value &&
                 __numeric_type<_A3>::value>
class __promote_imp
{
public:
    static const bool value = false;
};

template <class _A1, class _A2, class _A3>
class __promote_imp<_A1, _A2, _A3, true>
{
private:
    typedef typename __promote_imp<_A1>::type __type1;
    typedef typename __promote_imp<_A2>::type __type2;
    typedef typename __promote_imp<_A3>::type __type3;
public:
    typedef decltype(__type1() + __type2() + __type3()) type;
    static const bool value = true;
};

template <class _A1, class _A2>
class __promote_imp<_A1, _A2, void, true>
{
private:
    typedef typename __promote_imp<_A1>::type __type1;
    typedef typename __promote_imp<_A2>::type __type2;
public:
    typedef decltype(__type1() + __type2()) type;
    static const bool value = true;
};

template <class _A1>
class __promote_imp<_A1, void, void, true>
{
public:
    typedef typename __numeric_type<_A1>::type type;
    static const bool value = true;
};

template <class _A1, class _A2 = void, class _A3 = void>
class __promote : public __promote_imp<_A1, _A2, _A3> {};

// make_signed / make_unsigned

typedef
    __type_list<signed char,
    __type_list<signed short,
    __type_list<signed int,
    __type_list<signed long,
    __type_list<signed long long,
#ifndef _LIBCPP_HAS_NO_INT128
    __type_list<__int128_t,
#endif
# 2191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    __nat
#ifndef _LIBCPP_HAS_NO_INT128
    >
#endif
# 2195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    > > > > > __signed_types;

typedef
    __type_list<unsigned char,
    __type_list<unsigned short,
    __type_list<unsigned int,
    __type_list<unsigned long,
    __type_list<unsigned long long,
#ifndef _LIBCPP_HAS_NO_INT128
    __type_list<__uint128_t,
#endif
# 2206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    __nat
#ifndef _LIBCPP_HAS_NO_INT128
    >
#endif
# 2210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    > > > > > __unsigned_types;

template <class _TypeList, size_t _Size, bool = _Size <= sizeof(typename _TypeList::_Head)> struct __find_first;

template <class _Hp, class _Tp, size_t _Size>
struct __find_first<__type_list<_Hp, _Tp>, _Size, true>
{
    typedef _LIBCPP_NODEBUG_TYPE _Hp type;
};

template <class _Hp, class _Tp, size_t _Size>
struct __find_first<__type_list<_Hp, _Tp>, _Size, false>
{
    typedef _LIBCPP_NODEBUG_TYPE typename __find_first<_Tp, _Size>::type type;
};

template <class _Tp, class _Up, bool = is_const<typename remove_reference<_Tp>::type>::value,
                             bool = is_volatile<typename remove_reference<_Tp>::type>::value>
struct __apply_cv
{
    typedef _LIBCPP_NODEBUG_TYPE _Up type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp, _Up, true, false>
{
    typedef _LIBCPP_NODEBUG_TYPE const _Up type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp, _Up, false, true>
{
    typedef volatile _Up type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp, _Up, true, true>
{
    typedef const volatile _Up type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp&, _Up, false, false>
{
    typedef _Up& type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp&, _Up, true, false>
{
    typedef const _Up& type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp&, _Up, false, true>
{
    typedef volatile _Up& type;
};

template <class _Tp, class _Up>
struct __apply_cv<_Tp&, _Up, true, true>
{
    typedef const volatile _Up& type;
};

template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value>
struct __make_signed {};

template <class _Tp>
struct __make_signed<_Tp, true>
{
    typedef typename __find_first<__signed_types, sizeof(_Tp)>::type type;
};

template <> struct __make_signed<bool,               true> {};
template <> struct __make_signed<  signed short,     true> {typedef short     type;};
template <> struct __make_signed<unsigned short,     true> {typedef short     type;};
template <> struct __make_signed<  signed int,       true> {typedef int       type;};
template <> struct __make_signed<unsigned int,       true> {typedef int       type;};
template <> struct __make_signed<  signed long,      true> {typedef long      type;};
template <> struct __make_signed<unsigned long,      true> {typedef long      type;};
template <> struct __make_signed<  signed long long, true> {typedef long long type;};
template <> struct __make_signed<unsigned long long, true> {typedef long long type;};
#ifndef _LIBCPP_HAS_NO_INT128
template <> struct __make_signed<__int128_t,         true> {typedef __int128_t type;};
template <> struct __make_signed<__uint128_t,        true> {typedef __int128_t type;};
#endif
# 2297 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS make_signed
{
    typedef typename __apply_cv<_Tp, typename __make_signed<typename remove_cv<_Tp>::type>::type>::type type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using make_signed_t = typename make_signed<_Tp>::type;
#endif
# 2307 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value>
struct __make_unsigned {};

template <class _Tp>
struct __make_unsigned<_Tp, true>
{
    typedef typename __find_first<__unsigned_types, sizeof(_Tp)>::type type;
};

template <> struct __make_unsigned<bool,               true> {};
template <> struct __make_unsigned<  signed short,     true> {typedef unsigned short     type;};
template <> struct __make_unsigned<unsigned short,     true> {typedef unsigned short     type;};
template <> struct __make_unsigned<  signed int,       true> {typedef unsigned int       type;};
template <> struct __make_unsigned<unsigned int,       true> {typedef unsigned int       type;};
template <> struct __make_unsigned<  signed long,      true> {typedef unsigned long      type;};
template <> struct __make_unsigned<unsigned long,      true> {typedef unsigned long      type;};
template <> struct __make_unsigned<  signed long long, true> {typedef unsigned long long type;};
template <> struct __make_unsigned<unsigned long long, true> {typedef unsigned long long type;};
#ifndef _LIBCPP_HAS_NO_INT128
template <> struct __make_unsigned<__int128_t,         true> {typedef __uint128_t        type;};
template <> struct __make_unsigned<__uint128_t,        true> {typedef __uint128_t        type;};
#endif
# 2330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS make_unsigned
{
    typedef typename __apply_cv<_Tp, typename __make_unsigned<typename remove_cv<_Tp>::type>::type>::type type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2338 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using make_unsigned_t = typename make_unsigned<_Tp>::type;
#endif
# 2340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
_LIBCPP_NODISCARD_ATTRIBUTE _LIBCPP_INLINE_VISIBILITY constexpr
typename make_unsigned<_Tp>::type __to_unsigned_like(_Tp __x) noexcept {
    return static_cast<typename make_unsigned<_Tp>::type>(__x);
}
#endif
# 2348 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2350 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class...> using void_t = void;
#endif
# 2352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// Let COND_RES(X, Y) be:
template <class _Tp, class _Up>
using __cond_type = decltype(false ? declval<_Tp>() : declval<_Up>());

template <class _Tp, class _Up, class = void>
struct __common_type3 {};

// sub-bullet 4 - "if COND_RES(CREF(D1), CREF(D2)) denotes a type..."
template <class _Tp, class _Up>
struct __common_type3<_Tp, _Up, void_t<__cond_type<const _Tp&, const _Up&>>>
{
    using type = remove_cvref_t<__cond_type<const _Tp&, const _Up&>>;
};

template <class _Tp, class _Up, class = void>
struct __common_type2_imp : __common_type3<_Tp, _Up> {};
#else
# 2371 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Up, class = void>
struct __common_type2_imp {};
#endif
# 2374 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// sub-bullet 3 - "if decay_t<decltype(false ? declval<D1>() : declval<D2>())> ..."
template <class _Tp, class _Up>
struct __common_type2_imp<_Tp, _Up,
                          typename __void_t<decltype(
                                            true ? declval<_Tp>() : declval<_Up>()
                                            )>::type>
{
  typedef _LIBCPP_NODEBUG_TYPE typename decay<decltype(
                         true ? declval<_Tp>() : declval<_Up>()
                         )>::type type;
};

template <class, class = void>
struct __common_type_impl {};

// Clang provides variadic templates in C++03 as an extension.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG) || defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2392 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# define _LIBCPP_OPTIONAL_PACK(...) , __VA_ARGS__
template <class... Tp>
struct __common_types;
template <class... _Tp>
struct _LIBCPP_TEMPLATE_VIS common_type;
#else
# 2398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# define _LIBCPP_OPTIONAL_PACK(...)
struct __no_arg;
template <class _Tp, class _Up, class = __no_arg>
struct __common_types;
template <class _Tp = __no_arg, class _Up = __no_arg, class _Vp = __no_arg,
          class _Unused = __no_arg>
struct common_type {
  static_assert(sizeof(_Unused) == 0,
                "common_type accepts at most 3 arguments in C++03");
};
#endif // _LIBCPP_CXX03_LANG
# 2409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Up>
struct __common_type_impl<
    __common_types<_Tp, _Up>,
    typename __void_t<typename common_type<_Tp, _Up>::type>::type>
{
  typedef typename common_type<_Tp, _Up>::type type;
};

template <class _Tp, class _Up, class _Vp _LIBCPP_OPTIONAL_PACK(class... _Rest)>
struct __common_type_impl<
    __common_types<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)>,
    typename __void_t<typename common_type<_Tp, _Up>::type>::type>
    : __common_type_impl<__common_types<typename common_type<_Tp, _Up>::type,
                                        _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)> > {
};

// bullet 1 - sizeof...(Tp) == 0

template <>
struct _LIBCPP_TEMPLATE_VIS common_type<> {};

// bullet 2 - sizeof...(Tp) == 1

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS common_type<_Tp>
    : public common_type<_Tp, _Tp> {};

// bullet 3 - sizeof...(Tp) == 2

// sub-bullet 1 - "If is_same_v<T1, D1> is false or ..."
template <class _Tp, class _Up>
struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, _Up>
    : conditional<
        _IsSame<_Tp, typename decay<_Tp>::type>::value && _IsSame<_Up, typename decay<_Up>::type>::value,
        __common_type2_imp<_Tp, _Up>,
        common_type<typename decay<_Tp>::type, typename decay<_Up>::type>
    >::type
{};

// bullet 4 - sizeof...(Tp) > 2

template <class _Tp, class _Up, class _Vp _LIBCPP_OPTIONAL_PACK(class... _Rest)>
struct _LIBCPP_TEMPLATE_VIS
    common_type<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)>
    : __common_type_impl<
          __common_types<_Tp, _Up, _Vp _LIBCPP_OPTIONAL_PACK(_Rest...)> > {};

#undef _LIBCPP_OPTIONAL_PACK

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2460 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class ..._Tp> using common_type_t = typename common_type<_Tp...>::type;
#endif
# 2462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// Let COPYCV(FROM, TO) be an alias for type TO with the addition of FROM's
// top-level cv-qualifiers.
template <class _From, class _To>
struct __copy_cv
{
    using type = _To;
};

template <class _From, class _To>
struct __copy_cv<const _From, _To>
{
    using type = add_const_t<_To>;
};

template <class _From, class _To>
struct __copy_cv<volatile _From, _To>
{
    using type = add_volatile_t<_To>;
};

template <class _From, class _To>
struct __copy_cv<const volatile _From, _To>
{
    using type = add_cv_t<_To>;
};

template <class _From, class _To>
using __copy_cv_t = typename __copy_cv<_From, _To>::type;

template <class _From, class _To>
struct __copy_cvref
{
    using type = __copy_cv_t<_From, _To>;
};

template <class _From, class _To>
struct __copy_cvref<_From&, _To>
{
    using type = add_lvalue_reference_t<__copy_cv_t<_From, _To>>;
};

template <class _From, class _To>
struct __copy_cvref<_From&&, _To>
{
    using type = add_rvalue_reference_t<__copy_cv_t<_From, _To>>;
};

template <class _From, class _To>
using __copy_cvref_t = typename __copy_cvref<_From, _To>::type;

#endif // _LIBCPP_STD_VER > 11
# 2515 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// common_reference
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// Let COND_RES(X, Y) be:
template <class _Xp, class _Yp>
using __cond_res =
    decltype(false ? declval<_Xp(&)()>()() : declval<_Yp(&)()>()());

// Let `XREF(A)` denote a unary alias template `T` such that `T<U>` denotes the same type as `U`
// with the addition of `A`'s cv and reference qualifiers, for a non-reference cv-unqualified type
// `U`.
// [Note: `XREF(A)` is `__xref<A>::template __apply`]
template <class _Tp>
struct __xref {
  template<class _Up>
  using __apply = __copy_cvref_t<_Tp, _Up>;
};

// Given types A and B, let X be remove_reference_t<A>, let Y be remove_reference_t<B>,
// and let COMMON-REF(A, B) be:
template<class _Ap, class _Bp, class _Xp = remove_reference_t<_Ap>, class _Yp = remove_reference_t<_Bp>>
struct __common_ref;

template<class _Xp, class _Yp>
using __common_ref_t = typename __common_ref<_Xp, _Yp>::__type;

template<class _Xp, class _Yp>
using __cv_cond_res = __cond_res<__copy_cv_t<_Xp, _Yp>&, __copy_cv_t<_Yp, _Xp>&>;


//    If A and B are both lvalue reference types, COMMON-REF(A, B) is
//    COND-RES(COPYCV(X, Y)&, COPYCV(Y, X)&) if that type exists and is a reference type.
template<class _Ap, class _Bp, class _Xp, class _Yp>
requires requires { typename __cv_cond_res<_Xp, _Yp>; } && is_reference_v<__cv_cond_res<_Xp, _Yp>>
struct __common_ref<_Ap&, _Bp&, _Xp, _Yp>
{
    using __type = __cv_cond_res<_Xp, _Yp>;
};

//    Otherwise, let C be remove_reference_t<COMMON-REF(X&, Y&)>&&. ...
template <class _Xp, class _Yp>
using __common_ref_C = remove_reference_t<__common_ref_t<_Xp&, _Yp&>>&&;


//    .... If A and B are both rvalue reference types, C is well-formed, and
//    is_convertible_v<A, C> && is_convertible_v<B, C> is true, then COMMON-REF(A, B) is C.
template<class _Ap, class _Bp, class _Xp, class _Yp>
requires
  requires { typename __common_ref_C<_Xp, _Yp>; } &&
  is_convertible_v<_Ap&&, __common_ref_C<_Xp, _Yp>> &&
  is_convertible_v<_Bp&&, __common_ref_C<_Xp, _Yp>>
struct __common_ref<_Ap&&, _Bp&&, _Xp, _Yp>
{
    using __type = __common_ref_C<_Xp, _Yp>;
};

//    Otherwise, let D be COMMON-REF(const X&, Y&). ...
template <class _Tp, class _Up>
using __common_ref_D = __common_ref_t<const _Tp&, _Up&>;

//    ... If A is an rvalue reference and B is an lvalue reference and D is well-formed and
//    is_convertible_v<A, D> is true, then COMMON-REF(A, B) is D.
template<class _Ap, class _Bp, class _Xp, class _Yp>
requires requires { typename __common_ref_D<_Xp, _Yp>; } &&
         is_convertible_v<_Ap&&, __common_ref_D<_Xp, _Yp>>
struct __common_ref<_Ap&&, _Bp&, _Xp, _Yp>
{
    using __type = __common_ref_D<_Xp, _Yp>;
};

//    Otherwise, if A is an lvalue reference and B is an rvalue reference, then
//    COMMON-REF(A, B) is COMMON-REF(B, A).
template<class _Ap, class _Bp, class _Xp, class _Yp>
struct __common_ref<_Ap&, _Bp&&, _Xp, _Yp> : __common_ref<_Bp&&, _Ap&> {};

//    Otherwise, COMMON-REF(A, B) is ill-formed.
template<class _Ap, class _Bp, class _Xp, class _Yp>
struct __common_ref {};

// Note C: For the common_reference trait applied to a parameter pack [...]

template <class...>
struct common_reference;

template <class... _Types>
using common_reference_t = typename common_reference<_Types...>::type;

// bullet 1 - sizeof...(T) == 0
template<>
struct common_reference<> {};

// bullet 2 - sizeof...(T) == 1
template <class _Tp>
struct common_reference<_Tp>
{
    using type = _Tp;
};

// bullet 3 - sizeof...(T) == 2
template <class _Tp, class _Up> struct __common_reference_sub_bullet3;
template <class _Tp, class _Up> struct __common_reference_sub_bullet2 : __common_reference_sub_bullet3<_Tp, _Up> {};
template <class _Tp, class _Up> struct __common_reference_sub_bullet1 : __common_reference_sub_bullet2<_Tp, _Up> {};

// sub-bullet 1 - If T1 and T2 are reference types and COMMON-REF(T1, T2) is well-formed, then
// the member typedef `type` denotes that type.
template <class _Tp, class _Up> struct common_reference<_Tp, _Up> : __common_reference_sub_bullet1<_Tp, _Up> {};

template <class _Tp, class _Up>
requires is_reference_v<_Tp> && is_reference_v<_Up> && requires { typename __common_ref_t<_Tp, _Up>; }
struct __common_reference_sub_bullet1<_Tp, _Up>
{
    using type = __common_ref_t<_Tp, _Up>;
};

// sub-bullet 2 - Otherwise, if basic_common_reference<remove_cvref_t<T1>, remove_cvref_t<T2>, XREF(T1), XREF(T2)>::type
// is well-formed, then the member typedef `type` denotes that type.
template <class, class, template <class> class, template <class> class> struct basic_common_reference {};

template <class _Tp, class _Up>
using __basic_common_reference_t = typename basic_common_reference<
    remove_cvref_t<_Tp>, remove_cvref_t<_Up>,
    __xref<_Tp>::template __apply, __xref<_Up>::template __apply>::type;

template <class _Tp, class _Up>
requires requires { typename __basic_common_reference_t<_Tp, _Up>; }
struct __common_reference_sub_bullet2<_Tp, _Up>
{
    using type = __basic_common_reference_t<_Tp, _Up>;
};

// sub-bullet 3 - Otherwise, if COND-RES(T1, T2) is well-formed,
// then the member typedef `type` denotes that type.
template <class _Tp, class _Up>
requires requires { typename __cond_res<_Tp, _Up>; }
struct __common_reference_sub_bullet3<_Tp, _Up>
{
    using type = __cond_res<_Tp, _Up>;
};


// sub-bullet 4 & 5 - Otherwise, if common_type_t<T1, T2> is well-formed,
//                    then the member typedef `type` denotes that type.
//                  - Otherwise, there shall be no member `type`.
template <class _Tp, class _Up> struct __common_reference_sub_bullet3 : common_type<_Tp, _Up> {};

// bullet 4 - If there is such a type `C`, the member typedef type shall denote the same type, if
//            any, as `common_reference_t<C, Rest...>`.
template <class _Tp, class _Up, class _Vp, class... _Rest>
requires requires { typename common_reference_t<_Tp, _Up>; }
struct common_reference<_Tp, _Up, _Vp, _Rest...>
    : common_reference<common_reference_t<_Tp, _Up>, _Vp, _Rest...>
{};

// bullet 5 - Otherwise, there shall be no member `type`.
template <class...> struct common_reference {};

#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
# 2672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_assignable

template<typename, typename _Tp> struct __select_2nd { typedef _LIBCPP_NODEBUG_TYPE _Tp type; };

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_assignable)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp, class _Up>
struct _LIBCPP_TEMPLATE_VIS is_assignable : _BoolConstant<__is_assignable(_Tp, _Up)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Arg>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_assignable_v = __is_assignable(_Tp, _Arg);
#endif
# 2686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_assignable)
# 2688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Arg>
typename __select_2nd<decltype((declval<_Tp>() = declval<_Arg>())), true_type>::type
__is_assignable_test(int);

template <class, class>
false_type __is_assignable_test(...);


template <class _Tp, class _Arg, bool = is_void<_Tp>::value || is_void<_Arg>::value>
struct __is_assignable_imp
    : public decltype((_VSTD::__is_assignable_test<_Tp, _Arg>(0))) {};

template <class _Tp, class _Arg>
struct __is_assignable_imp<_Tp, _Arg, true>
    : public false_type
{
};

template <class _Tp, class _Arg>
struct is_assignable
    : public __is_assignable_imp<_Tp, _Arg> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Arg>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_assignable_v
    = is_assignable<_Tp, _Arg>::value;
#endif
# 2716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_assignable)
# 2718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_copy_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_copy_assignable
    : public is_assignable<typename add_lvalue_reference<_Tp>::type,
                  typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_copy_assignable_v
    = is_copy_assignable<_Tp>::value;
#endif
# 2730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_move_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_move_assignable
    : public is_assignable<typename add_lvalue_reference<_Tp>::type,
                           typename add_rvalue_reference<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_move_assignable_v
    = is_move_assignable<_Tp>::value;
#endif
# 2742 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_destructible

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_destructible)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2746 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_destructible : _BoolConstant<__is_destructible(_Tp)> { };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_destructible_v = __is_destructible(_Tp);
#endif
# 2754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#else // __has_keyword(__is_destructible)
# 2756 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

//  if it's a reference, return true
//  if it's a function, return false
//  if it's   void,     return false
//  if it's an array of unknown bound, return false
//  Otherwise, return "declval<_Up&>().~_Up()" is well-formed
//    where _Up is remove_all_extents<_Tp>::type

template <class>
struct __is_destructible_apply { typedef int type; };

template <typename _Tp>
struct __is_destructor_wellformed {
    template <typename _Tp1>
    static char  __test (
        typename __is_destructible_apply<decltype(declval<_Tp1&>().~_Tp1())>::type
    );

    template <typename _Tp1>
    static __two __test (...);

    static const bool value = sizeof(__test<_Tp>(12)) == sizeof(char);
};

template <class _Tp, bool>
struct __destructible_imp;

template <class _Tp>
struct __destructible_imp<_Tp, false>
   : public integral_constant<bool,
        __is_destructor_wellformed<typename remove_all_extents<_Tp>::type>::value> {};

template <class _Tp>
struct __destructible_imp<_Tp, true>
    : public true_type {};

template <class _Tp, bool>
struct __destructible_false;

template <class _Tp>
struct __destructible_false<_Tp, false> : public __destructible_imp<_Tp, is_reference<_Tp>::value> {};

template <class _Tp>
struct __destructible_false<_Tp, true> : public false_type {};

template <class _Tp>
struct is_destructible
    : public __destructible_false<_Tp, is_function<_Tp>::value> {};

template <class _Tp>
struct is_destructible<_Tp[]>
    : public false_type {};

template <>
struct is_destructible<void>
    : public false_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2814 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_destructible_v
    = is_destructible<_Tp>::value;
#endif
# 2818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // __has_keyword(__is_destructible)
# 2820 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _MP, bool _IsMemberFunctionPtr, bool _IsMemberObjectPtr>
struct __member_pointer_traits_imp
{
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...), true, false>
{
    typedef _Class _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...), true, false>
{
    typedef _Class _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const, true, false>
{
    typedef _Class const _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const, true, false>
{
    typedef _Class const _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile, true, false>
{
    typedef _Class volatile _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile, true, false>
{
    typedef _Class volatile _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile, true, false>
{
    typedef _Class const volatile _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile, true, false>
{
    typedef _Class const volatile _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_reference_qualified_functions) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &, true, false>
{
    typedef _Class& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &, true, false>
{
    typedef _Class& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&, true, false>
{
    typedef _Class const& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&, true, false>
{
    typedef _Class const& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&, true, false>
{
    typedef _Class volatile& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&, true, false>
{
    typedef _Class volatile& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&, true, false>
{
    typedef _Class const volatile& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&, true, false>
{
    typedef _Class const volatile& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &&, true, false>
{
    typedef _Class&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &&, true, false>
{
    typedef _Class&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&&, true, false>
{
    typedef _Class const&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&&, true, false>
{
    typedef _Class const&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&&, true, false>
{
    typedef _Class volatile&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&&, true, false>
{
    typedef _Class volatile&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&&, true, false>
{
    typedef _Class const volatile&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param...);
};

template <class _Rp, class _Class, class ..._Param>
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&&, true, false>
{
    typedef _Class const volatile&& _ClassType;
    typedef _Rp _ReturnType;
    typedef _Rp (_FnType) (_Param..., ...);
};

#endif // __has_feature(cxx_reference_qualified_functions) || defined(_LIBCPP_COMPILER_GCC)
# 3021 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3


template <class _Rp, class _Class>
struct __member_pointer_traits_imp<_Rp _Class::*, false, true>
{
    typedef _Class _ClassType;
    typedef _Rp _ReturnType;
};

template <class _MP>
struct __member_pointer_traits
    : public __member_pointer_traits_imp<typename remove_cv<_MP>::type,
                    is_member_function_pointer<_MP>::value,
                    is_member_object_pointer<_MP>::value>
{
//     typedef ... _ClassType;
//     typedef ... _ReturnType;
//     typedef ... _FnType;
};


template <class _DecayedFp>
struct __member_pointer_class_type {};

template <class _Ret, class _ClassType>
struct __member_pointer_class_type<_Ret _ClassType::*> {
  typedef _ClassType type;
};

// template <class T, class... Args> struct is_constructible;

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_GCC) && _GNUC_VER_NEW >= 10000
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3053 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# define _LIBCPP_GCC_SUPPORTS_IS_CONSTRUCTIBLE
#endif
# 3055 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG) && !__has_feature(is_constructible) && !defined(_LIBCPP_GCC_SUPPORTS_IS_CONSTRUCTIBLE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3057 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class... _Args>
struct __libcpp_is_constructible;

template <class _To, class _From>
struct __is_invalid_base_to_derived_cast {
  static_assert(is_reference<_To>::value, "Wrong specialization");
  using _RawFrom = __uncvref_t<_From>;
  using _RawTo = __uncvref_t<_To>;
  static const bool value = _And<
        _IsNotSame<_RawFrom, _RawTo>,
        is_base_of<_RawFrom, _RawTo>,
        _Not<__libcpp_is_constructible<_RawTo, _From>>
  >::value;
};

template <class _To, class _From>
struct __is_invalid_lvalue_to_rvalue_cast : false_type {
  static_assert(is_reference<_To>::value, "Wrong specialization");
};

template <class _ToRef, class _FromRef>
struct __is_invalid_lvalue_to_rvalue_cast<_ToRef&&, _FromRef&> {
  using _RawFrom = __uncvref_t<_FromRef>;
  using _RawTo = __uncvref_t<_ToRef>;
  static const bool value = _And<
      _Not<is_function<_RawTo>>,
      _Or<
        _IsSame<_RawFrom, _RawTo>,
        is_base_of<_RawTo, _RawFrom>>
    >::value;
};

struct __is_constructible_helper
{
    template <class _To>
    static void __eat(_To);

    // This overload is needed to work around a Clang bug that disallows
    // static_cast<T&&>(e) for non-reference-compatible types.
    // Example: static_cast<int&&>(declval<double>());
    // NOTE: The static_cast implementation below is required to support
    //  classes with explicit conversion operators.
    template <class _To, class _From,
              class = decltype(__eat<_To>(declval<_From>()))>
    static true_type __test_cast(int);

    template <class _To, class _From,
              class = decltype(static_cast<_To>(declval<_From>()))>
    static integral_constant<bool,
        !__is_invalid_base_to_derived_cast<_To, _From>::value &&
        !__is_invalid_lvalue_to_rvalue_cast<_To, _From>::value
    > __test_cast(long);

    template <class, class>
    static false_type __test_cast(...);

    template <class _Tp, class ..._Args,
        class = decltype(_Tp(declval<_Args>()...))>
    static true_type __test_nary(int);
    template <class _Tp, class...>
    static false_type __test_nary(...);

    template <class _Tp, class _A0, class = decltype(::new _Tp(declval<_A0>()))>
    static is_destructible<_Tp> __test_unary(int);
    template <class, class>
    static false_type __test_unary(...);
};

template <class _Tp, bool = is_void<_Tp>::value>
struct __is_default_constructible
    : decltype(__is_constructible_helper::__test_nary<_Tp>(0))
{};

template <class _Tp>
struct __is_default_constructible<_Tp, true> : false_type {};

template <class _Tp>
struct __is_default_constructible<_Tp[], false> : false_type {};

template <class _Tp, size_t _Nx>
struct __is_default_constructible<_Tp[_Nx], false>
    : __is_default_constructible<typename remove_all_extents<_Tp>::type>  {};

template <class _Tp, class... _Args>
struct __libcpp_is_constructible
{
  static_assert(sizeof...(_Args) > 1, "Wrong specialization");
  typedef decltype(__is_constructible_helper::__test_nary<_Tp, _Args...>(0))
      type;
};

template <class _Tp>
struct __libcpp_is_constructible<_Tp> : __is_default_constructible<_Tp> {};

template <class _Tp, class _A0>
struct __libcpp_is_constructible<_Tp, _A0>
    : public decltype(__is_constructible_helper::__test_unary<_Tp, _A0>(0))
{};

template <class _Tp, class _A0>
struct __libcpp_is_constructible<_Tp&, _A0>
    : public decltype(__is_constructible_helper::
    __test_cast<_Tp&, _A0>(0))
{};

template <class _Tp, class _A0>
struct __libcpp_is_constructible<_Tp&&, _A0>
    : public decltype(__is_constructible_helper::
    __test_cast<_Tp&&, _A0>(0))
{};

#endif
# 3170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_constructible) || defined(_LIBCPP_GCC_SUPPORTS_IS_CONSTRUCTIBLE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class ..._Args>
struct _LIBCPP_TEMPLATE_VIS is_constructible
    : public integral_constant<bool, __is_constructible(_Tp, _Args...)>
    {};
#else
# 3177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class... _Args>
struct _LIBCPP_TEMPLATE_VIS is_constructible
    : public __libcpp_is_constructible<_Tp, _Args...>::type {};
#endif
# 3181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class ..._Args>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_constructible_v
    = is_constructible<_Tp, _Args...>::value;
#endif
# 3187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_default_constructible

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_default_constructible
    : public is_constructible<_Tp>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_default_constructible_v
    = is_default_constructible<_Tp>::value;
#endif
# 3200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#ifndef _LIBCPP_CXX03_LANG
// First of all, we can't implement this check in C++03 mode because the {}
// default initialization syntax isn't valid.
// Second, we implement the trait in a funny manner with two defaulted template
// arguments to workaround Clang's PR43454.
template <class _Tp>
void __test_implicit_default_constructible(_Tp);

template <class _Tp, class = void, class = typename is_default_constructible<_Tp>::type>
struct __is_implicitly_default_constructible
    : false_type
{ };

template <class _Tp>
struct __is_implicitly_default_constructible<_Tp, decltype(__test_implicit_default_constructible<_Tp const&>({})), true_type>
    : true_type
{ };

template <class _Tp>
struct __is_implicitly_default_constructible<_Tp, decltype(__test_implicit_default_constructible<_Tp const&>({})), false_type>
    : false_type
{ };
#endif // !C++03
# 3224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_copy_constructible

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_copy_constructible
    : public is_constructible<_Tp,
                  typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_copy_constructible_v
    = is_copy_constructible<_Tp>::value;
#endif
# 3237 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_move_constructible

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_move_constructible
    : public is_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_move_constructible_v
    = is_move_constructible<_Tp>::value;
#endif
# 3250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_constructible

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_trivially_constructible) || _GNUC_VER >= 501
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class... _Args>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible
    : integral_constant<bool, __is_trivially_constructible(_Tp, _Args...)>
{
};

#else  // !__has_feature(is_trivially_constructible)
# 3262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class... _Args>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible
    : false_type
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp>
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(has_trivial_constructor) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : integral_constant<bool, __has_trivial_constructor(_Tp)>
#else
# 3274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : integral_constant<bool, is_scalar<_Tp>::value>
#endif
# 3276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&&>
    : integral_constant<bool, is_scalar<_Tp>::value>
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, const _Tp&>
    : integral_constant<bool, is_scalar<_Tp>::value>
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&>
    : integral_constant<bool, is_scalar<_Tp>::value>
{
};

#endif // !__has_feature(is_trivially_constructible)
# 3298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class... _Args>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_constructible_v
    = is_trivially_constructible<_Tp, _Args...>::value;
#endif
# 3305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_default_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_default_constructible
    : public is_trivially_constructible<_Tp>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3313 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_default_constructible_v
    = is_trivially_default_constructible<_Tp>::value;
#endif
# 3317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_copy_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_constructible
    : public is_trivially_constructible<_Tp, typename add_lvalue_reference<const _Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copy_constructible_v
    = is_trivially_copy_constructible<_Tp>::value;
#endif
# 3329 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_move_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_constructible
    : public is_trivially_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3337 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_move_constructible_v
    = is_trivially_move_constructible<_Tp>::value;
#endif
# 3341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_assignable

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_trivially_assignable) || _GNUC_VER >= 501
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Arg>
struct is_trivially_assignable
    : integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)>
{
};

#else  // !__has_feature(is_trivially_assignable)
# 3353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Arg>
struct is_trivially_assignable
    : public false_type {};

template <class _Tp>
struct is_trivially_assignable<_Tp&, _Tp>
    : integral_constant<bool, is_scalar<_Tp>::value> {};

template <class _Tp>
struct is_trivially_assignable<_Tp&, _Tp&>
    : integral_constant<bool, is_scalar<_Tp>::value> {};

template <class _Tp>
struct is_trivially_assignable<_Tp&, const _Tp&>
    : integral_constant<bool, is_scalar<_Tp>::value> {};

template <class _Tp>
struct is_trivially_assignable<_Tp&, _Tp&&>
    : integral_constant<bool, is_scalar<_Tp>::value> {};

#endif // !__has_feature(is_trivially_assignable)
# 3375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3377 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Arg>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_assignable_v
    = is_trivially_assignable<_Tp, _Arg>::value;
#endif
# 3381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_copy_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_assignable
    : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type,
                  typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3389 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copy_assignable_v
    = is_trivially_copy_assignable<_Tp>::value;
#endif
# 3393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_move_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_assignable
    : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type,
                                     typename add_rvalue_reference<_Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_move_assignable_v
    = is_trivially_move_assignable<_Tp>::value;
#endif
# 3406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_destructible

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_trivially_destructible)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible
    : public integral_constant<bool, __is_trivially_destructible(_Tp)> {};

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __has_feature(has_trivial_destructor) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 3415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible
    : public integral_constant<bool, is_destructible<_Tp>::value && __has_trivial_destructor(_Tp)> {};

#else
# 3420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_trivial_destructor
    : public integral_constant<bool, is_scalar<_Tp>::value ||
                                     is_reference<_Tp>::value> {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible
    : public __libcpp_trivial_destructor<typename remove_all_extents<_Tp>::type> {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible<_Tp[]>
    : public false_type {};

#endif
# 3432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_destructible_v
    = is_trivially_destructible<_Tp>::value;
#endif
# 3438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_constructible

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_nothrow_constructible)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class... _Args>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
    : public integral_constant<bool, __is_nothrow_constructible(_Tp, _Args...)> {};

#else
# 3448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <bool, bool, class _Tp, class... _Args> struct __libcpp_is_nothrow_constructible;

template <class _Tp, class... _Args>
struct __libcpp_is_nothrow_constructible</*is constructible*/true, /*is reference*/false, _Tp, _Args...>
    : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))>
{
};

template <class _Tp>
void __implicit_conversion_to(_Tp) noexcept { }

template <class _Tp, class _Arg>
struct __libcpp_is_nothrow_constructible</*is constructible*/true, /*is reference*/true, _Tp, _Arg>
    : public integral_constant<bool, noexcept(_VSTD::__implicit_conversion_to<_Tp>(declval<_Arg>()))>
{
};

template <class _Tp, bool _IsReference, class... _Args>
struct __libcpp_is_nothrow_constructible</*is constructible*/false, _IsReference, _Tp, _Args...>
    : public false_type
{
};

template <class _Tp, class... _Args>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible
    : __libcpp_is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, is_reference<_Tp>::value, _Tp, _Args...>
{
};

template <class _Tp, size_t _Ns>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp[_Ns]>
    : __libcpp_is_nothrow_constructible<is_constructible<_Tp>::value, is_reference<_Tp>::value, _Tp>
{
};

#endif // _LIBCPP_HAS_NO_NOEXCEPT
# 3485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3488 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class ..._Args>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_constructible_v
    = is_nothrow_constructible<_Tp, _Args...>::value;
#endif
# 3492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_default_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_default_constructible
    : public is_nothrow_constructible<_Tp>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_default_constructible_v
    = is_nothrow_default_constructible<_Tp>::value;
#endif
# 3504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_copy_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_constructible
    : public is_nothrow_constructible<_Tp,
                  typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_copy_constructible_v
    = is_nothrow_copy_constructible<_Tp>::value;
#endif
# 3516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_move_constructible

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_constructible
    : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_move_constructible_v
    = is_nothrow_move_constructible<_Tp>::value;
#endif
# 3528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_assignable

#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__is_nothrow_assignable)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3532 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Arg>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable
    : public integral_constant<bool, __is_nothrow_assignable(_Tp, _Arg)> {};

#else
# 3538 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <bool, class _Tp, class _Arg> struct __libcpp_is_nothrow_assignable;

template <class _Tp, class _Arg>
struct __libcpp_is_nothrow_assignable<false, _Tp, _Arg>
    : public false_type
{
};

template <class _Tp, class _Arg>
struct __libcpp_is_nothrow_assignable<true, _Tp, _Arg>
    : public integral_constant<bool, noexcept(declval<_Tp>() = declval<_Arg>()) >
{
};

template <class _Tp, class _Arg>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable
    : public __libcpp_is_nothrow_assignable<is_assignable<_Tp, _Arg>::value, _Tp, _Arg>
{
};

#endif // _LIBCPP_HAS_NO_NOEXCEPT
# 3560 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3562 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, class _Arg>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_assignable_v
    = is_nothrow_assignable<_Tp, _Arg>::value;
#endif
# 3566 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_copy_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_assignable
    : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type,
                  typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3574 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_copy_assignable_v
    = is_nothrow_copy_assignable<_Tp>::value;
#endif
# 3578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_move_assignable

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_assignable
    : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type,
                                     typename add_rvalue_reference<_Tp>::type>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_move_assignable_v
    = is_nothrow_move_assignable<_Tp>::value;
#endif
# 3591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_nothrow_destructible

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <bool, class _Tp> struct __libcpp_is_nothrow_destructible;

template <class _Tp>
struct __libcpp_is_nothrow_destructible<false, _Tp>
    : public false_type
{
};

template <class _Tp>
struct __libcpp_is_nothrow_destructible<true, _Tp>
    : public integral_constant<bool, noexcept(declval<_Tp>().~_Tp()) >
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible
    : public __libcpp_is_nothrow_destructible<is_destructible<_Tp>::value, _Tp>
{
};

template <class _Tp, size_t _Ns>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp[_Ns]>
    : public is_nothrow_destructible<_Tp>
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp&>
    : public true_type
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp&&>
    : public true_type
{
};

#else
# 3635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __libcpp_nothrow_destructor
    : public integral_constant<bool, is_scalar<_Tp>::value ||
                                     is_reference<_Tp>::value> {};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible
    : public __libcpp_nothrow_destructor<typename remove_all_extents<_Tp>::type> {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp[]>
    : public false_type {};

#endif
# 3648 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_destructible_v
    = is_nothrow_destructible<_Tp>::value;
#endif
# 3654 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_pod

#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_pod) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3658 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pod
    : public integral_constant<bool, __is_pod(_Tp)> {};

#else
# 3663 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pod
    : public integral_constant<bool, is_trivially_default_constructible<_Tp>::value   &&
                                     is_trivially_copy_constructible<_Tp>::value      &&
                                     is_trivially_copy_assignable<_Tp>::value    &&
                                     is_trivially_destructible<_Tp>::value> {};

#endif
# 3671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pod_v
    = is_pod<_Tp>::value;
#endif
# 3677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_literal_type;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 is_literal_type
    : public integral_constant<bool, __is_literal_type(_Tp)>
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_literal_type_v
    = is_literal_type<_Tp>::value;
#endif // _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
# 3690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS)
# 3691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_standard_layout;

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_standard_layout
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_standard_layout) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : public integral_constant<bool, __is_standard_layout(_Tp)>
#else
# 3698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value>
#endif
# 3700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_standard_layout_v
    = is_standard_layout<_Tp>::value;
#endif
# 3707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivially_copyable;

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copyable
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_trivially_copyable)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _GNUC_VER >= 501
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 3714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : public integral_constant<bool, !is_volatile<_Tp>::value && __is_trivially_copyable(_Tp)>
#else
# 3716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value>
#endif
# 3718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3721 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copyable_v
    = is_trivially_copyable<_Tp>::value;
#endif
# 3725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_trivial;

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivial
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(is_trivial) || defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 3730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : public integral_constant<bool, __is_trivial(_Tp)>
#else
# 3732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    : integral_constant<bool, is_trivially_copyable<_Tp>::value &&
                                 is_trivially_default_constructible<_Tp>::value>
#endif
# 3735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
    {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivial_v
    = is_trivial<_Tp>::value;
#endif
# 3742 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp> struct __is_reference_wrapper_impl : public false_type {};
template <class _Tp> struct __is_reference_wrapper_impl<reference_wrapper<_Tp> > : public true_type {};
template <class _Tp> struct __is_reference_wrapper
    : public __is_reference_wrapper_impl<typename remove_cv<_Tp>::type> {};

#ifndef _LIBCPP_CXX03_LANG

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type,
         class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
using __enable_if_bullet1 = typename enable_if
    <
        is_member_function_pointer<_DecayFp>::value
        && is_base_of<_ClassT, _DecayA0>::value
    >::type;

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type>
using __enable_if_bullet2 = typename enable_if
    <
        is_member_function_pointer<_DecayFp>::value
        && __is_reference_wrapper<_DecayA0>::value
    >::type;

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type,
         class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
using __enable_if_bullet3 = typename enable_if
    <
        is_member_function_pointer<_DecayFp>::value
        && !is_base_of<_ClassT, _DecayA0>::value
        && !__is_reference_wrapper<_DecayA0>::value
    >::type;

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type,
         class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
using __enable_if_bullet4 = typename enable_if
    <
        is_member_object_pointer<_DecayFp>::value
        && is_base_of<_ClassT, _DecayA0>::value
    >::type;

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type>
using __enable_if_bullet5 = typename enable_if
    <
        is_member_object_pointer<_DecayFp>::value
        && __is_reference_wrapper<_DecayA0>::value
    >::type;

template <class _Fp, class _A0,
         class _DecayFp = typename decay<_Fp>::type,
         class _DecayA0 = typename decay<_A0>::type,
         class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
using __enable_if_bullet6 = typename enable_if
    <
        is_member_object_pointer<_DecayFp>::value
        && !is_base_of<_ClassT, _DecayA0>::value
        && !__is_reference_wrapper<_DecayA0>::value
    >::type;

// __invoke forward declarations

// fall back - none of the bullets

#define _LIBCPP_INVOKE_RETURN(...) \
    noexcept(noexcept(__VA_ARGS__)) -> decltype(__VA_ARGS__) \
    { return __VA_ARGS__; }

template <class ..._Args>
auto __invoke(__any, _Args&& ...__args) -> __nat;

template <class ..._Args>
auto __invoke_constexpr(__any, _Args&& ...__args) -> __nat;

// bullets 1, 2 and 3

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet1<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN((static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet1<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN((static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet2<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN((__a0.get().*__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet2<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN((__a0.get().*__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet3<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN(((*static_cast<_A0&&>(__a0)).*__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class _A0, class ..._Args,
          class = __enable_if_bullet3<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN(((*static_cast<_A0&&>(__a0)).*__f)(static_cast<_Args&&>(__args)...))

// bullets 4, 5 and 6

template <class _Fp, class _A0,
          class = __enable_if_bullet4<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN(static_cast<_A0&&>(__a0).*__f)

template <class _Fp, class _A0,
          class = __enable_if_bullet4<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN(static_cast<_A0&&>(__a0).*__f)

template <class _Fp, class _A0,
          class = __enable_if_bullet5<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN(__a0.get().*__f)

template <class _Fp, class _A0,
          class = __enable_if_bullet5<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN(__a0.get().*__f)

template <class _Fp, class _A0,
          class = __enable_if_bullet6<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN((*static_cast<_A0&&>(__a0)).*__f)

template <class _Fp, class _A0,
          class = __enable_if_bullet6<_Fp, _A0>>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _A0&& __a0)
_LIBCPP_INVOKE_RETURN((*static_cast<_A0&&>(__a0)).*__f)

// bullet 7

template <class _Fp, class ..._Args>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto
__invoke(_Fp&& __f, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN(static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...))

template <class _Fp, class ..._Args>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR auto
__invoke_constexpr(_Fp&& __f, _Args&& ...__args)
_LIBCPP_INVOKE_RETURN(static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...))

#undef _LIBCPP_INVOKE_RETURN

// __invokable
template <class _Ret, class _Fp, class ..._Args>
struct __invokable_r
{
  template <class _XFp, class ..._XArgs>
  static auto __try_call(int) -> decltype(
    _VSTD::__invoke(declval<_XFp>(), declval<_XArgs>()...));
  template <class _XFp, class ..._XArgs>
  static __nat __try_call(...);

  // FIXME: Check that _Ret, _Fp, and _Args... are all complete types, cv void,
  // or incomplete array types as required by the standard.
  using _Result = decltype(__try_call<_Fp, _Args...>(0));

  using type =
  typename conditional<
      _IsNotSame<_Result, __nat>::value,
      typename conditional<
          is_void<_Ret>::value,
          true_type,
          is_convertible<_Result, _Ret>
      >::type,
      false_type
  >::type;
  static const bool value = type::value;
};
template <class _Fp, class ..._Args>
using __invokable = __invokable_r<void, _Fp, _Args...>;

template <bool _IsInvokable, bool _IsCVVoid, class _Ret, class _Fp, class ..._Args>
struct __nothrow_invokable_r_imp {
  static const bool value = false;
};

template <class _Ret, class _Fp, class ..._Args>
struct __nothrow_invokable_r_imp<true, false, _Ret, _Fp, _Args...>
{
    typedef __nothrow_invokable_r_imp _ThisT;

    template <class _Tp>
    static void __test_noexcept(_Tp) noexcept;

    static const bool value = noexcept(_ThisT::__test_noexcept<_Ret>(
        _VSTD::__invoke(declval<_Fp>(), declval<_Args>()...)));
};

template <class _Ret, class _Fp, class ..._Args>
struct __nothrow_invokable_r_imp<true, true, _Ret, _Fp, _Args...>
{
    static const bool value = noexcept(
        _VSTD::__invoke(declval<_Fp>(), declval<_Args>()...));
};

template <class _Ret, class _Fp, class ..._Args>
using __nothrow_invokable_r =
    __nothrow_invokable_r_imp<
            __invokable_r<_Ret, _Fp, _Args...>::value,
            is_void<_Ret>::value,
            _Ret, _Fp, _Args...
    >;

template <class _Fp, class ..._Args>
using __nothrow_invokable =
    __nothrow_invokable_r_imp<
            __invokable<_Fp, _Args...>::value,
            true, void, _Fp, _Args...
    >;

template <class _Fp, class ..._Args>
struct __invoke_of
    : public enable_if<
        __invokable<_Fp, _Args...>::value,
        typename __invokable_r<void, _Fp, _Args...>::_Result>
{
};

#endif // _LIBCPP_CXX03_LANG
# 4005 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// result_of

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 4009 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Callable> class _LIBCPP_DEPRECATED_IN_CXX17 result_of;

#ifndef _LIBCPP_CXX03_LANG

template <class _Fp, class ..._Args>
class _LIBCPP_TEMPLATE_VIS result_of<_Fp(_Args...)>
    : public __invoke_of<_Fp, _Args...>
{
};

#else // C++03
# 4020 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Fn, bool, bool>
class __result_of
{
};

template <class _Fn, class ..._Args>
class __result_of<_Fn(_Args...), true, false>
{
public:
    typedef decltype(declval<_Fn>()(declval<_Args>()...)) type;
};

template <class _MP, class _Tp, bool _IsMemberFunctionPtr>
struct __result_of_mp;

// member function pointer

template <class _MP, class _Tp>
struct __result_of_mp<_MP, _Tp, true>
{
    using type = typename __member_pointer_traits<_MP>::_ReturnType;
};

// member data pointer

template <class _MP, class _Tp, bool>
struct __result_of_mdp;

template <class _Rp, class _Class, class _Tp>
struct __result_of_mdp<_Rp _Class::*, _Tp, false>
{
    using type = typename __apply_cv<decltype(*declval<_Tp>()), _Rp>::type&;
};

template <class _Rp, class _Class, class _Tp>
struct __result_of_mdp<_Rp _Class::*, _Tp, true>
{
    using type = typename __apply_cv<_Tp, _Rp>::type&;
};

template <class _Rp, class _Class, class _Tp>
struct __result_of_mp<_Rp _Class::*, _Tp, false>
    : public __result_of_mdp<_Rp _Class::*, _Tp,
            is_base_of<_Class, typename remove_reference<_Tp>::type>::value>
{
};

template <class _Fn, class _Tp>
class __result_of<_Fn(_Tp), false, true>  // _Fn must be member pointer
    : public __result_of_mp<typename remove_reference<_Fn>::type,
                            _Tp,
                            is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
{
};

template <class _Fn, class _Tp, class ..._Args>
class __result_of<_Fn(_Tp, _Args...), false, true>  // _Fn must be member pointer
    : public __result_of_mp<typename remove_reference<_Fn>::type,
                            _Tp,
                            is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
{
};

template <class _Fn, class ..._Args>
class _LIBCPP_TEMPLATE_VIS result_of<_Fn(_Args...)>
    : public __result_of<_Fn(_Args...),
                         is_class<typename remove_reference<_Fn>::type>::value ||
                         is_function<typename remove_pointer<typename remove_reference<_Fn>::type>::type>::value,
                         is_member_pointer<typename remove_reference<_Fn>::type>::value
                        >
{
};

#endif // C++03
# 4095 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4097 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using result_of_t _LIBCPP_DEPRECATED_IN_CXX17 = typename result_of<_Tp>::type;
#endif // _LIBCPP_STD_VER > 11
# 4099 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS)
# 4100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// invoke_result

template <class _Fn, class... _Args>
struct _LIBCPP_TEMPLATE_VIS invoke_result
    : __invoke_of<_Fn, _Args...>
{
};

template <class _Fn, class... _Args>
using invoke_result_t = typename invoke_result<_Fn, _Args...>::type;

// is_invocable

template <class _Fn, class ..._Args>
struct _LIBCPP_TEMPLATE_VIS is_invocable
    : integral_constant<bool, __invokable<_Fn, _Args...>::value> {};

template <class _Ret, class _Fn, class ..._Args>
struct _LIBCPP_TEMPLATE_VIS is_invocable_r
    : integral_constant<bool, __invokable_r<_Ret, _Fn, _Args...>::value> {};

template <class _Fn, class ..._Args>
_LIBCPP_INLINE_VAR constexpr bool is_invocable_v
    = is_invocable<_Fn, _Args...>::value;

template <class _Ret, class _Fn, class ..._Args>
_LIBCPP_INLINE_VAR constexpr bool is_invocable_r_v
    = is_invocable_r<_Ret, _Fn, _Args...>::value;

// is_nothrow_invocable

template <class _Fn, class ..._Args>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_invocable
    : integral_constant<bool, __nothrow_invokable<_Fn, _Args...>::value> {};

template <class _Ret, class _Fn, class ..._Args>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_invocable_r
    : integral_constant<bool, __nothrow_invokable_r<_Ret, _Fn, _Args...>::value> {};

template <class _Fn, class ..._Args>
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_invocable_v
    = is_nothrow_invocable<_Fn, _Args...>::value;

template <class _Ret, class _Fn, class ..._Args>
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_invocable_r_v
    = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value;

#endif // _LIBCPP_STD_VER > 14
# 4151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// __swappable

template <class _Tp> struct __is_swappable;
template <class _Tp> struct __is_nothrow_swappable;


#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
using __swap_result_t = typename enable_if<is_move_constructible<_Tp>::value && is_move_assignable<_Tp>::value>::type;
#else
# 4162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class>
using __swap_result_t = void;
#endif
# 4165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 __swap_result_t<_Tp>
swap(_Tp& __x, _Tp& __y) _NOEXCEPT_(is_nothrow_move_constructible<_Tp>::value &&
                                    is_nothrow_move_assignable<_Tp>::value);

template<class _Tp, size_t _Np>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
typename enable_if<
    __is_swappable<_Tp>::value
>::type
swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value);

namespace __detail
{
// ALL generic swap overloads MUST already have a declaration available at this point.

template <class _Tp, class _Up = _Tp,
          bool _NotVoid = !is_void<_Tp>::value && !is_void<_Up>::value>
struct __swappable_with
{
    template <class _LHS, class _RHS>
    static decltype(swap(declval<_LHS>(), declval<_RHS>()))
    __test_swap(int);
    template <class, class>
    static __nat __test_swap(long);

    // Extra parens are needed for the C++03 definition of decltype.
    typedef decltype((__test_swap<_Tp, _Up>(0))) __swap1;
    typedef decltype((__test_swap<_Up, _Tp>(0))) __swap2;

    static const bool value = _IsNotSame<__swap1, __nat>::value
                           && _IsNotSame<__swap2, __nat>::value;
};

template <class _Tp, class _Up>
struct __swappable_with<_Tp, _Up,  false> : false_type {};

template <class _Tp, class _Up = _Tp, bool _Swappable = __swappable_with<_Tp, _Up>::value>
struct __nothrow_swappable_with {
  static const bool value =
#ifndef _LIBCPP_HAS_NO_NOEXCEPT
      noexcept(swap(declval<_Tp>(), declval<_Up>()))
  &&  noexcept(swap(declval<_Up>(), declval<_Tp>()));
#else
# 4211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
      false;
#endif
# 4213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
};

template <class _Tp, class _Up>
struct __nothrow_swappable_with<_Tp, _Up, false> : false_type {};

}  // __detail

template <class _Tp>
struct __is_swappable
    : public integral_constant<bool, __detail::__swappable_with<_Tp&>::value>
{
};

template <class _Tp>
struct __is_nothrow_swappable
    : public integral_constant<bool, __detail::__nothrow_swappable_with<_Tp&>::value>
{
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, class _Up>
struct _LIBCPP_TEMPLATE_VIS is_swappable_with
    : public integral_constant<bool, __detail::__swappable_with<_Tp, _Up>::value>
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_swappable
    : public conditional<
        __is_referenceable<_Tp>::value,
        is_swappable_with<
            typename add_lvalue_reference<_Tp>::type,
            typename add_lvalue_reference<_Tp>::type>,
        false_type
    >::type
{
};

template <class _Tp, class _Up>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_swappable_with
    : public integral_constant<bool, __detail::__nothrow_swappable_with<_Tp, _Up>::value>
{
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_nothrow_swappable
    : public conditional<
        __is_referenceable<_Tp>::value,
        is_nothrow_swappable_with<
            typename add_lvalue_reference<_Tp>::type,
            typename add_lvalue_reference<_Tp>::type>,
        false_type
    >::type
{
};

template <class _Tp, class _Up>
_LIBCPP_INLINE_VAR constexpr bool is_swappable_with_v
    = is_swappable_with<_Tp, _Up>::value;

template <class _Tp>
_LIBCPP_INLINE_VAR constexpr bool is_swappable_v
    = is_swappable<_Tp>::value;

template <class _Tp, class _Up>
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_swappable_with_v
    = is_nothrow_swappable_with<_Tp, _Up>::value;

template <class _Tp>
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_swappable_v
    = is_nothrow_swappable<_Tp>::value;

#endif // _LIBCPP_STD_VER > 14
# 4287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = is_enum<_Tp>::value> struct __underlying_type_impl;

template <class _Tp>
struct __underlying_type_impl<_Tp, false> {};

template <class _Tp>
struct __underlying_type_impl<_Tp, true>
{
    typedef __underlying_type(_Tp) type;
};

template <class _Tp>
struct underlying_type : __underlying_type_impl<_Tp, is_enum<_Tp>::value> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp> using underlying_type_t = typename underlying_type<_Tp>::type;
#endif
# 4305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp, bool = is_enum<_Tp>::value>
struct __sfinae_underlying_type
{
    typedef typename underlying_type<_Tp>::type type;
    typedef decltype(((type)1) + 0) __promoted_type;
};

template <class _Tp>
struct __sfinae_underlying_type<_Tp, false> {};

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __convert_to_integral(int __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
unsigned __convert_to_integral(unsigned __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
long __convert_to_integral(long __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
unsigned long __convert_to_integral(unsigned long __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
long long __convert_to_integral(long long __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
unsigned long long __convert_to_integral(unsigned long long __val) {return __val; }

template<typename _Fp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if<is_floating_point<_Fp>::value, long long>::type
 __convert_to_integral(_Fp __val) { return __val; }

#ifndef _LIBCPP_HAS_NO_INT128
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
__int128_t __convert_to_integral(__int128_t __val) { return __val; }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
__uint128_t __convert_to_integral(__uint128_t __val) { return __val; }
#endif
# 4346 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename __sfinae_underlying_type<_Tp>::__promoted_type
__convert_to_integral(_Tp __val) { return __val; }

#ifndef _LIBCPP_CXX03_LANG

template <class _Tp>
struct __has_operator_addressof_member_imp
{
    template <class _Up>
        static auto __test(int)
            -> typename __select_2nd<decltype(declval<_Up>().operator&()), true_type>::type;
    template <class>
        static auto __test(long) -> false_type;

    static const bool value = decltype(__test<_Tp>(0))::value;
};

template <class _Tp>
struct __has_operator_addressof_free_imp
{
    template <class _Up>
        static auto __test(int)
            -> typename __select_2nd<decltype(operator&(declval<_Up>())), true_type>::type;
    template <class>
        static auto __test(long) -> false_type;

    static const bool value = decltype(__test<_Tp>(0))::value;
};

template <class _Tp>
struct __has_operator_addressof
    : public integral_constant<bool, __has_operator_addressof_member_imp<_Tp>::value
                                  || __has_operator_addressof_free_imp<_Tp>::value>
{};

#endif // _LIBCPP_CXX03_LANG
# 4385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// is_scoped_enum [meta.unary.prop]

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4389 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template <class _Tp, bool = is_enum_v<_Tp> >
struct __is_scoped_enum_helper : false_type {};

template <class _Tp>
struct __is_scoped_enum_helper<_Tp, true>
    : public bool_constant<!is_convertible_v<_Tp, underlying_type_t<_Tp> > > {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_scoped_enum
    : public __is_scoped_enum_helper<_Tp> {};

template <class _Tp>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scoped_enum_v =
    is_scoped_enum<_Tp>::value;
#endif
# 4404 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class... _Args>
struct conjunction : _And<_Args...> {};
template<class... _Args>
_LIBCPP_INLINE_VAR constexpr bool conjunction_v
    = conjunction<_Args...>::value;

template <class... _Args>
struct disjunction : _Or<_Args...> {};
template<class... _Args>
_LIBCPP_INLINE_VAR constexpr bool disjunction_v
    = disjunction<_Args...>::value;

template <class _Tp>
struct negation : _Not<_Tp> {};
template<class _Tp>
_LIBCPP_INLINE_VAR constexpr bool negation_v
    = negation<_Tp>::value;
#endif // _LIBCPP_STD_VER > 14
# 4425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

// These traits are used in __tree and __hash_table
struct __extract_key_fail_tag {};
struct __extract_key_self_tag {};
struct __extract_key_first_tag {};

template <class _ValTy, class _Key,
          class _RawValTy = typename __unconstref<_ValTy>::type>
struct __can_extract_key
    : conditional<_IsSame<_RawValTy, _Key>::value, __extract_key_self_tag,
                  __extract_key_fail_tag>::type {};

template <class _Pair, class _Key, class _First, class _Second>
struct __can_extract_key<_Pair, _Key, pair<_First, _Second> >
    : conditional<_IsSame<typename remove_const<_First>::type, _Key>::value,
                  __extract_key_first_tag, __extract_key_fail_tag>::type {};

// __can_extract_map_key uses true_type/false_type instead of the tags.
// It returns true if _Key != _ContainerValueTy (the container is a map not a set)
// and _ValTy == _Key.
template <class _ValTy, class _Key, class _ContainerValueTy,
          class _RawValTy = typename __unconstref<_ValTy>::type>
struct __can_extract_map_key
    : integral_constant<bool, _IsSame<_RawValTy, _Key>::value> {};

// This specialization returns __extract_key_fail_tag for non-map containers
// because _Key == _ContainerValueTy
template <class _ValTy, class _Key, class _RawValTy>
struct __can_extract_map_key<_ValTy, _Key, _Key, _RawValTy>
    : false_type {};

#ifndef _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
_LIBCPP_INLINE_VISIBILITY
inline constexpr bool is_constant_evaluated() noexcept {
  return __builtin_is_constant_evaluated();
}
#endif
# 4463 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

inline _LIBCPP_CONSTEXPR
bool __libcpp_is_constant_evaluated() _NOEXCEPT { return __builtin_is_constant_evaluated(); }
#else
# 4467 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
inline _LIBCPP_CONSTEXPR
bool __libcpp_is_constant_evaluated() _NOEXCEPT { return false; }
#endif
# 4470 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

template <class _CharT>
using _IsCharLikeType = _And<is_standard_layout<_CharT>, is_trivial<_CharT> >;

template<class _Tp>
using __make_const_lvalue_ref = const typename remove_reference<_Tp>::type&;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4478 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
template<bool _Const, class _Tp>
using __maybe_const = conditional_t<_Const, const _Tp, _Tp>;
#endif // _LIBCPP_STD_VER > 17
# 4481 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

_LIBCPP_END_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
// std::byte
namespace std  // purposefully not versioned
{


}
#endif
# 4492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3

#endif // _LIBCPP_TYPE_TRAITS
# 4494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/type_traits" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
struct __has_result_type
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Up> static __two __test(...);
    template <class _Up> static char __test(typename _Up::result_type* = 0);
public:
    static const bool value = sizeof(__test<_Tp>(0)) == 1;
};

// __weak_result_type

template <class _Tp>
struct __derives_from_unary_function
{
private:
    struct __two {char __lx; char __lxx;};
    static __two __test(...);
    template <class _Ap, class _Rp>
        static unary_function<_Ap, _Rp>
        __test(const volatile unary_function<_Ap, _Rp>*);
public:
    static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value;
    typedef decltype(__test((_Tp*)0)) type;
};

template <class _Tp>
struct __derives_from_binary_function
{
private:
    struct __two {char __lx; char __lxx;};
    static __two __test(...);
    template <class _A1, class _A2, class _Rp>
        static binary_function<_A1, _A2, _Rp>
        __test(const volatile binary_function<_A1, _A2, _Rp>*);
public:
    static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value;
    typedef decltype(__test((_Tp*)0)) type;
};

template <class _Tp, bool = __derives_from_unary_function<_Tp>::value>
struct __maybe_derive_from_unary_function  // bool is true
    : public __derives_from_unary_function<_Tp>::type
{
};

template <class _Tp>
struct __maybe_derive_from_unary_function<_Tp, false>
{
};

template <class _Tp, bool = __derives_from_binary_function<_Tp>::value>
struct __maybe_derive_from_binary_function  // bool is true
    : public __derives_from_binary_function<_Tp>::type
{
};

template <class _Tp>
struct __maybe_derive_from_binary_function<_Tp, false>
{
};

template <class _Tp, bool = __has_result_type<_Tp>::value>
struct __weak_result_type_imp // bool is true
    : public __maybe_derive_from_unary_function<_Tp>,
      public __maybe_derive_from_binary_function<_Tp>
{
    typedef _LIBCPP_NODEBUG_TYPE typename _Tp::result_type result_type;
};

template <class _Tp>
struct __weak_result_type_imp<_Tp, false>
    : public __maybe_derive_from_unary_function<_Tp>,
      public __maybe_derive_from_binary_function<_Tp>
{
};

template <class _Tp>
struct __weak_result_type
    : public __weak_result_type_imp<_Tp>
{
};

// 0 argument case

template <class _Rp>
struct __weak_result_type<_Rp ()>
{
    typedef _LIBCPP_NODEBUG_TYPE  _Rp result_type;
};

template <class _Rp>
struct __weak_result_type<_Rp (&)()>
{
    typedef _LIBCPP_NODEBUG_TYPE  _Rp result_type;
};

template <class _Rp>
struct __weak_result_type<_Rp (*)()>
{
    typedef _LIBCPP_NODEBUG_TYPE  _Rp result_type;
};

// 1 argument case

template <class _Rp, class _A1>
struct __weak_result_type<_Rp (_A1)>
    : public unary_function<_A1, _Rp>
{
};

template <class _Rp, class _A1>
struct __weak_result_type<_Rp (&)(_A1)>
    : public unary_function<_A1, _Rp>
{
};

template <class _Rp, class _A1>
struct __weak_result_type<_Rp (*)(_A1)>
    : public unary_function<_A1, _Rp>
{
};

template <class _Rp, class _Cp>
struct __weak_result_type<_Rp (_Cp::*)()>
    : public unary_function<_Cp*, _Rp>
{
};

template <class _Rp, class _Cp>
struct __weak_result_type<_Rp (_Cp::*)() const>
    : public unary_function<const _Cp*, _Rp>
{
};

template <class _Rp, class _Cp>
struct __weak_result_type<_Rp (_Cp::*)() volatile>
    : public unary_function<volatile _Cp*, _Rp>
{
};

template <class _Rp, class _Cp>
struct __weak_result_type<_Rp (_Cp::*)() const volatile>
    : public unary_function<const volatile _Cp*, _Rp>
{
};

// 2 argument case

template <class _Rp, class _A1, class _A2>
struct __weak_result_type<_Rp (_A1, _A2)>
    : public binary_function<_A1, _A2, _Rp>
{
};

template <class _Rp, class _A1, class _A2>
struct __weak_result_type<_Rp (*)(_A1, _A2)>
    : public binary_function<_A1, _A2, _Rp>
{
};

template <class _Rp, class _A1, class _A2>
struct __weak_result_type<_Rp (&)(_A1, _A2)>
    : public binary_function<_A1, _A2, _Rp>
{
};

template <class _Rp, class _Cp, class _A1>
struct __weak_result_type<_Rp (_Cp::*)(_A1)>
    : public binary_function<_Cp*, _A1, _Rp>
{
};

template <class _Rp, class _Cp, class _A1>
struct __weak_result_type<_Rp (_Cp::*)(_A1) const>
    : public binary_function<const _Cp*, _A1, _Rp>
{
};

template <class _Rp, class _Cp, class _A1>
struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile>
    : public binary_function<volatile _Cp*, _A1, _Rp>
{
};

template <class _Rp, class _Cp, class _A1>
struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile>
    : public binary_function<const volatile _Cp*, _A1, _Rp>
{
};


#ifndef _LIBCPP_CXX03_LANG
// 3 or more arguments

template <class _Rp, class _A1, class _A2, class _A3, class ..._A4>
struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)>
{
    typedef _Rp result_type;
};

template <class _Rp, class _A1, class _A2, class _A3, class ..._A4>
struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)>
{
    typedef _Rp result_type;
};

template <class _Rp, class _A1, class _A2, class _A3, class ..._A4>
struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)>
{
    typedef _Rp result_type;
};

template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3>
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)>
{
    typedef _Rp result_type;
};

template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3>
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const>
{
    typedef _Rp result_type;
};

template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3>
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile>
{
    typedef _Rp result_type;
};

template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3>
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile>
{
    typedef _Rp result_type;
};

template <class _Tp, class ..._Args>
struct __invoke_return
{
    typedef decltype(_VSTD::__invoke(declval<_Tp>(), declval<_Args>()...)) type;
};

#else // defined(_LIBCPP_CXX03_LANG)
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3

template <class _Ret, class _T1, bool _IsFunc, bool _IsBase>
struct __enable_invoke_imp;

template <class _Ret, class _T1>
struct __enable_invoke_imp<_Ret, _T1, true, true> {
    typedef _Ret _Bullet1;
    typedef _Bullet1 type;
};

template <class _Ret, class _T1>
struct __enable_invoke_imp<_Ret, _T1, true, false>  {
    typedef _Ret _Bullet2;
    typedef _Bullet2 type;
};

template <class _Ret, class _T1>
struct __enable_invoke_imp<_Ret, _T1, false, true>  {
    typedef typename add_lvalue_reference<
                typename __apply_cv<_T1, _Ret>::type
            >::type _Bullet3;
    typedef _Bullet3 type;
};

template <class _Ret, class _T1>
struct __enable_invoke_imp<_Ret, _T1, false, false>  {
    typedef typename add_lvalue_reference<
                typename __apply_cv<decltype(*declval<_T1>()), _Ret>::type
            >::type _Bullet4;
    typedef _Bullet4 type;
};

template <class _Ret, class _T1>
struct __enable_invoke_imp<_Ret, _T1*, false, false>  {
    typedef typename add_lvalue_reference<
                typename __apply_cv<_T1, _Ret>::type
            >::type _Bullet4;
    typedef _Bullet4  type;
};

template <class _Fn, class _T1,
          class _Traits = __member_pointer_traits<_Fn>,
          class _Ret = typename _Traits::_ReturnType,
          class _Class = typename _Traits::_ClassType>
struct __enable_invoke : __enable_invoke_imp<
    _Ret, _T1,
    is_member_function_pointer<_Fn>::value,
    is_base_of<_Class, typename remove_reference<_T1>::type>::value>
{
};

__nat __invoke(__any, ...);

// first bullet

template <class _Fn, class _T1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet1
__invoke(_Fn __f, _T1& __t1) {
    return (__t1.*__f)();
}

template <class _Fn, class _T1, class _A0>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet1
__invoke(_Fn __f, _T1& __t1, _A0& __a0) {
    return (__t1.*__f)(__a0);
}

template <class _Fn, class _T1, class _A0, class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet1
__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1) {
    return (__t1.*__f)(__a0, __a1);
}

template <class _Fn, class _T1, class _A0, class _A1, class _A2>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet1
__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) {
    return (__t1.*__f)(__a0, __a1, __a2);
}

template <class _Fn, class _T1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet2
__invoke(_Fn __f, _T1& __t1) {
    return ((*__t1).*__f)();
}

template <class _Fn, class _T1, class _A0>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet2
__invoke(_Fn __f, _T1& __t1, _A0& __a0) {
    return ((*__t1).*__f)(__a0);
}

template <class _Fn, class _T1, class _A0, class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet2
__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1) {
    return ((*__t1).*__f)(__a0, __a1);
}

template <class _Fn, class _T1, class _A0, class _A1, class _A2>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet2
__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) {
    return ((*__t1).*__f)(__a0, __a1, __a2);
}

template <class _Fn, class _T1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet3
__invoke(_Fn __f, _T1& __t1) {
    return __t1.*__f;
}

template <class _Fn, class _T1>
inline _LIBCPP_INLINE_VISIBILITY
typename __enable_invoke<_Fn, _T1>::_Bullet4
__invoke(_Fn __f, _T1& __t1) {
    return (*__t1).*__f;
}

// fifth bullet

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
decltype(declval<_Fp&>()())
__invoke(_Fp& __f)
{
    return __f();
}

template <class _Fp, class _A0>
inline _LIBCPP_INLINE_VISIBILITY
decltype(declval<_Fp&>()(declval<_A0&>()))
__invoke(_Fp& __f, _A0& __a0)
{
    return __f(__a0);
}

template <class _Fp, class _A0, class _A1>
inline _LIBCPP_INLINE_VISIBILITY
decltype(declval<_Fp&>()(declval<_A0&>(), declval<_A1&>()))
__invoke(_Fp& __f, _A0& __a0, _A1& __a1)
{
    return __f(__a0, __a1);
}

template <class _Fp, class _A0, class _A1, class _A2>
inline _LIBCPP_INLINE_VISIBILITY
decltype(declval<_Fp&>()(declval<_A0&>(), declval<_A1&>(), declval<_A2&>()))
__invoke(_Fp& __f, _A0& __a0, _A1& __a1, _A2& __a2)
{
    return __f(__a0, __a1, __a2);
}

template <class _Fp, bool = __has_result_type<__weak_result_type<_Fp> >::value>
struct __invoke_return
{
    typedef typename __weak_result_type<_Fp>::result_type type;
};

template <class _Fp>
struct __invoke_return<_Fp, false>
{
    typedef decltype(_VSTD::__invoke(declval<_Fp&>())) type;
};

template <class _Tp, class _A0>
struct __invoke_return0
{
    typedef decltype(_VSTD::__invoke(declval<_Tp&>(), declval<_A0&>())) type;
};

template <class _Rp, class _Tp, class _A0>
struct __invoke_return0<_Rp _Tp::*, _A0>
{
    typedef typename __enable_invoke<_Rp _Tp::*, _A0>::type type;
};

template <class _Tp, class _A0, class _A1>
struct __invoke_return1
{
    typedef decltype(_VSTD::__invoke(declval<_Tp&>(), declval<_A0&>(),
                                                      declval<_A1&>())) type;
};

template <class _Rp, class _Class, class _A0, class _A1>
struct __invoke_return1<_Rp _Class::*, _A0, _A1> {
    typedef typename __enable_invoke<_Rp _Class::*, _A0>::type type;
};

template <class _Tp, class _A0, class _A1, class _A2>
struct __invoke_return2
{
    typedef decltype(_VSTD::__invoke(declval<_Tp&>(), declval<_A0&>(),
                                                      declval<_A1&>(),
                                                      declval<_A2&>())) type;
};

template <class _Ret, class _Class, class _A0, class _A1, class _A2>
struct __invoke_return2<_Ret _Class::*, _A0, _A1, _A2> {
    typedef typename __enable_invoke<_Ret _Class::*, _A0>::type type;
};

#endif // !defined(_LIBCPP_CXX03_LANG)
# 478 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H
# 482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/weak_result_type.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_FORWARD_H
#define _LIBCPP___UTILITY_FORWARD_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR _Tp&&
forward(typename remove_reference<_Tp>::type& __t) _NOEXCEPT {
  return static_cast<_Tp&&>(__t);
}

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR _Tp&&
forward(typename remove_reference<_Tp>::type&& __t) _NOEXCEPT {
  static_assert(!is_lvalue_reference<_Tp>::value, "cannot forward an rvalue as an lvalue");
  return static_cast<_Tp&&>(__t);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_FORWARD_H
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/forward.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Ret, bool = is_void<_Ret>::value>
struct __invoke_void_return_wrapper
{
#ifndef _LIBCPP_CXX03_LANG
    template <class ..._Args>
    static _Ret __call(_Args&&... __args) {
        return _VSTD::__invoke(_VSTD::forward<_Args>(__args)...);
    }
#else
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
    template <class _Fn>
    static _Ret __call(_Fn __f) {
        return _VSTD::__invoke(__f);
    }

    template <class _Fn, class _A0>
    static _Ret __call(_Fn __f, _A0& __a0) {
        return _VSTD::__invoke(__f, __a0);
    }

    template <class _Fn, class _A0, class _A1>
    static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1) {
        return _VSTD::__invoke(__f, __a0, __a1);
    }

    template <class _Fn, class _A0, class _A1, class _A2>
    static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2){
        return _VSTD::__invoke(__f, __a0, __a1, __a2);
    }
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
};

template <class _Ret>
struct __invoke_void_return_wrapper<_Ret, true>
{
#ifndef _LIBCPP_CXX03_LANG
    template <class ..._Args>
    static void __call(_Args&&... __args) {
        _VSTD::__invoke(_VSTD::forward<_Args>(__args)...);
    }
#else
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
    template <class _Fn>
    static void __call(_Fn __f) {
        _VSTD::__invoke(__f);
    }

    template <class _Fn, class _A0>
    static void __call(_Fn __f, _A0& __a0) {
        _VSTD::__invoke(__f, __a0);
    }

    template <class _Fn, class _A0, class _A1>
    static void __call(_Fn __f, _A0& __a0, _A1& __a1) {
        _VSTD::__invoke(__f, __a0, __a1);
    }

    template <class _Fn, class _A0, class _A1, class _A2>
    static void __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) {
        _VSTD::__invoke(__f, __a0, __a1, __a2);
    }
#endif
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3

template <class _Fn, class ..._Args>
_LIBCPP_CONSTEXPR_AFTER_CXX17 invoke_result_t<_Fn, _Args...>
invoke(_Fn&& __f, _Args&&... __args)
    noexcept(is_nothrow_invocable_v<_Fn, _Args...>)
{
    return _VSTD::__invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)...);
}

#endif // _LIBCPP_STD_VER > 14
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_INVOKE_H
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/invoke.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/operations.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_OPERATIONS_H
#define _LIBCPP___FUNCTIONAL_OPERATIONS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

// Arithmetic operations

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS plus
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x + __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS plus<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS minus
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x - __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS minus<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS multiplies
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x * __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS multiplies<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS divides
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x / __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS divides<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 176 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 180 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS modulus
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x % __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS modulus<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS negate
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : unary_function<_Tp, _Tp>
#endif
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x) const
        {return -__x;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS negate<void>
{
    template <class _Tp>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_Tp&& __x) const
    _NOEXCEPT_(noexcept(- _VSTD::forward<_Tp>(__x)))
    -> decltype        (- _VSTD::forward<_Tp>(__x))
        { return        - _VSTD::forward<_Tp>(__x); }
    typedef void is_transparent;
};
#endif
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

// Bitwise operations

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS bit_and
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 257 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 263 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x & __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS bit_and<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp = void>
struct _LIBCPP_TEMPLATE_VIS bit_not
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : unary_function<_Tp, _Tp>
#endif
# 293 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 299 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x) const
        {return ~__x;}
};

template <>
struct _LIBCPP_TEMPLATE_VIS bit_not<void>
{
    template <class _Tp>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_Tp&& __x) const
    _NOEXCEPT_(noexcept(~_VSTD::forward<_Tp>(__x)))
    -> decltype        (~_VSTD::forward<_Tp>(__x))
        { return        ~_VSTD::forward<_Tp>(__x); }
    typedef void is_transparent;
};
#endif
# 316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 321 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 323 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS bit_or
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 327 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 331 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 335 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x | __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS bit_or<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 358 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 360 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS bit_xor
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 362 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, _Tp>
#endif
# 364 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef _Tp __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 372 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    _Tp operator()(const _Tp& __x, const _Tp& __y) const
        {return __x ^ __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 378 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS bit_xor<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

// Comparison operations

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 395 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 397 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 399 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS equal_to
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 403 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x == __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 417 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS equal_to<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 429 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 436 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS not_equal_to
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 440 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 444 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x != __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS not_equal_to<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 466 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 473 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS less
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 475 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 477 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 481 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x < __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS less<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS less_equal
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 514 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x <= __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS less_equal<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 540 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 543 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 545 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 547 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS greater_equal
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 549 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 551 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 555 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 559 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x >= __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 565 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS greater_equal<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS greater
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 588 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x > __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 602 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS greater<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 614 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

// Logical operations

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 623 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS logical_and
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 625 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 627 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 631 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x && __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 641 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS logical_and<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 658 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 660 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS logical_not
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 662 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : unary_function<_Tp, bool>
#endif
# 664 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 668 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x) const
        {return !__x;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS logical_not<void>
{
    template <class _Tp>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_Tp&& __x) const
    _NOEXCEPT_(noexcept(!_VSTD::forward<_Tp>(__x)))
    -> decltype        (!_VSTD::forward<_Tp>(__x))
        { return        !_VSTD::forward<_Tp>(__x); }
    typedef void is_transparent;
};
#endif
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp = void>
#else
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <class _Tp>
#endif
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
struct _LIBCPP_TEMPLATE_VIS logical_or
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    : binary_function<_Tp, _Tp, bool>
#endif
# 700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
    typedef bool __result_type;  // used by valarray
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
#endif
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Tp& __x, const _Tp& __y) const
        {return __x || __y;}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS logical_or<void>
{
    template <class _T1, class _T2>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    auto operator()(_T1&& __t, _T2&& __u) const
    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u)))
    -> decltype        (_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u))
        { return        _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u); }
    typedef void is_transparent;
};
#endif
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_OPERATIONS_H
# 730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/operations.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/reference_wrapper.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H
#define _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/weak_result_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_ADDRESSOF_H
#define _LIBCPP___MEMORY_ADDRESSOF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF

template <class _Tp>
inline _LIBCPP_CONSTEXPR_AFTER_CXX14
_LIBCPP_NO_CFI _LIBCPP_INLINE_VISIBILITY
_Tp*
addressof(_Tp& __x) _NOEXCEPT
{
    return __builtin_addressof(__x);
}

#else
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

template <class _Tp>
inline _LIBCPP_NO_CFI _LIBCPP_INLINE_VISIBILITY
_Tp*
addressof(_Tp& __x) _NOEXCEPT
{
  return reinterpret_cast<_Tp *>(
      const_cast<char *>(&reinterpret_cast<const volatile char &>(__x)));
}

#endif // _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_OBJC_ARC) && !defined(_LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
// Objective-C++ Automatic Reference Counting uses qualified pointers
// that require special addressof() signatures. When
// _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF is defined, the compiler
// itself is providing these definitions. Otherwise, we provide them.
template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
__strong _Tp*
addressof(__strong _Tp& __x) _NOEXCEPT
{
  return &__x;
}

#ifdef _LIBCPP_HAS_OBJC_ARC_WEAK
template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
__weak _Tp*
addressof(__weak _Tp& __x) _NOEXCEPT
{
  return &__x;
}
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
__autoreleasing _Tp*
addressof(__autoreleasing _Tp& __x) _NOEXCEPT
{
  return &__x;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
__unsafe_unretained _Tp*
addressof(__unsafe_unretained _Tp& __x) _NOEXCEPT
{
  return &__x;
}
#endif
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
template <class _Tp> _Tp* addressof(const _Tp&&) noexcept = delete;
#endif
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_ADDRESSOF_H
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/addressof.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS reference_wrapper
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
    : public __weak_result_type<_Tp>
#endif
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
{
public:
    // types
    typedef _Tp type;
private:
    type* __f_;

#ifndef _LIBCPP_CXX03_LANG
    static void __fun(_Tp&) _NOEXCEPT;
    static void __fun(_Tp&&) = delete;
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

public:
    // construct/copy/destroy
#ifdef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    reference_wrapper(type& __f) _NOEXCEPT
        : __f_(_VSTD::addressof(__f)) {}
#else
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
    template <class _Up, class = _EnableIf<!__is_same_uncvref<_Up, reference_wrapper>::value, decltype(__fun(declval<_Up>())) >>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    reference_wrapper(_Up&& __u) _NOEXCEPT_(noexcept(__fun(declval<_Up>()))) {
        type& __f = static_cast<_Up&&>(__u);
        __f_ = _VSTD::addressof(__f);
    }
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

    // access
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    operator type&() const _NOEXCEPT {return *__f_;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    type& get() const _NOEXCEPT {return *__f_;}

#ifndef _LIBCPP_CXX03_LANG
    // invoke
    template <class... _ArgTypes>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    typename __invoke_of<type&, _ArgTypes...>::type
    operator() (_ArgTypes&&... __args) const {
        return _VSTD::__invoke(get(), _VSTD::forward<_ArgTypes>(__args)...);
    }
#else
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return<type>::type
    operator() () const {
        return _VSTD::__invoke(get());
    }

    template <class _A0>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return0<type, _A0>::type
    operator() (_A0& __a0) const {
        return _VSTD::__invoke(get(), __a0);
    }

    template <class _A0>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return0<type, _A0 const>::type
    operator() (_A0 const& __a0) const {
        return _VSTD::__invoke(get(), __a0);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0, _A1>::type
    operator() (_A0& __a0, _A1& __a1) const {
        return _VSTD::__invoke(get(), __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0 const, _A1>::type
    operator() (_A0 const& __a0, _A1& __a1) const {
        return _VSTD::__invoke(get(), __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0, _A1 const>::type
    operator() (_A0& __a0, _A1 const& __a1) const {
        return _VSTD::__invoke(get(), __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0 const, _A1 const>::type
    operator() (_A0 const& __a0, _A1 const& __a1) const {
        return _VSTD::__invoke(get(), __a0, __a1);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1, _A2>::type
    operator() (_A0& __a0, _A1& __a1, _A2& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1, _A2>::type
    operator() (_A0 const& __a0, _A1& __a1, _A2& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1 const, _A2>::type
    operator() (_A0& __a0, _A1 const& __a1, _A2& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1, _A2 const>::type
    operator() (_A0& __a0, _A1& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1 const, _A2>::type
    operator() (_A0 const& __a0, _A1 const& __a1, _A2& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1, _A2 const>::type
    operator() (_A0 const& __a0, _A1& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1 const, _A2 const>::type
    operator() (_A0& __a0, _A1 const& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1 const, _A2 const>::type
    operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(get(), __a0, __a1, __a2);
    }
#endif // _LIBCPP_CXX03_LANG
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class _Tp>
reference_wrapper(_Tp&) -> reference_wrapper<_Tp>;
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
reference_wrapper<_Tp>
ref(_Tp& __t) _NOEXCEPT
{
    return reference_wrapper<_Tp>(__t);
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
reference_wrapper<_Tp>
ref(reference_wrapper<_Tp> __t) _NOEXCEPT
{
    return _VSTD::ref(__t.get());
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
reference_wrapper<const _Tp>
cref(const _Tp& __t) _NOEXCEPT
{
    return reference_wrapper<const _Tp>(__t);
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
reference_wrapper<const _Tp>
cref(reference_wrapper<_Tp> __t) _NOEXCEPT
{
    return _VSTD::cref(__t.get());
}

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp> void ref(const _Tp&&) = delete;
template <class _Tp> void cref(const _Tp&&) = delete;
#endif
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/reference_wrapper.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/weak_result_type.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_arg_t.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL___ALLOCATOR_ARG_T_H
#define _LIBCPP___FUNCTIONAL___ALLOCATOR_ARG_T_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/uses_allocator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_USES_ALLOCATOR_H
#define _LIBCPP___MEMORY_USES_ALLOCATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
struct __has_allocator_type
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Up> static __two __test(...);
    template <class _Up> static char __test(typename _Up::allocator_type* = 0);
public:
    static const bool value = sizeof(__test<_Tp>(0)) == 1;
};

template <class _Tp, class _Alloc, bool = __has_allocator_type<_Tp>::value>
struct __uses_allocator
    : public integral_constant<bool,
        is_convertible<_Alloc, typename _Tp::allocator_type>::value>
{
};

template <class _Tp, class _Alloc>
struct __uses_allocator<_Tp, _Alloc, false>
    : public false_type
{
};

template <class _Tp, class _Alloc>
struct _LIBCPP_TEMPLATE_VIS uses_allocator
    : public __uses_allocator<_Tp, _Alloc>
{
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
template <class _Tp, class _Alloc>
_LIBCPP_INLINE_VAR constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value;
#endif
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___MEMORY_USES_ALLOCATOR_H
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uses_allocator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { explicit allocator_arg_t() = default; };

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
extern _LIBCPP_EXPORTED_FROM_ABI const allocator_arg_t allocator_arg;
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
/* _LIBCPP_INLINE_VAR */ constexpr allocator_arg_t allocator_arg = allocator_arg_t();
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3

#ifndef _LIBCPP_CXX03_LANG

// allocator construction

template <class _Tp, class _Alloc, class ..._Args>
struct __uses_alloc_ctor_imp
{
    typedef _LIBCPP_NODEBUG_TYPE typename __uncvref<_Alloc>::type _RawAlloc;
    static const bool __ua = uses_allocator<_Tp, _RawAlloc>::value;
    static const bool __ic =
        is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value;
    static const int value = __ua ? 2 - __ic : 0;
};

template <class _Tp, class _Alloc, class ..._Args>
struct __uses_alloc_ctor
    : integral_constant<int, __uses_alloc_ctor_imp<_Tp, _Alloc, _Args...>::value>
    {};

template <class _Tp, class _Allocator, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
void __user_alloc_construct_impl (integral_constant<int, 0>, _Tp *__storage, const _Allocator &, _Args &&... __args )
{
    new (__storage) _Tp (_VSTD::forward<_Args>(__args)...);
}

// FIXME: This should have a version which takes a non-const alloc.
template <class _Tp, class _Allocator, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
void __user_alloc_construct_impl (integral_constant<int, 1>, _Tp *__storage, const _Allocator &__a, _Args &&... __args )
{
    new (__storage) _Tp (allocator_arg, __a, _VSTD::forward<_Args>(__args)...);
}

// FIXME: This should have a version which takes a non-const alloc.
template <class _Tp, class _Allocator, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
void __user_alloc_construct_impl (integral_constant<int, 2>, _Tp *__storage, const _Allocator &__a, _Args &&... __args )
{
    new (__storage) _Tp (_VSTD::forward<_Args>(__args)..., __a);
}

#endif // _LIBCPP_CXX03_LANG
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL___ALLOCATOR_ARG_T_H
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_arg_t.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/uses_allocator.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 1 3
// -*- C++ -*-
//===-------------------------- exception ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_EXCEPTION
#define _LIBCPP_EXCEPTION

/*
    exception synopsis

namespace std
{

class exception
{
public:
    exception() noexcept;
    exception(const exception&) noexcept;
    exception& operator=(const exception&) noexcept;
    virtual ~exception() noexcept;
    virtual const char* what() const noexcept;
};

class bad_exception
    : public exception
{
public:
    bad_exception() noexcept;
    bad_exception(const bad_exception&) noexcept;
    bad_exception& operator=(const bad_exception&) noexcept;
    virtual ~bad_exception() noexcept;
    virtual const char* what() const noexcept;
};

typedef void (*unexpected_handler)();
unexpected_handler set_unexpected(unexpected_handler  f ) noexcept;
unexpected_handler get_unexpected() noexcept;
[[noreturn]] void unexpected();

typedef void (*terminate_handler)();
terminate_handler set_terminate(terminate_handler  f ) noexcept;
terminate_handler get_terminate() noexcept;
[[noreturn]] void terminate() noexcept;

bool uncaught_exception()  noexcept;
int  uncaught_exceptions() noexcept;  // C++17

typedef unspecified exception_ptr;

exception_ptr current_exception() noexcept;
void rethrow_exception [[noreturn]] (exception_ptr p);
template<class E> exception_ptr make_exception_ptr(E e) noexcept;

class nested_exception
{
public:
    nested_exception() noexcept;
    nested_exception(const nested_exception&) noexcept = default;
    nested_exception& operator=(const nested_exception&) noexcept = default;
    virtual ~nested_exception() = default;

    // access functions
    [[noreturn]] void rethrow_nested() const;
    exception_ptr nested_ptr() const noexcept;
};

template <class T> [[noreturn]] void throw_with_nested(T&& t);
template <class E> void rethrow_if_nested(const E& e);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 1 3
// -*- C++ -*-
//===--------------------------- cstdlib ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTDLIB
#define _LIBCPP_CSTDLIB

/*
    cstdlib synopsis

Macros:

    EXIT_FAILURE
    EXIT_SUCCESS
    MB_CUR_MAX
    NULL
    RAND_MAX

namespace std
{

Types:

    size_t
    div_t
    ldiv_t
    lldiv_t                                                               // C99

double    atof (const char* nptr);
int       atoi (const char* nptr);
long      atol (const char* nptr);
long long atoll(const char* nptr);                                        // C99
double             strtod  (const char* restrict nptr, char** restrict endptr);
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
int rand(void);
void srand(unsigned int seed);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
void abort(void);
int atexit(void (*func)(void));
void exit(int status);
void _Exit(int status);
char* getenv(const char* name);
int system(const char* string);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));
void qsort(void* base, size_t nmemb, size_t size,
           int (*compar)(const void *, const void *));
int         abs(      int j);
long        abs(     long j);
long long   abs(long long j);                                             // C++0X
long       labs(     long j);
long long llabs(long long j);                                             // C99
div_t     div(      int numer,       int denom);
ldiv_t    div(     long numer,      long denom);
lldiv_t   div(long long numer, long long denom);                          // C++0X
ldiv_t   ldiv(     long numer,      long denom);
lldiv_t lldiv(long long numer, long long denom);                          // C99
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
int at_quick_exit(void (*func)(void))                                     // C++11
void quick_exit(int status);                                              // C++11
void *aligned_alloc(size_t alignment, size_t size);                       // C11

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 1 3
// -*- C++ -*-
//===--------------------------- stdlib.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_malloc_and_calloc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDLIB_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#define _LIBCPP_STDLIB_H

/*
    stdlib.h synopsis

Macros:

    EXIT_FAILURE
    EXIT_SUCCESS
    MB_CUR_MAX
    NULL
    RAND_MAX

Types:

    size_t
    div_t
    ldiv_t
    lldiv_t                                                               // C99

double    atof (const char* nptr);
int       atoi (const char* nptr);
long      atol (const char* nptr);
long long atoll(const char* nptr);                                        // C99
double             strtod  (const char* restrict nptr, char** restrict endptr);
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
int rand(void);
void srand(unsigned int seed);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
void abort(void);
int atexit(void (*func)(void));
void exit(int status);
void _Exit(int status);
char* getenv(const char* name);
int system(const char* string);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));
void qsort(void* base, size_t nmemb, size_t size,
           int (*compar)(const void *, const void *));
int         abs(      int j);
long        abs(     long j);
long long   abs(long long j);                                             // C++0X
long       labs(     long j);
long long llabs(long long j);                                             // C99
div_t     div(      int numer,       int denom);
ldiv_t    div(     long numer,      long denom);
lldiv_t   div(long long numer, long long denom);                          // C++0X
ldiv_t   ldiv(     long numer,      long denom);
lldiv_t lldiv(long long numer, long long denom);                          // C99
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
int at_quick_exit(void (*func)(void))                                     // C++11
void quick_exit(int status);                                              // C++11
void *aligned_alloc(size_t alignment, size_t size);                       // C11

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1990, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)stdlib.h	8.5 (Berkeley) 5/19/95
 * $FreeBSD$
 */

#ifndef _STDLIB_H_
#define	_STDLIB_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

__NULLABILITY_PRAGMA_PUSH

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#ifndef _RUNE_T_DECLARED
typedef	__rune_t	rune_t;
#define	_RUNE_T_DECLARED
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#ifndef	__cplusplus
#ifndef _WCHAR_T_DECLARED
typedef	___wchar_t	wchar_t;
#define	_WCHAR_T_DECLARED
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#endif
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

typedef struct {
	int	quot;		/* quotient */
	int	rem;		/* remainder */
} div_t;

typedef struct {
	long	quot;
	long	rem;
} ldiv_t;

#define	EXIT_FAILURE	1
#define	EXIT_SUCCESS	0

/*
 * I.e., INT_MAX; rand(3) returns a signed integer but must produce output in
 * the range [0, RAND_MAX], so half of the possible output range is unused.
 */
#define	RAND_MAX	0x7fffffff

__BEGIN_DECLS
#ifdef _XLOCALE_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdlib.h>
#endif /* expanded by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
extern int __mb_cur_max;
extern int ___mb_cur_max(void);
#define	MB_CUR_MAX	((size_t)___mb_cur_max())

_Noreturn void	 abort(void);
int	 abs(int) __pure2;
int	 atexit(void (* _Nonnull)(void));
double	 atof(const char *);
int	 atoi(const char *);
long	 atol(const char *);
void	*bsearch(const void *, const void *, size_t,
	    size_t, int (*)(const void * _Nonnull, const void *));
void	*calloc(size_t, size_t) __malloc_like __result_use_check
	     __alloc_size2(1, 2);
div_t	 div(int, int) __pure2;
_Noreturn void	 exit(int);
void	 free(void *);
char	*getenv(const char *);
long	 labs(long) __pure2;
ldiv_t	 ldiv(long, long) __pure2;
void	*malloc(size_t) __malloc_like __result_use_check __alloc_size(1);
int	 mblen(const char *, size_t);
size_t	 mbstowcs(wchar_t * __restrict , const char * __restrict, size_t);
int	 mbtowc(wchar_t * __restrict, const char * __restrict, size_t);
void	 qsort(void *, size_t, size_t,
	    int (* _Nonnull)(const void *, const void *));
int	 rand(void);
void	*realloc(void *, size_t) __result_use_check __alloc_size(2);
void	 srand(unsigned);
double	 strtod(const char * __restrict, char ** __restrict);
float	 strtof(const char * __restrict, char ** __restrict);
long	 strtol(const char * __restrict, char ** __restrict, int);
long double
	 strtold(const char * __restrict, char ** __restrict);
unsigned long
	 strtoul(const char * __restrict, char ** __restrict, int);
int	 system(const char *);
int	 wctomb(char *, wchar_t);
size_t	 wcstombs(char * __restrict, const wchar_t * __restrict, size_t);

/*
 * Functions added in C99 which we make conditionally available in the
 * BSD^C89 namespace if the compiler supports `long long'.
 * The #if test is more complicated than it ought to be because
 * __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long'
 * is not supported in the compilation environment (which therefore means
 * that it can't really be ISO C99).
 *
 * (The only other extension made by C99 in thie header is _Exit().)
 */
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999 || defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#ifdef __LONG_LONG_SUPPORTED
/* LONGLONG */
typedef struct {
	long long quot;
	long long rem;
} lldiv_t;

/* LONGLONG */
long long
	 atoll(const char *);
/* LONGLONG */
long long
	 llabs(long long) __pure2;
/* LONGLONG */
lldiv_t	 lldiv(long long, long long) __pure2;
/* LONGLONG */
long long
	 strtoll(const char * __restrict, char ** __restrict, int);
/* LONGLONG */
unsigned long long
	 strtoull(const char * __restrict, char ** __restrict, int);
#endif /* __LONG_LONG_SUPPORTED */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

_Noreturn void	 _Exit(int);
#endif /* __ISO_C_VISIBLE >= 1999 */
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

/*
 * If we're in a mode greater than C99, expose C11 functions.
 */
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
void *	aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
	    __alloc_size(2);
int	at_quick_exit(void (*)(void));
_Noreturn void
	quick_exit(int);
#endif /* __ISO_C_VISIBLE >= 2011 */
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
/*
 * Extensions made by POSIX relative to C.
 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
char	*realpath(const char * __restrict, char * __restrict);
#endif
# 179 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 180 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 rand_r(unsigned *);			/* (TSF) */
#endif
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 posix_memalign(void **, size_t, size_t); /* (ADV) */
int	 setenv(const char *, const char *, int);
int	 unsetenv(const char *);
#endif
# 187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 getsubopt(char **, char *const *, char **);
#ifndef _MKDTEMP_DECLARED
char	*mkdtemp(char *);
#define	_MKDTEMP_DECLARED
#endif
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#ifndef _MKSTEMP_DECLARED
int	 mkstemp(char *);
#define	_MKSTEMP_DECLARED
#endif
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

/*
 * The only changes to the XSI namespace in revision 6 were the deletion
 * of the ttyslot() and valloc() functions, which FreeBSD never declared
 * in this header.  For revision 7, ecvt(), fcvt(), and gcvt(), which
 * FreeBSD also does not have, and mktemp(), are to be deleted.
 */
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
/* XXX XSI requires pollution from <sys/wait.h> here.  We'd rather not. */
long	 a64l(const char *);
double	 drand48(void);
/* char	*ecvt(double, int, int * __restrict, int * __restrict); */
double	 erand48(unsigned short[3]);
/* char	*fcvt(double, int, int * __restrict, int * __restrict); */
/* char	*gcvt(double, int, int * __restrict, int * __restrict); */
char	*initstate(unsigned int, char *, size_t);
long	 jrand48(unsigned short[3]);
char	*l64a(long);
void	 lcong48(unsigned short[7]);
long	 lrand48(void);
#if 0 /* disabled by -frewrite-includes */
#if !defined(_MKTEMP_DECLARED) && (__BSD_VISIBLE || __XSI_VISIBLE <= 600)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
char	*mktemp(char *);
#define	_MKTEMP_DECLARED
#endif
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
long	 mrand48(void);
long	 nrand48(unsigned short[3]);
int	 putenv(char *);
long	 random(void);
unsigned short
	*seed48(unsigned short[3]);
char	*setstate(/* const */ char *);
void	 srand48(long);
void	 srandom(unsigned int);
#endif /* __XSI_VISIBLE */
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 235 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 grantpt(int);
int	 posix_openpt(int);
char	*ptsname(int);
int	 unlockpt(int);
#endif /* __XSI_VISIBLE */
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
/* ptsname_r will be included in POSIX issue 8 */
int	 ptsname_r(int, char *, size_t);
#endif
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
extern const char *malloc_conf;
extern void (*malloc_message)(void *, const char *);

/*
 * The alloca() function can't be implemented in C, and on some
 * platforms it can't be implemented at all as a callable function.
 * The GNU C compiler provides a built-in alloca() which we can use.
 * On platforms where alloca() is not in libc, programs which use it
 * will fail to link when compiled with non-GNU compilers.
 */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC__ >= 2
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 257 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
#undef  alloca	/* some GNU bits try to get cute and define this on their own */
#define alloca(sz) __builtin_alloca(sz)
#endif
# 260 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

void	 abort2(const char *, int, void **) __dead2;
__uint32_t
	 arc4random(void);
void	 arc4random_buf(void *, size_t);
__uint32_t 
	 arc4random_uniform(__uint32_t);

#ifdef __BLOCKS__
int	 atexit_b(void (^ _Nonnull)(void));
void	*bsearch_b(const void *, const void *, size_t,
	    size_t, int (^ _Nonnull)(const void *, const void *));
#endif
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
char	*getbsize(int *, long *);
					/* getcap(3) functions */
char	*cgetcap(char *, const char *, int);
int	 cgetclose(void);
int	 cgetent(char **, char **, const char *);
int	 cgetfirst(char **, char **);
int	 cgetmatch(const char *, const char *);
int	 cgetnext(char **, char **);
int	 cgetnum(char *, const char *, long *);
int	 cgetset(const char *);
int	 cgetstr(char *, const char *, char **);
int	 cgetustr(char *, const char *, char **);

int	 daemon(int, int);
int	 daemonfd(int, int);
char	*devname(__dev_t, __mode_t);
char	*devname_r(__dev_t, __mode_t, char *, int);
char	*fdevname(int);
char	*fdevname_r(int, char *, int);
int	 getloadavg(double [], int);
const char *
	 getprogname(void);

int	 heapsort(void *, size_t, size_t,
	    int (* _Nonnull)(const void *, const void *));
#ifdef __BLOCKS__
int	 heapsort_b(void *, size_t, size_t,
	    int (^ _Nonnull)(const void *, const void *));
void	 qsort_b(void *, size_t, size_t,
	    int (^ _Nonnull)(const void *, const void *));
#endif
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 l64a_r(long, char *, int);
int	 mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
#ifdef __BLOCKS__
int	 mergesort_b(void *, size_t, size_t, int (^)(const void *, const void *));
#endif
# 309 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
int	 mkostemp(char *, int);
int	 mkostemps(char *, int, int);
int	 mkostempsat(int, char *, int, int);
void	 qsort_r(void *, size_t, size_t, void *,
	    int (*)(void *, const void *, const void *));
int	 radixsort(const unsigned char **, int, const unsigned char *,
	    unsigned);
void	*reallocarray(void *, size_t, size_t) __result_use_check
	    __alloc_size2(2, 3);
void	*reallocf(void *, size_t) __result_use_check __alloc_size(2);
int	 rpmatch(const char *);
void	 setprogname(const char *);
int	 sradixsort(const unsigned char **, int, const unsigned char *,
	    unsigned);
void	 srandomdev(void);
long long
	strtonum(const char *, long long, long long, const char **);

/* Deprecated interfaces, to be removed. */
__int64_t
	 strtoq(const char *, char **, int);
__uint64_t
	 strtouq(const char *, char **, int);

extern char *suboptarg;			/* getsubopt(3) external variable */
#endif /* __BSD_VISIBLE */
# 335 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 337 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#ifndef _RSIZE_T_DEFINED
#define _RSIZE_T_DEFINED
typedef size_t rsize_t;
#endif
# 342 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

#ifndef _ERRNO_T_DEFINED
#define _ERRNO_T_DEFINED
typedef int errno_t;
#endif
# 347 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

/* K.3.6 */
typedef void (*constraint_handler_t)(const char * __restrict,
    void * __restrict, errno_t);
/* K.3.6.1.1 */
constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);
/* K.3.6.1.2 */
_Noreturn void abort_handler_s(const char * __restrict, void * __restrict,
    errno_t);
/* K3.6.1.3 */
void ignore_handler_s(const char * __restrict, void * __restrict, errno_t);
/* K.3.6.3.2 */
errno_t	 qsort_s(void *, rsize_t, rsize_t,
    int (*)(const void *, const void *, void *), void *);
#endif /* __EXT1_VISIBLE */
# 362 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4

__END_DECLS
__NULLABILITY_PRAGMA_POP

#endif /* !_STDLIB_H_ */
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdlib.h" 3 4
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 2 3

#ifdef __cplusplus
extern "C++" {
// abs

#undef abs
#undef labs
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef llabs
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
  return __builtin_labs(__x);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
  return __builtin_llabs(__x);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
  return __builtin_fabsf(__lcpp_x); // Use builtins to prevent needing math.h
}

inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
  return __builtin_fabs(__lcpp_x);
}

inline _LIBCPP_INLINE_VISIBILITY long double
abs(long double __lcpp_x) _NOEXCEPT {
  return __builtin_fabsl(__lcpp_x);
}
#endif // !defined(__sun__)
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// div

#undef div
#undef ldiv
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef lldiv
#endif
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
  return ::ldiv(__x, __y);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
                                             long long __y) _NOEXCEPT {
  return ::lldiv(__x, __y);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // _LIBCPP_MSVCRT / __sun__
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
} // extern "C++"
#endif // __cplusplus
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#endif // _LIBCPP_STDLIB_H
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3

#ifdef __GNUC__
#define _LIBCPP_UNREACHABLE() __builtin_unreachable()
#else
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
#define _LIBCPP_UNREACHABLE() _VSTD::abort()
#endif
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::size_t _LIBCPP_USING_IF_EXISTS;
using ::div_t _LIBCPP_USING_IF_EXISTS;
using ::ldiv_t _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::lldiv_t _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::atof _LIBCPP_USING_IF_EXISTS;
using ::atoi _LIBCPP_USING_IF_EXISTS;
using ::atol _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::atoll _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::strtod _LIBCPP_USING_IF_EXISTS;
using ::strtof _LIBCPP_USING_IF_EXISTS;
using ::strtold _LIBCPP_USING_IF_EXISTS;
using ::strtol _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::strtoll _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::strtoul _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::strtoull _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::rand _LIBCPP_USING_IF_EXISTS;
using ::srand _LIBCPP_USING_IF_EXISTS;
using ::calloc _LIBCPP_USING_IF_EXISTS;
using ::free _LIBCPP_USING_IF_EXISTS;
using ::malloc _LIBCPP_USING_IF_EXISTS;
using ::realloc _LIBCPP_USING_IF_EXISTS;
using ::abort _LIBCPP_USING_IF_EXISTS;
using ::atexit _LIBCPP_USING_IF_EXISTS;
using ::exit _LIBCPP_USING_IF_EXISTS;
using ::_Exit _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_WINDOWS_STORE_APP
using ::getenv _LIBCPP_USING_IF_EXISTS;
using ::system _LIBCPP_USING_IF_EXISTS;
#endif
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::bsearch _LIBCPP_USING_IF_EXISTS;
using ::qsort _LIBCPP_USING_IF_EXISTS;
using ::abs _LIBCPP_USING_IF_EXISTS;
using ::labs _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::llabs _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::div _LIBCPP_USING_IF_EXISTS;
using ::ldiv _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::lldiv _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::mblen _LIBCPP_USING_IF_EXISTS;
using ::mbtowc _LIBCPP_USING_IF_EXISTS;
using ::wctomb _LIBCPP_USING_IF_EXISTS;
using ::mbstowcs _LIBCPP_USING_IF_EXISTS;
using ::wcstombs _LIBCPP_USING_IF_EXISTS;
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG) && defined(_LIBCPP_HAS_QUICK_EXIT)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
using ::quick_exit _LIBCPP_USING_IF_EXISTS;
#endif
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_ALIGNED_ALLOC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
using ::aligned_alloc _LIBCPP_USING_IF_EXISTS;
#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CSTDLIB
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdlib" 3
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <vcruntime_exception.h>
#endif /* expanded by -frewrite-includes */
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#endif
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

namespace std  // purposefully not using versioning namespace
{

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
class _LIBCPP_EXCEPTION_ABI exception
{
public:
    _LIBCPP_INLINE_VISIBILITY exception() _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY exception(const exception&) _NOEXCEPT = default;

    virtual ~exception() _NOEXCEPT;
    virtual const char* what() const _NOEXCEPT;
};

class _LIBCPP_EXCEPTION_ABI bad_exception
    : public exception
{
public:
    _LIBCPP_INLINE_VISIBILITY bad_exception() _NOEXCEPT {}
    virtual ~bad_exception() _NOEXCEPT;
    virtual const char* what() const _NOEXCEPT;
};
#endif // !_LIBCPP_ABI_VCRUNTIME
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 \
    || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS) \
    || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
typedef void (*unexpected_handler)();
_LIBCPP_FUNC_VIS unexpected_handler set_unexpected(unexpected_handler) _NOEXCEPT;
_LIBCPP_FUNC_VIS unexpected_handler get_unexpected() _NOEXCEPT;
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void unexpected();
#endif
# 127 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

typedef void (*terminate_handler)();
_LIBCPP_FUNC_VIS terminate_handler set_terminate(terminate_handler) _NOEXCEPT;
_LIBCPP_FUNC_VIS terminate_handler get_terminate() _NOEXCEPT;
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT;

_LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT;
_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_exceptions() _NOEXCEPT;

class _LIBCPP_TYPE_VIS exception_ptr;

_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT;
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr);

#ifndef _LIBCPP_ABI_MICROSOFT

class _LIBCPP_TYPE_VIS exception_ptr
{
    void* __ptr_;
public:
    _LIBCPP_INLINE_VISIBILITY exception_ptr() _NOEXCEPT : __ptr_() {}
    _LIBCPP_INLINE_VISIBILITY exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {}

    exception_ptr(const exception_ptr&) _NOEXCEPT;
    exception_ptr& operator=(const exception_ptr&) _NOEXCEPT;
    ~exception_ptr() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY explicit operator bool() const _NOEXCEPT
    {return __ptr_ != nullptr;}

    friend _LIBCPP_INLINE_VISIBILITY
    bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT
        {return __x.__ptr_ == __y.__ptr_;}

    friend _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT
        {return !(__x == __y);}

    friend _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT;
    friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr);
};

template<class _Ep>
_LIBCPP_INLINE_VISIBILITY exception_ptr
make_exception_ptr(_Ep __e) _NOEXCEPT
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
        throw __e;
    }
    catch (...)
    {
        return current_exception();
    }
#else
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
    ((void)__e);
    _VSTD::abort();
#endif
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
}

#else // _LIBCPP_ABI_MICROSOFT
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

class _LIBCPP_TYPE_VIS exception_ptr
{
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field"
#endif
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
    void* __ptr1_;
    void* __ptr2_;
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
#pragma clang diagnostic pop
#endif
# 201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
public:
    exception_ptr() _NOEXCEPT;
    exception_ptr(nullptr_t) _NOEXCEPT;
    exception_ptr(const exception_ptr& __other) _NOEXCEPT;
    exception_ptr& operator=(const exception_ptr& __other) _NOEXCEPT;
    exception_ptr& operator=(nullptr_t) _NOEXCEPT;
    ~exception_ptr() _NOEXCEPT;
    explicit operator bool() const _NOEXCEPT;
};

_LIBCPP_FUNC_VIS
bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT;

inline _LIBCPP_INLINE_VISIBILITY
bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT
    {return !(__x == __y);}

_LIBCPP_FUNC_VIS void swap(exception_ptr&, exception_ptr&) _NOEXCEPT;

_LIBCPP_FUNC_VIS exception_ptr __copy_exception_ptr(void *__except, const void* __ptr);
_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT;
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr p);

// This is a built-in template function which automagically extracts the required
// information.
template <class _E> void *__GetExceptionInfo(_E);

template<class _Ep>
_LIBCPP_INLINE_VISIBILITY exception_ptr
make_exception_ptr(_Ep __e) _NOEXCEPT
{
  return __copy_exception_ptr(_VSTD::addressof(__e), __GetExceptionInfo(__e));
}

#endif // _LIBCPP_ABI_MICROSOFT
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
// nested_exception

class _LIBCPP_EXCEPTION_ABI nested_exception
{
    exception_ptr __ptr_;
public:
    nested_exception() _NOEXCEPT;
//     nested_exception(const nested_exception&) noexcept = default;
//     nested_exception& operator=(const nested_exception&) noexcept = default;
    virtual ~nested_exception() _NOEXCEPT;

    // access functions
    _LIBCPP_NORETURN void rethrow_nested() const;
    _LIBCPP_INLINE_VISIBILITY exception_ptr nested_ptr() const _NOEXCEPT {return __ptr_;}
};

template <class _Tp>
struct __nested
    : public _Tp,
      public nested_exception
{
    _LIBCPP_INLINE_VISIBILITY explicit __nested(const _Tp& __t) : _Tp(__t) {}
};

#ifndef _LIBCPP_NO_EXCEPTIONS
template <class _Tp, class _Up, bool>
struct __throw_with_nested;

template <class _Tp, class _Up>
struct __throw_with_nested<_Tp, _Up, true> {
    _LIBCPP_NORETURN static inline _LIBCPP_INLINE_VISIBILITY void
    __do_throw(_Tp&& __t)
    {
        throw __nested<_Up>(static_cast<_Tp&&>(__t));
    }
};

template <class _Tp, class _Up>
struct __throw_with_nested<_Tp, _Up, false> {
    _LIBCPP_NORETURN static inline _LIBCPP_INLINE_VISIBILITY void
#ifndef _LIBCPP_CXX03_LANG
    __do_throw(_Tp&& __t)
#else
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
    __do_throw (_Tp& __t)
#endif // _LIBCPP_CXX03_LANG
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
    {
        throw static_cast<_Tp&&>(__t);
    }
};
#endif
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3

template <class _Tp>
_LIBCPP_NORETURN
void
throw_with_nested(_Tp&& __t)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    typedef typename decay<_Tp>::type _Up;
    static_assert( is_copy_constructible<_Up>::value, "type thrown must be CopyConstructible");
    __throw_with_nested<_Tp, _Up,
        is_class<_Up>::value &&
        !is_base_of<nested_exception, _Up>::value &&
        !__libcpp_is_final<_Up>::value>::
            __do_throw(static_cast<_Tp&&>(__t));
#else
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
    ((void)__t);
    // FIXME: Make this abort
#endif
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
}

template <class _From, class _To>
struct __can_dynamic_cast : public _LIBCPP_BOOL_CONSTANT(
              is_polymorphic<_From>::value &&
                 (!is_base_of<_To, _From>::value ||
                   is_convertible<const _From*, const _To*>::value)) {};

template <class _Ep>
inline _LIBCPP_INLINE_VISIBILITY
void
rethrow_if_nested(const _Ep& __e,
                  typename enable_if< __can_dynamic_cast<_Ep, nested_exception>::value>::type* = 0)
{
    const nested_exception* __nep = dynamic_cast<const nested_exception*>(_VSTD::addressof(__e));
    if (__nep)
        __nep->rethrow_nested();
}

template <class _Ep>
inline _LIBCPP_INLINE_VISIBILITY
void
rethrow_if_nested(const _Ep&,
                  typename enable_if<!__can_dynamic_cast<_Ep, nested_exception>::value>::type* = 0)
{
}

}  // std

#endif // _LIBCPP_EXCEPTION
# 334 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/exception" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 1 3
// -*- C++ -*-
//===----------------------------- new ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_NEW
#define _LIBCPP_NEW

/*
    new synopsis

namespace std
{

class bad_alloc
    : public exception
{
public:
    bad_alloc() noexcept;
    bad_alloc(const bad_alloc&) noexcept;
    bad_alloc& operator=(const bad_alloc&) noexcept;
    virtual const char* what() const noexcept;
};

class bad_array_new_length : public bad_alloc // C++14
{
public:
    bad_array_new_length() noexcept;
};

enum class align_val_t : size_t {}; // C++17

struct destroying_delete_t { // C++20
  explicit destroying_delete_t() = default;
};
inline constexpr destroying_delete_t destroying_delete{}; // C++20

struct nothrow_t { explicit nothrow_t() = default; };
extern const nothrow_t nothrow;
typedef void (*new_handler)();
new_handler set_new_handler(new_handler new_p) noexcept;
new_handler get_new_handler() noexcept;

// 21.6.4, pointer optimization barrier
template <class T> constexpr T* launder(T* p) noexcept; // C++17
}  // std

void* operator new(std::size_t size);                                   // replaceable, nodiscard in C++20
void* operator new(std::size_t size, std::align_val_t alignment);       // replaceable, C++17, nodiscard in C++20
void* operator new(std::size_t size, const std::nothrow_t&) noexcept;   // replaceable, nodiscard in C++20
void* operator new(std::size_t size, std::align_val_t alignment,
                   const std::nothrow_t&) noexcept;                     // replaceable, C++17, nodiscard in C++20
void  operator delete(void* ptr) noexcept;                              // replaceable
void  operator delete(void* ptr, std::size_t size) noexcept;            // replaceable, C++14
void  operator delete(void* ptr, std::align_val_t alignment) noexcept;  // replaceable, C++17
void  operator delete(void* ptr, std::size_t size,
                      std::align_val_t alignment) noexcept;             // replaceable, C++17
void  operator delete(void* ptr, const std::nothrow_t&) noexcept;       // replaceable
void  operator delete(void* ptr, std:align_val_t alignment,
                      const std::nothrow_t&) noexcept;                  // replaceable, C++17

void* operator new[](std::size_t size);                                 // replaceable, nodiscard in C++20
void* operator new[](std::size_t size,
                     std::align_val_t alignment) noexcept;              // replaceable, C++17, nodiscard in C++20
void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceable, nodiscard in C++20
void* operator new[](std::size_t size, std::align_val_t alignment,
                     const std::nothrow_t&) noexcept;                   // replaceable, C++17, nodiscard in C++20
void  operator delete[](void* ptr) noexcept;                            // replaceable
void  operator delete[](void* ptr, std::size_t size) noexcept;          // replaceable, C++14
void  operator delete[](void* ptr,
                        std::align_val_t alignment) noexcept;           // replaceable, C++17
void  operator delete[](void* ptr, std::size_t size,
                        std::align_val_t alignment) noexcept;           // replaceable, C++17
void  operator delete[](void* ptr, const std::nothrow_t&) noexcept;     // replaceable
void  operator delete[](void* ptr, std::align_val_t alignment,
                        const std::nothrow_t&) noexcept;                // replaceable, C++17

void* operator new  (std::size_t size, void* ptr) noexcept;             // nodiscard in C++20
void* operator new[](std::size_t size, void* ptr) noexcept;             // nodiscard in C++20
void  operator delete  (void* ptr, void*) noexcept;
void  operator delete[](void* ptr, void*) noexcept;

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <new.h>
#endif /* expanded by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cpp_sized_deallocation) || __cpp_sized_deallocation  < 201309L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#define _LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION
#endif
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_BUILDING_LIBRARY) && _LIBCPP_STD_VER < 14 && \
    defined(_LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# define _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
#endif
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION) || \
    defined(_LIBCPP_HAS_NO_LANGUAGE_SIZED_DEALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# define _LIBCPP_HAS_NO_SIZED_DEALLOCATION
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

namespace std  // purposefully not using versioning namespace
{

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
struct _LIBCPP_TYPE_VIS nothrow_t { explicit nothrow_t() = default; };
extern _LIBCPP_FUNC_VIS const nothrow_t nothrow;

class _LIBCPP_EXCEPTION_ABI bad_alloc
    : public exception
{
public:
    bad_alloc() _NOEXCEPT;
    virtual ~bad_alloc() _NOEXCEPT;
    virtual const char* what() const _NOEXCEPT;
};

class _LIBCPP_EXCEPTION_ABI bad_array_new_length
    : public bad_alloc
{
public:
    bad_array_new_length() _NOEXCEPT;
    virtual ~bad_array_new_length() _NOEXCEPT;
    virtual const char* what() const _NOEXCEPT;
};

typedef void (*new_handler)();
_LIBCPP_FUNC_VIS new_handler set_new_handler(new_handler) _NOEXCEPT;
_LIBCPP_FUNC_VIS new_handler get_new_handler() _NOEXCEPT;

#endif // !_LIBCPP_ABI_VCRUNTIME
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_bad_alloc();  // not in C++ spec

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) && \
    !defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#ifndef _LIBCPP_CXX03_LANG
enum class _LIBCPP_ENUM_VIS align_val_t : size_t { };
#else
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
enum align_val_t { __zero = 0, __max = (size_t)-1 };
#endif
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
// Enable the declaration even if the compiler doesn't support the language
// feature.
struct destroying_delete_t {
  explicit destroying_delete_t() = default;
};
_LIBCPP_INLINE_VAR constexpr destroying_delete_t destroying_delete{};
#endif // _LIBCPP_STD_VER > 17
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

}  // std

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#define _THROW_BAD_ALLOC throw(std::bad_alloc)
#else
# 175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#define _THROW_BAD_ALLOC
#endif
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 179 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete(void* __p) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void  operator delete(void* __p, std::size_t __sz) _NOEXCEPT;
#endif
# 187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete[](void* __p) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void  operator delete[](void* __p, std::size_t __sz) _NOEXCEPT;
#endif
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

#ifndef _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete(void* __p, std::align_val_t) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void  operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete[](void* __p, std::align_val_t) _NOEXCEPT;
_LIBCPP_OVERRIDABLE_FUNC_VIS void  operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
#ifndef _LIBCPP_HAS_NO_LIBRARY_SIZED_DEALLOCATION
_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void  operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
#endif
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
#endif
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_NODISCARD_AFTER_CXX17 inline _LIBCPP_INLINE_VISIBILITY void* operator new  (std::size_t, void* __p) _NOEXCEPT {return __p;}
_LIBCPP_NODISCARD_AFTER_CXX17 inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}
inline _LIBCPP_INLINE_VISIBILITY void  operator delete  (void*, void*) _NOEXCEPT {}
inline _LIBCPP_INLINE_VISIBILITY void  operator delete[](void*, void*) _NOEXCEPT {}

#endif // !_LIBCPP_ABI_VCRUNTIME
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_CONSTEXPR inline _LIBCPP_INLINE_VISIBILITY bool __is_overaligned_for_new(size_t __align) _NOEXCEPT {
#ifdef __STDCPP_DEFAULT_NEW_ALIGNMENT__
  return __align > __STDCPP_DEFAULT_NEW_ALIGNMENT__;
#else
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  return __align > alignment_of<max_align_t>::value;
#endif
# 229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

template <class ..._Args>
_LIBCPP_INLINE_VISIBILITY
void* __libcpp_operator_new(_Args ...__args) {
#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__builtin_operator_new) && __has_builtin(__builtin_operator_delete)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 235 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  return __builtin_operator_new(__args...);
#else
# 237 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  return ::operator new(__args...);
#endif
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

template <class ..._Args>
_LIBCPP_INLINE_VISIBILITY
void __libcpp_operator_delete(_Args ...__args) {
#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__builtin_operator_new) && __has_builtin(__builtin_operator_delete)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  __builtin_operator_delete(__args...);
#else
# 247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  ::operator delete(__args...);
#endif
# 249 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

inline _LIBCPP_INLINE_VISIBILITY
void *__libcpp_allocate(size_t __size, size_t __align) {
#ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
  if (__is_overaligned_for_new(__align)) {
    const align_val_t __align_val = static_cast<align_val_t>(__align);
    return __libcpp_operator_new(__size, __align_val);
  }
#endif
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

  (void)__align;
  return __libcpp_operator_new(__size);
}

template <class ..._Args>
_LIBCPP_INLINE_VISIBILITY
void __do_deallocate_handle_size(void *__ptr, size_t __size, _Args ...__args) {
#ifdef _LIBCPP_HAS_NO_SIZED_DEALLOCATION
  (void)__size;
  return __libcpp_operator_delete(__ptr, __args...);
#else
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  return __libcpp_operator_delete(__ptr, __size, __args...);
#endif
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

inline _LIBCPP_INLINE_VISIBILITY
void __libcpp_deallocate(void* __ptr, size_t __size, size_t __align) {
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
    (void)__align;
    return __do_deallocate_handle_size(__ptr, __size);
#else
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
    if (__is_overaligned_for_new(__align)) {
      const align_val_t __align_val = static_cast<align_val_t>(__align);
      return __do_deallocate_handle_size(__ptr, __size, __align_val);
    } else {
      return __do_deallocate_handle_size(__ptr, __size);
    }
#endif
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

inline _LIBCPP_INLINE_VISIBILITY void __libcpp_deallocate_unsized(void* __ptr, size_t __align) {
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
    (void)__align;
    return __libcpp_operator_delete(__ptr);
#else
# 295 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
    if (__is_overaligned_for_new(__align)) {
      const align_val_t __align_val = static_cast<align_val_t>(__align);
      return __libcpp_operator_delete(__ptr, __align_val);
    } else {
      return __libcpp_operator_delete(__ptr);
    }
#endif
# 302 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
// Low-level helpers to call the aligned allocation and deallocation functions
// on the target platform. This is used to implement libc++'s own memory
// allocation routines -- if you need to allocate memory inside the library,
// chances are that you want to use `__libcpp_allocate` instead.
//
// Returns the allocated memory, or `nullptr` on failure.
inline _LIBCPP_INLINE_VISIBILITY
void* __libcpp_aligned_alloc(std::size_t __alignment, std::size_t __size) {
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 314 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  return ::_aligned_malloc(__size, __alignment);
#else
# 316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  void* __result = nullptr;
  (void)::posix_memalign(&__result, __alignment, __size);
  // If posix_memalign fails, __result is unmodified so we still return `nullptr`.
  return __result;
#endif
# 321 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}

inline _LIBCPP_INLINE_VISIBILITY
void __libcpp_aligned_free(void* __ptr) {
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  ::_aligned_free(__ptr);
#else
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
  ::free(__ptr);
#endif
# 330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}
#endif // !_LIBCPP_HAS_NO_ALIGNED_ALLOCATION
# 332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3


template <class _Tp>
_LIBCPP_NODISCARD_AFTER_CXX17 inline
_LIBCPP_CONSTEXPR _Tp* __launder(_Tp* __p) _NOEXCEPT
{
    static_assert (!(is_function<_Tp>::value), "can't launder functions" );
    static_assert (!(is_same<void, typename remove_cv<_Tp>::type>::value), "can't launder cv-void" );
#ifdef _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER
    return __builtin_launder(__p);
#else
# 343 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
    return __p;
#endif
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
}


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 349 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
template <class _Tp>
_LIBCPP_NODISCARD_AFTER_CXX17 inline _LIBCPP_INLINE_VISIBILITY
constexpr _Tp* launder(_Tp* __p) noexcept
{
    return _VSTD::__launder(__p);
}
#endif
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_NEW
# 360 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/new" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 1 3
// -*- C++ -*-
//===-------------------------- typeinfo ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef __LIBCPP_TYPEINFO
#define __LIBCPP_TYPEINFO

/*

    typeinfo synopsis

namespace std {

class type_info
{
public:
    virtual ~type_info();

    bool operator==(const type_info& rhs) const noexcept;
    bool operator!=(const type_info& rhs) const noexcept;

    bool before(const type_info& rhs) const noexcept;
    size_t hash_code() const noexcept;
    const char* name() const noexcept;

    type_info(const type_info& rhs) = delete;
    type_info& operator=(const type_info& rhs) = delete;
};

class bad_cast
    : public exception
{
public:
    bad_cast() noexcept;
    bad_cast(const bad_cast&) noexcept;
    bad_cast& operator=(const bad_cast&) noexcept;
    virtual const char* what() const noexcept;
};

class bad_typeid
    : public exception
{
public:
    bad_typeid() noexcept;
    bad_typeid(const bad_typeid&) noexcept;
    bad_typeid& operator=(const bad_typeid&) noexcept;
    virtual const char* what() const noexcept;
};

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 1 3
// -*- C++ -*-
//===--------------------------- cstdint ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTDINT
#define _LIBCPP_CSTDINT

/*
    cstdint synopsis

Macros:

    INT8_MIN
    INT16_MIN
    INT32_MIN
    INT64_MIN

    INT8_MAX
    INT16_MAX
    INT32_MAX
    INT64_MAX

    UINT8_MAX
    UINT16_MAX
    UINT32_MAX
    UINT64_MAX

    INT_LEAST8_MIN
    INT_LEAST16_MIN
    INT_LEAST32_MIN
    INT_LEAST64_MIN

    INT_LEAST8_MAX
    INT_LEAST16_MAX
    INT_LEAST32_MAX
    INT_LEAST64_MAX

    UINT_LEAST8_MAX
    UINT_LEAST16_MAX
    UINT_LEAST32_MAX
    UINT_LEAST64_MAX

    INT_FAST8_MIN
    INT_FAST16_MIN
    INT_FAST32_MIN
    INT_FAST64_MIN

    INT_FAST8_MAX
    INT_FAST16_MAX
    INT_FAST32_MAX
    INT_FAST64_MAX

    UINT_FAST8_MAX
    UINT_FAST16_MAX
    UINT_FAST32_MAX
    UINT_FAST64_MAX

    INTPTR_MIN
    INTPTR_MAX
    UINTPTR_MAX

    INTMAX_MIN
    INTMAX_MAX

    UINTMAX_MAX

    PTRDIFF_MIN
    PTRDIFF_MAX

    SIG_ATOMIC_MIN
    SIG_ATOMIC_MAX

    SIZE_MAX

    WCHAR_MIN
    WCHAR_MAX

    WINT_MIN
    WINT_MAX

    INT8_C(value)
    INT16_C(value)
    INT32_C(value)
    INT64_C(value)

    UINT8_C(value)
    UINT16_C(value)
    UINT32_C(value)
    UINT64_C(value)

    INTMAX_C(value)
    UINTMAX_C(value)

namespace std
{

Types:

    int8_t
    int16_t
    int32_t
    int64_t

    uint8_t
    uint16_t
    uint32_t
    uint64_t

    int_least8_t
    int_least16_t
    int_least32_t
    int_least64_t

    uint_least8_t
    uint_least16_t
    uint_least32_t
    uint_least64_t

    int_fast8_t
    int_fast16_t
    int_fast32_t
    int_fast64_t

    uint_fast8_t
    uint_fast16_t
    uint_fast32_t
    uint_fast64_t

    intptr_t
    uintptr_t

    intmax_t
    uintmax_t

}  // std
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
# 144 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdint.h>
#endif /* expanded by -frewrite-includes */
# 144 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 1 3
// -*- C++ -*-
//===---------------------------- stdint.h --------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STDINT_H
// AIX system headers need stdint.h to be re-enterable while _STD_TYPES_T
// is defined until an inclusion of it without _STD_TYPES_T occurs, in which
// case the header guard macro is defined.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_AIX) || !defined(_STD_TYPES_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#define _LIBCPP_STDINT_H
#endif // _STD_TYPES_T
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3

/*
    stdint.h synopsis

Macros:

    INT8_MIN
    INT16_MIN
    INT32_MIN
    INT64_MIN

    INT8_MAX
    INT16_MAX
    INT32_MAX
    INT64_MAX

    UINT8_MAX
    UINT16_MAX
    UINT32_MAX
    UINT64_MAX

    INT_LEAST8_MIN
    INT_LEAST16_MIN
    INT_LEAST32_MIN
    INT_LEAST64_MIN

    INT_LEAST8_MAX
    INT_LEAST16_MAX
    INT_LEAST32_MAX
    INT_LEAST64_MAX

    UINT_LEAST8_MAX
    UINT_LEAST16_MAX
    UINT_LEAST32_MAX
    UINT_LEAST64_MAX

    INT_FAST8_MIN
    INT_FAST16_MIN
    INT_FAST32_MIN
    INT_FAST64_MIN

    INT_FAST8_MAX
    INT_FAST16_MAX
    INT_FAST32_MAX
    INT_FAST64_MAX

    UINT_FAST8_MAX
    UINT_FAST16_MAX
    UINT_FAST32_MAX
    UINT_FAST64_MAX

    INTPTR_MIN
    INTPTR_MAX
    UINTPTR_MAX

    INTMAX_MIN
    INTMAX_MAX

    UINTMAX_MAX

    PTRDIFF_MIN
    PTRDIFF_MAX

    SIG_ATOMIC_MIN
    SIG_ATOMIC_MAX

    SIZE_MAX

    WCHAR_MIN
    WCHAR_MAX

    WINT_MIN
    WINT_MAX

    INT8_C(value)
    INT16_C(value)
    INT32_C(value)
    INT64_C(value)

    UINT8_C(value)
    UINT16_C(value)
    UINT32_C(value)
    UINT64_C(value)

    INTMAX_C(value)
    UINTMAX_C(value)

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#endif
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3

/* C99 stdlib (e.g. glibc < 2.18) does not provide macros needed
   for C++11 unless __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS
   are defined
*/
#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#   define __STDC_LIMIT_MACROS
#endif
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
#   define __STDC_CONSTANT_MACROS
#endif
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdint.h>
#endif /* expanded by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_STDINT_H_
#define _SYS_STDINT_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <machine/_stdint.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 1 3 4
/*-
 * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org>
 * Copyright (c) 2001 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Klaus Klein.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _MACHINE__STDINT_H_
#define	_MACHINE__STDINT_H_

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 3 4

#define	INT8_C(c)		(c)
#define	INT16_C(c)		(c)
#define	INT32_C(c)		(c)
#define	INT64_C(c)		(c ## L)

#define	UINT8_C(c)		(c)
#define	UINT16_C(c)		(c)
#define	UINT32_C(c)		(c ## U)
#define	UINT64_C(c)		(c ## UL)

#define	INTMAX_C(c)		INT64_C(c)
#define	UINTMAX_C(c)		UINT64_C(c)

#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 3 4

/*
 * ISO/IEC 9899:1999
 * 7.18.2.1 Limits of exact-width integer types
 */
/* Minimum values of exact-width signed integer types. */
#define	INT8_MIN	(-0x7f-1)
#define	INT16_MIN	(-0x7fff-1)
#define	INT32_MIN	(-0x7fffffff-1)
#define	INT64_MIN	(-0x7fffffffffffffffL-1)

/* Maximum values of exact-width signed integer types. */
#define	INT8_MAX	0x7f
#define	INT16_MAX	0x7fff
#define	INT32_MAX	0x7fffffff
#define	INT64_MAX	0x7fffffffffffffffL

/* Maximum values of exact-width unsigned integer types. */
#define	UINT8_MAX	0xff
#define	UINT16_MAX	0xffff
#define	UINT32_MAX	0xffffffffU
#define	UINT64_MAX	0xffffffffffffffffUL

/*
 * ISO/IEC 9899:1999
 * 7.18.2.2  Limits of minimum-width integer types
 */
/* Minimum values of minimum-width signed integer types. */
#define	INT_LEAST8_MIN	INT8_MIN
#define	INT_LEAST16_MIN	INT16_MIN
#define	INT_LEAST32_MIN	INT32_MIN
#define	INT_LEAST64_MIN	INT64_MIN

/* Maximum values of minimum-width signed integer types. */
#define	INT_LEAST8_MAX	INT8_MAX
#define	INT_LEAST16_MAX	INT16_MAX
#define	INT_LEAST32_MAX	INT32_MAX
#define	INT_LEAST64_MAX	INT64_MAX

/* Maximum values of minimum-width unsigned integer types. */
#define	UINT_LEAST8_MAX	 UINT8_MAX
#define	UINT_LEAST16_MAX UINT16_MAX
#define	UINT_LEAST32_MAX UINT32_MAX
#define	UINT_LEAST64_MAX UINT64_MAX

/*
 * ISO/IEC 9899:1999
 * 7.18.2.3  Limits of fastest minimum-width integer types
 */
/* Minimum values of fastest minimum-width signed integer types. */
#define	INT_FAST8_MIN	INT32_MIN
#define	INT_FAST16_MIN	INT32_MIN
#define	INT_FAST32_MIN	INT32_MIN
#define	INT_FAST64_MIN	INT64_MIN

/* Maximum values of fastest minimum-width signed integer types. */
#define	INT_FAST8_MAX	INT32_MAX
#define	INT_FAST16_MAX	INT32_MAX
#define	INT_FAST32_MAX	INT32_MAX
#define	INT_FAST64_MAX	INT64_MAX

/* Maximum values of fastest minimum-width unsigned integer types. */
#define	UINT_FAST8_MAX	UINT32_MAX
#define	UINT_FAST16_MAX	UINT32_MAX
#define	UINT_FAST32_MAX	UINT32_MAX
#define	UINT_FAST64_MAX	UINT64_MAX

/*
 * ISO/IEC 9899:1999
 * 7.18.2.4  Limits of integer types capable of holding object pointers
 */
#define	INTPTR_MIN	INT64_MIN
#define	INTPTR_MAX	INT64_MAX
#define	UINTPTR_MAX	UINT64_MAX

/*
 * ISO/IEC 9899:1999
 * 7.18.2.5  Limits of greatest-width integer types
 */
#define	INTMAX_MIN	INT64_MIN
#define	INTMAX_MAX	INT64_MAX
#define	UINTMAX_MAX	UINT64_MAX

/*
 * ISO/IEC 9899:1999
 * 7.18.3  Limits of other integer types
 */
/* Limits of ptrdiff_t. */
#define	PTRDIFF_MIN	INT64_MIN	
#define	PTRDIFF_MAX	INT64_MAX

/* Limits of sig_atomic_t. */
#define	SIG_ATOMIC_MIN	INT32_MIN
#define	SIG_ATOMIC_MAX	INT32_MAX

/* Limit of size_t. */
#define	SIZE_MAX	UINT64_MAX

/* Limits of wint_t. */
#define	WINT_MIN	INT32_MIN
#define	WINT_MAX	INT32_MAX

#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 3 4

#endif /* !_MACHINE__STDINT_H_ */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/machine/_stdint.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_stdint.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org>
 * Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__STDINT_H_
#define _SYS__STDINT_H_

#ifndef _INT8_T_DECLARED
typedef	__int8_t		int8_t;
#define	_INT8_T_DECLARED
#endif
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _INT16_T_DECLARED
typedef	__int16_t		int16_t;
#define	_INT16_T_DECLARED
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _INT32_T_DECLARED
typedef	__int32_t		int32_t;
#define	_INT32_T_DECLARED
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _INT64_T_DECLARED
typedef	__int64_t		int64_t;
#define	_INT64_T_DECLARED
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _UINT8_T_DECLARED
typedef	__uint8_t		uint8_t;
#define	_UINT8_T_DECLARED
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _UINT16_T_DECLARED
typedef	__uint16_t		uint16_t;
#define	_UINT16_T_DECLARED
#endif
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _UINT32_T_DECLARED
typedef	__uint32_t		uint32_t;
#define	_UINT32_T_DECLARED
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _UINT64_T_DECLARED
typedef	__uint64_t		uint64_t;
#define	_UINT64_T_DECLARED
#endif
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#ifndef _INTPTR_T_DECLARED
typedef	__intptr_t		intptr_t;
#define	_INTPTR_T_DECLARED
#endif
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4
#ifndef _UINTPTR_T_DECLARED
typedef	__uintptr_t		uintptr_t;
#define	_UINTPTR_T_DECLARED
#endif
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4
#ifndef _INTMAX_T_DECLARED
typedef	__intmax_t		intmax_t;
#define	_INTMAX_T_DECLARED
#endif
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4
#ifndef _UINTMAX_T_DECLARED
typedef	__uintmax_t		uintmax_t;
#define	_UINTMAX_T_DECLARED
#endif
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4

#endif /* !_SYS__STDINT_H_ */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdint.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 2 3 4

typedef	__int_least8_t		int_least8_t;
typedef	__int_least16_t		int_least16_t;
typedef	__int_least32_t		int_least32_t;
typedef	__int_least64_t		int_least64_t;

typedef	__uint_least8_t		uint_least8_t;
typedef	__uint_least16_t	uint_least16_t;
typedef	__uint_least32_t	uint_least32_t;
typedef	__uint_least64_t	uint_least64_t;

typedef	__int_fast8_t		int_fast8_t;
typedef	__int_fast16_t		int_fast16_t;
typedef	__int_fast32_t		int_fast32_t;
typedef	__int_fast64_t		int_fast64_t;

typedef	__uint_fast8_t		uint_fast8_t;
typedef	__uint_fast16_t		uint_fast16_t;
typedef	__uint_fast32_t		uint_fast32_t;
typedef	__uint_fast64_t		uint_fast64_t;

/* GNU and Darwin define this and people seem to think it's portable */
#if 0 /* disabled by -frewrite-includes */
#if defined(UINTPTR_MAX) && defined(UINT64_MAX) && (UINTPTR_MAX == UINT64_MAX)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
#define	__WORDSIZE		64
#else
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
#define	__WORDSIZE		32
#endif
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4

/* Limits of wchar_t. */
#define	WCHAR_MIN	__WCHAR_MIN
#define	WCHAR_MAX	__WCHAR_MAX

#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
/* ISO/IEC 9899:2011 K.3.4.4 */
#ifndef RSIZE_MAX
#define RSIZE_MAX (SIZE_MAX >> 1)
#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
#endif /* __EXT1_VISIBLE */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4

#endif /* !_SYS_STDINT_H_ */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdint.h" 3 4
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 2 3

#endif // _LIBCPP_STDINT_H
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdint.h" 3
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
#endif
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::int8_t _LIBCPP_USING_IF_EXISTS;
using ::int16_t _LIBCPP_USING_IF_EXISTS;
using ::int32_t _LIBCPP_USING_IF_EXISTS;
using ::int64_t _LIBCPP_USING_IF_EXISTS;

using ::uint8_t _LIBCPP_USING_IF_EXISTS;
using ::uint16_t _LIBCPP_USING_IF_EXISTS;
using ::uint32_t _LIBCPP_USING_IF_EXISTS;
using ::uint64_t _LIBCPP_USING_IF_EXISTS;

using ::int_least8_t _LIBCPP_USING_IF_EXISTS;
using ::int_least16_t _LIBCPP_USING_IF_EXISTS;
using ::int_least32_t _LIBCPP_USING_IF_EXISTS;
using ::int_least64_t _LIBCPP_USING_IF_EXISTS;

using ::uint_least8_t _LIBCPP_USING_IF_EXISTS;
using ::uint_least16_t _LIBCPP_USING_IF_EXISTS;
using ::uint_least32_t _LIBCPP_USING_IF_EXISTS;
using ::uint_least64_t _LIBCPP_USING_IF_EXISTS;

using ::int_fast8_t _LIBCPP_USING_IF_EXISTS;
using ::int_fast16_t _LIBCPP_USING_IF_EXISTS;
using ::int_fast32_t _LIBCPP_USING_IF_EXISTS;
using ::int_fast64_t _LIBCPP_USING_IF_EXISTS;

using ::uint_fast8_t _LIBCPP_USING_IF_EXISTS;
using ::uint_fast16_t _LIBCPP_USING_IF_EXISTS;
using ::uint_fast32_t _LIBCPP_USING_IF_EXISTS;
using ::uint_fast64_t _LIBCPP_USING_IF_EXISTS;

using ::intptr_t _LIBCPP_USING_IF_EXISTS;
using ::uintptr_t _LIBCPP_USING_IF_EXISTS;

using ::intmax_t _LIBCPP_USING_IF_EXISTS;
using ::uintmax_t _LIBCPP_USING_IF_EXISTS;

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CSTDINT
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdint" 3
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

#ifdef _LIBCPP_NO_EXCEPTIONS
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_VCRUNTIME)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <vcruntime_typeinfo.h>
#endif /* expanded by -frewrite-includes */
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#else
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

namespace std  // purposefully not using versioning namespace
{


#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_MICROSOFT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

class _LIBCPP_EXCEPTION_ABI type_info
{
    type_info& operator=(const type_info&);
    type_info(const type_info&);

    mutable struct {
      const char *__undecorated_name;
      const char __decorated_name[1];
    } __data;

    int __compare(const type_info &__rhs) const _NOEXCEPT;

public:
    _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
    virtual ~type_info();

    const char *name() const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    bool before(const type_info& __arg) const _NOEXCEPT {
      return __compare(__arg) < 0;
    }

    size_t hash_code() const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const type_info& __arg) const _NOEXCEPT {
      return __compare(__arg) == 0;
    }

    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const type_info& __arg) const _NOEXCEPT
    { return !operator==(__arg); }
};

#else // !defined(_LIBCPP_ABI_MICROSOFT)
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

// ========================================================================== //
//                           Implementations
// ========================================================================== //
// ------------------------------------------------------------------------- //
//                               Unique
//               (_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION = 1)
// ------------------------------------------------------------------------- //
// This implementation of type_info assumes a unique copy of the RTTI for a
// given type inside a program. This is a valid assumption when abiding to the
// Itanium ABI (http://itanium-cxx-abi.github.io/cxx-abi/abi.html#vtable-components).
// Under this assumption, we can always compare the addresses of the type names
// to implement equality-comparison of type_infos instead of having to perform
// a deep string comparison.
// -------------------------------------------------------------------------- //
//                             NonUnique
//               (_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION = 2)
// -------------------------------------------------------------------------- //
// This implementation of type_info does not assume there is always a unique
// copy of the RTTI for a given type inside a program. For various reasons
// the linker may have failed to merge every copy of a types RTTI
// (For example: -Bsymbolic or llvm.org/PR37398). Under this assumption, two
// type_infos are equal if their addresses are equal or if a deep string
// comparison is equal.
// -------------------------------------------------------------------------- //
//                          NonUniqueARMRTTIBit
//               (_LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION = 3)
// -------------------------------------------------------------------------- //
// This implementation is specific to ARM64 on Apple platforms.
//
// This implementation of type_info does not assume always a unique copy of
// the RTTI for a given type inside a program. When constructing the type_info,
// the compiler packs the pointer to the type name into a uintptr_t and reserves
// the high bit of that pointer, which is assumed to be free for use under that
// ABI. If that high bit is set, that specific copy of the RTTI can't be assumed
// to be unique within the program. If the high bit is unset, then the RTTI can
// be assumed to be unique within the program.
//
// When comparing type_infos, if both RTTIs can be assumed to be unique, it
// suffices to compare their addresses. If both the RTTIs can't be assumed to
// be unique, we must perform a deep string comparison of the type names.
// However, if one of the RTTIs is guaranteed unique and the other one isn't,
// then both RTTIs are necessarily not to be considered equal.
//
// The intent of this design is to remove the need for weak symbols. Specifically,
// if a type would normally have a default-visibility RTTI emitted as a weak
// symbol, it is given hidden visibility instead and the non-unique bit is set.
// Otherwise, types declared with hidden visibility are always considered to have
// a unique RTTI: the RTTI is emitted with linkonce_odr linkage and is assumed
// to be deduplicated by the linker within the linked image. Across linked image
// boundaries, such types are thus considered different types.

// This value can be overriden in the __config_site. When it's not overriden,
// we pick a default implementation based on the platform here.
#ifndef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION

  // Windows binaries can't merge typeinfos, so use the NonUnique implementation.
# ifdef _LIBCPP_OBJECT_FORMAT_COFF
#   define _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION 2

  // On arm64 on Apple platforms, use the special NonUniqueARMRTTIBit implementation.
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__APPLE__) && defined(__LP64__) && !defined(__x86_64__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#   define _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION 3

  // On all other platforms, assume the Itanium C++ ABI and use the Unique implementation.
# else
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#   define _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION 1
# endif
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#endif
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

struct __type_info_implementations {
  struct __string_impl_base {
    typedef const char* __type_name_t;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    _LIBCPP_CONSTEXPR static const char* __type_name_to_string(__type_name_t __v) _NOEXCEPT {
      return __v;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    _LIBCPP_CONSTEXPR static __type_name_t __string_to_type_name(const char* __v) _NOEXCEPT {
      return __v;
    }
  };

  struct __unique_impl : __string_impl_base {
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static size_t __hash(__type_name_t __v) _NOEXCEPT {
      return reinterpret_cast<size_t>(__v);
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __eq(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      return __lhs == __rhs;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __lt(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      return __lhs < __rhs;
    }
  };

  struct __non_unique_impl : __string_impl_base {
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static size_t __hash(__type_name_t __ptr) _NOEXCEPT {
      size_t __hash = 5381;
      while (unsigned char __c = static_cast<unsigned char>(*__ptr++))
        __hash = (__hash * 33) ^ __c;
      return __hash;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __eq(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      return __lhs == __rhs || __builtin_strcmp(__lhs, __rhs) == 0;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __lt(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      return __builtin_strcmp(__lhs, __rhs) < 0;
    }
  };

  struct __non_unique_arm_rtti_bit_impl {
    typedef uintptr_t __type_name_t;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static const char* __type_name_to_string(__type_name_t __v) _NOEXCEPT {
      return reinterpret_cast<const char*>(__v &
          ~__non_unique_rtti_bit::value);
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static __type_name_t __string_to_type_name(const char* __v) _NOEXCEPT {
      return reinterpret_cast<__type_name_t>(__v);
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static size_t __hash(__type_name_t __v) _NOEXCEPT {
      if (__is_type_name_unique(__v))
        return __v;
      return __non_unique_impl::__hash(__type_name_to_string(__v));
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __eq(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      if (__lhs == __rhs)
        return true;
      if (__is_type_name_unique(__lhs) || __is_type_name_unique(__rhs))
        // Either both are unique and have a different address, or one of them
        // is unique and the other one isn't. In both cases they are unequal.
        return false;
      return __builtin_strcmp(__type_name_to_string(__lhs), __type_name_to_string(__rhs)) == 0;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE
    static bool __lt(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT {
      if (__is_type_name_unique(__lhs) || __is_type_name_unique(__rhs))
        return __lhs < __rhs;
      return __builtin_strcmp(__type_name_to_string(__lhs), __type_name_to_string(__rhs)) < 0;
    }

   private:
    // The unique bit is the top bit. It is expected that __type_name_t is 64 bits when
    // this implementation is actually used.
    typedef integral_constant<__type_name_t,
      (1ULL << ((__CHAR_BIT__ * sizeof(__type_name_t)) - 1))> __non_unique_rtti_bit;

    _LIBCPP_INLINE_VISIBILITY
    static bool __is_type_name_unique(__type_name_t __lhs) _NOEXCEPT {
      return !(__lhs & __non_unique_rtti_bit::value);
    }
  };

  typedef
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION == 1
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
    __unique_impl
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION == 2
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
    __non_unique_impl
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION == 3
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
    __non_unique_arm_rtti_bit_impl
#else
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
#   error invalid configuration for _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION
#endif
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
     __impl;
};

class _LIBCPP_EXCEPTION_ABI type_info
{
  type_info& operator=(const type_info&);
  type_info(const type_info&);

 protected:
    typedef __type_info_implementations::__impl __impl;

    __impl::__type_name_t __type_name;

    _LIBCPP_INLINE_VISIBILITY
    explicit type_info(const char* __n)
      : __type_name(__impl::__string_to_type_name(__n)) {}

public:
    _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
    virtual ~type_info();

    _LIBCPP_INLINE_VISIBILITY
    const char* name() const _NOEXCEPT
    {
      return __impl::__type_name_to_string(__type_name);
    }

    _LIBCPP_INLINE_VISIBILITY
    bool before(const type_info& __arg) const _NOEXCEPT
    {
      return __impl::__lt(__type_name, __arg.__type_name);
    }

    _LIBCPP_INLINE_VISIBILITY
    size_t hash_code() const _NOEXCEPT
    {
      return __impl::__hash(__type_name);
    }

    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const type_info& __arg) const _NOEXCEPT
    {
      return __impl::__eq(__type_name, __arg.__type_name);
    }

    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const type_info& __arg) const _NOEXCEPT
    { return !operator==(__arg); }
};
#endif // defined(_LIBCPP_ABI_MICROSOFT)
# 344 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

class _LIBCPP_EXCEPTION_ABI bad_cast
    : public exception
{
 public:
  bad_cast() _NOEXCEPT;
  bad_cast(const bad_cast&) _NOEXCEPT = default;
  virtual ~bad_cast() _NOEXCEPT;
  virtual const char* what() const _NOEXCEPT;
};

class _LIBCPP_EXCEPTION_ABI bad_typeid
    : public exception
{
 public:
  bad_typeid() _NOEXCEPT;
  virtual ~bad_typeid() _NOEXCEPT;
  virtual const char* what() const _NOEXCEPT;
};

}  // std

#endif // defined(_LIBCPP_ABI_VCRUNTIME)
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3

_LIBCPP_BEGIN_NAMESPACE_STD
_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_bad_cast()
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw bad_cast();
#else
# 375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
    _VSTD::abort();
#endif
# 377 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
}
_LIBCPP_END_NAMESPACE_STD

#endif // __LIBCPP_TYPEINFO
# 381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/typeinfo" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 1 3
// -*- C++ -*-
//===-------------------------- utility -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_UTILITY
#define _LIBCPP_UTILITY

/*
    utility synopsis

#include <initializer_list>

namespace std
{

template <class T>
    void
    swap(T& a, T& b);

namespace rel_ops
{
    template<class T> bool operator!=(const T&, const T&);
    template<class T> bool operator> (const T&, const T&);
    template<class T> bool operator<=(const T&, const T&);
    template<class T> bool operator>=(const T&, const T&);
}

template<class T>
void
swap(T& a, T& b) noexcept(is_nothrow_move_constructible<T>::value &&
                          is_nothrow_move_assignable<T>::value);

template <class T, size_t N>
void
swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));

template <class T> T&& forward(typename remove_reference<T>::type& t) noexcept;  // constexpr in C++14
template <class T> T&& forward(typename remove_reference<T>::type&& t) noexcept; // constexpr in C++14

template <class T> typename remove_reference<T>::type&& move(T&&) noexcept;      // constexpr in C++14

template <class T>
    typename conditional
    <
        !is_nothrow_move_constructible<T>::value && is_copy_constructible<T>::value,
        const T&,
        T&&
    >::type
    move_if_noexcept(T& x) noexcept; // constexpr in C++14

template <class T> constexpr add_const_t<T>& as_const(T& t) noexcept;      // C++17
template <class T>                      void as_const(const T&&) = delete; // C++17

template <class T> typename add_rvalue_reference<T>::type declval() noexcept;

template<class T, class U> constexpr bool cmp_equal(T t, U u) noexcept;         // C++20
template<class T, class U> constexpr bool cmp_not_equal(T t, U u) noexcept;     // C++20
template<class T, class U> constexpr bool cmp_less(T t, U u) noexcept;          // C++20
template<class T, class U> constexpr bool cmp_greater(T t, U u) noexcept;       // C++20
template<class T, class U> constexpr bool cmp_less_equal(T t, U u) noexcept;    // C++20
template<class T, class U> constexpr bool cmp_greater_equal(T t, U u) noexcept; // C++20
template<class R, class T> constexpr bool in_range(T t) noexcept;               // C++20

template <class T1, class T2>
struct pair
{
    typedef T1 first_type;
    typedef T2 second_type;

    T1 first;
    T2 second;

    pair(const pair&) = default;
    pair(pair&&) = default;
    explicit(see-below) constexpr pair();
    explicit(see-below) pair(const T1& x, const T2& y);                          // constexpr in C++14
    template <class U, class V> explicit(see-below) pair(U&& x, V&& y);          // constexpr in C++14
    template <class U, class V> explicit(see-below) pair(const pair<U, V>& p);   // constexpr in C++14
    template <class U, class V> explicit(see-below) pair(pair<U, V>&& p);        // constexpr in C++14
    template <class... Args1, class... Args2>
        pair(piecewise_construct_t, tuple<Args1...> first_args,
             tuple<Args2...> second_args);                                       // constexpr in C++20

    template <class U, class V> pair& operator=(const pair<U, V>& p);            // constexpr in C++20
    pair& operator=(pair&& p) noexcept(is_nothrow_move_assignable<T1>::value &&
                                       is_nothrow_move_assignable<T2>::value);   // constexpr in C++20
    template <class U, class V> pair& operator=(pair<U, V>&& p);                 // constexpr in C++20

    void swap(pair& p) noexcept(is_nothrow_swappable_v<T1> &&
                                is_nothrow_swappable_v<T2>);                     // constexpr in C++20
};

template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14
template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14
template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14
template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14
template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14
template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14

template <class T1, class T2> pair<V1, V2> make_pair(T1&&, T2&&);                // constexpr in C++14
template <class T1, class T2>
void
swap(pair<T1, T2>& x, pair<T1, T2>& y) noexcept(noexcept(x.swap(y)));            // constexpr in C++20

struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
inline constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();

template <class T> struct tuple_size;
template <size_t I, class T> struct tuple_element;

template <class T1, class T2> struct tuple_size<pair<T1, T2> >;
template <class T1, class T2> struct tuple_element<0, pair<T1, T2> >;
template <class T1, class T2> struct tuple_element<1, pair<T1, T2> >;

template<size_t I, class T1, class T2>
    typename tuple_element<I, pair<T1, T2> >::type&
    get(pair<T1, T2>&) noexcept; // constexpr in C++14

template<size_t I, class T1, class T2>
    const typename tuple_element<I, pair<T1, T2> >::type&
    get(const pair<T1, T2>&) noexcept; // constexpr in C++14

template<size_t I, class T1, class T2>
    typename tuple_element<I, pair<T1, T2> >::type&&
    get(pair<T1, T2>&&) noexcept; // constexpr in C++14

template<size_t I, class T1, class T2>
    const typename tuple_element<I, pair<T1, T2> >::type&&
    get(const pair<T1, T2>&&) noexcept; // constexpr in C++14

template<class T1, class T2>
    constexpr T1& get(pair<T1, T2>&) noexcept; // C++14

template<class T1, class T2>
    constexpr const T1& get(const pair<T1, T2>&) noexcept; // C++14

template<class T1, class T2>
    constexpr T1&& get(pair<T1, T2>&&) noexcept; // C++14

template<class T1, class T2>
    constexpr const T1&& get(const pair<T1, T2>&&) noexcept; // C++14

template<class T1, class T2>
    constexpr T1& get(pair<T2, T1>&) noexcept; // C++14

template<class T1, class T2>
    constexpr const T1& get(const pair<T2, T1>&) noexcept; // C++14

template<class T1, class T2>
    constexpr T1&& get(pair<T2, T1>&&) noexcept; // C++14

template<class T1, class T2>
    constexpr const T1&& get(const pair<T2, T1>&&) noexcept; // C++14

// C++14

template<class T, T... I>
struct integer_sequence
{
    typedef T value_type;

    static constexpr size_t size() noexcept;
};

template<size_t... I>
  using index_sequence = integer_sequence<size_t, I...>;

template<class T, T N>
  using make_integer_sequence = integer_sequence<T, 0, 1, ..., N-1>;
template<size_t N>
  using make_index_sequence = make_integer_sequence<size_t, N>;

template<class... T>
  using index_sequence_for = make_index_sequence<sizeof...(T)>;

template<class T, class U=T>
    T exchange(T& obj, U&& new_value);

// 20.2.7, in-place construction // C++17
struct in_place_t {
  explicit in_place_t() = default;
};
inline constexpr in_place_t in_place{};
template <class T>
  struct in_place_type_t {
    explicit in_place_type_t() = default;
  };
template <class T>
  inline constexpr in_place_type_t<T> in_place_type{};
template <size_t I>
  struct in_place_index_t {
    explicit in_place_index_t() = default;
  };
template <size_t I>
  inline constexpr in_place_index_t<I> in_place_index{};

// [utility.underlying], to_underlying
template <class T>
    constexpr underlying_type_t<T> to_underlying( T value ) noexcept; // C++2b

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <__tuple>
#endif /* expanded by -frewrite-includes */
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___TUPLE
#define _LIBCPP___TUPLE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
template <class _Tp, class...>
using __enable_if_tuple_size_imp = _Tp;

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
    const _Tp,
    typename enable_if<!is_volatile<_Tp>::value>::type,
    integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
    : public integral_constant<size_t, tuple_size<_Tp>::value> {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
    volatile _Tp,
    typename enable_if<!is_const<_Tp>::value>::type,
    integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
    : public integral_constant<size_t, tuple_size<_Tp>::value> {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp<
    const volatile _Tp,
    integral_constant<size_t, sizeof(tuple_size<_Tp>)>>>
    : public integral_constant<size_t, tuple_size<_Tp>::value> {};

#else
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<const _Tp> : public tuple_size<_Tp> {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<volatile _Tp> : public tuple_size<_Tp> {};
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size<const volatile _Tp> : public tuple_size<_Tp> {};
#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

template <size_t _Ip, class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_element;

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp>
{
    typedef _LIBCPP_NODEBUG_TYPE typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type;
};

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp>
{
    typedef _LIBCPP_NODEBUG_TYPE typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type;
};

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp>
{
    typedef _LIBCPP_NODEBUG_TYPE typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type;
};

template <class _Tp> struct __tuple_like : false_type {};

template <class _Tp> struct __tuple_like<const _Tp> : public __tuple_like<_Tp> {};
template <class _Tp> struct __tuple_like<volatile _Tp> : public __tuple_like<_Tp> {};
template <class _Tp> struct __tuple_like<const volatile _Tp> : public __tuple_like<_Tp> {};

// tuple specializations

#ifndef _LIBCPP_CXX03_LANG

template <size_t...> struct __tuple_indices {};

template <class _IdxType, _IdxType... _Values>
struct __integer_sequence {
  template <template <class _OIdxType, _OIdxType...> class _ToIndexSeq, class _ToIndexType>
  using __convert = _ToIndexSeq<_ToIndexType, _Values...>;

  template <size_t _Sp>
  using __to_tuple_indices = __tuple_indices<(_Values + _Sp)...>;
};

#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
namespace __detail {

template<typename _Tp, size_t ..._Extra> struct __repeat;
template<typename _Tp, _Tp ..._Np, size_t ..._Extra> struct __repeat<__integer_sequence<_Tp, _Np...>, _Extra...> {
  typedef _LIBCPP_NODEBUG_TYPE __integer_sequence<_Tp,
                           _Np...,
                           sizeof...(_Np) + _Np...,
                           2 * sizeof...(_Np) + _Np...,
                           3 * sizeof...(_Np) + _Np...,
                           4 * sizeof...(_Np) + _Np...,
                           5 * sizeof...(_Np) + _Np...,
                           6 * sizeof...(_Np) + _Np...,
                           7 * sizeof...(_Np) + _Np...,
                           _Extra...> type;
};

template<size_t _Np> struct __parity;
template<size_t _Np> struct __make : __parity<_Np % 8>::template __pmake<_Np> {};

template<> struct __make<0> { typedef __integer_sequence<size_t> type; };
template<> struct __make<1> { typedef __integer_sequence<size_t, 0> type; };
template<> struct __make<2> { typedef __integer_sequence<size_t, 0, 1> type; };
template<> struct __make<3> { typedef __integer_sequence<size_t, 0, 1, 2> type; };
template<> struct __make<4> { typedef __integer_sequence<size_t, 0, 1, 2, 3> type; };
template<> struct __make<5> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4> type; };
template<> struct __make<6> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5> type; };
template<> struct __make<7> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5, 6> type; };

template<> struct __parity<0> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type> {}; };
template<> struct __parity<1> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 1> {}; };
template<> struct __parity<2> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 2, _Np - 1> {}; };
template<> struct __parity<3> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<4> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<5> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<6> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<7> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 7, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };

} // namespace detail

#endif // !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__make_integer_seq)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
template <size_t _Ep, size_t _Sp>
using __make_indices_imp =
    typename __make_integer_seq<__integer_sequence, size_t, _Ep - _Sp>::template
    __to_tuple_indices<_Sp>;
#else
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
template <size_t _Ep, size_t _Sp>
using __make_indices_imp =
    typename __detail::__make<_Ep - _Sp>::type::template __to_tuple_indices<_Sp>;

#endif
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

template <size_t _Ep, size_t _Sp = 0>
struct __make_tuple_indices
{
    static_assert(_Sp <= _Ep, "__make_tuple_indices input error");
    typedef __make_indices_imp<_Ep, _Sp> type;
};


template <class ..._Tp> class _LIBCPP_TEMPLATE_VIS tuple;

template <class... _Tp> struct __tuple_like<tuple<_Tp...> > : true_type {};

template <class ..._Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_size<tuple<_Tp...> >
    : public integral_constant<size_t, sizeof...(_Tp)>
{
};

template <size_t _Ip, class ..._Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, tuple<_Tp...> >::type&
get(tuple<_Tp...>&) _NOEXCEPT;

template <size_t _Ip, class ..._Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, tuple<_Tp...> >::type&
get(const tuple<_Tp...>&) _NOEXCEPT;

template <size_t _Ip, class ..._Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, tuple<_Tp...> >::type&&
get(tuple<_Tp...>&&) _NOEXCEPT;

template <size_t _Ip, class ..._Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
get(const tuple<_Tp...>&&) _NOEXCEPT;

#endif // !defined(_LIBCPP_CXX03_LANG)
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

// pair specializations

template <class _T1, class _T2> struct __tuple_like<pair<_T1, _T2> > : true_type {};

template <size_t _Ip, class _T1, class _T2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, pair<_T1, _T2> >::type&
get(pair<_T1, _T2>&) _NOEXCEPT;

template <size_t _Ip, class _T1, class _T2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, pair<_T1, _T2> >::type&
get(const pair<_T1, _T2>&) _NOEXCEPT;

#ifndef _LIBCPP_CXX03_LANG
template <size_t _Ip, class _T1, class _T2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, pair<_T1, _T2> >::type&&
get(pair<_T1, _T2>&&) _NOEXCEPT;

template <size_t _Ip, class _T1, class _T2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, pair<_T1, _T2> >::type&&
get(const pair<_T1, _T2>&&) _NOEXCEPT;
#endif
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

// array specializations

template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;

template <class _Tp, size_t _Size> struct __tuple_like<array<_Tp, _Size> > : true_type {};

template <size_t _Ip, class _Tp, size_t _Size>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp&
get(array<_Tp, _Size>&) _NOEXCEPT;

template <size_t _Ip, class _Tp, size_t _Size>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
get(const array<_Tp, _Size>&) _NOEXCEPT;

#ifndef _LIBCPP_CXX03_LANG
template <size_t _Ip, class _Tp, size_t _Size>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp&&
get(array<_Tp, _Size>&&) _NOEXCEPT;

template <size_t _Ip, class _Tp, size_t _Size>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&&
get(const array<_Tp, _Size>&&) _NOEXCEPT;
#endif
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

#ifndef _LIBCPP_CXX03_LANG

// __tuple_types

template <class ..._Tp> struct __tuple_types {};

#if 0 /* disabled by -frewrite-includes */
#if !__has_builtin(__type_pack_element)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 252 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

namespace __indexer_detail {

template <size_t _Idx, class _Tp>
struct __indexed { using type _LIBCPP_NODEBUG_TYPE = _Tp; };

template <class _Types, class _Indexes> struct __indexer;

template <class ..._Types, size_t ..._Idx>
struct __indexer<__tuple_types<_Types...>, __tuple_indices<_Idx...>>
    : __indexed<_Idx, _Types>...
{};

template <size_t _Idx, class _Tp>
__indexed<_Idx, _Tp> __at_index(__indexed<_Idx, _Tp> const&);

} // namespace __indexer_detail

template <size_t _Idx, class ..._Types>
using __type_pack_element _LIBCPP_NODEBUG_TYPE = typename decltype(
    __indexer_detail::__at_index<_Idx>(
        __indexer_detail::__indexer<
            __tuple_types<_Types...>,
            typename __make_tuple_indices<sizeof...(_Types)>::type
        >{})
  )::type;
#endif
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

template <size_t _Ip, class ..._Types>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...>>
{
    static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range");
    typedef _LIBCPP_NODEBUG_TYPE __type_pack_element<_Ip, _Types...> type;
};


template <class ..._Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> >
    : public integral_constant<size_t, sizeof...(_Tp)>
{
};

template <class... _Tp> struct __tuple_like<__tuple_types<_Tp...> > : true_type {};

template <bool _ApplyLV, bool _ApplyConst, bool _ApplyVolatile>
struct __apply_cv_mf;
template <>
struct __apply_cv_mf<false, false, false> {
  template <class _Tp> using __apply = _Tp;
};
template <>
struct __apply_cv_mf<false, true, false> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = const _Tp;
};
template <>
struct __apply_cv_mf<false, false, true> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = volatile _Tp;
};
template <>
struct __apply_cv_mf<false, true, true> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = const volatile _Tp;
};
template <>
struct __apply_cv_mf<true, false, false> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = _Tp&;
};
template <>
struct __apply_cv_mf<true, true, false> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = const _Tp&;
};
template <>
struct __apply_cv_mf<true, false, true> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE  = volatile _Tp&;
};
template <>
struct __apply_cv_mf<true, true, true> {
  template <class _Tp> using __apply _LIBCPP_NODEBUG_TYPE = const volatile _Tp&;
};
template <class _Tp, class _RawTp = typename remove_reference<_Tp>::type>
using __apply_cv_t _LIBCPP_NODEBUG_TYPE  = __apply_cv_mf<
    is_lvalue_reference<_Tp>::value,
    is_const<_RawTp>::value,
    is_volatile<_RawTp>::value>;

// __make_tuple_types

// __make_tuple_types<_Tuple<_Types...>, _Ep, _Sp>::type is a
// __tuple_types<_Types...> using only those _Types in the range [_Sp, _Ep).
// _Sp defaults to 0 and _Ep defaults to tuple_size<_Tuple>.  If _Tuple is a
// lvalue_reference type, then __tuple_types<_Types&...> is the result.

template <class _TupleTypes, class _TupleIndices>
struct __make_tuple_types_flat;

template <template <class...> class _Tuple, class ..._Types, size_t ..._Idx>
struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> {
  // Specialization for pair, tuple, and __tuple_types
  template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>>
  using __apply_quals _LIBCPP_NODEBUG_TYPE = __tuple_types<
      typename _ApplyFn::template __apply<__type_pack_element<_Idx, _Types...>>...
    >;
};

template <class _Vt, size_t _Np, size_t ..._Idx>
struct __make_tuple_types_flat<array<_Vt, _Np>, __tuple_indices<_Idx...>> {
  template <size_t>
  using __value_type = _Vt;
  template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>>
  using __apply_quals = __tuple_types<
      typename _ApplyFn::template __apply<__value_type<_Idx>>...
    >;
};

template <class _Tp, size_t _Ep = tuple_size<typename remove_reference<_Tp>::type>::value,
          size_t _Sp = 0,
          bool _SameSize = (_Ep == tuple_size<typename remove_reference<_Tp>::type>::value)>
struct __make_tuple_types
{
    static_assert(_Sp <= _Ep, "__make_tuple_types input error");
    using _RawTp = typename remove_cv<typename remove_reference<_Tp>::type>::type;
    using _Maker = __make_tuple_types_flat<_RawTp, typename __make_tuple_indices<_Ep, _Sp>::type>;
    using type = typename _Maker::template __apply_quals<_Tp>;
};

template <class ..._Types, size_t _Ep>
struct __make_tuple_types<tuple<_Types...>, _Ep, 0, true> {
  typedef _LIBCPP_NODEBUG_TYPE __tuple_types<_Types...> type;
};

template <class ..._Types, size_t _Ep>
struct __make_tuple_types<__tuple_types<_Types...>, _Ep, 0, true> {
  typedef _LIBCPP_NODEBUG_TYPE __tuple_types<_Types...> type;
};

template <bool ..._Preds>
struct __all_dummy;

template <bool ..._Pred>
using __all = _IsSame<__all_dummy<_Pred...>, __all_dummy<((void)_Pred, true)...>>;

struct __tuple_sfinae_base {
  template <template <class, class...> class _Trait,
            class ..._LArgs, class ..._RArgs>
  static auto __do_test(__tuple_types<_LArgs...>, __tuple_types<_RArgs...>)
    -> __all<typename enable_if<_Trait<_LArgs, _RArgs>::value, bool>::type{true}...>;
  template <template <class...> class>
  static auto __do_test(...) -> false_type;

  template <class _FromArgs, class _ToArgs>
  using __constructible = decltype(__do_test<is_constructible>(_ToArgs{}, _FromArgs{}));
  template <class _FromArgs, class _ToArgs>
  using __convertible = decltype(__do_test<is_convertible>(_FromArgs{}, _ToArgs{}));
  template <class _FromArgs, class _ToArgs>
  using __assignable = decltype(__do_test<is_assignable>(_ToArgs{}, _FromArgs{}));
};

// __tuple_convertible

template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value,
                                bool = __tuple_like<_Up>::value>
struct __tuple_convertible
    : public false_type {};

template <class _Tp, class _Up>
struct __tuple_convertible<_Tp, _Up, true, true>
    : public __tuple_sfinae_base::__convertible<
      typename __make_tuple_types<_Tp>::type
    , typename __make_tuple_types<_Up>::type
    >
{};

// __tuple_constructible

template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value,
                                bool = __tuple_like<_Up>::value>
struct __tuple_constructible
    : public false_type {};

template <class _Tp, class _Up>
struct __tuple_constructible<_Tp, _Up, true, true>
    : public __tuple_sfinae_base::__constructible<
      typename __make_tuple_types<_Tp>::type
    , typename __make_tuple_types<_Up>::type
    >
{};

// __tuple_assignable

template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value,
                                bool = __tuple_like<_Up>::value>
struct __tuple_assignable
    : public false_type {};

template <class _Tp, class _Up>
struct __tuple_assignable<_Tp, _Up, true, true>
    : public __tuple_sfinae_base::__assignable<
      typename __make_tuple_types<_Tp>::type
    , typename __make_tuple_types<_Up&>::type
    >
{};


template <size_t _Ip, class ..._Tp>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, tuple<_Tp...> >
{
    typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 461 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
template <size_t _Ip, class ..._Tp>
using tuple_element_t _LIBCPP_NODEBUG_TYPE  = typename tuple_element <_Ip, _Tp...>::type;
#endif
# 464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

template <bool _IsTuple, class _SizeTrait, size_t _Expected>
struct __tuple_like_with_size_imp : false_type {};

template <class _SizeTrait, size_t _Expected>
struct __tuple_like_with_size_imp<true, _SizeTrait, _Expected>
    : integral_constant<bool, _SizeTrait::value == _Expected> {};

template <class _Tuple, size_t _ExpectedSize,
          class _RawTuple = typename __uncvref<_Tuple>::type>
using __tuple_like_with_size _LIBCPP_NODEBUG_TYPE = __tuple_like_with_size_imp<
                                   __tuple_like<_RawTuple>::value,
                                   tuple_size<_RawTuple>, _ExpectedSize
                              >;

struct _LIBCPP_TYPE_VIS __check_tuple_constructor_fail {

    static constexpr bool __enable_explicit_default() { return false; }
    static constexpr bool __enable_implicit_default() { return false; }
    template <class ...>
    static constexpr bool __enable_explicit() { return false; }
    template <class ...>
    static constexpr bool __enable_implicit() { return false; }
    template <class ...>
    static constexpr bool __enable_assign() { return false; }
};
#endif // !defined(_LIBCPP_CXX03_LANG)
# 491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

template <bool _CanCopy, bool _CanMove>
struct __sfinae_ctor_base {};
template <>
struct __sfinae_ctor_base<false, false> {
  __sfinae_ctor_base() = default;
  __sfinae_ctor_base(__sfinae_ctor_base const&) = delete;
  __sfinae_ctor_base(__sfinae_ctor_base &&) = delete;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default;
};
template <>
struct __sfinae_ctor_base<true, false> {
  __sfinae_ctor_base() = default;
  __sfinae_ctor_base(__sfinae_ctor_base const&) = default;
  __sfinae_ctor_base(__sfinae_ctor_base &&) = delete;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default;
};
template <>
struct __sfinae_ctor_base<false, true> {
  __sfinae_ctor_base() = default;
  __sfinae_ctor_base(__sfinae_ctor_base const&) = delete;
  __sfinae_ctor_base(__sfinae_ctor_base &&) = default;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default;
  __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default;
};

template <bool _CanCopy, bool _CanMove>
struct __sfinae_assign_base {};
template <>
struct __sfinae_assign_base<false, false> {
  __sfinae_assign_base() = default;
  __sfinae_assign_base(__sfinae_assign_base const&) = default;
  __sfinae_assign_base(__sfinae_assign_base &&) = default;
  __sfinae_assign_base& operator=(__sfinae_assign_base const&) = delete;
  __sfinae_assign_base& operator=(__sfinae_assign_base&&) = delete;
};
template <>
struct __sfinae_assign_base<true, false> {
  __sfinae_assign_base() = default;
  __sfinae_assign_base(__sfinae_assign_base const&) = default;
  __sfinae_assign_base(__sfinae_assign_base &&) = default;
  __sfinae_assign_base& operator=(__sfinae_assign_base const&) = default;
  __sfinae_assign_base& operator=(__sfinae_assign_base&&) = delete;
};
template <>
struct __sfinae_assign_base<false, true> {
  __sfinae_assign_base() = default;
  __sfinae_assign_base(__sfinae_assign_base const&) = default;
  __sfinae_assign_base(__sfinae_assign_base &&) = default;
  __sfinae_assign_base& operator=(__sfinae_assign_base const&) = delete;
  __sfinae_assign_base& operator=(__sfinae_assign_base&&) = default;
};
#endif // _LIBCPP_STD_VER > 14
# 548 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___TUPLE
# 552 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tuple" 3
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/as_const.h>
#endif /* expanded by -frewrite-includes */
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_AS_CONST_H
#define _LIBCPP___UTILITY_AS_CONST_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_MOVE_H
#define _LIBCPP___UTILITY_MOVE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename remove_reference<_Tp>::type&&
move(_Tp&& __t) _NOEXCEPT {
  typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tp>::type _Up;
  return static_cast<_Up&&>(__t);
}

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
using __move_if_noexcept_result_t =
    typename conditional<!is_nothrow_move_constructible<_Tp>::value && is_copy_constructible<_Tp>::value, const _Tp&,
                         _Tp&&>::type;
#else // _LIBCPP_CXX03_LANG
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
template <class _Tp>
using __move_if_noexcept_result_t = const _Tp&;
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 __move_if_noexcept_result_t<_Tp>
move_if_noexcept(_Tp& __x) _NOEXCEPT {
  return _VSTD::move(__x);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_MOVE_H
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/move.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
template <class _Tp>
_LIBCPP_NODISCARD_EXT constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; }

template <class _Tp>
void as_const(const _Tp&&) = delete;
#endif
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_AS_CONST_H
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/as_const.h" 3
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/cmp.h>
#endif /* expanded by -frewrite-includes */
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_CMP_H
#define _LIBCPP___UTILITY_CMP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 1 3
// -*- C++ -*-
//===---------------------------- limits ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_LIMITS
#define _LIBCPP_LIMITS

/*
    limits synopsis

namespace std
{

template<class T>
class numeric_limits
{
public:
    static constexpr bool is_specialized = false;
    static constexpr T min() noexcept;
    static constexpr T max() noexcept;
    static constexpr T lowest() noexcept;

    static constexpr int  digits = 0;
    static constexpr int  digits10 = 0;
    static constexpr int  max_digits10 = 0;
    static constexpr bool is_signed = false;
    static constexpr bool is_integer = false;
    static constexpr bool is_exact = false;
    static constexpr int  radix = 0;
    static constexpr T epsilon() noexcept;
    static constexpr T round_error() noexcept;

    static constexpr int  min_exponent = 0;
    static constexpr int  min_exponent10 = 0;
    static constexpr int  max_exponent = 0;
    static constexpr int  max_exponent10 = 0;

    static constexpr bool has_infinity = false;
    static constexpr bool has_quiet_NaN = false;
    static constexpr bool has_signaling_NaN = false;
    static constexpr float_denorm_style has_denorm = denorm_absent;
    static constexpr bool has_denorm_loss = false;
    static constexpr T infinity() noexcept;
    static constexpr T quiet_NaN() noexcept;
    static constexpr T signaling_NaN() noexcept;
    static constexpr T denorm_min() noexcept;

    static constexpr bool is_iec559 = false;
    static constexpr bool is_bounded = false;
    static constexpr bool is_modulo = false;

    static constexpr bool traps = false;
    static constexpr bool tinyness_before = false;
    static constexpr float_round_style round_style = round_toward_zero;
};

enum float_round_style
{
    round_indeterminate       = -1,
    round_toward_zero         =  0,
    round_to_nearest          =  1,
    round_toward_infinity     =  2,
    round_toward_neg_infinity =  3
};

enum float_denorm_style
{
    denorm_indeterminate = -1,
    denorm_absent = 0,
    denorm_present = 1
};

template<> class numeric_limits<cv bool>;

template<> class numeric_limits<cv char>;
template<> class numeric_limits<cv signed char>;
template<> class numeric_limits<cv unsigned char>;
template<> class numeric_limits<cv wchar_t>;
template<> class numeric_limits<cv char8_t>; // C++20
template<> class numeric_limits<cv char16_t>;
template<> class numeric_limits<cv char32_t>;

template<> class numeric_limits<cv short>;
template<> class numeric_limits<cv int>;
template<> class numeric_limits<cv long>;
template<> class numeric_limits<cv long long>;
template<> class numeric_limits<cv unsigned short>;
template<> class numeric_limits<cv unsigned int>;
template<> class numeric_limits<cv unsigned long>;
template<> class numeric_limits<cv unsigned long long>;

template<> class numeric_limits<cv float>;
template<> class numeric_limits<cv double>;
template<> class numeric_limits<cv long double>;

}  // std

*/
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_COMPILER_MSVC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#if 0 /* expanded by -frewrite-includes */
#include "__support/win32/limits_msvc_win32.h"
#endif /* expanded by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#endif // _LIBCPP_MSVCRT
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__IBMCPP__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#if 0 /* expanded by -frewrite-includes */
#include "__support/ibm/limits.h"
#endif /* expanded by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#endif // __IBMCPP__
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3


_LIBCPP_BEGIN_NAMESPACE_STD

enum float_round_style
{
    round_indeterminate       = -1,
    round_toward_zero         =  0,
    round_to_nearest          =  1,
    round_toward_infinity     =  2,
    round_toward_neg_infinity =  3
};

enum float_denorm_style
{
    denorm_indeterminate = -1,
    denorm_absent = 0,
    denorm_present = 1
};

template <class _Tp, bool = is_arithmetic<_Tp>::value>
class __libcpp_numeric_limits
{
protected:
    typedef _Tp type;

    static _LIBCPP_CONSTEXPR const  bool is_specialized = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();}

    static _LIBCPP_CONSTEXPR const int  digits = 0;
    static _LIBCPP_CONSTEXPR const int  digits10 = 0;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 0;
    static _LIBCPP_CONSTEXPR const bool is_signed = false;
    static _LIBCPP_CONSTEXPR const bool is_integer = false;
    static _LIBCPP_CONSTEXPR const bool is_exact = false;
    static _LIBCPP_CONSTEXPR const int  radix = 0;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();}

    static _LIBCPP_CONSTEXPR const int  min_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = 0;

    static _LIBCPP_CONSTEXPR const bool has_infinity = false;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type();}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = false;
    static _LIBCPP_CONSTEXPR const bool is_bounded = false;
    static _LIBCPP_CONSTEXPR const bool is_modulo = false;

    static _LIBCPP_CONSTEXPR const bool traps = false;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero;
};

template <class _Tp, int __digits, bool _IsSigned>
struct __libcpp_compute_min
{
    static _LIBCPP_CONSTEXPR const _Tp value = _Tp(_Tp(1) << __digits);
};

template <class _Tp, int __digits>
struct __libcpp_compute_min<_Tp, __digits, false>
{
    static _LIBCPP_CONSTEXPR const _Tp value = _Tp(0);
};

template <class _Tp>
class __libcpp_numeric_limits<_Tp, true>
{
protected:
    typedef _Tp type;

    static _LIBCPP_CONSTEXPR const bool is_specialized = true;

    static _LIBCPP_CONSTEXPR const bool is_signed = type(-1) < type(0);
    static _LIBCPP_CONSTEXPR const int  digits = static_cast<int>(sizeof(type) * __CHAR_BIT__ - is_signed);
    static _LIBCPP_CONSTEXPR const int  digits10 = digits * 3 / 10;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 0;
    static _LIBCPP_CONSTEXPR const type __min = __libcpp_compute_min<type, digits, is_signed>::value;
    static _LIBCPP_CONSTEXPR const type __max = is_signed ? type(type(~0) ^ __min) : type(~0);
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();}

    static _LIBCPP_CONSTEXPR const bool is_integer = true;
    static _LIBCPP_CONSTEXPR const bool is_exact = true;
    static _LIBCPP_CONSTEXPR const int  radix = 2;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);}

    static _LIBCPP_CONSTEXPR const int  min_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = 0;

    static _LIBCPP_CONSTEXPR const bool has_infinity = false;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = false;
    static _LIBCPP_CONSTEXPR const bool is_bounded = true;
    static _LIBCPP_CONSTEXPR const bool is_modulo = !_VSTD::is_signed<_Tp>::value;

#if 0 /* disabled by -frewrite-includes */
#if defined(__i386__) || defined(__x86_64__) || defined(__pnacl__) || \
    defined(__wasm__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool traps = true;
#else
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool traps = false;
#endif
# 248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero;
};

template <>
class __libcpp_numeric_limits<bool, true>
{
protected:
    typedef bool type;

    static _LIBCPP_CONSTEXPR const bool is_specialized = true;

    static _LIBCPP_CONSTEXPR const bool is_signed = false;
    static _LIBCPP_CONSTEXPR const int  digits = 1;
    static _LIBCPP_CONSTEXPR const int  digits10 = 0;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 0;
    static _LIBCPP_CONSTEXPR const type __min = false;
    static _LIBCPP_CONSTEXPR const type __max = true;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();}

    static _LIBCPP_CONSTEXPR const bool is_integer = true;
    static _LIBCPP_CONSTEXPR const bool is_exact = true;
    static _LIBCPP_CONSTEXPR const int  radix = 2;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);}

    static _LIBCPP_CONSTEXPR const int  min_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent = 0;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = 0;

    static _LIBCPP_CONSTEXPR const bool has_infinity = false;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = false;
    static _LIBCPP_CONSTEXPR const bool is_bounded = true;
    static _LIBCPP_CONSTEXPR const bool is_modulo = false;

    static _LIBCPP_CONSTEXPR const bool traps = false;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero;
};

template <>
class __libcpp_numeric_limits<float, true>
{
protected:
    typedef float type;

    static _LIBCPP_CONSTEXPR const bool is_specialized = true;

    static _LIBCPP_CONSTEXPR const bool is_signed = true;
    static _LIBCPP_CONSTEXPR const int  digits = __FLT_MANT_DIG__;
    static _LIBCPP_CONSTEXPR const int  digits10 = __FLT_DIG__;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 2+(digits * 30103l)/100000l;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __FLT_MIN__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __FLT_MAX__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();}

    static _LIBCPP_CONSTEXPR const bool is_integer = false;
    static _LIBCPP_CONSTEXPR const bool is_exact = false;
    static _LIBCPP_CONSTEXPR const int  radix = __FLT_RADIX__;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __FLT_EPSILON__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5F;}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __FLT_MIN_EXP__;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __FLT_MIN_10_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __FLT_MAX_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __FLT_MAX_10_EXP__;

    static _LIBCPP_CONSTEXPR const bool has_infinity = true;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_valf();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanf("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansf("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __FLT_DENORM_MIN__;}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = true;
    static _LIBCPP_CONSTEXPR const bool is_bounded = true;
    static _LIBCPP_CONSTEXPR const bool is_modulo = false;

    static _LIBCPP_CONSTEXPR const bool traps = false;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest;
};

template <>
class __libcpp_numeric_limits<double, true>
{
protected:
    typedef double type;

    static _LIBCPP_CONSTEXPR const bool is_specialized = true;

    static _LIBCPP_CONSTEXPR const bool is_signed = true;
    static _LIBCPP_CONSTEXPR const int  digits = __DBL_MANT_DIG__;
    static _LIBCPP_CONSTEXPR const int  digits10 = __DBL_DIG__;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 2+(digits * 30103l)/100000l;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __DBL_MIN__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __DBL_MAX__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();}

    static _LIBCPP_CONSTEXPR const bool is_integer = false;
    static _LIBCPP_CONSTEXPR const bool is_exact = false;
    static _LIBCPP_CONSTEXPR const int  radix = __FLT_RADIX__;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __DBL_EPSILON__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __DBL_MIN_EXP__;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __DBL_MIN_10_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __DBL_MAX_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __DBL_MAX_10_EXP__;

    static _LIBCPP_CONSTEXPR const bool has_infinity = true;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_val();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nan("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nans("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __DBL_DENORM_MIN__;}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = true;
    static _LIBCPP_CONSTEXPR const bool is_bounded = true;
    static _LIBCPP_CONSTEXPR const bool is_modulo = false;

    static _LIBCPP_CONSTEXPR const bool traps = false;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest;
};

template <>
class __libcpp_numeric_limits<long double, true>
{
protected:
    typedef long double type;

    static _LIBCPP_CONSTEXPR const bool is_specialized = true;

    static _LIBCPP_CONSTEXPR const bool is_signed = true;
    static _LIBCPP_CONSTEXPR const int  digits = __LDBL_MANT_DIG__;
    static _LIBCPP_CONSTEXPR const int  digits10 = __LDBL_DIG__;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = 2+(digits * 30103l)/100000l;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __LDBL_MIN__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __LDBL_MAX__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();}

    static _LIBCPP_CONSTEXPR const bool is_integer = false;
    static _LIBCPP_CONSTEXPR const bool is_exact = false;
    static _LIBCPP_CONSTEXPR const int  radix = __FLT_RADIX__;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __LDBL_EPSILON__;}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5L;}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __LDBL_MIN_EXP__;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __LDBL_MIN_10_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __LDBL_MAX_EXP__;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __LDBL_MAX_10_EXP__;

    static _LIBCPP_CONSTEXPR const bool has_infinity = true;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_vall();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanl("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansl("");}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __LDBL_DENORM_MIN__;}

#if 0 /* disabled by -frewrite-includes */
#if (defined(__ppc__) || defined(__ppc64__))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool is_iec559 = false;
#else
# 432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool is_iec559 = true;
#endif
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
    static _LIBCPP_CONSTEXPR const bool is_bounded = true;
    static _LIBCPP_CONSTEXPR const bool is_modulo = false;

    static _LIBCPP_CONSTEXPR const bool traps = false;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = false;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest;
};

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS numeric_limits
    : private __libcpp_numeric_limits<typename remove_cv<_Tp>::type>
{
    typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base;
    typedef typename __base::type type;
public:
    static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();}

    static _LIBCPP_CONSTEXPR const int  digits = __base::digits;
    static _LIBCPP_CONSTEXPR const int  digits10 = __base::digits10;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = __base::max_digits10;
    static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
    static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
    static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
    static _LIBCPP_CONSTEXPR const int  radix = __base::radix;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __base::min_exponent;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __base::min_exponent10;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __base::max_exponent;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __base::max_exponent10;

    static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
    static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
    static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;

    static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
};

template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_specialized;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_signed;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_integer;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_exact;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::radix;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_infinity;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_quiet_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_signaling_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<_Tp>::has_denorm;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_denorm_loss;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_iec559;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_bounded;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_modulo;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::traps;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::tinyness_before;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style;

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS numeric_limits<const _Tp>
    : private numeric_limits<_Tp>
{
    typedef numeric_limits<_Tp> __base;
    typedef _Tp type;
public:
    static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();}

    static _LIBCPP_CONSTEXPR const int  digits = __base::digits;
    static _LIBCPP_CONSTEXPR const int  digits10 = __base::digits10;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = __base::max_digits10;
    static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
    static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
    static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
    static _LIBCPP_CONSTEXPR const int  radix = __base::radix;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __base::min_exponent;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __base::min_exponent10;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __base::max_exponent;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __base::max_exponent10;

    static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
    static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
    static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;

    static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
};

template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_specialized;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_signed;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_integer;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_exact;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::radix;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_infinity;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_quiet_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_signaling_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const _Tp>::has_denorm;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_denorm_loss;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_iec559;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_bounded;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_modulo;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::traps;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::tinyness_before;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const _Tp>::round_style;

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS numeric_limits<volatile _Tp>
    : private numeric_limits<_Tp>
{
    typedef numeric_limits<_Tp> __base;
    typedef _Tp type;
public:
    static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();}

    static _LIBCPP_CONSTEXPR const int  digits = __base::digits;
    static _LIBCPP_CONSTEXPR const int  digits10 = __base::digits10;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = __base::max_digits10;
    static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
    static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
    static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
    static _LIBCPP_CONSTEXPR const int  radix = __base::radix;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __base::min_exponent;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __base::min_exponent10;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __base::max_exponent;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __base::max_exponent10;

    static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
    static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
    static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;

    static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
};

template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_specialized;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_signed;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_integer;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_exact;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::radix;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_infinity;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_quiet_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_signaling_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<volatile _Tp>::has_denorm;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_denorm_loss;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_iec559;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_bounded;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_modulo;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::traps;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::tinyness_before;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_round_style numeric_limits<volatile _Tp>::round_style;

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS numeric_limits<const volatile _Tp>
    : private numeric_limits<_Tp>
{
    typedef numeric_limits<_Tp> __base;
    typedef _Tp type;
public:
    static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();}

    static _LIBCPP_CONSTEXPR const int  digits = __base::digits;
    static _LIBCPP_CONSTEXPR const int  digits10 = __base::digits10;
    static _LIBCPP_CONSTEXPR const int  max_digits10 = __base::max_digits10;
    static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
    static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
    static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
    static _LIBCPP_CONSTEXPR const int  radix = __base::radix;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();}

    static _LIBCPP_CONSTEXPR const int  min_exponent = __base::min_exponent;
    static _LIBCPP_CONSTEXPR const int  min_exponent10 = __base::min_exponent10;
    static _LIBCPP_CONSTEXPR const int  max_exponent = __base::max_exponent;
    static _LIBCPP_CONSTEXPR const int  max_exponent10 = __base::max_exponent10;

    static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
    static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();}

    static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
    static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
    static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;

    static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
    static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
    static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
};

template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_specialized;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_digits10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_signed;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_integer;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_exact;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::radix;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent;
template <class _Tp>
    _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent10;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_infinity;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_quiet_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_signaling_NaN;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_denorm_loss;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_iec559;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_bounded;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_modulo;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::traps;
template <class _Tp>
    _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::tinyness_before;
template <class _Tp>
    _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const volatile _Tp>::round_style;

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_LIMITS
# 819 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
template<class _Tp, class... _Up>
struct _IsSameAsAny : _Or<_IsSame<_Tp, _Up>...> {};

template<class _Tp>
concept __is_safe_integral_cmp = is_integral_v<_Tp> &&
                      !_IsSameAsAny<_Tp, bool, char,
#ifndef _LIBCPP_HAS_NO_CHAR8_T
                                    char8_t,
#endif
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
                                    char16_t, char32_t,
#endif
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
                                    wchar_t>::value;

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_equal(_Tp __t, _Up __u) noexcept
{
  if constexpr (is_signed_v<_Tp> == is_signed_v<_Up>)
    return __t == __u;
  else if constexpr (is_signed_v<_Tp>)
    return __t < 0 ? false : make_unsigned_t<_Tp>(__t) == __u;
  else
    return __u < 0 ? false : __t == make_unsigned_t<_Up>(__u);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_not_equal(_Tp __t, _Up __u) noexcept
{
  return !_VSTD::cmp_equal(__t, __u);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_less(_Tp __t, _Up __u) noexcept
{
  if constexpr (is_signed_v<_Tp> == is_signed_v<_Up>)
    return __t < __u;
  else if constexpr (is_signed_v<_Tp>)
    return __t < 0 ? true : make_unsigned_t<_Tp>(__t) < __u;
  else
    return __u < 0 ? false : __t < make_unsigned_t<_Up>(__u);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_greater(_Tp __t, _Up __u) noexcept
{
  return _VSTD::cmp_less(__u, __t);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_less_equal(_Tp __t, _Up __u) noexcept
{
  return !_VSTD::cmp_greater(__t, __u);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool cmp_greater_equal(_Tp __t, _Up __u) noexcept
{
  return !_VSTD::cmp_less(__t, __u);
}

template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
bool in_range(_Up __u) noexcept
{
  return _VSTD::cmp_less_equal(__u, numeric_limits<_Tp>::max()) &&
         _VSTD::cmp_greater_equal(__u, numeric_limits<_Tp>::min());
}
#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_CMP_H
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/cmp.h" 3
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/declval.h>
#endif /* expanded by -frewrite-includes */
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_DECLVAL_H
#define _LIBCPP___UTILITY_DECLVAL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// Suppress deprecation notice for volatile-qualified return type resulting
// from volatile-qualified types _Tp.
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
_Tp&& __declval(int);
template <class _Tp>
_Tp __declval(long);
_LIBCPP_SUPPRESS_DEPRECATED_POP

template <class _Tp>
decltype(__declval<_Tp>(0)) declval() _NOEXCEPT;

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_DECLVAL_H
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/declval.h" 3
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/exchange.h>
#endif /* expanded by -frewrite-includes */
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_EXCHANGE_H
#define _LIBCPP___UTILITY_EXCHANGE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
template<class _T1, class _T2 = _T1>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_T1 exchange(_T1& __obj, _T2 && __new_value)
{
    _T1 __old_value = _VSTD::move(__obj);
    __obj = _VSTD::forward<_T2>(__new_value);
    return __old_value;
}
#endif // _LIBCPP_STD_VER > 11
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_EXCHANGE_H
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/exchange.h" 3
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/in_place.h>
#endif /* expanded by -frewrite-includes */
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_IN_PLACE_H
#define _LIBCPP___UTILITY_IN_PLACE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3

struct _LIBCPP_TYPE_VIS in_place_t {
    explicit in_place_t() = default;
};
_LIBCPP_INLINE_VAR constexpr in_place_t in_place{};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS in_place_type_t {
    explicit in_place_type_t() = default;
};
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr in_place_type_t<_Tp> in_place_type{};

template <size_t _Idx>
struct _LIBCPP_TEMPLATE_VIS in_place_index_t {
    explicit in_place_index_t() = default;
};
template <size_t _Idx>
_LIBCPP_INLINE_VAR constexpr in_place_index_t<_Idx> in_place_index{};

template <class _Tp> struct __is_inplace_type_imp : false_type {};
template <class _Tp> struct __is_inplace_type_imp<in_place_type_t<_Tp>> : true_type {};

template <class _Tp>
using __is_inplace_type = __is_inplace_type_imp<__uncvref_t<_Tp>>;

template <class _Tp> struct __is_inplace_index_imp : false_type {};
template <size_t _Idx> struct __is_inplace_index_imp<in_place_index_t<_Idx>> : true_type {};

template <class _Tp>
using __is_inplace_index = __is_inplace_index_imp<__uncvref_t<_Tp>>;

#endif // _LIBCPP_STD_VER > 14
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_IN_PLACE_H
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/in_place.h" 3
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/integer_sequence.h>
#endif /* expanded by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_INTEGER_SEQUENCE_H
#define _LIBCPP___UTILITY_INTEGER_SEQUENCE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

template<class _Tp, _Tp... _Ip>
struct _LIBCPP_TEMPLATE_VIS integer_sequence
{
    typedef _Tp value_type;
    static_assert( is_integral<_Tp>::value,
                  "std::integer_sequence can only be instantiated with an integral type" );
    static
    _LIBCPP_INLINE_VISIBILITY
    constexpr
    size_t
    size() noexcept { return sizeof...(_Ip); }
};

template<size_t... _Ip>
    using index_sequence = integer_sequence<size_t, _Ip...>;

#if 0 /* disabled by -frewrite-includes */
#if __has_builtin(__make_integer_seq) && !defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

template <class _Tp, _Tp _Ep>
using __make_integer_sequence _LIBCPP_NODEBUG_TYPE = __make_integer_seq<integer_sequence, _Tp, _Ep>;

#else
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

template<typename _Tp, _Tp _Np> using __make_integer_sequence_unchecked _LIBCPP_NODEBUG_TYPE  =
  typename __detail::__make<_Np>::type::template __convert<integer_sequence, _Tp>;

template <class _Tp, _Tp _Ep>
struct __make_integer_sequence_checked
{
    static_assert(is_integral<_Tp>::value,
                  "std::make_integer_sequence can only be instantiated with an integral type" );
    static_assert(0 <= _Ep, "std::make_integer_sequence must have a non-negative sequence length");
    // Workaround GCC bug by preventing bad installations when 0 <= _Ep
    // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68929
    typedef _LIBCPP_NODEBUG_TYPE  __make_integer_sequence_unchecked<_Tp, 0 <= _Ep ? _Ep : 0> type;
};

template <class _Tp, _Tp _Ep>
using __make_integer_sequence _LIBCPP_NODEBUG_TYPE = typename __make_integer_sequence_checked<_Tp, _Ep>::type;

#endif
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

template<class _Tp, _Tp _Np>
    using make_integer_sequence = __make_integer_sequence<_Tp, _Np>;

template<size_t _Np>
    using make_index_sequence = make_integer_sequence<size_t, _Np>;

template<class... _Tp>
    using index_sequence_for = make_index_sequence<sizeof...(_Tp)>;

#endif // _LIBCPP_STD_VER > 11
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_INTEGER_SEQUENCE_H
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/integer_sequence.h" 3
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/pair.h>
#endif /* expanded by -frewrite-includes */
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_PAIR_H
#define _LIBCPP___UTILITY_PAIR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unwrap_ref.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_UNWRAP_REF_H
#define _LIBCPP___FUNCTIONAL_UNWRAP_REF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
struct __unwrap_reference { typedef _LIBCPP_NODEBUG_TYPE _Tp type; };

template <class _Tp>
class reference_wrapper;

template <class _Tp>
struct __unwrap_reference<reference_wrapper<_Tp> > { typedef _LIBCPP_NODEBUG_TYPE _Tp& type; };

template <class _Tp>
struct decay;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
template <class _Tp>
struct unwrap_reference : __unwrap_reference<_Tp> { };

template <class _Tp>
using unwrap_reference_t = typename unwrap_reference<_Tp>::type;

template <class _Tp>
struct unwrap_ref_decay : unwrap_reference<typename decay<_Tp>::type> { };

template <class _Tp>
using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type;
#endif // > C++17
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3

template <class _Tp>
struct __unwrap_ref_decay
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
    : unwrap_ref_decay<_Tp>
#else
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
    : __unwrap_reference<typename decay<_Tp>::type>
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
{ };

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___FUNCTIONAL_UNWRAP_REF_H
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unwrap_ref.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__tuple>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/piecewise_construct.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H
#define _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { explicit piecewise_construct_t() = default; };
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
extern _LIBCPP_EXPORTED_FROM_ABI const piecewise_construct_t piecewise_construct;// = piecewise_construct_t();
#else
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
/* _LIBCPP_INLINE_VAR */ constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
#endif
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_PIECEWISE_CONSTRUCT_H
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/piecewise_construct.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD


#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
template <class, class>
struct __non_trivially_copyable_base {
  _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
  __non_trivially_copyable_base() _NOEXCEPT {}
  _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
  __non_trivially_copyable_base(__non_trivially_copyable_base const&) _NOEXCEPT {}
};
#endif
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

template <class _T1, class _T2>
struct _LIBCPP_TEMPLATE_VIS pair
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
: private __non_trivially_copyable_base<_T1, _T2>
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
{
    typedef _T1 first_type;
    typedef _T2 second_type;

    _T1 first;
    _T2 second;

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
    pair(pair const&) = default;
    pair(pair&&) = default;
#else
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
  // Use the implicitly declared copy constructor in C++03
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

#ifdef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    pair() : first(), second() {}

    _LIBCPP_INLINE_VISIBILITY
    pair(_T1 const& __t1, _T2 const& __t2) : first(__t1), second(__t2) {}

    template <class _U1, class _U2>
    _LIBCPP_INLINE_VISIBILITY
    pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}

    _LIBCPP_INLINE_VISIBILITY
    pair& operator=(pair const& __p) {
        first = __p.first;
        second = __p.second;
        return *this;
    }
#else
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
    template <bool _Val>
    using _EnableB _LIBCPP_NODEBUG_TYPE = typename enable_if<_Val, bool>::type;

    struct _CheckArgs {
      template <int&...>
      static constexpr bool __enable_explicit_default() {
          return is_default_constructible<_T1>::value
              && is_default_constructible<_T2>::value
              && !__enable_implicit_default<>();
      }

      template <int&...>
      static constexpr bool __enable_implicit_default() {
          return __is_implicitly_default_constructible<_T1>::value
              && __is_implicitly_default_constructible<_T2>::value;
      }

      template <class _U1, class _U2>
      static constexpr bool __enable_explicit() {
          return is_constructible<first_type, _U1>::value
              && is_constructible<second_type, _U2>::value
              && (!is_convertible<_U1, first_type>::value
                  || !is_convertible<_U2, second_type>::value);
      }

      template <class _U1, class _U2>
      static constexpr bool __enable_implicit() {
          return is_constructible<first_type, _U1>::value
              && is_constructible<second_type, _U2>::value
              && is_convertible<_U1, first_type>::value
              && is_convertible<_U2, second_type>::value;
      }
    };

    template <bool _MaybeEnable>
    using _CheckArgsDep _LIBCPP_NODEBUG_TYPE = typename conditional<
      _MaybeEnable, _CheckArgs, __check_tuple_constructor_fail>::type;

    struct _CheckTupleLikeConstructor {
        template <class _Tuple>
        static constexpr bool __enable_implicit() {
            return __tuple_convertible<_Tuple, pair>::value;
        }

        template <class _Tuple>
        static constexpr bool __enable_explicit() {
            return __tuple_constructible<_Tuple, pair>::value
               && !__tuple_convertible<_Tuple, pair>::value;
        }

        template <class _Tuple>
        static constexpr bool __enable_assign() {
            return __tuple_assignable<_Tuple, pair>::value;
        }
    };

    template <class _Tuple>
    using _CheckTLC _LIBCPP_NODEBUG_TYPE = typename conditional<
        __tuple_like_with_size<_Tuple, 2>::value
            && !is_same<typename decay<_Tuple>::type, pair>::value,
        _CheckTupleLikeConstructor,
        __check_tuple_constructor_fail
    >::type;

    template<bool _Dummy = true, _EnableB<
            _CheckArgsDep<_Dummy>::__enable_explicit_default()
    > = false>
    explicit _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    pair() _NOEXCEPT_(is_nothrow_default_constructible<first_type>::value &&
                      is_nothrow_default_constructible<second_type>::value)
        : first(), second() {}

    template<bool _Dummy = true, _EnableB<
            _CheckArgsDep<_Dummy>::__enable_implicit_default()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    pair() _NOEXCEPT_(is_nothrow_default_constructible<first_type>::value &&
                      is_nothrow_default_constructible<second_type>::value)
        : first(), second() {}

    template <bool _Dummy = true, _EnableB<
             _CheckArgsDep<_Dummy>::template __enable_explicit<_T1 const&, _T2 const&>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit pair(_T1 const& __t1, _T2 const& __t2)
        _NOEXCEPT_(is_nothrow_copy_constructible<first_type>::value &&
                   is_nothrow_copy_constructible<second_type>::value)
        : first(__t1), second(__t2) {}

    template<bool _Dummy = true, _EnableB<
            _CheckArgsDep<_Dummy>::template __enable_implicit<_T1 const&, _T2 const&>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    pair(_T1 const& __t1, _T2 const& __t2)
        _NOEXCEPT_(is_nothrow_copy_constructible<first_type>::value &&
                   is_nothrow_copy_constructible<second_type>::value)
        : first(__t1), second(__t2) {}

    template<class _U1, class _U2, _EnableB<
             _CheckArgs::template __enable_explicit<_U1, _U2>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit pair(_U1&& __u1, _U2&& __u2)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1>::value &&
                    is_nothrow_constructible<second_type, _U2>::value))
        : first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {}

    template<class _U1, class _U2, _EnableB<
            _CheckArgs::template __enable_implicit<_U1, _U2>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    pair(_U1&& __u1, _U2&& __u2)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1>::value &&
                    is_nothrow_constructible<second_type, _U2>::value))
        : first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {}

    template<class _U1, class _U2, _EnableB<
            _CheckArgs::template __enable_explicit<_U1 const&, _U2 const&>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit pair(pair<_U1, _U2> const& __p)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1 const&>::value &&
                    is_nothrow_constructible<second_type, _U2 const&>::value))
        : first(__p.first), second(__p.second) {}

    template<class _U1, class _U2, _EnableB<
            _CheckArgs::template __enable_implicit<_U1 const&, _U2 const&>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    pair(pair<_U1, _U2> const& __p)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1 const&>::value &&
                    is_nothrow_constructible<second_type, _U2 const&>::value))
        : first(__p.first), second(__p.second) {}

    template<class _U1, class _U2, _EnableB<
            _CheckArgs::template __enable_explicit<_U1, _U2>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit pair(pair<_U1, _U2>&&__p)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1&&>::value &&
                    is_nothrow_constructible<second_type, _U2&&>::value))
        : first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {}

    template<class _U1, class _U2, _EnableB<
            _CheckArgs::template __enable_implicit<_U1, _U2>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    pair(pair<_U1, _U2>&& __p)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _U1&&>::value &&
                    is_nothrow_constructible<second_type, _U2&&>::value))
        : first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {}

    template<class _Tuple, _EnableB<
            _CheckTLC<_Tuple>::template __enable_explicit<_Tuple>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit pair(_Tuple&& __p)
        : first(_VSTD::get<0>(_VSTD::forward<_Tuple>(__p))),
          second(_VSTD::get<1>(_VSTD::forward<_Tuple>(__p))) {}

    template<class _Tuple, _EnableB<
            _CheckTLC<_Tuple>::template __enable_implicit<_Tuple>()
    > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    pair(_Tuple&& __p)
        : first(_VSTD::get<0>(_VSTD::forward<_Tuple>(__p))),
          second(_VSTD::get<1>(_VSTD::forward<_Tuple>(__p))) {}

    template <class... _Args1, class... _Args2>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair(piecewise_construct_t __pc,
         tuple<_Args1...> __first_args, tuple<_Args2...> __second_args)
        _NOEXCEPT_((is_nothrow_constructible<first_type, _Args1...>::value &&
                    is_nothrow_constructible<second_type, _Args2...>::value))
        : pair(__pc, __first_args, __second_args,
                typename __make_tuple_indices<sizeof...(_Args1)>::type(),
                typename __make_tuple_indices<sizeof...(_Args2) >::type()) {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair& operator=(typename conditional<
                        is_copy_assignable<first_type>::value &&
                        is_copy_assignable<second_type>::value,
                    pair, __nat>::type const& __p)
        _NOEXCEPT_(is_nothrow_copy_assignable<first_type>::value &&
                   is_nothrow_copy_assignable<second_type>::value)
    {
        first = __p.first;
        second = __p.second;
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair& operator=(typename conditional<
                        is_move_assignable<first_type>::value &&
                        is_move_assignable<second_type>::value,
                    pair, __nat>::type&& __p)
        _NOEXCEPT_(is_nothrow_move_assignable<first_type>::value &&
                   is_nothrow_move_assignable<second_type>::value)
    {
        first = _VSTD::forward<first_type>(__p.first);
        second = _VSTD::forward<second_type>(__p.second);
        return *this;
    }

    template <class _Tuple, _EnableB<
            _CheckTLC<_Tuple>::template __enable_assign<_Tuple>()
     > = false>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair& operator=(_Tuple&& __p) {
        first = _VSTD::get<0>(_VSTD::forward<_Tuple>(__p));
        second = _VSTD::get<1>(_VSTD::forward<_Tuple>(__p));
        return *this;
    }
#endif
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    void
    swap(pair& __p) _NOEXCEPT_(__is_nothrow_swappable<first_type>::value &&
                               __is_nothrow_swappable<second_type>::value)
    {
        using _VSTD::swap;
        swap(first,  __p.first);
        swap(second, __p.second);
    }
private:

#ifndef _LIBCPP_CXX03_LANG
    template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair(piecewise_construct_t,
         tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,
         __tuple_indices<_I1...>, __tuple_indices<_I2...>);
#endif
# 311 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _T1, class _T2>
pair(_T1, _T2) -> pair<_T1, _T2>;
#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator==(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return __x.first == __y.first && __x.second == __y.second;
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator!=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return !(__x == __y);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator< (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return __x.first < __y.first || (!(__y.first < __x.first) && __x.second < __y.second);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator> (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return __y < __x;
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator>=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return !(__x < __y);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator<=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
{
    return !(__y < __x);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
typename enable_if
<
    __is_swappable<_T1>::value &&
    __is_swappable<_T2>::value,
    void
>::type
swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
                     _NOEXCEPT_((__is_nothrow_swappable<_T1>::value &&
                                 __is_nothrow_swappable<_T2>::value))
{
    __x.swap(__y);
}

#ifndef _LIBCPP_CXX03_LANG

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<typename __unwrap_ref_decay<_T1>::type, typename __unwrap_ref_decay<_T2>::type>
make_pair(_T1&& __t1, _T2&& __t2)
{
    return pair<typename __unwrap_ref_decay<_T1>::type, typename __unwrap_ref_decay<_T2>::type>
               (_VSTD::forward<_T1>(__t1), _VSTD::forward<_T2>(__t2));
}

#else  // _LIBCPP_CXX03_LANG
# 393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
pair<_T1,_T2>
make_pair(_T1 __x, _T2 __y)
{
    return pair<_T1, _T2>(__x, __y);
}

#endif // _LIBCPP_CXX03_LANG
# 403 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

template <class _T1, class _T2>
  struct _LIBCPP_TEMPLATE_VIS tuple_size<pair<_T1, _T2> >
    : public integral_constant<size_t, 2> {};

template <size_t _Ip, class _T1, class _T2>
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, pair<_T1, _T2> >
{
    static_assert(_Ip < 2, "Index out of bounds in std::tuple_element<std::pair<T1, T2>>");
};

template <class _T1, class _T2>
struct _LIBCPP_TEMPLATE_VIS tuple_element<0, pair<_T1, _T2> >
{
    typedef _LIBCPP_NODEBUG_TYPE _T1 type;
};

template <class _T1, class _T2>
struct _LIBCPP_TEMPLATE_VIS tuple_element<1, pair<_T1, _T2> >
{
    typedef _LIBCPP_NODEBUG_TYPE _T2 type;
};

template <size_t _Ip> struct __get_pair;

template <>
struct __get_pair<0>
{
    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    _T1&
    get(pair<_T1, _T2>& __p) _NOEXCEPT {return __p.first;}

    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _T1&
    get(const pair<_T1, _T2>& __p) _NOEXCEPT {return __p.first;}

#ifndef _LIBCPP_CXX03_LANG
    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    _T1&&
    get(pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<_T1>(__p.first);}

    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _T1&&
    get(const pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<const _T1>(__p.first);}
#endif // _LIBCPP_CXX03_LANG
# 456 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
};

template <>
struct __get_pair<1>
{
    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    _T2&
    get(pair<_T1, _T2>& __p) _NOEXCEPT {return __p.second;}

    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _T2&
    get(const pair<_T1, _T2>& __p) _NOEXCEPT {return __p.second;}

#ifndef _LIBCPP_CXX03_LANG
    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    _T2&&
    get(pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<_T2>(__p.second);}

    template <class _T1, class _T2>
    static
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _T2&&
    get(const pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<const _T2>(__p.second);}
#endif // _LIBCPP_CXX03_LANG
# 486 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
};

template <size_t _Ip, class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, pair<_T1, _T2> >::type&
get(pair<_T1, _T2>& __p) _NOEXCEPT
{
    return __get_pair<_Ip>::get(__p);
}

template <size_t _Ip, class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, pair<_T1, _T2> >::type&
get(const pair<_T1, _T2>& __p) _NOEXCEPT
{
    return __get_pair<_Ip>::get(__p);
}

#ifndef _LIBCPP_CXX03_LANG
template <size_t _Ip, class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, pair<_T1, _T2> >::type&&
get(pair<_T1, _T2>&& __p) _NOEXCEPT
{
    return __get_pair<_Ip>::get(_VSTD::move(__p));
}

template <size_t _Ip, class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, pair<_T1, _T2> >::type&&
get(const pair<_T1, _T2>&& __p) _NOEXCEPT
{
    return __get_pair<_Ip>::get(_VSTD::move(__p));
}
#endif // _LIBCPP_CXX03_LANG
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 & get(pair<_T1, _T2>& __p) _NOEXCEPT
{
    return __get_pair<0>::get(__p);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const & get(pair<_T1, _T2> const& __p) _NOEXCEPT
{
    return __get_pair<0>::get(__p);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 && get(pair<_T1, _T2>&& __p) _NOEXCEPT
{
    return __get_pair<0>::get(_VSTD::move(__p));
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const && get(pair<_T1, _T2> const&& __p) _NOEXCEPT
{
    return __get_pair<0>::get(_VSTD::move(__p));
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 & get(pair<_T2, _T1>& __p) _NOEXCEPT
{
    return __get_pair<1>::get(__p);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const & get(pair<_T2, _T1> const& __p) _NOEXCEPT
{
    return __get_pair<1>::get(__p);
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 && get(pair<_T2, _T1>&& __p) _NOEXCEPT
{
    return __get_pair<1>::get(_VSTD::move(__p));
}

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const && get(pair<_T2, _T1> const&& __p) _NOEXCEPT
{
    return __get_pair<1>::get(_VSTD::move(__p));
}

#endif
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_PAIR_H
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/pair.h" 3
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/piecewise_construct.h>
#endif /* expanded by -frewrite-includes */
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/rel_ops.h>
#endif /* expanded by -frewrite-includes */
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_REL_OPS_H
#define _LIBCPP___UTILITY_REL_OPS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

namespace rel_ops
{

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const _Tp& __x, const _Tp& __y)
{
    return !(__x == __y);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const _Tp& __x, const _Tp& __y)
{
    return __y < __x;
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const _Tp& __x, const _Tp& __y)
{
    return !(__y < __x);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const _Tp& __x, const _Tp& __y)
{
    return !(__x < __y);
}

}  // rel_ops

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_REL_OPS_H
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/rel_ops.h" 3
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_SWAP_H
#define _LIBCPP___UTILITY_SWAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/declval.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
using __swap_result_t = typename enable_if<is_move_constructible<_Tp>::value && is_move_assignable<_Tp>::value>::type;
#else
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
template <class>
using __swap_result_t = void;
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY __swap_result_t<_Tp> _LIBCPP_CONSTEXPR_AFTER_CXX17 swap(_Tp& __x, _Tp& __y)
    _NOEXCEPT_(is_nothrow_move_constructible<_Tp>::value&& is_nothrow_move_assignable<_Tp>::value) {
  _Tp __t(_VSTD::move(__x));
  __x = _VSTD::move(__y);
  __y = _VSTD::move(__t);
}

template <class _Tp, size_t _Np>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 typename enable_if<__is_swappable<_Tp>::value>::type
swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) {
  for (size_t __i = 0; __i != _Np; ++__i) {
    swap(__a[__i], __b[__i]);
  }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_SWAP_H
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/swap.h" 3
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/to_underlying.h>
#endif /* expanded by -frewrite-includes */
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 1 3
// -*- C++ -*-
//===----------------- __utility/to_underlying.h --------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___UTILITY_TO_UNDERLYING_H
#define _LIBCPP___UTILITY_TO_UNDERLYING_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr typename underlying_type<_Tp>::type
__to_underlying(_Tp __val) noexcept {
  return static_cast<typename underlying_type<_Tp>::type>(__val);
}
#endif // !_LIBCPP_CXX03_LANG
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
template <class _Tp>
_LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY constexpr underlying_type_t<_Tp>
to_underlying(_Tp __val) noexcept {
  return _VSTD::__to_underlying(__val);
}
#endif
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___UTILITY_TO_UNDERLYING_H
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/to_underlying.h" 3
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 1 3
// -*- C++ -*-
//===-------------------------- compare -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_COMPARE
#define _LIBCPP_COMPARE

/*
    compare synopsis

namespace std {
  // [cmp.categories], comparison category types
  class partial_ordering;
  class weak_ordering;
  class strong_ordering;

  // named comparison functions
  constexpr bool is_eq  (partial_ordering cmp) noexcept    { return cmp == 0; }
  constexpr bool is_neq (partial_ordering cmp) noexcept    { return cmp != 0; }
  constexpr bool is_lt  (partial_ordering cmp) noexcept { return cmp < 0; }
  constexpr bool is_lteq(partial_ordering cmp) noexcept { return cmp <= 0; }
  constexpr bool is_gt  (partial_ordering cmp) noexcept { return cmp > 0; }
  constexpr bool is_gteq(partial_ordering cmp) noexcept { return cmp >= 0; }

  // [cmp.common], common comparison category type
  template<class... Ts>
  struct common_comparison_category {
    using type = see below;
  };
  template<class... Ts>
    using common_comparison_category_t = typename common_comparison_category<Ts...>::type;

  // [cmp.alg], comparison algorithms
  template<class T> constexpr strong_ordering strong_order(const T& a, const T& b);
  template<class T> constexpr weak_ordering weak_order(const T& a, const T& b);
  template<class T> constexpr partial_ordering partial_order(const T& a, const T& b);

  // [cmp.partialord], Class partial_ordering
  class partial_ordering {
  public:
    // valid values
    static const partial_ordering less;
    static const partial_ordering equivalent;
    static const partial_ordering greater;
    static const partial_ordering unordered;

    // comparisons
    friend constexpr bool operator==(partial_ordering v, unspecified) noexcept;
    friend constexpr bool operator==(partial_ordering v, partial_ordering w) noexcept = default;
    friend constexpr bool operator< (partial_ordering v, unspecified) noexcept;
    friend constexpr bool operator> (partial_ordering v, unspecified) noexcept;
    friend constexpr bool operator<=(partial_ordering v, unspecified) noexcept;
    friend constexpr bool operator>=(partial_ordering v, unspecified) noexcept;
    friend constexpr bool operator< (unspecified, partial_ordering v) noexcept;
    friend constexpr bool operator> (unspecified, partial_ordering v) noexcept;
    friend constexpr bool operator<=(unspecified, partial_ordering v) noexcept;
    friend constexpr bool operator>=(unspecified, partial_ordering v) noexcept;
    friend constexpr partial_ordering operator<=>(partial_ordering v, unspecified) noexcept;
    friend constexpr partial_ordering operator<=>(unspecified, partial_ordering v) noexcept;
  };

  // [cmp.weakord], Class weak_ordering
  class weak_ordering {
  public:
    // valid values
    static const weak_ordering less;
    static const weak_ordering equivalent;
    static const weak_ordering greater;

    // conversions
    constexpr operator partial_ordering() const noexcept;

    // comparisons
    friend constexpr bool operator==(weak_ordering v, unspecified) noexcept;
    friend constexpr bool operator==(weak_ordering v, weak_ordering w) noexcept = default;
    friend constexpr bool operator< (weak_ordering v, unspecified) noexcept;
    friend constexpr bool operator> (weak_ordering v, unspecified) noexcept;
    friend constexpr bool operator<=(weak_ordering v, unspecified) noexcept;
    friend constexpr bool operator>=(weak_ordering v, unspecified) noexcept;
    friend constexpr bool operator< (unspecified, weak_ordering v) noexcept;
    friend constexpr bool operator> (unspecified, weak_ordering v) noexcept;
    friend constexpr bool operator<=(unspecified, weak_ordering v) noexcept;
    friend constexpr bool operator>=(unspecified, weak_ordering v) noexcept;
    friend constexpr weak_ordering operator<=>(weak_ordering v, unspecified) noexcept;
    friend constexpr weak_ordering operator<=>(unspecified, weak_ordering v) noexcept;
  };

  // [cmp.strongord], Class strong_ordering
  class strong_ordering {
  public:
    // valid values
    static const strong_ordering less;
    static const strong_ordering equal;
    static const strong_ordering equivalent;
    static const strong_ordering greater;

    // conversions
    constexpr operator partial_ordering() const noexcept;
    constexpr operator weak_ordering() const noexcept;

    // comparisons
    friend constexpr bool operator==(strong_ordering v, unspecified) noexcept;
    friend constexpr bool operator==(strong_ordering v, strong_ordering w) noexcept = default;
    friend constexpr bool operator< (strong_ordering v, unspecified) noexcept;
    friend constexpr bool operator> (strong_ordering v, unspecified) noexcept;
    friend constexpr bool operator<=(strong_ordering v, unspecified) noexcept;
    friend constexpr bool operator>=(strong_ordering v, unspecified) noexcept;
    friend constexpr bool operator< (unspecified, strong_ordering v) noexcept;
    friend constexpr bool operator> (unspecified, strong_ordering v) noexcept;
    friend constexpr bool operator<=(unspecified, strong_ordering v) noexcept;
    friend constexpr bool operator>=(unspecified, strong_ordering v) noexcept;
    friend constexpr strong_ordering operator<=>(strong_ordering v, unspecified) noexcept;
    friend constexpr strong_ordering operator<=>(unspecified, strong_ordering v) noexcept;
  };
}
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3

#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
#endif
# 129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_SPACESHIP_OPERATOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
// exposition only
enum class _LIBCPP_ENUM_VIS _EqResult : unsigned char {
  __zero = 0,
  __equal = __zero,
  __equiv = __equal,
  __nonequal = 1,
  __nonequiv = __nonequal
};

enum class _LIBCPP_ENUM_VIS _OrdResult : signed char {
  __less = -1,
  __greater = 1
};

enum class _LIBCPP_ENUM_VIS _NCmpResult : signed char {
  __unordered = -127
};

class partial_ordering;
class weak_ordering;
class strong_ordering;

template<class _Tp, class... _Args>
inline constexpr bool __one_of_v = (is_same_v<_Tp, _Args> || ...);

struct _CmpUnspecifiedParam {
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEVAL
  _CmpUnspecifiedParam(int _CmpUnspecifiedParam::*) noexcept {}

  template<class _Tp, class = enable_if_t<!__one_of_v<_Tp, int, partial_ordering, weak_ordering, strong_ordering>>>
  _CmpUnspecifiedParam(_Tp) = delete;
};

class partial_ordering {
  using _ValueT = signed char;

  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr partial_ordering(_EqResult __v) noexcept
      : __value_(_ValueT(__v)) {}

  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr partial_ordering(_OrdResult __v) noexcept
      : __value_(_ValueT(__v)) {}

  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr partial_ordering(_NCmpResult __v) noexcept
      : __value_(_ValueT(__v)) {}

  constexpr bool __is_ordered() const noexcept {
    return __value_ != _ValueT(_NCmpResult::__unordered);
  }
public:
  // valid values
  static const partial_ordering less;
  static const partial_ordering equivalent;
  static const partial_ordering greater;
  static const partial_ordering unordered;

  // comparisons
  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(partial_ordering, partial_ordering) noexcept = default;

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(partial_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__is_ordered() && __v.__value_ == 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (partial_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__is_ordered() && __v.__value_ < 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(partial_ordering __v, _CmpUnspecifiedParam) noexcept  {
    return __v.__is_ordered() && __v.__value_ <= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (partial_ordering __v, _CmpUnspecifiedParam) noexcept  {
    return __v.__is_ordered() && __v.__value_ > 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(partial_ordering __v, _CmpUnspecifiedParam) noexcept  {
    return __v.__is_ordered() && __v.__value_ >= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (_CmpUnspecifiedParam, partial_ordering __v) noexcept  {
    return __v.__is_ordered() && 0 < __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(_CmpUnspecifiedParam, partial_ordering __v) noexcept  {
    return __v.__is_ordered() && 0 <= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (_CmpUnspecifiedParam, partial_ordering __v) noexcept  {
    return __v.__is_ordered() && 0 > __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(_CmpUnspecifiedParam, partial_ordering __v) noexcept  {
    return __v.__is_ordered() && 0 >= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr partial_ordering operator<=>(partial_ordering __v, _CmpUnspecifiedParam) noexcept  {
    return __v;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr partial_ordering operator<=>(_CmpUnspecifiedParam, partial_ordering __v) noexcept  {
    return __v < 0 ? partial_ordering::greater : (__v > 0 ? partial_ordering::less : __v);
  }
private:
  _ValueT __value_;
};

_LIBCPP_INLINE_VAR constexpr partial_ordering partial_ordering::less(_OrdResult::__less);
_LIBCPP_INLINE_VAR constexpr partial_ordering partial_ordering::equivalent(_EqResult::__equiv);
_LIBCPP_INLINE_VAR constexpr partial_ordering partial_ordering::greater(_OrdResult::__greater);
_LIBCPP_INLINE_VAR constexpr partial_ordering partial_ordering::unordered(_NCmpResult ::__unordered);

class weak_ordering {
  using _ValueT = signed char;

  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr weak_ordering(_EqResult __v) noexcept : __value_(_ValueT(__v)) {}
  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}

public:
  static const weak_ordering less;
  static const weak_ordering equivalent;
  static const weak_ordering greater;

  _LIBCPP_INLINE_VISIBILITY
  constexpr operator partial_ordering() const noexcept {
    return __value_ == 0 ? partial_ordering::equivalent
        : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater);
  }

  // comparisons
  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(weak_ordering, weak_ordering) noexcept = default;

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ == 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ < 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ <= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ > 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ >= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (_CmpUnspecifiedParam, weak_ordering __v) noexcept {
    return 0 < __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(_CmpUnspecifiedParam, weak_ordering __v) noexcept {
    return 0 <= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (_CmpUnspecifiedParam, weak_ordering __v) noexcept {
    return 0 > __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(_CmpUnspecifiedParam, weak_ordering __v) noexcept {
    return 0 >= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr weak_ordering operator<=>(weak_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr weak_ordering operator<=>(_CmpUnspecifiedParam, weak_ordering __v) noexcept {
    return __v < 0 ? weak_ordering::greater : (__v > 0 ? weak_ordering::less : __v);
  }

private:
  _ValueT __value_;
};

_LIBCPP_INLINE_VAR constexpr weak_ordering weak_ordering::less(_OrdResult::__less);
_LIBCPP_INLINE_VAR constexpr weak_ordering weak_ordering::equivalent(_EqResult::__equiv);
_LIBCPP_INLINE_VAR constexpr weak_ordering weak_ordering::greater(_OrdResult::__greater);
class strong_ordering {
  using _ValueT = signed char;

  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr strong_ordering(_EqResult __v) noexcept : __value_(_ValueT(__v)) {}
  _LIBCPP_INLINE_VISIBILITY
  explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}

public:
  static const strong_ordering less;
  static const strong_ordering equal;
  static const strong_ordering equivalent;
  static const strong_ordering greater;

  // conversions
  _LIBCPP_INLINE_VISIBILITY
  constexpr operator partial_ordering() const noexcept {
    return __value_ == 0 ? partial_ordering::equivalent
        : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater);
  }

  _LIBCPP_INLINE_VISIBILITY
  constexpr operator weak_ordering() const noexcept {
    return __value_ == 0 ? weak_ordering::equivalent
        : (__value_ < 0 ? weak_ordering::less : weak_ordering::greater);
  }

  // comparisons
  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(strong_ordering, strong_ordering) noexcept = default;

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator==(strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ == 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ < 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ <= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ > 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v.__value_ >= 0;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator< (_CmpUnspecifiedParam, strong_ordering __v) noexcept {
    return 0 < __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator<=(_CmpUnspecifiedParam, strong_ordering __v) noexcept {
    return 0 <= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator> (_CmpUnspecifiedParam, strong_ordering __v) noexcept {
    return 0 > __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr bool operator>=(_CmpUnspecifiedParam, strong_ordering __v) noexcept {
    return 0 >= __v.__value_;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr strong_ordering operator<=>(strong_ordering __v, _CmpUnspecifiedParam) noexcept {
    return __v;
  }

  _LIBCPP_INLINE_VISIBILITY friend constexpr strong_ordering operator<=>(_CmpUnspecifiedParam, strong_ordering __v) noexcept {
    return __v < 0 ? strong_ordering::greater : (__v > 0 ? strong_ordering::less : __v);
  }

private:
  _ValueT __value_;
};

_LIBCPP_INLINE_VAR constexpr strong_ordering strong_ordering::less(_OrdResult::__less);
_LIBCPP_INLINE_VAR constexpr strong_ordering strong_ordering::equal(_EqResult::__equal);
_LIBCPP_INLINE_VAR constexpr strong_ordering strong_ordering::equivalent(_EqResult::__equiv);
_LIBCPP_INLINE_VAR constexpr strong_ordering strong_ordering::greater(_OrdResult::__greater);

// named comparison functions
_LIBCPP_INLINE_VISIBILITY
constexpr bool is_lt(partial_ordering __cmp) noexcept { return __cmp < 0; }

_LIBCPP_INLINE_VISIBILITY
constexpr bool is_lteq(partial_ordering __cmp) noexcept { return __cmp <= 0; }

_LIBCPP_INLINE_VISIBILITY
constexpr bool is_gt(partial_ordering __cmp) noexcept { return __cmp > 0; }

_LIBCPP_INLINE_VISIBILITY
constexpr bool is_gteq(partial_ordering __cmp) noexcept { return __cmp >= 0; }

namespace __comp_detail {

enum _ClassifyCompCategory : unsigned{
  _None,
  _PartialOrd,
  _WeakOrd,
  _StrongOrd,
  _CCC_Size
};

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
constexpr _ClassifyCompCategory __type_to_enum() noexcept {
  if (is_same_v<_Tp, partial_ordering>)
    return _PartialOrd;
  if (is_same_v<_Tp, weak_ordering>)
    return _WeakOrd;
  if (is_same_v<_Tp, strong_ordering>)
    return _StrongOrd;
  return _None;
}

template <size_t _Size>
constexpr _ClassifyCompCategory
__compute_comp_type(const _ClassifyCompCategory (&__types)[_Size]) {
  int __seen[_CCC_Size] = {};
  for (auto __type : __types)
    ++__seen[__type];
  if (__seen[_None])
    return _None;
  if (__seen[_PartialOrd])
    return _PartialOrd;
  if (__seen[_WeakOrd])
    return _WeakOrd;
  return _StrongOrd;
}

template <class ..._Ts, bool _False = false>
constexpr auto __get_comp_type() {
  using _CCC = _ClassifyCompCategory;
  constexpr _CCC __type_kinds[] = {_StrongOrd, __type_to_enum<_Ts>()...};
  constexpr _CCC _Cat = __compute_comp_type(__type_kinds);
  if constexpr (_Cat == _None)
    return void();
  else if constexpr (_Cat == _PartialOrd)
    return partial_ordering::equivalent;
  else if constexpr (_Cat == _WeakOrd)
    return weak_ordering::equivalent;
  else if constexpr (_Cat == _StrongOrd)
    return strong_ordering::equivalent;
  else
    static_assert(_False, "unhandled case");
}
} // namespace __comp_detail

// [cmp.common], common comparison category type
template<class... _Ts>
struct _LIBCPP_TEMPLATE_VIS common_comparison_category {
  using type = decltype(__comp_detail::__get_comp_type<_Ts...>());
};

template<class... _Ts>
using common_comparison_category_t = typename common_comparison_category<_Ts...>::type;

// [cmp.alg], comparison algorithms
// TODO: unimplemented
template<class _Tp> constexpr strong_ordering strong_order(const _Tp& __lhs, const _Tp& __rhs);
template<class _Tp> constexpr weak_ordering weak_order(const _Tp& __lhs, const _Tp& __rhs);
template<class _Tp> constexpr partial_ordering partial_order(const _Tp& __lhs, const _Tp& __rhs);

#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_SPACESHIP_OPERATOR)
# 486 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_COMPARE
# 490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/compare" 3
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 1 3
// -*- C++ -*-
//===----------------------- initializer_list -----------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_INITIALIZER_LIST
#define _LIBCPP_INITIALIZER_LIST

/*
    initializer_list synopsis

namespace std
{

template<class E>
class initializer_list
{
public:
    typedef E        value_type;
    typedef const E& reference;
    typedef const E& const_reference;
    typedef size_t   size_type;

    typedef const E* iterator;
    typedef const E* const_iterator;

    initializer_list() noexcept; // constexpr in C++14

    size_t   size()  const noexcept; // constexpr in C++14
    const E* begin() const noexcept; // constexpr in C++14
    const E* end()   const noexcept; // constexpr in C++14
};

template<class E> const E* begin(initializer_list<E> il) noexcept; // constexpr in C++14
template<class E> const E* end(initializer_list<E> il) noexcept; // constexpr in C++14

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3

namespace std  // purposefully not versioned
{

#ifndef _LIBCPP_CXX03_LANG

template<class _Ep>
class _LIBCPP_TEMPLATE_VIS initializer_list
{
    const _Ep* __begin_;
    size_t    __size_;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT
        : __begin_(__b),
          __size_(__s)
        {}
public:
    typedef _Ep        value_type;
    typedef const _Ep& reference;
    typedef const _Ep& const_reference;
    typedef size_t    size_type;

    typedef const _Ep* iterator;
    typedef const _Ep* const_iterator;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {}

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    size_t    size()  const _NOEXCEPT {return __size_;}

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _Ep* begin() const _NOEXCEPT {return __begin_;}

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    const _Ep* end()   const _NOEXCEPT {return __begin_ + __size_;}
};

template<class _Ep>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX11
const _Ep*
begin(initializer_list<_Ep> __il) _NOEXCEPT
{
    return __il.begin();
}

template<class _Ep>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX11
const _Ep*
end(initializer_list<_Ep> __il) _NOEXCEPT
{
    return __il.end();
}

#endif // !defined(_LIBCPP_CXX03_LANG)
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3

}  // std

#endif // _LIBCPP_INITIALIZER_LIST
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/initializer_list" 3
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3

#endif // _LIBCPP_UTILITY
# 231 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/utility" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3

#endif // _LIBCPP_FUNCTIONAL_BASE
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional_base" 3
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/wrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_WRAP_ITER_H
#define _LIBCPP___ITERATOR_WRAP_ITER_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ITERATOR_TRAITS_H
#define _LIBCPP___ITERATOR_ITERATOR_TRAITS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H
#define _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 1 3
// -*- C++ -*-
//===-------------------------- concepts ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CONCEPTS
#define _LIBCPP_CONCEPTS

/*
    concepts synopsis
namespace std {
  // [concepts.lang], language-related concepts
  // [concept.same], concept same_as
  template<class T, class U>
    concept same_as = see below;

  // [concept.derived], concept derived_from
  template<class Derived, class Base>
    concept derived_from = see below;

  // [concept.convertible], concept convertible_to
  template<class From, class To>
    concept convertible_to = see below;

  // [concept.commonref], concept common_reference_with
  template<class T, class U>
    concept common_reference_with = see below;

  // [concept.common], concept common_with
  template<class T, class U>
    concept common_with = see below;

  // [concepts.arithmetic], arithmetic concepts
  template<class T>
    concept integral = see below;
  template<class T>
    concept signed_integral = see below;
  template<class T>
    concept unsigned_integral = see below;
  template<class T>
    concept floating_point = see below;

  // [concept.assignable], concept assignable_from
  template<class LHS, class RHS>
    concept assignable_from = see below;

  // [concept.swappable], concept swappable
  namespace ranges {
    inline namespace unspecified {
      inline constexpr unspecified swap = unspecified;
    }
  }
  template<class T>
    concept swappable = see below;
  template<class T, class U>
    concept swappable_with = see below;

  // [concept.destructible], concept destructible
  template<class T>
    concept destructible = see below;

  // [concept.constructible], concept constructible_from
  template<class T, class... Args>
    concept constructible_from = see below;

  // [concept.default.init], concept default_initializable
  template<class T>
    concept default_initializable = see below;

  // [concept.moveconstructible], concept move_constructible
  template<class T>
    concept move_constructible = see below;

  // [concept.copyconstructible], concept copy_constructible
  template<class T>
    concept copy_constructible = see below;

  // [concept.equalitycomparable], concept equality_comparable
  template<class T>
    concept equality_comparable = see below;
  template<class T, class U>
    concept equality_comparable_with = see below;

  // [concept.totallyordered], concept totally_ordered
  template<class T>
    concept totally_ordered = see below;
  template<class T, class U>
    concept totally_ordered_with = see below;

  // [concepts.object], object concepts
  template<class T>
    concept movable = see below;
  template<class T>
    concept copyable = see below;
  template<class T>
    concept semiregular = see below;
  template<class T>
    concept regular = see below;

  // [concepts.callable], callable concepts
  // [concept.invocable], concept invocable
  template<class F, class... Args>
    concept invocable = see below;

  // [concept.regularinvocable], concept regular_invocable
  template<class F, class... Args>
    concept regular_invocable = see below;

  // [concept.predicate], concept predicate
  template<class F, class... Args>
    concept predicate = see below;

  // [concept.relation], concept relation
  template<class R, class T, class U>
    concept relation = see below;

  // [concept.equiv], concept equivalence_relation
  template<class R, class T, class U>
    concept equivalence_relation = see below;

  // [concept.strictweakorder], concept strict_weak_order
  template<class R, class T, class U>
    concept strict_weak_order = see below;
}

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
#endif
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 144 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3

// [concept.same]

template<class _Tp, class _Up>
concept __same_as_impl = _VSTD::_IsSame<_Tp, _Up>::value;

template<class _Tp, class _Up>
concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;

// [concept.derived]
template<class _Dp, class _Bp>
concept derived_from =
  is_base_of_v<_Bp, _Dp> &&
  is_convertible_v<const volatile _Dp*, const volatile _Bp*>;

// [concept.convertible]
template<class _From, class _To>
concept convertible_to =
  is_convertible_v<_From, _To> &&
  requires(add_rvalue_reference_t<_From> (&__f)()) {
    static_cast<_To>(__f());
  };

// [concept.commonref]
template<class _Tp, class _Up>
concept common_reference_with =
  same_as<common_reference_t<_Tp, _Up>, common_reference_t<_Up, _Tp>> &&
  convertible_to<_Tp, common_reference_t<_Tp, _Up>> &&
  convertible_to<_Up, common_reference_t<_Tp, _Up>>;

// [concept.common]
template<class _Tp, class _Up>
concept common_with =
  same_as<common_type_t<_Tp, _Up>, common_type_t<_Up, _Tp>> &&
  requires {
    static_cast<common_type_t<_Tp, _Up>>(declval<_Tp>());
    static_cast<common_type_t<_Tp, _Up>>(declval<_Up>());
  } &&
  common_reference_with<
    add_lvalue_reference_t<const _Tp>,
    add_lvalue_reference_t<const _Up>> &&
  common_reference_with<
    add_lvalue_reference_t<common_type_t<_Tp, _Up>>,
    common_reference_t<
      add_lvalue_reference_t<const _Tp>,
      add_lvalue_reference_t<const _Up>>>;

// [concepts.arithmetic], arithmetic concepts
template<class _Tp>
concept integral = is_integral_v<_Tp>;

template<class _Tp>
concept signed_integral = integral<_Tp> && is_signed_v<_Tp>;

template<class _Tp>
concept unsigned_integral = integral<_Tp> && !signed_integral<_Tp>;

template<class _Tp>
concept floating_point = is_floating_point_v<_Tp>;

// [concept.assignable]
template<class _Lhs, class _Rhs>
concept assignable_from =
  is_lvalue_reference_v<_Lhs> &&
  common_reference_with<__make_const_lvalue_ref<_Lhs>, __make_const_lvalue_ref<_Rhs>> &&
  requires (_Lhs __lhs, _Rhs&& __rhs) {
    { __lhs = _VSTD::forward<_Rhs>(__rhs) } -> same_as<_Lhs>;
  };

// [concept.destructible]

template<class _Tp>
concept destructible = is_nothrow_destructible_v<_Tp>;

// [concept.constructible]
template<class _Tp, class... _Args>
concept constructible_from =
    destructible<_Tp> && is_constructible_v<_Tp, _Args...>;

// [concept.default.init]

template<class _Tp>
concept __default_initializable = requires { ::new _Tp; };

template<class _Tp>
concept default_initializable = constructible_from<_Tp> &&
    requires { _Tp{}; } && __default_initializable<_Tp>;

// [concept.moveconstructible]
template<class _Tp>
concept move_constructible =
  constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;

// [concept.copyconstructible]
template<class _Tp>
concept copy_constructible =
  move_constructible<_Tp> &&
  constructible_from<_Tp, _Tp&> && convertible_to<_Tp&, _Tp> &&
  constructible_from<_Tp, const _Tp&> && convertible_to<const _Tp&, _Tp> &&
  constructible_from<_Tp, const _Tp> && convertible_to<const _Tp, _Tp>;

// Whether a type is a class type or enumeration type according to the Core wording.
template<class _Tp>
concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>;

// [concept.swappable]
namespace ranges::__swap {
  // Deleted to inhibit ADL
  template<class _Tp>
  void swap(_Tp&, _Tp&) = delete;


  // [1]
  template<class _Tp, class _Up>
  concept __unqualified_swappable_with =
    (__class_or_enum<remove_cvref_t<_Tp>> || __class_or_enum<remove_cvref_t<_Up>>) &&
    requires(_Tp&& __t, _Up&& __u) {
      swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u));
    };

  struct __fn;

  template<class _Tp, class _Up, size_t _Size>
  concept __swappable_arrays =
    !__unqualified_swappable_with<_Tp(&)[_Size], _Up(&)[_Size]> &&
    extent_v<_Tp> == extent_v<_Up> &&
    requires(_Tp(& __t)[_Size], _Up(& __u)[_Size], const __fn& __swap) {
      __swap(__t[0], __u[0]);
    };

  template<class _Tp>
  concept __exchangeable =
    !__unqualified_swappable_with<_Tp&, _Tp&> &&
    move_constructible<_Tp> &&
    assignable_from<_Tp&, _Tp>;

  struct __fn {
    // 2.1   `S` is `(void)swap(E1, E2)`* if `E1` or `E2` has class or enumeration type and...
    // *The name `swap` is used here unqualified.
    template<class _Tp, class _Up>
    requires __unqualified_swappable_with<_Tp, _Up>
    constexpr void operator()(_Tp&& __t, _Up&& __u) const
    noexcept(noexcept(swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))
    {
      swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u));
    }

    // 2.2   Otherwise, if `E1` and `E2` are lvalues of array types with equal extent and...
    template<class _Tp, class _Up, size_t _Size>
    requires __swappable_arrays<_Tp, _Up, _Size>
    constexpr void operator()(_Tp(& __t)[_Size], _Up(& __u)[_Size]) const
    noexcept(noexcept((*this)(*__t, *__u)))
    {
      // TODO(cjdb): replace with `ranges::swap_ranges`.
      for (size_t __i = 0; __i < _Size; ++__i) {
        (*this)(__t[__i], __u[__i]);
      }
    }

    // 2.3   Otherwise, if `E1` and `E2` are lvalues of the same type `T` that models...
    template<__exchangeable _Tp>
    constexpr void operator()(_Tp& __x, _Tp& __y) const
    noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_assignable_v<_Tp>)
    {
      __y = _VSTD::exchange(__x, _VSTD::move(__y));
    }
  };
} // namespace ranges::__swap

namespace ranges::inline __cpo {
  inline constexpr auto swap = __swap::__fn{};
} // namespace ranges::__cpo

template<class _Tp>
concept swappable = requires(_Tp& __a, _Tp& __b) { ranges::swap(__a, __b); };

template<class _Tp, class _Up>
concept swappable_with =
  common_reference_with<_Tp, _Up> &&
  requires(_Tp&& __t, _Up&& __u) {
    ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Tp>(__t));
    ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Up>(__u));
    ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u));
    ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Tp>(__t));
  };

// [concept.booleantestable]
template<class _Tp>
concept __boolean_testable_impl = convertible_to<_Tp, bool>;

template<class _Tp>
concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) {
  { !std::forward<_Tp>(__t) } -> __boolean_testable_impl;
};

// [concept.equalitycomparable]
template<class _Tp, class _Up>
concept __weakly_equality_comparable_with =
  requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) {
    { __t == __u } -> __boolean_testable;
    { __t != __u } -> __boolean_testable;
    { __u == __t } -> __boolean_testable;
    { __u != __t } -> __boolean_testable;
  };

template<class _Tp>
concept equality_comparable = __weakly_equality_comparable_with<_Tp, _Tp>;

template<class _Tp, class _Up>
concept equality_comparable_with =
  equality_comparable<_Tp> && equality_comparable<_Up> &&
  common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> &&
  equality_comparable<
    common_reference_t<
      __make_const_lvalue_ref<_Tp>,
      __make_const_lvalue_ref<_Up>>> &&
  __weakly_equality_comparable_with<_Tp, _Up>;

// [concept.totallyordered]

template<class _Tp, class _Up>
concept __partially_ordered_with =
  requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) {
    { __t <  __u } -> __boolean_testable;
    { __t >  __u } -> __boolean_testable;
    { __t <= __u } -> __boolean_testable;
    { __t >= __u } -> __boolean_testable;
    { __u <  __t } -> __boolean_testable;
    { __u >  __t } -> __boolean_testable;
    { __u <= __t } -> __boolean_testable;
    { __u >= __t } -> __boolean_testable;
  };

template<class _Tp>
concept totally_ordered = equality_comparable<_Tp> && __partially_ordered_with<_Tp, _Tp>;

template<class _Tp, class _Up>
concept totally_ordered_with =
  totally_ordered<_Tp> && totally_ordered<_Up> &&
  equality_comparable_with<_Tp, _Up> &&
  totally_ordered<
    common_reference_t<
      __make_const_lvalue_ref<_Tp>,
      __make_const_lvalue_ref<_Up>>> &&
  __partially_ordered_with<_Tp, _Up>;

// [concepts.object]
template<class _Tp>
concept movable =
  is_object_v<_Tp> &&
  move_constructible<_Tp> &&
  assignable_from<_Tp&, _Tp> &&
  swappable<_Tp>;

template<class _Tp>
concept copyable =
  copy_constructible<_Tp> &&
  movable<_Tp> &&
  assignable_from<_Tp&, _Tp&> &&
  assignable_from<_Tp&, const _Tp&> &&
  assignable_from<_Tp&, const _Tp>;

template<class _Tp>
concept semiregular = copyable<_Tp> && default_initializable<_Tp>;

template<class _Tp>
concept regular = semiregular<_Tp> && equality_comparable<_Tp>;

// [concept.invocable]
template<class _Fn, class... _Args>
concept invocable = requires(_Fn&& __fn, _Args&&... __args) {
  _VSTD::invoke(_VSTD::forward<_Fn>(__fn), _VSTD::forward<_Args>(__args)...); // not required to be equality preserving
};

// [concept.regular.invocable]
template<class _Fn, class... _Args>
concept regular_invocable = invocable<_Fn, _Args...>;

// [concept.predicate]
template<class _Fn, class... _Args>
concept predicate =
  regular_invocable<_Fn, _Args...> && __boolean_testable<invoke_result_t<_Fn, _Args...>>;

// [concept.relation]
template<class _Rp, class _Tp, class _Up>
concept relation =
  predicate<_Rp, _Tp, _Tp> && predicate<_Rp, _Up, _Up> &&
  predicate<_Rp, _Tp, _Up> && predicate<_Rp, _Up, _Tp>;

// [concept.equiv]
template<class _Rp, class _Tp, class _Up>
concept equivalence_relation = relation<_Rp, _Tp, _Up>;

// [concept.strictweakorder]
template<class _Rp, class _Tp, class _Up>
concept strict_weak_order = relation<_Rp, _Tp, _Up>;

template<class _Tp, class _Up>
concept __different_from = !same_as<remove_cvref_t<_Tp>, remove_cvref_t<_Up>>;

#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_CONCEPTS
# 456 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/concepts" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3

// [incrementable.traits]
template<class> struct incrementable_traits {};

template<class _Tp>
requires is_object_v<_Tp>
struct incrementable_traits<_Tp*> {
  using difference_type = ptrdiff_t;
};

template<class _Ip>
struct incrementable_traits<const _Ip> : incrementable_traits<_Ip> {};

template<class _Tp>
concept __has_member_difference_type = requires { typename _Tp::difference_type; };

template<__has_member_difference_type _Tp>
struct incrementable_traits<_Tp> {
  using difference_type = typename _Tp::difference_type;
};

template<class _Tp>
concept __has_integral_minus =
  requires(const _Tp& __x, const _Tp& __y) {
    { __x - __y } -> integral;
  };

template<__has_integral_minus _Tp>
requires (!__has_member_difference_type<_Tp>)
struct incrementable_traits<_Tp> {
  using difference_type = make_signed_t<decltype(declval<_Tp>() - declval<_Tp>())>;
};

template <class>
struct iterator_traits;

// Let `RI` be `remove_cvref_t<I>`. The type `iter_difference_t<I>` denotes
// `incrementable_traits<RI>::difference_type` if `iterator_traits<RI>` names a specialization
// generated from the primary template, and `iterator_traits<RI>::difference_type` otherwise.
template <class _Ip>
using iter_difference_t = typename conditional_t<__is_primary_template<iterator_traits<remove_cvref_t<_Ip> > >::value,
                                                 incrementable_traits<remove_cvref_t<_Ip> >,
                                                 iterator_traits<remove_cvref_t<_Ip> > >::difference_type;

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/incrementable_traits.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_READABLE_TRAITS_H
#define _LIBCPP___ITERATOR_READABLE_TRAITS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3

// [readable.traits]
template<class> struct __cond_value_type {};

template<class _Tp>
requires is_object_v<_Tp>
struct __cond_value_type<_Tp> { using value_type = remove_cv_t<_Tp>; };

template<class _Tp>
concept __has_member_value_type = requires { typename _Tp::value_type; };

template<class _Tp>
concept __has_member_element_type = requires { typename _Tp::element_type; };

template<class> struct indirectly_readable_traits {};

template<class _Ip>
requires is_array_v<_Ip>
struct indirectly_readable_traits<_Ip> {
  using value_type = remove_cv_t<remove_extent_t<_Ip>>;
};

template<class _Ip>
struct indirectly_readable_traits<const _Ip> : indirectly_readable_traits<_Ip> {};

template<class _Tp>
struct indirectly_readable_traits<_Tp*> : __cond_value_type<_Tp> {};

template<__has_member_value_type _Tp>
struct indirectly_readable_traits<_Tp>
  : __cond_value_type<typename _Tp::value_type> {};

template<__has_member_element_type _Tp>
struct indirectly_readable_traits<_Tp>
  : __cond_value_type<typename _Tp::element_type> {};

// Pre-emptively applies LWG3541
template<__has_member_value_type _Tp>
requires __has_member_element_type<_Tp>
struct indirectly_readable_traits<_Tp> {};
template<__has_member_value_type _Tp>
requires __has_member_element_type<_Tp> &&
         same_as<remove_cv_t<typename _Tp::element_type>,
                 remove_cv_t<typename _Tp::value_type>>
struct indirectly_readable_traits<_Tp>
  : __cond_value_type<typename _Tp::value_type> {};

template <class>
struct iterator_traits;

// Let `RI` be `remove_cvref_t<I>`. The type `iter_value_t<I>` denotes
// `indirectly_readable_traits<RI>::value_type` if `iterator_traits<RI>` names a specialization
// generated from the primary template, and `iterator_traits<RI>::value_type` otherwise.
template <class _Ip>
using iter_value_t = typename conditional_t<__is_primary_template<iterator_traits<remove_cvref_t<_Ip> > >::value,
                                            indirectly_readable_traits<remove_cvref_t<_Ip> >,
                                            iterator_traits<remove_cvref_t<_Ip> > >::value_type;

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_READABLE_TRAITS_H
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/readable_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

template <class _Tp>
using __with_reference = _Tp&;

template <class _Tp>
concept __referenceable = requires {
  typename __with_reference<_Tp>;
};

template <class _Tp>
concept __dereferenceable = requires(_Tp& __t) {
  { *__t } -> __referenceable; // not required to be equality-preserving
};

// [iterator.traits]
template<__dereferenceable _Tp>
using iter_reference_t = decltype(*declval<_Tp&>());

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

template <class _Iter>
struct _LIBCPP_TEMPLATE_VIS iterator_traits;

struct _LIBCPP_TEMPLATE_VIS input_iterator_tag {};
struct _LIBCPP_TEMPLATE_VIS output_iterator_tag {};
struct _LIBCPP_TEMPLATE_VIS forward_iterator_tag       : public input_iterator_tag {};
struct _LIBCPP_TEMPLATE_VIS bidirectional_iterator_tag : public forward_iterator_tag {};
struct _LIBCPP_TEMPLATE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {};
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag    : public random_access_iterator_tag {};
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

template <class _Iter>
struct __iter_traits_cache {
  using type = _If<
    __is_primary_template<iterator_traits<_Iter> >::value,
    _Iter,
    iterator_traits<_Iter>
  >;
};
template <class _Iter>
using _ITER_TRAITS = typename __iter_traits_cache<_Iter>::type;

struct __iter_concept_concept_test {
  template <class _Iter>
  using _Apply = typename _ITER_TRAITS<_Iter>::iterator_concept;
};
struct __iter_concept_category_test {
  template <class _Iter>
  using _Apply = typename _ITER_TRAITS<_Iter>::iterator_category;
};
struct __iter_concept_random_fallback {
  template <class _Iter>
  using _Apply = _EnableIf<
                          __is_primary_template<iterator_traits<_Iter> >::value,
                          random_access_iterator_tag
                        >;
};

template <class _Iter, class _Tester> struct __test_iter_concept
    : _IsValidExpansion<_Tester::template _Apply, _Iter>,
      _Tester
{
};

template <class _Iter>
struct __iter_concept_cache {
  using type = _Or<
    __test_iter_concept<_Iter, __iter_concept_concept_test>,
    __test_iter_concept<_Iter, __iter_concept_category_test>,
    __test_iter_concept<_Iter, __iter_concept_random_fallback>
  >;
};

template <class _Iter>
using _ITER_CONCEPT = typename __iter_concept_cache<_Iter>::type::template _Apply<_Iter>;


template <class _Tp>
struct __has_iterator_typedefs
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Up> static __two __test(...);
    template <class _Up> static char __test(typename __void_t<typename _Up::iterator_category>::type* = 0,
                                            typename __void_t<typename _Up::difference_type>::type* = 0,
                                            typename __void_t<typename _Up::value_type>::type* = 0,
                                            typename __void_t<typename _Up::reference>::type* = 0,
                                            typename __void_t<typename _Up::pointer>::type* = 0);
public:
    static const bool value = sizeof(__test<_Tp>(0,0,0,0,0)) == 1;
};


template <class _Tp>
struct __has_iterator_category
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Up> static __two __test(...);
    template <class _Up> static char __test(typename _Up::iterator_category* = nullptr);
public:
    static const bool value = sizeof(__test<_Tp>(nullptr)) == 1;
};

template <class _Tp>
struct __has_iterator_concept
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Up> static __two __test(...);
    template <class _Up> static char __test(typename _Up::iterator_concept* = nullptr);
public:
    static const bool value = sizeof(__test<_Tp>(nullptr)) == 1;
};

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

// The `cpp17-*-iterator` exposition-only concepts are easily confused with the Cpp17*Iterator tables,
// so they've been banished to a namespace that makes it obvious they have a niche use-case.
namespace __iterator_traits_detail {
template<class _Ip>
concept __cpp17_iterator =
  requires(_Ip __i) {
    {   *__i } -> __referenceable;
    {  ++__i } -> same_as<_Ip&>;
    { *__i++ } -> __referenceable;
  } &&
  copyable<_Ip>;

template<class _Ip>
concept __cpp17_input_iterator =
  __cpp17_iterator<_Ip> &&
  equality_comparable<_Ip> &&
  requires(_Ip __i) {
    typename incrementable_traits<_Ip>::difference_type;
    typename indirectly_readable_traits<_Ip>::value_type;
    typename common_reference_t<iter_reference_t<_Ip>&&,
                                typename indirectly_readable_traits<_Ip>::value_type&>;
    typename common_reference_t<decltype(*__i++)&&,
                                typename indirectly_readable_traits<_Ip>::value_type&>;
    requires signed_integral<typename incrementable_traits<_Ip>::difference_type>;
  };

template<class _Ip>
concept __cpp17_forward_iterator =
  __cpp17_input_iterator<_Ip> &&
  constructible_from<_Ip> &&
  is_lvalue_reference_v<iter_reference_t<_Ip>> &&
  same_as<remove_cvref_t<iter_reference_t<_Ip>>,
          typename indirectly_readable_traits<_Ip>::value_type> &&
  requires(_Ip __i) {
    {  __i++ } -> convertible_to<_Ip const&>;
    { *__i++ } -> same_as<iter_reference_t<_Ip>>;
  };

template<class _Ip>
concept __cpp17_bidirectional_iterator =
  __cpp17_forward_iterator<_Ip> &&
  requires(_Ip __i) {
    {  --__i } -> same_as<_Ip&>;
    {  __i-- } -> convertible_to<_Ip const&>;
    { *__i-- } -> same_as<iter_reference_t<_Ip>>;
  };

template<class _Ip>
concept __cpp17_random_access_iterator =
  __cpp17_bidirectional_iterator<_Ip> &&
  totally_ordered<_Ip> &&
  requires(_Ip __i, typename incrementable_traits<_Ip>::difference_type __n) {
    { __i += __n } -> same_as<_Ip&>;
    { __i -= __n } -> same_as<_Ip&>;
    { __i +  __n } -> same_as<_Ip>;
    { __n +  __i } -> same_as<_Ip>;
    { __i -  __n } -> same_as<_Ip>;
    { __i -  __i } -> same_as<decltype(__n)>;
    {  __i[__n]  } -> convertible_to<iter_reference_t<_Ip>>;
  };
} // namespace __iterator_traits_detail

template<class _Ip>
concept __has_member_reference = requires { typename _Ip::reference; };

template<class _Ip>
concept __has_member_pointer = requires { typename _Ip::pointer; };

template<class _Ip>
concept __has_member_iterator_category = requires { typename _Ip::iterator_category; };

template<class _Ip>
concept __specifies_members = requires {
    typename _Ip::value_type;
    typename _Ip::difference_type;
    requires __has_member_reference<_Ip>;
    requires __has_member_iterator_category<_Ip>;
  };

template<class>
struct __iterator_traits_member_pointer_or_void {
  using type = void;
};

template<__has_member_pointer _Tp>
struct __iterator_traits_member_pointer_or_void<_Tp> {
  using type = typename _Tp::pointer;
};

template<class _Tp>
concept __cpp17_iterator_missing_members =
  !__specifies_members<_Tp> &&
  __iterator_traits_detail::__cpp17_iterator<_Tp>;

template<class _Tp>
concept __cpp17_input_iterator_missing_members =
  __cpp17_iterator_missing_members<_Tp> &&
  __iterator_traits_detail::__cpp17_input_iterator<_Tp>;

// Otherwise, `pointer` names `void`.
template<class>
struct __iterator_traits_member_pointer_or_arrow_or_void { using type = void; };

// [iterator.traits]/3.2.1
// If the qualified-id `I::pointer` is valid and denotes a type, `pointer` names that type.
template<__has_member_pointer _Ip>
struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { using type = typename _Ip::pointer; };

// Otherwise, if `decltype(declval<I&>().operator->())` is well-formed, then `pointer` names that
// type.
template<class _Ip>
  requires requires(_Ip& __i) { __i.operator->(); } && (!__has_member_pointer<_Ip>)
struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> {
  using type = decltype(declval<_Ip&>().operator->());
};

// Otherwise, `reference` names `iter-reference-t<I>`.
template<class _Ip>
struct __iterator_traits_member_reference { using type = iter_reference_t<_Ip>; };

// [iterator.traits]/3.2.2
// If the qualified-id `I::reference` is valid and denotes a type, `reference` names that type.
template<__has_member_reference _Ip>
struct __iterator_traits_member_reference<_Ip> { using type = typename _Ip::reference; };

// [iterator.traits]/3.2.3.4
// input_iterator_tag
template<class _Ip>
struct __deduce_iterator_category {
  using type = input_iterator_tag;
};

// [iterator.traits]/3.2.3.1
// `random_access_iterator_tag` if `I` satisfies `cpp17-random-access-iterator`, or otherwise
template<__iterator_traits_detail::__cpp17_random_access_iterator _Ip>
struct __deduce_iterator_category<_Ip> {
  using type = random_access_iterator_tag;
};

// [iterator.traits]/3.2.3.2
// `bidirectional_iterator_tag` if `I` satisfies `cpp17-bidirectional-iterator`, or otherwise
template<__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip>
struct __deduce_iterator_category<_Ip> {
  using type = bidirectional_iterator_tag;
};

// [iterator.traits]/3.2.3.3
// `forward_iterator_tag` if `I` satisfies `cpp17-forward-iterator`, or otherwise
template<__iterator_traits_detail::__cpp17_forward_iterator _Ip>
struct __deduce_iterator_category<_Ip> {
  using type = forward_iterator_tag;
};

template<class _Ip>
struct __iterator_traits_iterator_category : __deduce_iterator_category<_Ip> {};

// [iterator.traits]/3.2.3
// If the qualified-id `I::iterator-category` is valid and denotes a type, `iterator-category` names
// that type.
template<__has_member_iterator_category _Ip>
struct __iterator_traits_iterator_category<_Ip> {
  using type = typename _Ip::iterator_category;
};

// otherwise, it names void.
template<class>
struct __iterator_traits_difference_type { using type = void; };

// If the qualified-id `incrementable_traits<I>::difference_type` is valid and denotes a type, then
// `difference_type` names that type;
template<class _Ip>
requires requires { typename incrementable_traits<_Ip>::difference_type; }
struct __iterator_traits_difference_type<_Ip> {
  using type = typename incrementable_traits<_Ip>::difference_type;
};

// [iterator.traits]/3.4
// Otherwise, `iterator_traits<I>` has no members by any of the above names.
template<class>
struct __iterator_traits {};

// [iterator.traits]/3.1
// If `I` has valid ([temp.deduct]) member types `difference-type`, `value-type`, `reference`, and
// `iterator-category`, then `iterator-traits<I>` has the following publicly accessible members:
template<__specifies_members _Ip>
struct __iterator_traits<_Ip> {
  using iterator_category  = typename _Ip::iterator_category;
  using value_type         = typename _Ip::value_type;
  using difference_type    = typename _Ip::difference_type;
  using pointer            = typename __iterator_traits_member_pointer_or_void<_Ip>::type;
  using reference          = typename _Ip::reference;
};

// [iterator.traits]/3.2
// Otherwise, if `I` satisfies the exposition-only concept `cpp17-input-iterator`,
// `iterator-traits<I>` has the following publicly accessible members:
template<__cpp17_input_iterator_missing_members _Ip>
struct __iterator_traits<_Ip> {
  using iterator_category = typename __iterator_traits_iterator_category<_Ip>::type;
  using value_type        = typename indirectly_readable_traits<_Ip>::value_type;
  using difference_type   = typename incrementable_traits<_Ip>::difference_type;
  using pointer           = typename __iterator_traits_member_pointer_or_arrow_or_void<_Ip>::type;
  using reference         = typename __iterator_traits_member_reference<_Ip>::type;
};

// Otherwise, if `I` satisfies the exposition-only concept `cpp17-iterator`, then
// `iterator_traits<I>` has the following publicly accessible members:
template<__cpp17_iterator_missing_members _Ip>
struct __iterator_traits<_Ip> {
  using iterator_category = output_iterator_tag;
  using value_type        = void;
  using difference_type   = typename __iterator_traits_difference_type<_Ip>::type;
  using pointer           = void;
  using reference         = void;
};

template<class _Ip>
struct iterator_traits : __iterator_traits<_Ip> {
  using __primary_template = iterator_traits;
};

#else // !defined(_LIBCPP_HAS_NO_RANGES)
# 369 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

template <class _Iter, bool> struct __iterator_traits {};

template <class _Iter, bool> struct __iterator_traits_impl {};

template <class _Iter>
struct __iterator_traits_impl<_Iter, true>
{
    typedef typename _Iter::difference_type   difference_type;
    typedef typename _Iter::value_type        value_type;
    typedef typename _Iter::pointer           pointer;
    typedef typename _Iter::reference         reference;
    typedef typename _Iter::iterator_category iterator_category;
};

template <class _Iter>
struct __iterator_traits<_Iter, true>
    :  __iterator_traits_impl
      <
        _Iter,
        is_convertible<typename _Iter::iterator_category, input_iterator_tag>::value ||
        is_convertible<typename _Iter::iterator_category, output_iterator_tag>::value
      >
{};

// iterator_traits<Iterator> will only have the nested types if Iterator::iterator_category
//    exists.  Else iterator_traits<Iterator> will be an empty class.  This is a
//    conforming extension which allows some programs to compile and behave as
//    the client expects instead of failing at compile time.

template <class _Iter>
struct _LIBCPP_TEMPLATE_VIS iterator_traits
    : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> {

  using __primary_template = iterator_traits;
};
#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

template<class _Tp>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
requires is_object_v<_Tp>
#endif
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*>
{
    typedef ptrdiff_t difference_type;
    typedef typename remove_cv<_Tp>::type value_type;
    typedef _Tp* pointer;
    typedef _Tp& reference;
    typedef random_access_iterator_tag iterator_category;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 419 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
    typedef contiguous_iterator_tag    iterator_concept;
#endif
# 421 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
};

template <class _Tp, class _Up, bool = __has_iterator_category<iterator_traits<_Tp> >::value>
struct __has_iterator_category_convertible_to
    : is_convertible<typename iterator_traits<_Tp>::iterator_category, _Up>
{};

template <class _Tp, class _Up>
struct __has_iterator_category_convertible_to<_Tp, _Up, false> : false_type {};

template <class _Tp, class _Up, bool = __has_iterator_concept<_Tp>::value>
struct __has_iterator_concept_convertible_to
    : is_convertible<typename _Tp::iterator_concept, _Up>
{};

template <class _Tp, class _Up>
struct __has_iterator_concept_convertible_to<_Tp, _Up, false> : false_type {};

template <class _Tp>
struct __is_cpp17_input_iterator : public __has_iterator_category_convertible_to<_Tp, input_iterator_tag> {};

template <class _Tp>
struct __is_cpp17_forward_iterator : public __has_iterator_category_convertible_to<_Tp, forward_iterator_tag> {};

template <class _Tp>
struct __is_cpp17_bidirectional_iterator : public __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag> {};

template <class _Tp>
struct __is_cpp17_random_access_iterator : public __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag> {};

// __is_cpp17_contiguous_iterator determines if an iterator is known by
// libc++ to be contiguous, either because it advertises itself as such
// (in C++20) or because it is a pointer type or a known trivial wrapper
// around a (possibly fancy) pointer type, such as __wrap_iter<T*>.
// Such iterators receive special "contiguous" optimizations in
// std::copy and std::sort.
//
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
template <class _Tp>
struct __is_cpp17_contiguous_iterator : _Or<
    __has_iterator_category_convertible_to<_Tp, contiguous_iterator_tag>,
    __has_iterator_concept_convertible_to<_Tp, contiguous_iterator_tag>
> {};
#else
# 465 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
template <class _Tp>
struct __is_cpp17_contiguous_iterator : false_type {};
#endif
# 468 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

// Any native pointer which is an iterator is also a contiguous iterator.
template <class _Up>
struct __is_cpp17_contiguous_iterator<_Up*> : true_type {};


template <class _Tp>
struct __is_exactly_cpp17_input_iterator
    : public integral_constant<bool,
         __has_iterator_category_convertible_to<_Tp, input_iterator_tag>::value &&
        !__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value> {};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _InputIterator>
using __iter_value_type = typename iterator_traits<_InputIterator>::value_type;

template<class _InputIterator>
using __iter_key_type = remove_const_t<typename iterator_traits<_InputIterator>::value_type::first_type>;

template<class _InputIterator>
using __iter_mapped_type = typename iterator_traits<_InputIterator>::value_type::second_type;

template<class _InputIterator>
using __iter_to_alloc_type = pair<
    add_const_t<typename iterator_traits<_InputIterator>::value_type::first_type>,
    typename iterator_traits<_InputIterator>::value_type::second_type>;
#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ITERATOR_TRAITS_H
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h> // __to_address
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_POINTER_TRAITS_H
#define _LIBCPP___MEMORY_POINTER_TRAITS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp, class = void>
struct __has_element_type : false_type {};

template <class _Tp>
struct __has_element_type<_Tp,
              typename __void_t<typename _Tp::element_type>::type> : true_type {};

template <class _Ptr, bool = __has_element_type<_Ptr>::value>
struct __pointer_traits_element_type;

template <class _Ptr>
struct __pointer_traits_element_type<_Ptr, true>
{
    typedef _LIBCPP_NODEBUG_TYPE typename _Ptr::element_type type;
};

template <template <class, class...> class _Sp, class _Tp, class ..._Args>
struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, true>
{
    typedef _LIBCPP_NODEBUG_TYPE typename _Sp<_Tp, _Args...>::element_type type;
};

template <template <class, class...> class _Sp, class _Tp, class ..._Args>
struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, false>
{
    typedef _LIBCPP_NODEBUG_TYPE _Tp type;
};

template <class _Tp, class = void>
struct __has_difference_type : false_type {};

template <class _Tp>
struct __has_difference_type<_Tp,
            typename __void_t<typename _Tp::difference_type>::type> : true_type {};

template <class _Ptr, bool = __has_difference_type<_Ptr>::value>
struct __pointer_traits_difference_type
{
    typedef _LIBCPP_NODEBUG_TYPE ptrdiff_t type;
};

template <class _Ptr>
struct __pointer_traits_difference_type<_Ptr, true>
{
    typedef _LIBCPP_NODEBUG_TYPE typename _Ptr::difference_type type;
};

template <class _Tp, class _Up>
struct __has_rebind
{
private:
    struct __two {char __lx; char __lxx;};
    template <class _Xp> static __two __test(...);
    _LIBCPP_SUPPRESS_DEPRECATED_PUSH
    template <class _Xp> static char __test(typename _Xp::template rebind<_Up>* = 0);
    _LIBCPP_SUPPRESS_DEPRECATED_POP
public:
    static const bool value = sizeof(__test<_Tp>(0)) == 1;
};

template <class _Tp, class _Up, bool = __has_rebind<_Tp, _Up>::value>
struct __pointer_traits_rebind
{
#ifndef _LIBCPP_CXX03_LANG
    typedef _LIBCPP_NODEBUG_TYPE typename _Tp::template rebind<_Up> type;
#else
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
    typedef _LIBCPP_NODEBUG_TYPE typename _Tp::template rebind<_Up>::other type;
#endif
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
};

template <template <class, class...> class _Sp, class _Tp, class ..._Args, class _Up>
struct __pointer_traits_rebind<_Sp<_Tp, _Args...>, _Up, true>
{
#ifndef _LIBCPP_CXX03_LANG
    typedef _LIBCPP_NODEBUG_TYPE typename _Sp<_Tp, _Args...>::template rebind<_Up> type;
#else
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
    typedef _LIBCPP_NODEBUG_TYPE typename _Sp<_Tp, _Args...>::template rebind<_Up>::other type;
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
};

template <template <class, class...> class _Sp, class _Tp, class ..._Args, class _Up>
struct __pointer_traits_rebind<_Sp<_Tp, _Args...>, _Up, false>
{
    typedef _Sp<_Up, _Args...> type;
};

template <class _Ptr>
struct _LIBCPP_TEMPLATE_VIS pointer_traits
{
    typedef _Ptr                                                     pointer;
    typedef typename __pointer_traits_element_type<pointer>::type    element_type;
    typedef typename __pointer_traits_difference_type<pointer>::type difference_type;

#ifndef _LIBCPP_CXX03_LANG
    template <class _Up> using rebind = typename __pointer_traits_rebind<pointer, _Up>::type;
#else
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
    template <class _Up> struct rebind
        {typedef typename __pointer_traits_rebind<pointer, _Up>::type other;};
#endif // _LIBCPP_CXX03_LANG
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3

private:
    struct __nat {};
public:
    _LIBCPP_INLINE_VISIBILITY
    static pointer pointer_to(typename conditional<is_void<element_type>::value,
                                           __nat, element_type>::type& __r)
        {return pointer::pointer_to(__r);}
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS pointer_traits<_Tp*>
{
    typedef _Tp*      pointer;
    typedef _Tp       element_type;
    typedef ptrdiff_t difference_type;

#ifndef _LIBCPP_CXX03_LANG
    template <class _Up> using rebind = _Up*;
#else
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
    template <class _Up> struct rebind {typedef _Up* other;};
#endif
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3

private:
    struct __nat {};
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static pointer pointer_to(typename conditional<is_void<element_type>::value,
                                      __nat, element_type>::type& __r) _NOEXCEPT
        {return _VSTD::addressof(__r);}
};

template <class _From, class _To>
struct __rebind_pointer {
#ifndef _LIBCPP_CXX03_LANG
    typedef typename pointer_traits<_From>::template rebind<_To>        type;
#else
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
    typedef typename pointer_traits<_From>::template rebind<_To>::other type;
#endif
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
};

// to_address

template <class _Pointer, class = void>
struct __to_address_helper;

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
_Tp* __to_address(_Tp* __p) _NOEXCEPT {
    static_assert(!is_function<_Tp>::value, "_Tp is a function type");
    return __p;
}

// enable_if is needed here to avoid instantiating checks for fancy pointers on raw pointers
template <class _Pointer, class = _EnableIf<!is_pointer<_Pointer>::value> >
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename decay<decltype(__to_address_helper<_Pointer>::__call(declval<const _Pointer&>()))>::type
__to_address(const _Pointer& __p) _NOEXCEPT {
    return __to_address_helper<_Pointer>::__call(__p);
}

template <class _Pointer, class>
struct __to_address_helper {
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    static decltype(_VSTD::__to_address(declval<const _Pointer&>().operator->()))
    __call(const _Pointer&__p) _NOEXCEPT {
        return _VSTD::__to_address(__p.operator->());
    }
};

template <class _Pointer>
struct __to_address_helper<_Pointer, decltype((void)pointer_traits<_Pointer>::to_address(declval<const _Pointer&>()))> {
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    static decltype(pointer_traits<_Pointer>::to_address(declval<const _Pointer&>()))
    __call(const _Pointer&__p) _NOEXCEPT {
        return pointer_traits<_Pointer>::to_address(__p);
    }
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
template <class _Pointer>
inline _LIBCPP_INLINE_VISIBILITY constexpr
auto to_address(const _Pointer& __p) noexcept {
    return _VSTD::__to_address(__p);
}
#endif
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_POINTER_TRAITS_H
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_traits.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Iter>
class __wrap_iter
{
public:
    typedef _Iter                                                      iterator_type;
    typedef typename iterator_traits<iterator_type>::value_type        value_type;
    typedef typename iterator_traits<iterator_type>::difference_type   difference_type;
    typedef typename iterator_traits<iterator_type>::pointer           pointer;
    typedef typename iterator_traits<iterator_type>::reference         reference;
    typedef typename iterator_traits<iterator_type>::iterator_category iterator_category;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    typedef contiguous_iterator_tag                                    iterator_concept;
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3

private:
    iterator_type __i;
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter() _NOEXCEPT
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
                : __i{}
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        __get_db()->__insert_i(this);
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    }
    template <class _Up> _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
        __wrap_iter(const __wrap_iter<_Up>& __u,
            typename enable_if<is_convertible<_Up, iterator_type>::value>::type* = nullptr) _NOEXCEPT
            : __i(__u.base())
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        __get_db()->__iterator_copy(this, &__u);
#endif
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    }
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
    __wrap_iter(const __wrap_iter& __x)
        : __i(__x.base())
    {
        __get_db()->__iterator_copy(this, &__x);
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
    __wrap_iter& operator=(const __wrap_iter& __x)
    {
        if (this != &__x)
        {
            __get_db()->__iterator_copy(this, &__x);
            __i = __x.__i;
        }
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
    ~__wrap_iter()
    {
        __get_db()->__erase_i(this);
    }
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG reference operator*() const _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this),
                       "Attempted to dereference a non-dereferenceable iterator");
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        return *__i;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG pointer  operator->() const _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this),
                       "Attempted to dereference a non-dereferenceable iterator");
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        return _VSTD::__to_address(__i);
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter& operator++() _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this),
                       "Attempted to increment a non-incrementable iterator");
#endif
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        ++__i;
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter  operator++(int) _NOEXCEPT
        {__wrap_iter __tmp(*this); ++(*this); return __tmp;}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter& operator--() _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__decrementable(this),
                       "Attempted to decrement a non-decrementable iterator");
#endif
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        --__i;
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter  operator--(int) _NOEXCEPT
        {__wrap_iter __tmp(*this); --(*this); return __tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter  operator+ (difference_type __n) const _NOEXCEPT
        {__wrap_iter __w(*this); __w += __n; return __w;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter& operator+=(difference_type __n) _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__addable(this, __n),
                   "Attempted to add/subtract an iterator outside its valid range");
#endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        __i += __n;
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter  operator- (difference_type __n) const _NOEXCEPT
        {return *this + (-__n);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter& operator-=(difference_type __n) _NOEXCEPT
        {*this += -__n; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG reference    operator[](difference_type __n) const _NOEXCEPT
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        _LIBCPP_ASSERT(__get_const_db()->__subscriptable(this, __n),
                   "Attempted to subscript an iterator outside its valid range");
#endif
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
        return __i[__n];
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG iterator_type base() const _NOEXCEPT {return __i;}

private:
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter(const void* __p, iterator_type __x) : __i(__x)
    {
        __get_db()->__insert_ic(this, __p);
    }
#else
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {}
#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3

    template <class _Up> friend class __wrap_iter;
    template <class _CharT, class _Traits, class _Alloc> friend class basic_string;
    template <class _Tp, class _Alloc> friend class _LIBCPP_TEMPLATE_VIS vector;
    template <class _Tp, size_t> friend class _LIBCPP_TEMPLATE_VIS span;
};

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator==(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
    return __x.base() == __y.base();
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator==(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
    return __x.base() == __y.base();
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator<(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_ASSERT(__get_const_db()->__less_than_comparable(&__x, &__y),
                   "Attempted to compare incomparable iterators");
#endif
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    return __x.base() < __y.base();
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator<(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_ASSERT(__get_const_db()->__less_than_comparable(&__x, &__y),
                   "Attempted to compare incomparable iterators");
#endif
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    return __x.base() < __y.base();
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
    return !(__x == __y);
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
    return !(__x == __y);
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
    return __y < __x;
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
    return __y < __x;
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
    return !(__x < __y);
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
    return !(__x < __y);
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT
{
    return !(__y < __x);
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
bool operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
{
    return !(__y < __x);
}

template <class _Iter1, class _Iter2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
#ifndef _LIBCPP_CXX03_LANG
auto operator-(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
    -> decltype(__x.base() - __y.base())
#else
# 265 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
typename __wrap_iter<_Iter1>::difference_type
operator-(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT
#endif // C++03
# 268 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    _LIBCPP_ASSERT(__get_const_db()->__less_than_comparable(&__x, &__y),
                   "Attempted to subtract incompatible iterators");
#endif
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
    return __x.base() - __y.base();
}

template <class _Iter1>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_IF_NODEBUG
__wrap_iter<_Iter1> operator+(typename __wrap_iter<_Iter1>::difference_type __n, __wrap_iter<_Iter1> __x) _NOEXCEPT
{
    __x += __n;
    return __x;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
template <class _It>
struct __is_cpp17_contiguous_iterator<__wrap_iter<_It> > : true_type {};
#endif
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3

template <class _Iter>
_LIBCPP_CONSTEXPR
decltype(_VSTD::__to_address(declval<_Iter>()))
__to_address(__wrap_iter<_Iter> __w) _NOEXCEPT {
    return _VSTD::__to_address(__w.base());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_WRAP_ITER_H
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/wrap_iter.h" 3
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 1 3
// -*- C++ -*-
//===-------------------------- algorithm ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_ALGORITHM
#define _LIBCPP_ALGORITHM

/*
    algorithm synopsis

#include <initializer_list>

namespace std
{

template <class InputIterator, class Predicate>
    constexpr bool     // constexpr in C++20
    all_of(InputIterator first, InputIterator last, Predicate pred);

template <class InputIterator, class Predicate>
    constexpr bool     // constexpr in C++20
    any_of(InputIterator first, InputIterator last, Predicate pred);

template <class InputIterator, class Predicate>
    constexpr bool     // constexpr in C++20
    none_of(InputIterator first, InputIterator last, Predicate pred);

template <class InputIterator, class Function>
    constexpr Function          // constexpr in C++20
    for_each(InputIterator first, InputIterator last, Function f);

template<class InputIterator, class Size, class Function>
    constexpr InputIterator     // constexpr in C++20
    for_each_n(InputIterator first, Size n, Function f); // C++17

template <class InputIterator, class T>
    constexpr InputIterator     // constexpr in C++20
    find(InputIterator first, InputIterator last, const T& value);

template <class InputIterator, class Predicate>
    constexpr InputIterator     // constexpr in C++20
    find_if(InputIterator first, InputIterator last, Predicate pred);

template<class InputIterator, class Predicate>
    constexpr InputIterator     // constexpr in C++20
    find_if_not(InputIterator first, InputIterator last, Predicate pred);

template <class ForwardIterator1, class ForwardIterator2>
    constexpr ForwardIterator1  // constexpr in C++20
    find_end(ForwardIterator1 first1, ForwardIterator1 last1,
             ForwardIterator2 first2, ForwardIterator2 last2);

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
    constexpr ForwardIterator1  // constexpr in C++20
    find_end(ForwardIterator1 first1, ForwardIterator1 last1,
             ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);

template <class ForwardIterator1, class ForwardIterator2>
    constexpr ForwardIterator1  // constexpr in C++20
    find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
                  ForwardIterator2 first2, ForwardIterator2 last2);

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
    constexpr ForwardIterator1  // constexpr in C++20
    find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
                  ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);

template <class ForwardIterator>
    constexpr ForwardIterator   // constexpr in C++20
    adjacent_find(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class BinaryPredicate>
    constexpr ForwardIterator   // constexpr in C++20
    adjacent_find(ForwardIterator first, ForwardIterator last, BinaryPredicate pred);

template <class InputIterator, class T>
    constexpr typename iterator_traits<InputIterator>::difference_type  // constexpr in C++20
    count(InputIterator first, InputIterator last, const T& value);

template <class InputIterator, class Predicate>
    constexpr typename iterator_traits<InputIterator>::difference_type // constexpr in C++20
    count_if(InputIterator first, InputIterator last, Predicate pred);

template <class InputIterator1, class InputIterator2>
    constexpr pair<InputIterator1, InputIterator2>   // constexpr in C++20
    mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);

template <class InputIterator1, class InputIterator2>
    constexpr pair<InputIterator1, InputIterator2>   // constexpr in C++20
    mismatch(InputIterator1 first1, InputIterator1 last1,
             InputIterator2 first2, InputIterator2 last2); // **C++14**

template <class InputIterator1, class InputIterator2, class BinaryPredicate>
    constexpr pair<InputIterator1, InputIterator2>   // constexpr in C++20
    mismatch(InputIterator1 first1, InputIterator1 last1,
             InputIterator2 first2, BinaryPredicate pred);

template <class InputIterator1, class InputIterator2, class BinaryPredicate>
    constexpr pair<InputIterator1, InputIterator2>   // constexpr in C++20
    mismatch(InputIterator1 first1, InputIterator1 last1,
             InputIterator2 first2, InputIterator2 last2,
             BinaryPredicate pred); // **C++14**

template <class InputIterator1, class InputIterator2>
    constexpr bool      // constexpr in C++20
    equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);

template <class InputIterator1, class InputIterator2>
    constexpr bool      // constexpr in C++20
    equal(InputIterator1 first1, InputIterator1 last1,
          InputIterator2 first2, InputIterator2 last2); // **C++14**

template <class InputIterator1, class InputIterator2, class BinaryPredicate>
    constexpr bool      // constexpr in C++20
    equal(InputIterator1 first1, InputIterator1 last1,
          InputIterator2 first2, BinaryPredicate pred);

template <class InputIterator1, class InputIterator2, class BinaryPredicate>
    constexpr bool      // constexpr in C++20
    equal(InputIterator1 first1, InputIterator1 last1,
          InputIterator2 first2, InputIterator2 last2,
          BinaryPredicate pred); // **C++14**

template<class ForwardIterator1, class ForwardIterator2>
    constexpr bool      // constexpr in C++20
    is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2);

template<class ForwardIterator1, class ForwardIterator2>
    constexpr bool      // constexpr in C++20
    is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2, ForwardIterator2 last2); // **C++14**

template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
    constexpr bool      // constexpr in C++20
    is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2, BinaryPredicate pred);

template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
    constexpr bool      // constexpr in C++20
    is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2, ForwardIterator2 last2,
                   BinaryPredicate pred);  // **C++14**

template <class ForwardIterator1, class ForwardIterator2>
    constexpr ForwardIterator1      // constexpr in C++20
    search(ForwardIterator1 first1, ForwardIterator1 last1,
           ForwardIterator2 first2, ForwardIterator2 last2);

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
    constexpr ForwardIterator1      // constexpr in C++20
    search(ForwardIterator1 first1, ForwardIterator1 last1,
           ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);

template <class ForwardIterator, class Size, class T>
    constexpr ForwardIterator       // constexpr in C++20
    search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value);

template <class ForwardIterator, class Size, class T, class BinaryPredicate>
    constexpr ForwardIterator       // constexpr in C++20
    search_n(ForwardIterator first, ForwardIterator last,
             Size count, const T& value, BinaryPredicate pred);

template <class InputIterator, class OutputIterator>
    constexpr OutputIterator      // constexpr in C++20
    copy(InputIterator first, InputIterator last, OutputIterator result);

template<class InputIterator, class OutputIterator, class Predicate>
    constexpr OutputIterator      // constexpr in C++20
    copy_if(InputIterator first, InputIterator last,
            OutputIterator result, Predicate pred);

template<class InputIterator, class Size, class OutputIterator>
    constexpr OutputIterator      // constexpr in C++20
    copy_n(InputIterator first, Size n, OutputIterator result);

template <class BidirectionalIterator1, class BidirectionalIterator2>
    constexpr BidirectionalIterator2      // constexpr in C++20
    copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,
                  BidirectionalIterator2 result);

template <class ForwardIterator1, class ForwardIterator2>
    constexpr ForwardIterator2    // constexpr in C++20
    swap_ranges(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2);

template <class ForwardIterator1, class ForwardIterator2>
    constexpr void                // constexpr in C++20
    iter_swap(ForwardIterator1 a, ForwardIterator2 b);

template <class InputIterator, class OutputIterator, class UnaryOperation>
    constexpr OutputIterator      // constexpr in C++20
    transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op);

template <class InputIterator1, class InputIterator2, class OutputIterator, class BinaryOperation>
    constexpr OutputIterator      // constexpr in C++20
    transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2,
              OutputIterator result, BinaryOperation binary_op);

template <class ForwardIterator, class T>
    constexpr void      // constexpr in C++20
    replace(ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value);

template <class ForwardIterator, class Predicate, class T>
    constexpr void      // constexpr in C++20
    replace_if(ForwardIterator first, ForwardIterator last, Predicate pred, const T& new_value);

template <class InputIterator, class OutputIterator, class T>
    constexpr OutputIterator      // constexpr in C++20
    replace_copy(InputIterator first, InputIterator last, OutputIterator result,
                 const T& old_value, const T& new_value);

template <class InputIterator, class OutputIterator, class Predicate, class T>
    constexpr OutputIterator      // constexpr in C++20
    replace_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value);

template <class ForwardIterator, class T>
    constexpr void      // constexpr in C++20
    fill(ForwardIterator first, ForwardIterator last, const T& value);

template <class OutputIterator, class Size, class T>
    constexpr OutputIterator      // constexpr in C++20
    fill_n(OutputIterator first, Size n, const T& value);

template <class ForwardIterator, class Generator>
    constexpr void      // constexpr in C++20
    generate(ForwardIterator first, ForwardIterator last, Generator gen);

template <class OutputIterator, class Size, class Generator>
    constexpr OutputIterator      // constexpr in C++20
    generate_n(OutputIterator first, Size n, Generator gen);

template <class ForwardIterator, class T>
    constexpr ForwardIterator     // constexpr in C++20
    remove(ForwardIterator first, ForwardIterator last, const T& value);

template <class ForwardIterator, class Predicate>
    constexpr ForwardIterator     // constexpr in C++20
    remove_if(ForwardIterator first, ForwardIterator last, Predicate pred);

template <class InputIterator, class OutputIterator, class T>
    constexpr OutputIterator     // constexpr in C++20
    remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T& value);

template <class InputIterator, class OutputIterator, class Predicate>
    constexpr OutputIterator     // constexpr in C++20
    remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred);

template <class ForwardIterator>
    constexpr ForwardIterator    // constexpr in C++20
    unique(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class BinaryPredicate>
    constexpr ForwardIterator    // constexpr in C++20
    unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred);

template <class InputIterator, class OutputIterator>
    constexpr OutputIterator     // constexpr in C++20
    unique_copy(InputIterator first, InputIterator last, OutputIterator result);

template <class InputIterator, class OutputIterator, class BinaryPredicate>
    constexpr OutputIterator     // constexpr in C++20
    unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred);

template <class BidirectionalIterator>
    constexpr void               // constexpr in C++20
    reverse(BidirectionalIterator first, BidirectionalIterator last);

template <class BidirectionalIterator, class OutputIterator>
    constexpr OutputIterator       // constexpr in C++20
    reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result);

template <class ForwardIterator>
    constexpr ForwardIterator      // constexpr in C++20
    rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last);

template <class ForwardIterator, class OutputIterator>
    constexpr OutputIterator       // constexpr in C++20
    rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result);

template <class RandomAccessIterator>
    void
    random_shuffle(RandomAccessIterator first, RandomAccessIterator last); // deprecated in C++14, removed in C++17

template <class RandomAccessIterator, class RandomNumberGenerator>
    void
    random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
                   RandomNumberGenerator& rand);  // deprecated in C++14, removed in C++17

template<class PopulationIterator, class SampleIterator,
         class Distance, class UniformRandomBitGenerator>
    SampleIterator sample(PopulationIterator first, PopulationIterator last,
                          SampleIterator out, Distance n,
                          UniformRandomBitGenerator&& g); // C++17

template<class RandomAccessIterator, class UniformRandomNumberGenerator>
    void shuffle(RandomAccessIterator first, RandomAccessIterator last,
                 UniformRandomNumberGenerator&& g);

template<class ForwardIterator>
  constexpr ForwardIterator
    shift_left(ForwardIterator first, ForwardIterator last,
               typename iterator_traits<ForwardIterator>::difference_type n); // C++20

template<class ForwardIterator>
  constexpr ForwardIterator
    shift_right(ForwardIterator first, ForwardIterator last,
                typename iterator_traits<ForwardIterator>::difference_type n); // C++20

template <class InputIterator, class Predicate>
    constexpr bool  // constexpr in C++20
    is_partitioned(InputIterator first, InputIterator last, Predicate pred);

template <class ForwardIterator, class Predicate>
    constexpr ForwardIterator  // constexpr in C++20
    partition(ForwardIterator first, ForwardIterator last, Predicate pred);

template <class InputIterator, class OutputIterator1,
          class OutputIterator2, class Predicate>
    constexpr pair<OutputIterator1, OutputIterator2>   // constexpr in C++20
    partition_copy(InputIterator first, InputIterator last,
                   OutputIterator1 out_true, OutputIterator2 out_false,
                   Predicate pred);

template <class ForwardIterator, class Predicate>
    ForwardIterator
    stable_partition(ForwardIterator first, ForwardIterator last, Predicate pred);

template<class ForwardIterator, class Predicate>
    constexpr ForwardIterator  // constexpr in C++20
    partition_point(ForwardIterator first, ForwardIterator last, Predicate pred);

template <class ForwardIterator>
    constexpr bool  // constexpr in C++20
    is_sorted(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Compare>
    constexpr bool  // constexpr in C++20
    is_sorted(ForwardIterator first, ForwardIterator last, Compare comp);

template<class ForwardIterator>
    constexpr ForwardIterator    // constexpr in C++20
    is_sorted_until(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Compare>
    constexpr ForwardIterator    // constexpr in C++20
    is_sorted_until(ForwardIterator first, ForwardIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr void               // constexpr in C++20
    sort(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void               // constexpr in C++20
    sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    void
    stable_sort(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    void
    stable_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr void                    // constexpr in C++20
    partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                    // constexpr in C++20
    partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last, Compare comp);

template <class InputIterator, class RandomAccessIterator>
    constexpr RandomAccessIterator    // constexpr in C++20
    partial_sort_copy(InputIterator first, InputIterator last,
                      RandomAccessIterator result_first, RandomAccessIterator result_last);

template <class InputIterator, class RandomAccessIterator, class Compare>
    constexpr RandomAccessIterator    // constexpr in C++20
    partial_sort_copy(InputIterator first, InputIterator last,
                      RandomAccessIterator result_first, RandomAccessIterator result_last, Compare comp);

template <class RandomAccessIterator>
    constexpr void                    // constexpr in C++20
    nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                    // constexpr in C++20
    nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp);

template <class ForwardIterator, class T>
    constexpr ForwardIterator                         // constexpr in C++20
    lower_bound(ForwardIterator first, ForwardIterator last, const T& value);

template <class ForwardIterator, class T, class Compare>
    constexpr ForwardIterator                         // constexpr in C++20
    lower_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp);

template <class ForwardIterator, class T>
    constexpr ForwardIterator                         // constexpr in C++20
    upper_bound(ForwardIterator first, ForwardIterator last, const T& value);

template <class ForwardIterator, class T, class Compare>
    constexpr ForwardIterator                         // constexpr in C++20
    upper_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp);

template <class ForwardIterator, class T>
    constexpr pair<ForwardIterator, ForwardIterator>  // constexpr in C++20
    equal_range(ForwardIterator first, ForwardIterator last, const T& value);

template <class ForwardIterator, class T, class Compare>
    constexpr pair<ForwardIterator, ForwardIterator>  // constexpr in C++20
    equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp);

template <class ForwardIterator, class T>
    constexpr bool                                    // constexpr in C++20
    binary_search(ForwardIterator first, ForwardIterator last, const T& value);

template <class ForwardIterator, class T, class Compare>
    constexpr bool                                    // constexpr in C++20
    binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp);

template <class InputIterator1, class InputIterator2, class OutputIterator>
    constexpr OutputIterator                          // constexpr in C++20
    merge(InputIterator1 first1, InputIterator1 last1,
          InputIterator2 first2, InputIterator2 last2, OutputIterator result);

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
    constexpr OutputIterator                          // constexpr in C++20
    merge(InputIterator1 first1, InputIterator1 last1,
          InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

template <class BidirectionalIterator>
    void
    inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last);

template <class BidirectionalIterator, class Compare>
    void
    inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last, Compare comp);

template <class InputIterator1, class InputIterator2>
    constexpr bool                                    // constexpr in C++20
    includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2);

template <class InputIterator1, class InputIterator2, class Compare>
    constexpr bool                                    // constexpr in C++20
    includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp);

template <class InputIterator1, class InputIterator2, class OutputIterator>
    constexpr OutputIterator                          // constexpr in C++20
    set_union(InputIterator1 first1, InputIterator1 last1,
              InputIterator2 first2, InputIterator2 last2, OutputIterator result);

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
    constexpr OutputIterator                          // constexpr in C++20
    set_union(InputIterator1 first1, InputIterator1 last1,
              InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

template <class InputIterator1, class InputIterator2, class OutputIterator>
    constexpr OutputIterator                         // constexpr in C++20
    set_intersection(InputIterator1 first1, InputIterator1 last1,
                     InputIterator2 first2, InputIterator2 last2, OutputIterator result);

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
    constexpr OutputIterator                         // constexpr in C++20
    set_intersection(InputIterator1 first1, InputIterator1 last1,
                     InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

template <class InputIterator1, class InputIterator2, class OutputIterator>
    constexpr OutputIterator                         // constexpr in C++20
    set_difference(InputIterator1 first1, InputIterator1 last1,
                   InputIterator2 first2, InputIterator2 last2, OutputIterator result);

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
    constexpr OutputIterator                         // constexpr in C++20
    set_difference(InputIterator1 first1, InputIterator1 last1,
                   InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

template <class InputIterator1, class InputIterator2, class OutputIterator>
    constexpr OutputIterator                         // constexpr in C++20
    set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
                             InputIterator2 first2, InputIterator2 last2, OutputIterator result);

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
    constexpr OutputIterator                         // constexpr in C++20
    set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
                             InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

template <class RandomAccessIterator>
    constexpr void                                   // constexpr in C++20
    push_heap(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                                   // constexpr in C++20
    push_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr void                                   // constexpr in C++20
    pop_heap(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                                   // constexpr in C++20
    pop_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr void                                   // constexpr in C++20
    make_heap(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                                   // constexpr in C++20
    make_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr void                                   // constexpr in C++20
    sort_heap(RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
    constexpr void                                   // constexpr in C++20
    sort_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr bool   // constexpr in C++20
    is_heap(RandomAccessIterator first, RandomAccessiterator last);

template <class RandomAccessIterator, class Compare>
    constexpr bool   // constexpr in C++20
    is_heap(RandomAccessIterator first, RandomAccessiterator last, Compare comp);

template <class RandomAccessIterator>
    constexpr RandomAccessIterator   // constexpr in C++20
    is_heap_until(RandomAccessIterator first, RandomAccessiterator last);

template <class RandomAccessIterator, class Compare>
    constexpr RandomAccessIterator   // constexpr in C++20
    is_heap_until(RandomAccessIterator first, RandomAccessiterator last, Compare comp);

template <class ForwardIterator>
    constexpr ForwardIterator        // constexpr in C++14
    min_element(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Compare>
    constexpr ForwardIterator        // constexpr in C++14
    min_element(ForwardIterator first, ForwardIterator last, Compare comp);

template <class T>
    constexpr const T&               // constexpr in C++14
    min(const T& a, const T& b);

template <class T, class Compare>
    constexpr const T&               // constexpr in C++14
    min(const T& a, const T& b, Compare comp);

template<class T>
    constexpr T                      // constexpr in C++14
    min(initializer_list<T> t);

template<class T, class Compare>
    constexpr T                      // constexpr in C++14
    min(initializer_list<T> t, Compare comp);

template<class T>
    constexpr const T& clamp(const T& v, const T& lo, const T& hi);               // C++17

template<class T, class Compare>
    constexpr const T& clamp(const T& v, const T& lo, const T& hi, Compare comp); // C++17

template <class ForwardIterator>
    constexpr ForwardIterator        // constexpr in C++14
    max_element(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Compare>
    constexpr ForwardIterator        // constexpr in C++14
    max_element(ForwardIterator first, ForwardIterator last, Compare comp);

template <class T>
    constexpr const T&               // constexpr in C++14
    max(const T& a, const T& b);

template <class T, class Compare>
    constexpr const T&               // constexpr in C++14
    max(const T& a, const T& b, Compare comp);

template<class T>
    constexpr T                      // constexpr in C++14
    max(initializer_list<T> t);

template<class T, class Compare>
    constexpr T                      // constexpr in C++14
    max(initializer_list<T> t, Compare comp);

template<class ForwardIterator>
    constexpr pair<ForwardIterator, ForwardIterator>  // constexpr in C++14
    minmax_element(ForwardIterator first, ForwardIterator last);

template<class ForwardIterator, class Compare>
    constexpr pair<ForwardIterator, ForwardIterator>  // constexpr in C++14
    minmax_element(ForwardIterator first, ForwardIterator last, Compare comp);

template<class T>
    constexpr pair<const T&, const T&>  // constexpr in C++14
    minmax(const T& a, const T& b);

template<class T, class Compare>
    constexpr pair<const T&, const T&>  // constexpr in C++14
    minmax(const T& a, const T& b, Compare comp);

template<class T>
    constexpr pair<T, T>                // constexpr in C++14
    minmax(initializer_list<T> t);

template<class T, class Compare>
    constexpr pair<T, T>                // constexpr in C++14
    minmax(initializer_list<T> t, Compare comp);

template <class InputIterator1, class InputIterator2>
    constexpr bool     // constexpr in C++20
    lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2);

template <class InputIterator1, class InputIterator2, class Compare>
    constexpr bool     // constexpr in C++20
    lexicographical_compare(InputIterator1 first1, InputIterator1 last1,
                            InputIterator2 first2, InputIterator2 last2, Compare comp);

template <class BidirectionalIterator>
    constexpr bool     // constexpr in C++20
    next_permutation(BidirectionalIterator first, BidirectionalIterator last);

template <class BidirectionalIterator, class Compare>
    constexpr bool     // constexpr in C++20
    next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp);

template <class BidirectionalIterator>
    constexpr bool     // constexpr in C++20
    prev_permutation(BidirectionalIterator first, BidirectionalIterator last);

template <class BidirectionalIterator, class Compare>
    constexpr bool     // constexpr in C++20
    prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 648 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 649 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 649 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__bits> // __libcpp_clz
#endif /* expanded by -frewrite-includes */
# 650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___BITS
#define _LIBCPP___BITS

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_COMPILER_MSVC

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_ctz(unsigned __x)           _NOEXCEPT { return __builtin_ctz(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_ctz(unsigned long __x)      _NOEXCEPT { return __builtin_ctzl(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_ctz(unsigned long long __x) _NOEXCEPT { return __builtin_ctzll(__x); }


inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_clz(unsigned __x)           _NOEXCEPT { return __builtin_clz(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_clz(unsigned long __x)      _NOEXCEPT { return __builtin_clzl(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_clz(unsigned long long __x) _NOEXCEPT { return __builtin_clzll(__x); }


inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_popcount(unsigned __x)           _NOEXCEPT { return __builtin_popcount(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_popcount(unsigned long __x)      _NOEXCEPT { return __builtin_popcountl(__x); }

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
int __libcpp_popcount(unsigned long long __x) _NOEXCEPT { return __builtin_popcountll(__x); }

#else  // _LIBCPP_COMPILER_MSVC
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3

// Precondition:  __x != 0
inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_ctz(unsigned __x) {
  static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
  static_assert(sizeof(unsigned long) == 4, "");
  unsigned long __where;
  if (_BitScanForward(&__where, __x))
    return static_cast<int>(__where);
  return 32;
}

inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_ctz(unsigned long __x) {
    static_assert(sizeof(unsigned long) == sizeof(unsigned), "");
    return __ctz(static_cast<unsigned>(__x));
}

inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_ctz(unsigned long long __x) {
    unsigned long __where;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_BITSCAN64)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  if (_BitScanForward64(&__where, __x))
    return static_cast<int>(__where);
#else
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit calls.
  if (_BitScanForward(&__where, static_cast<unsigned long>(__x)))
    return static_cast<int>(__where);
  if (_BitScanForward(&__where, static_cast<unsigned long>(__x >> 32)))
    return static_cast<int>(__where + 32);
#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  return 64;
}

// Precondition:  __x != 0
inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_clz(unsigned __x) {
  static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
  static_assert(sizeof(unsigned long) == 4, "");
  unsigned long __where;
  if (_BitScanReverse(&__where, __x))
    return static_cast<int>(31 - __where);
  return 32; // Undefined Behavior.
}

inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_clz(unsigned long __x) {
    static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
    return __libcpp_clz(static_cast<unsigned>(__x));
}

inline _LIBCPP_INLINE_VISIBILITY
int __libcpp_clz(unsigned long long __x) {
  unsigned long __where;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_BITSCAN64)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  if (_BitScanReverse64(&__where, __x))
    return static_cast<int>(63 - __where);
#else
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  // Win32 doesn't have _BitScanReverse64 so emulate it with two 32 bit calls.
  if (_BitScanReverse(&__where, static_cast<unsigned long>(__x >> 32)))
    return static_cast<int>(63 - (__where + 32));
  if (_BitScanReverse(&__where, static_cast<unsigned long>(__x)))
    return static_cast<int>(63 - __where);
#endif
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
  return 64; // Undefined Behavior.
}

inline _LIBCPP_INLINE_VISIBILITY int __libcpp_popcount(unsigned __x) {
  static_assert(sizeof(unsigned) == 4, "");
  return __popcnt(__x);
}

inline _LIBCPP_INLINE_VISIBILITY int __libcpp_popcount(unsigned long __x) {
  static_assert(sizeof(unsigned long) == 4, "");
  return __popcnt(__x);
}

inline _LIBCPP_INLINE_VISIBILITY int __libcpp_popcount(unsigned long long __x) {
  static_assert(sizeof(unsigned long long) == 8, "");
  return __popcnt64(__x);
}

#endif // _LIBCPP_COMPILER_MSVC
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___BITS
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bits" 3
# 651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 652 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 652 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 1 3
// -*- C++ -*-
//===--------------------------- cstring ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTRING
#define _LIBCPP_CSTRING

/*
    cstring synopsis

Macros:

    NULL

namespace std
{

Types:

    size_t

void* memcpy(void* restrict s1, const void* restrict s2, size_t n);
void* memmove(void* s1, const void* s2, size_t n);
char* strcpy (char* restrict s1, const char* restrict s2);
char* strncpy(char* restrict s1, const char* restrict s2, size_t n);
char* strcat (char* restrict s1, const char* restrict s2);
char* strncat(char* restrict s1, const char* restrict s2, size_t n);
int memcmp(const void* s1, const void* s2, size_t n);
int strcmp (const char* s1, const char* s2);
int strncmp(const char* s1, const char* s2, size_t n);
int strcoll(const char* s1, const char* s2);
size_t strxfrm(char* restrict s1, const char* restrict s2, size_t n);
const void* memchr(const void* s, int c, size_t n);
      void* memchr(      void* s, int c, size_t n);
const char* strchr(const char* s, int c);
      char* strchr(      char* s, int c);
size_t strcspn(const char* s1, const char* s2);
const char* strpbrk(const char* s1, const char* s2);
      char* strpbrk(      char* s1, const char* s2);
const char* strrchr(const char* s, int c);
      char* strrchr(      char* s, int c);
size_t strspn(const char* s1, const char* s2);
const char* strstr(const char* s1, const char* s2);
      char* strstr(      char* s1, const char* s2);
char* strtok(char* restrict s1, const char* restrict s2);
void* memset(void* s, int c, size_t n);
char* strerror(int errnum);
size_t strlen(const char* s);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
#if 0 /* expanded by -frewrite-includes */
#include <string.h>
#endif /* expanded by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 1 3
// -*- C++ -*-
//===--------------------------- string.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STRING_H
#define _LIBCPP_STRING_H

/*
    string.h synopsis

Macros:

    NULL

Types:

    size_t

void* memcpy(void* restrict s1, const void* restrict s2, size_t n);
void* memmove(void* s1, const void* s2, size_t n);
char* strcpy (char* restrict s1, const char* restrict s2);
char* strncpy(char* restrict s1, const char* restrict s2, size_t n);
char* strcat (char* restrict s1, const char* restrict s2);
char* strncat(char* restrict s1, const char* restrict s2, size_t n);
int memcmp(const void* s1, const void* s2, size_t n);
int strcmp (const char* s1, const char* s2);
int strncmp(const char* s1, const char* s2, size_t n);
int strcoll(const char* s1, const char* s2);
size_t strxfrm(char* restrict s1, const char* restrict s2, size_t n);
const void* memchr(const void* s, int c, size_t n);
      void* memchr(      void* s, int c, size_t n);
const char* strchr(const char* s, int c);
      char* strchr(      char* s, int c);
size_t strcspn(const char* s1, const char* s2);
const char* strpbrk(const char* s1, const char* s2);
      char* strpbrk(      char* s1, const char* s2);
const char* strrchr(const char* s, int c);
      char* strrchr(      char* s, int c);
size_t strspn(const char* s1, const char* s2);
const char* strstr(const char* s1, const char* s2);
      char* strstr(      char* s1, const char* s2);
char* strtok(char* restrict s1, const char* restrict s2);
void* memset(void* s, int c, size_t n);
char* strerror(int errnum);
size_t strlen(const char* s);

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <string.h>
#endif /* expanded by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1990, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)string.h	8.1 (Berkeley) 6/2/93
 * $FreeBSD$
 */

#ifndef _STRING_H_
#define	_STRING_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

/*
 * Prototype functions which were historically defined in <string.h>, but
 * are required by POSIX to be prototyped in <strings.h>.
 */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <strings.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _STRINGS_H_
#define	_STRINGS_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4

__BEGIN_DECLS
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
int	 bcmp(const void *, const void *, size_t) __pure;	/* LEGACY */
void	 bcopy(const void *, void *, size_t);			/* LEGACY */
void	 bzero(void *, size_t);					/* LEGACY */
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
void	 explicit_bzero(void *, size_t);
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
int	 ffs(int) __pure2;
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
int	 ffsl(long) __pure2;
int	 ffsll(long long) __pure2;
int	 fls(int) __pure2;
int	 flsl(long) __pure2;
int	 flsll(long long) __pure2;
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
char	*index(const char *, int) __pure;			/* LEGACY */
char	*rindex(const char *, int) __pure;			/* LEGACY */
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
int	 strcasecmp(const char *, const char *) __pure;
int	 strncasecmp(const char *, const char *, size_t) __pure;

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_strings.h>
#endif /* expanded by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_strings.h" 1 3 4
/*-
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_strings.h" 3 4

/*
 * This file is included from both strings.h and xlocale.h.  We need to expose
 * the declarations unconditionally if we are included from xlocale.h, but only
 * if we are in POSIX2008 mode if included from string.h.
 */

#ifndef _XLOCALE_STRINGS1_H
#define _XLOCALE_STRINGS1_H

/*
 * POSIX2008 functions
 */
int	 strcasecmp_l(const char *, const char *, locale_t);
int	 strncasecmp_l(const char *, const char *, size_t, locale_t);
#endif /* _XLOCALE_STRINGS1_H */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_strings.h" 3 4
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 2 3 4
#endif
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
__END_DECLS

#endif /* _STRINGS_H_ */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/strings.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 2 3 4
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

__BEGIN_DECLS
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE >= 600
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memccpy(void * __restrict, const void * __restrict, int, size_t);
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memchr(const void *, int, size_t) __pure;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memrchr(const void *, int, size_t) __pure;
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
int	 memcmp(const void *, const void *, size_t) __pure;
void	*memcpy(void * __restrict, const void * __restrict, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memmem(const void *, size_t, const void *, size_t) __pure;
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memmove(void *, const void *, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*mempcpy(void * __restrict, const void * __restrict, size_t);
#endif
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	*memset(void *, int, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*stpcpy(char * __restrict, const char * __restrict);
char	*stpncpy(char * __restrict, const char * __restrict, size_t);
#endif
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strcasestr(const char *, const char *) __pure;
#endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strcat(char * __restrict, const char * __restrict);
char	*strchr(const char *, int) __pure;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strchrnul(const char*, int) __pure;
#endif
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
int	 strcmp(const char *, const char *) __pure;
int	 strcoll(const char *, const char *);
char	*strcpy(char * __restrict, const char * __restrict);
size_t	 strcspn(const char *, const char *) __pure;
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strdup(const char *) __malloc_like;
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strerror(int);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
int	 strerror_r(int, char *, size_t);
#endif
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
size_t	 strlcat(char * __restrict, const char * __restrict, size_t);
size_t	 strlcpy(char * __restrict, const char * __restrict, size_t);
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
size_t	 strlen(const char *) __pure;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
void	 strmode(int, char *);
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strncat(char * __restrict, const char * __restrict, size_t);
int	 strncmp(const char *, const char *, size_t) __pure;
char	*strncpy(char * __restrict, const char * __restrict, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strndup(const char *, size_t) __malloc_like;
size_t	 strnlen(const char *, size_t) __pure;
#endif
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strnstr(const char *, const char *, size_t) __pure;
#endif
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strpbrk(const char *, const char *) __pure;
char	*strrchr(const char *, int) __pure;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strsep(char **, const char *);
#endif
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strsignal(int);
#endif
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
size_t	 strspn(const char *, const char *) __pure;
char	*strstr(const char *, const char *) __pure;
char	*strtok(char * __restrict, const char * __restrict);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
char	*strtok_r(char *, const char *, char **);
#endif
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
size_t	 strxfrm(char * __restrict, const char * __restrict, size_t);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#ifndef _SWAB_DECLARED
#define _SWAB_DECLARED

#ifndef _SSIZE_T_DECLARED
typedef	__ssize_t	ssize_t;
#define	_SSIZE_T_DECLARED
#endif /* _SIZE_T_DECLARED */
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

void	 swab(const void * __restrict, void * __restrict, ssize_t);
#endif /* _SWAB_DECLARED */
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

int	 timingsafe_bcmp(const void *, const void *, size_t);
int	 timingsafe_memcmp(const void *, const void *, size_t);
#endif /* __BSD_VISIBLE */
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || defined(_XLOCALE_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_string.h>
#endif /* expanded by -frewrite-includes */
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4

/*
 * This file is included from both string.h and xlocale.h.  We need to expose
 * the declarations unconditionally if we are included from xlocale.h, but only
 * if we are in POSIX2008 mode if included from string.h.
 */

#ifndef _XLOCALE_STRING1_H
#define _XLOCALE_STRING1_H

/*
 * POSIX2008 functions
 */
int	 strcoll_l(const char *, const char *, locale_t);
char	*strerror_l(int num, locale_t);
size_t	 strxfrm_l(char *, const char *, size_t, locale_t);
#endif /* _XLOCALE_STRING1_H */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4

/*
 * xlocale extensions
 */
#ifdef _XLOCALE_H_
#ifndef _XLOCALE_STRING2_H
#define _XLOCALE_STRING2_H
char	*strcasestr_l(const char *, const char *, locale_t);

#endif /* _XLOCALE_STRING2_H */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4
#endif /* _XLOCALE_H_ */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 2 3 4
#endif
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#ifndef _RSIZE_T_DEFINED
#define _RSIZE_T_DEFINED
typedef size_t rsize_t;
#endif
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

#ifndef _ERRNO_T_DEFINED
#define _ERRNO_T_DEFINED
typedef int errno_t;
#endif
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4

/* ISO/IEC 9899:2011 K.3.7.4.1.1 */
errno_t memset_s(void *, rsize_t, int, rsize_t);
#endif /* __EXT1_VISIBLE */
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
__END_DECLS

#endif /* _STRING_H_ */
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/string.h" 3 4
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 2 3

// MSVCRT, GNU libc and its derivates may already have the correct prototype in
// <string.h>. This macro can be defined by users if their C library provides
// the right signature.
#if 0 /* disabled by -frewrite-includes */
#if defined(__CORRECT_ISO_CPP_STRING_H_PROTO) || defined(_LIBCPP_MSVCRT) || \
    defined(__sun__) || defined(_STRING_H_CPLUSPLUS_98_CONFORMANCE_)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
#define _LIBCPP_STRING_H_HAS_CONST_OVERLOADS
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && !defined(_LIBCPP_STRING_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
extern "C++" {
inline _LIBCPP_INLINE_VISIBILITY
char* __libcpp_strchr(const char* __s, int __c) {return (char*)strchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const char* strchr(const char* __s, int __c) {return __libcpp_strchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      char* strchr(      char* __s, int __c) {return __libcpp_strchr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
char* __libcpp_strpbrk(const char* __s1, const char* __s2) {return (char*)strpbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const char* strpbrk(const char* __s1, const char* __s2) {return __libcpp_strpbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      char* strpbrk(      char* __s1, const char* __s2) {return __libcpp_strpbrk(__s1, __s2);}

inline _LIBCPP_INLINE_VISIBILITY
char* __libcpp_strrchr(const char* __s, int __c) {return (char*)strrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const char* strrchr(const char* __s, int __c) {return __libcpp_strrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      char* strrchr(      char* __s, int __c) {return __libcpp_strrchr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
void* __libcpp_memchr(const void* __s, int __c, size_t __n) {return (void*)memchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const void* memchr(const void* __s, int __c, size_t __n) {return __libcpp_memchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      void* memchr(      void* __s, int __c, size_t __n) {return __libcpp_memchr(__s, __c, __n);}

inline _LIBCPP_INLINE_VISIBILITY
char* __libcpp_strstr(const char* __s1, const char* __s2) {return (char*)strstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const char* strstr(const char* __s1, const char* __s2) {return __libcpp_strstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      char* strstr(      char* __s1, const char* __s2) {return __libcpp_strstr(__s1, __s2);}
}
#endif
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3

#endif // _LIBCPP_STRING_H
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string.h" 3
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::size_t _LIBCPP_USING_IF_EXISTS;
using ::memcpy _LIBCPP_USING_IF_EXISTS;
using ::memmove _LIBCPP_USING_IF_EXISTS;
using ::strcpy _LIBCPP_USING_IF_EXISTS;
using ::strncpy _LIBCPP_USING_IF_EXISTS;
using ::strcat _LIBCPP_USING_IF_EXISTS;
using ::strncat _LIBCPP_USING_IF_EXISTS;
using ::memcmp _LIBCPP_USING_IF_EXISTS;
using ::strcmp _LIBCPP_USING_IF_EXISTS;
using ::strncmp _LIBCPP_USING_IF_EXISTS;
using ::strcoll _LIBCPP_USING_IF_EXISTS;
using ::strxfrm _LIBCPP_USING_IF_EXISTS;
using ::memchr _LIBCPP_USING_IF_EXISTS;
using ::strchr _LIBCPP_USING_IF_EXISTS;
using ::strcspn _LIBCPP_USING_IF_EXISTS;
using ::strpbrk _LIBCPP_USING_IF_EXISTS;
using ::strrchr _LIBCPP_USING_IF_EXISTS;
using ::strspn _LIBCPP_USING_IF_EXISTS;
using ::strstr _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
using ::strtok _LIBCPP_USING_IF_EXISTS;
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
using ::memset _LIBCPP_USING_IF_EXISTS;
using ::strerror _LIBCPP_USING_IF_EXISTS;
using ::strlen _LIBCPP_USING_IF_EXISTS;

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CSTRING
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstring" 3
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <functional>
#endif /* expanded by -frewrite-includes */
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_FUNCTIONAL
#define _LIBCPP_FUNCTIONAL

/*
    functional synopsis

namespace std
{

template <class Arg, class Result>
struct unary_function
{
    typedef Arg    argument_type;
    typedef Result result_type;
};

template <class Arg1, class Arg2, class Result>
struct binary_function
{
    typedef Arg1   first_argument_type;
    typedef Arg2   second_argument_type;
    typedef Result result_type;
};

template <class T>
class reference_wrapper
    : public unary_function<T1, R> // if wrapping a unary functor
    : public binary_function<T1, T2, R> // if wraping a binary functor
{
public:
    // types
    typedef T type;
    typedef see below result_type; // Not always defined

    // construct/copy/destroy
    template<class U>
      reference_wrapper(U&&);
    reference_wrapper(const reference_wrapper<T>& x) noexcept;

    // assignment
    reference_wrapper& operator=(const reference_wrapper<T>& x) noexcept;

    // access
    operator T& () const noexcept;
    T& get() const noexcept;

    // invoke
    template <class... ArgTypes>
      typename result_of<T&(ArgTypes&&...)>::type
          operator() (ArgTypes&&...) const;
};

template <class T>
  reference_wrapper(T&) -> reference_wrapper<T>;

template <class T> reference_wrapper<T> ref(T& t) noexcept;
template <class T> void ref(const T&& t) = delete;
template <class T> reference_wrapper<T> ref(reference_wrapper<T>t) noexcept;

template <class T> reference_wrapper<const T> cref(const T& t) noexcept;
template <class T> void cref(const T&& t) = delete;
template <class T> reference_wrapper<const T> cref(reference_wrapper<T> t) noexcept;

template <class T> struct unwrap_reference;                                       // since C++20
template <class T> struct unwrap_ref_decay : unwrap_reference<decay_t<T>> { };    // since C++20
template <class T> using unwrap_reference_t = typename unwrap_reference<T>::type; // since C++20
template <class T> using unwrap_ref_decay_t = typename unwrap_ref_decay<T>::type; // since C++20

template <class T> // <class T=void> in C++14
struct plus {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct minus {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct multiplies {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct divides {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct modulus {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct negate {
    T operator()(const T& x) const;
};

template <class T> // <class T=void> in C++14
struct equal_to {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct not_equal_to {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct greater {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct less {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct greater_equal {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct less_equal {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct logical_and {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct logical_or {
    bool operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct logical_not {
    bool operator()(const T& x) const;
};

template <class T> // <class T=void> in C++14
struct bit_and {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct bit_or {
    T operator()(const T& x, const T& y) const;
};

template <class T> // <class T=void> in C++14
struct bit_xor {
    T operator()(const T& x, const T& y) const;
};

template <class T=void> // C++14
struct bit_not {
    T operator()(const T& x) const;
};

struct identity; // C++20

template <class Predicate>
class unary_negate // deprecated in C++17, removed in C++20
    : public unary_function<typename Predicate::argument_type, bool>
{
public:
    explicit unary_negate(const Predicate& pred);
    bool operator()(const typename Predicate::argument_type& x) const;
};

template <class Predicate> // deprecated in C++17, removed in C++20
unary_negate<Predicate> not1(const Predicate& pred);

template <class Predicate>
class binary_negate // deprecated in C++17, removed in C++20
    : public binary_function<typename Predicate::first_argument_type,
                             typename Predicate::second_argument_type,
                             bool>
{
public:
    explicit binary_negate(const Predicate& pred);
    bool operator()(const typename Predicate::first_argument_type& x,
                    const typename Predicate::second_argument_type& y) const;
};

template <class Predicate> // deprecated in C++17, removed in C++20
binary_negate<Predicate> not2(const Predicate& pred);

template <class F>
constexpr unspecified not_fn(F&& f); // C++17, constexpr in C++20

template<class T> struct is_bind_expression;
template<class T> struct is_placeholder;

    // See C++14 20.9.9, Function object binders
template <class T> inline constexpr bool is_bind_expression_v
  = is_bind_expression<T>::value; // C++17
template <class T> inline constexpr int is_placeholder_v
  = is_placeholder<T>::value; // C++17


template<class Fn, class... BoundArgs>
  constexpr unspecified bind(Fn&&, BoundArgs&&...);  // constexpr in C++20
template<class R, class Fn, class... BoundArgs>
  constexpr unspecified bind(Fn&&, BoundArgs&&...);  // constexpr in C++20

template<class F, class... Args>
 constexpr // constexpr in C++20
 invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) // C++17
    noexcept(is_nothrow_invocable_v<F, Args...>);

namespace placeholders {
  // M is the implementation-defined number of placeholders
  extern unspecified _1;
  extern unspecified _2;
  .
  .
  .
  extern unspecified _Mp;
}

template <class Operation>
class binder1st     // deprecated in C++11, removed in C++17
    : public unary_function<typename Operation::second_argument_type,
                            typename Operation::result_type>
{
protected:
    Operation                               op;
    typename Operation::first_argument_type value;
public:
    binder1st(const Operation& x, const typename Operation::first_argument_type y);
    typename Operation::result_type operator()(      typename Operation::second_argument_type& x) const;
    typename Operation::result_type operator()(const typename Operation::second_argument_type& x) const;
};

template <class Operation, class T>
binder1st<Operation> bind1st(const Operation& op, const T& x);  // deprecated in C++11, removed in C++17

template <class Operation>
class binder2nd     // deprecated in C++11, removed in C++17
    : public unary_function<typename Operation::first_argument_type,
                            typename Operation::result_type>
{
protected:
    Operation                                op;
    typename Operation::second_argument_type value;
public:
    binder2nd(const Operation& x, const typename Operation::second_argument_type y);
    typename Operation::result_type operator()(      typename Operation::first_argument_type& x) const;
    typename Operation::result_type operator()(const typename Operation::first_argument_type& x) const;
};

template <class Operation, class T>
binder2nd<Operation> bind2nd(const Operation& op, const T& x);  // deprecated in C++11, removed in C++17

template <class Arg, class Result>      // deprecated in C++11, removed in C++17
class pointer_to_unary_function : public unary_function<Arg, Result>
{
public:
    explicit pointer_to_unary_function(Result (*f)(Arg));
    Result operator()(Arg x) const;
};

template <class Arg, class Result>
pointer_to_unary_function<Arg,Result> ptr_fun(Result (*f)(Arg));      // deprecated in C++11, removed in C++17

template <class Arg1, class Arg2, class Result>      // deprecated in C++11, removed in C++17
class pointer_to_binary_function : public binary_function<Arg1, Arg2, Result>
{
public:
    explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));
    Result operator()(Arg1 x, Arg2 y) const;
};

template <class Arg1, class Arg2, class Result>
pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun(Result (*f)(Arg1,Arg2));      // deprecated in C++11, removed in C++17

template<class S, class T>      // deprecated in C++11, removed in C++17
class mem_fun_t : public unary_function<T*, S>
{
public:
    explicit mem_fun_t(S (T::*p)());
    S operator()(T* p) const;
};

template<class S, class T, class A>
class mem_fun1_t : public binary_function<T*, A, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit mem_fun1_t(S (T::*p)(A));
    S operator()(T* p, A x) const;
};

template<class S, class T>          mem_fun_t<S,T>    mem_fun(S (T::*f)());      // deprecated in C++11, removed in C++17
template<class S, class T, class A> mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A));     // deprecated in C++11, removed in C++17

template<class S, class T>
class mem_fun_ref_t : public unary_function<T, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit mem_fun_ref_t(S (T::*p)());
    S operator()(T& p) const;
};

template<class S, class T, class A>
class mem_fun1_ref_t : public binary_function<T, A, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit mem_fun1_ref_t(S (T::*p)(A));
    S operator()(T& p, A x) const;
};

template<class S, class T>          mem_fun_ref_t<S,T>    mem_fun_ref(S (T::*f)());      // deprecated in C++11, removed in C++17
template<class S, class T, class A> mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A));     // deprecated in C++11, removed in C++17

template <class S, class T>
class const_mem_fun_t : public unary_function<const T*, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit const_mem_fun_t(S (T::*p)() const);
    S operator()(const T* p) const;
};

template <class S, class T, class A>
class const_mem_fun1_t : public binary_function<const T*, A, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit const_mem_fun1_t(S (T::*p)(A) const);
    S operator()(const T* p, A x) const;
};

template <class S, class T>          const_mem_fun_t<S,T>    mem_fun(S (T::*f)() const);      // deprecated in C++11, removed in C++17
template <class S, class T, class A> const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const);     // deprecated in C++11, removed in C++17

template <class S, class T>
class const_mem_fun_ref_t : public unary_function<T, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit const_mem_fun_ref_t(S (T::*p)() const);
    S operator()(const T& p) const;
};

template <class S, class T, class A>
class const_mem_fun1_ref_t : public binary_function<T, A, S>      // deprecated in C++11, removed in C++17
{
public:
    explicit const_mem_fun1_ref_t(S (T::*p)(A) const);
    S operator()(const T& p, A x) const;
};

template <class S, class T>          const_mem_fun_ref_t<S,T>    mem_fun_ref(S (T::*f)() const);   // deprecated in C++11, removed in C++17
template <class S, class T, class A> const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const);  // deprecated in C++11, removed in C++17

template<class R, class T>
constexpr unspecified mem_fn(R T::*); // constexpr in C++20

class bad_function_call
    : public exception
{
};

template<class> class function; // undefined

template<class R, class... ArgTypes>
class function<R(ArgTypes...)>
  : public unary_function<T1, R>      // iff sizeof...(ArgTypes) == 1 and
                                      // ArgTypes contains T1
  : public binary_function<T1, T2, R> // iff sizeof...(ArgTypes) == 2 and
                                      // ArgTypes contains T1 and T2
{
public:
    typedef R result_type;

    // construct/copy/destroy:
    function() noexcept;
    function(nullptr_t) noexcept;
    function(const function&);
    function(function&&) noexcept;
    template<class F>
      function(F);
    template<Allocator Alloc>
      function(allocator_arg_t, const Alloc&) noexcept;            // removed in C++17
    template<Allocator Alloc>
      function(allocator_arg_t, const Alloc&, nullptr_t) noexcept; // removed in C++17
    template<Allocator Alloc>
      function(allocator_arg_t, const Alloc&, const function&);    // removed in C++17
    template<Allocator Alloc>
      function(allocator_arg_t, const Alloc&, function&&);         // removed in C++17
    template<class F, Allocator Alloc>
      function(allocator_arg_t, const Alloc&, F);                  // removed in C++17

    function& operator=(const function&);
    function& operator=(function&&) noexcept;
    function& operator=(nullptr_t) noexcept;
    template<class F>
      function& operator=(F&&);
    template<class F>
      function& operator=(reference_wrapper<F>) noexcept;

    ~function();

    // function modifiers:
    void swap(function&) noexcept;
    template<class F, class Alloc>
      void assign(F&&, const Alloc&);                 // Removed in C++17

    // function capacity:
    explicit operator bool() const noexcept;

    // function invocation:
    R operator()(ArgTypes...) const;

    // function target access:
    const std::type_info& target_type() const noexcept;
    template <typename T>       T* target() noexcept;
    template <typename T> const T* target() const noexcept;
};

// Deduction guides
template<class R, class ...Args>
function(R(*)(Args...)) -> function<R(Args...)>; // since C++17

template<class F>
function(F) -> function<see-below>; // since C++17

// Null pointer comparisons:
template <class R, class ... ArgTypes>
  bool operator==(const function<R(ArgTypes...)>&, nullptr_t) noexcept;

template <class R, class ... ArgTypes>
  bool operator==(nullptr_t, const function<R(ArgTypes...)>&) noexcept;

template <class R, class ... ArgTypes>
  bool operator!=(const function<R(ArgTypes...)>&, nullptr_t) noexcept;

template <class  R, class ... ArgTypes>
  bool operator!=(nullptr_t, const function<R(ArgTypes...)>&) noexcept;

// specialized algorithms:
template <class  R, class ... ArgTypes>
  void swap(function<R(ArgTypes...)>&, function<R(ArgTypes...)>&) noexcept;

template <class T> struct hash;

template <> struct hash<bool>;
template <> struct hash<char>;
template <> struct hash<signed char>;
template <> struct hash<unsigned char>;
template <> struct hash<char8_t>; // since C++20
template <> struct hash<char16_t>;
template <> struct hash<char32_t>;
template <> struct hash<wchar_t>;
template <> struct hash<short>;
template <> struct hash<unsigned short>;
template <> struct hash<int>;
template <> struct hash<unsigned int>;
template <> struct hash<long>;
template <> struct hash<long long>;
template <> struct hash<unsigned long>;
template <> struct hash<unsigned long long>;

template <> struct hash<float>;
template <> struct hash<double>;
template <> struct hash<long double>;

template<class T> struct hash<T*>;
template <> struct hash<nullptr_t>;  // C++17

}  // std

POLICY:  For non-variadic implementations, the number of arguments is limited
         to 3.  It is hoped that the need for non-variadic implementations
         will be minimal.

*/

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/search.h>
#endif /* expanded by -frewrite-includes */
# 490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SEARCH_H
#define _LIBCPP___ALGORITHM_SEARCH_H

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COMP_H
#define _LIBCPP___ALGORITHM_COMP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// I'd like to replace these with _VSTD::equal_to<void>, but can't because:
//   * That only works with C++14 and later, and
//   * We haven't included <functional> here.
template <class _T1, class _T2 = _T1>
struct __equal_to
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 bool operator()(const _T1& __x, const _T2& __y) const {return __x == __y;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 bool operator()(const _T2& __x, const _T1& __y) const {return __x == __y;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 bool operator()(const _T2& __x, const _T2& __y) const {return __x == __y;}
};

template <class _T1>
struct __equal_to<_T1, _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;}
};

template <class _T1>
struct __equal_to<const _T1, _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;}
};

template <class _T1>
struct __equal_to<_T1, const _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;}
};

template <class _T1, class _T2 = _T1>
struct __less
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;}
};

template <class _T1>
struct __less<_T1, _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
};

template <class _T1>
struct __less<const _T1, _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
};

template <class _T1>
struct __less<_T1, const _T1>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COMP_H
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2>
pair<_ForwardIterator1, _ForwardIterator1>
    _LIBCPP_CONSTEXPR_AFTER_CXX11 __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
                                           _ForwardIterator2 __first2, _ForwardIterator2 __last2,
                                           _BinaryPredicate __pred, forward_iterator_tag, forward_iterator_tag) {
  if (__first2 == __last2)
    return _VSTD::make_pair(__first1, __first1); // Everything matches an empty sequence
  while (true) {
    // Find first element in sequence 1 that matchs *__first2, with a mininum of loop checks
    while (true) {
      if (__first1 == __last1) // return __last1 if no element matches *__first2
        return _VSTD::make_pair(__last1, __last1);
      if (__pred(*__first1, *__first2))
        break;
      ++__first1;
    }
    // *__first1 matches *__first2, now match elements after here
    _ForwardIterator1 __m1 = __first1;
    _ForwardIterator2 __m2 = __first2;
    while (true) {
      if (++__m2 == __last2) // If pattern exhausted, __first1 is the answer (works for 1 element pattern)
        return _VSTD::make_pair(__first1, __m1);
      if (++__m1 == __last1) // Otherwise if source exhaused, pattern not found
        return _VSTD::make_pair(__last1, __last1);
      if (!__pred(*__m1, *__m2)) // if there is a mismatch, restart with a new __first1
      {
        ++__first1;
        break;
      } // else there is a match, check next elements
    }
  }
}

template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX11 pair<_RandomAccessIterator1, _RandomAccessIterator1>
__search(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, _RandomAccessIterator2 __first2,
         _RandomAccessIterator2 __last2, _BinaryPredicate __pred, random_access_iterator_tag,
         random_access_iterator_tag) {
  typedef typename iterator_traits<_RandomAccessIterator1>::difference_type _D1;
  typedef typename iterator_traits<_RandomAccessIterator2>::difference_type _D2;
  // Take advantage of knowing source and pattern lengths.  Stop short when source is smaller than pattern
  const _D2 __len2 = __last2 - __first2;
  if (__len2 == 0)
    return _VSTD::make_pair(__first1, __first1);
  const _D1 __len1 = __last1 - __first1;
  if (__len1 < __len2)
    return _VSTD::make_pair(__last1, __last1);
  const _RandomAccessIterator1 __s = __last1 - (__len2 - 1); // Start of pattern match can't go beyond here

  while (true) {
    while (true) {
      if (__first1 == __s)
        return _VSTD::make_pair(__last1, __last1);
      if (__pred(*__first1, *__first2))
        break;
      ++__first1;
    }

    _RandomAccessIterator1 __m1 = __first1;
    _RandomAccessIterator2 __m2 = __first2;
    while (true) {
      if (++__m2 == __last2)
        return _VSTD::make_pair(__first1, __first1 + __len2);
      ++__m1; // no need to check range on __m1 because __s guarantees we have enough source
      if (!__pred(*__m1, *__m2)) {
        ++__first1;
        break;
      }
    }
  }
}

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1
search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2,
       _BinaryPredicate __pred) {
  return _VSTD::__search<typename add_lvalue_reference<_BinaryPredicate>::type>(
             __first1, __last1, __first2, __last2, __pred,
             typename iterator_traits<_ForwardIterator1>::iterator_category(),
             typename iterator_traits<_ForwardIterator2>::iterator_category()).first;
}

template <class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1
search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) {
  typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
  typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
  return _VSTD::search(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
template <class _ForwardIterator, class _Searcher>
_LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher& __s) {
  return __s(__f, __l).first;
}

#endif
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SEARCH_H
# 132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search.h" 3
# 491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h> // TODO: deprecate
#endif /* expanded by -frewrite-includes */
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_negate.h>
#endif /* expanded by -frewrite-includes */
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H
#define _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3

template <class _Predicate>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 binary_negate
    : public binary_function<typename _Predicate::first_argument_type,
                             typename _Predicate::second_argument_type,
                             bool>
{
    _Predicate __pred_;
public:
    _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_AFTER_CXX11
    binary_negate(const _Predicate& __pred) : __pred_(__pred) {}

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const typename _Predicate::first_argument_type& __x,
                    const typename _Predicate::second_argument_type& __y) const
        {return !__pred_(__x, __y);}
};

template <class _Predicate>
_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
binary_negate<_Predicate>
not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);}

#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS)
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binary_negate.h" 3
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/bind_front.h>
#endif /* expanded by -frewrite-includes */
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BIND_FRONT_H
#define _LIBCPP___FUNCTIONAL_BIND_FRONT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/perfect_forward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H
#define _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 1 3
// -*- C++ -*-
//===--------------------------- tuple ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_TUPLE
#define _LIBCPP_TUPLE

/*
    tuple synopsis

namespace std
{

template <class... T>
class tuple {
public:
    explicit(see-below) constexpr tuple();
    explicit(see-below) tuple(const T&...);  // constexpr in C++14
    template <class... U>
        explicit(see-below) tuple(U&&...);  // constexpr in C++14
    tuple(const tuple&) = default;
    tuple(tuple&&) = default;
    template <class... U>
        explicit(see-below) tuple(const tuple<U...>&);  // constexpr in C++14
    template <class... U>
        explicit(see-below) tuple(tuple<U...>&&);  // constexpr in C++14
    template <class U1, class U2>
        explicit(see-below) tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in C++14
    template <class U1, class U2>
        explicit(see-below) tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2  // constexpr in C++14

    // allocator-extended constructors
    template <class Alloc>
        tuple(allocator_arg_t, const Alloc& a);
    template <class Alloc>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const T&...);          // constexpr in C++20
    template <class Alloc, class... U>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, U&&...);               // constexpr in C++20
    template <class Alloc>
        tuple(allocator_arg_t, const Alloc& a, const tuple&);                             // constexpr in C++20
    template <class Alloc>
        tuple(allocator_arg_t, const Alloc& a, tuple&&);                                  // constexpr in C++20
    template <class Alloc, class... U>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const tuple<U...>&);   // constexpr in C++20
    template <class Alloc, class... U>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, tuple<U...>&&);        // constexpr in C++20
    template <class Alloc, class U1, class U2>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&);  // constexpr in C++20
    template <class Alloc, class U1, class U2>
        explicit(see-below) tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&);       // constexpr in C++20

    tuple& operator=(const tuple&);                                                       // constexpr in C++20
    tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...);           // constexpr in C++20
    template <class... U>
        tuple& operator=(const tuple<U...>&);                                             // constexpr in C++20
    template <class... U>
        tuple& operator=(tuple<U...>&&);                                                  // constexpr in C++20
    template <class U1, class U2>
        tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2                   // constexpr in C++20
    template <class U1, class U2>
        tuple& operator=(pair<U1, U2>&&); // iff sizeof...(T) == 2                        // constexpr in C++20

    template<class U, size_t N>
        tuple& operator=(array<U, N> const&) // iff sizeof...(T) == N, EXTENSION
    template<class U, size_t N>
        tuple& operator=(array<U, N>&&) // iff sizeof...(T) == N, EXTENSION

    void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...));               // constexpr in C++20
};

template <class ...T>
tuple(T...) -> tuple<T...>;                                         // since C++17
template <class T1, class T2>
tuple(pair<T1, T2>) -> tuple<T1, T2>;                               // since C++17
template <class Alloc, class ...T>
tuple(allocator_arg_t, Alloc, T...) -> tuple<T...>;                 // since C++17
template <class Alloc, class T1, class T2>
tuple(allocator_arg_t, Alloc, pair<T1, T2>) -> tuple<T1, T2>;       // since C++17
template <class Alloc, class ...T>
tuple(allocator_arg_t, Alloc, tuple<T...>) -> tuple<T...>;          // since C++17

inline constexpr unspecified ignore;

template <class... T> tuple<V...>  make_tuple(T&&...); // constexpr in C++14
template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14

// [tuple.apply], calling a function with a tuple of arguments:
template <class F, class Tuple>
  constexpr decltype(auto) apply(F&& f, Tuple&& t); // C++17
template <class T, class Tuple>
  constexpr T make_from_tuple(Tuple&& t); // C++17

// 20.4.1.4, tuple helper classes:
template <class T> struct tuple_size; // undefined
template <class... T> struct tuple_size<tuple<T...>>;
template <class T>
 inline constexpr size_t tuple_size_v = tuple_size<T>::value; // C++17
template <size_t I, class T> struct tuple_element; // undefined
template <size_t I, class... T> struct tuple_element<I, tuple<T...>>;
template <size_t I, class T>
  using tuple_element_t = typename tuple_element <I, T>::type; // C++14

// 20.4.1.5, element access:
template <size_t I, class... T>
    typename tuple_element<I, tuple<T...>>::type&
    get(tuple<T...>&) noexcept; // constexpr in C++14
template <size_t I, class... T>
    const typename tuple_element<I, tuple<T...>>::type&
    get(const tuple<T...>&) noexcept; // constexpr in C++14
template <size_t I, class... T>
    typename tuple_element<I, tuple<T...>>::type&&
    get(tuple<T...>&&) noexcept; // constexpr in C++14
template <size_t I, class... T>
    const typename tuple_element<I, tuple<T...>>::type&&
    get(const tuple<T...>&&) noexcept; // constexpr in C++14

template <class T1, class... T>
    constexpr T1& get(tuple<T...>&) noexcept;  // C++14
template <class T1, class... T>
    constexpr const T1& get(const tuple<T...>&) noexcept;   // C++14
template <class T1, class... T>
    constexpr T1&& get(tuple<T...>&&) noexcept;   // C++14
template <class T1, class... T>
    constexpr const T1&& get(const tuple<T...>&&) noexcept;   // C++14

// 20.4.1.6, relational operators:
template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&);  // constexpr in C++14
template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&);  // constexpr in C++14
template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14

template <class... Types, class Alloc>
  struct uses_allocator<tuple<Types...>, Alloc>;

template <class... Types>
  void
  swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(noexcept(x.swap(y)));

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unwrap_ref.h>
#endif /* expanded by -frewrite-includes */
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_arg_t.h>
#endif /* expanded by -frewrite-includes */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/uses_allocator.h>
#endif /* expanded by -frewrite-includes */
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__tuple>
#endif /* expanded by -frewrite-includes */
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
#endif
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_CXX03_LANG


// __tuple_leaf

template <size_t _Ip, class _Hp,
          bool=is_empty<_Hp>::value && !__libcpp_is_final<_Hp>::value
         >
class __tuple_leaf;

template <size_t _Ip, class _Hp, bool _Ep>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
void swap(__tuple_leaf<_Ip, _Hp, _Ep>& __x, __tuple_leaf<_Ip, _Hp, _Ep>& __y)
    _NOEXCEPT_(__is_nothrow_swappable<_Hp>::value)
{
    swap(__x.get(), __y.get());
}

template <size_t _Ip, class _Hp, bool>
class __tuple_leaf
{
    _Hp __value_;

    template <class _Tp>
    static constexpr bool __can_bind_reference() {
#if 0 /* disabled by -frewrite-includes */
#if __has_keyword(__reference_binds_to_temporary)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
      return !__reference_binds_to_temporary(_Hp, _Tp);
#else
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
      return true;
#endif
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11
    __tuple_leaf& operator=(const __tuple_leaf&);
public:
    _LIBCPP_INLINE_VISIBILITY constexpr __tuple_leaf()
             _NOEXCEPT_(is_nothrow_default_constructible<_Hp>::value) : __value_()
       {static_assert(!is_reference<_Hp>::value,
              "Attempted to default construct a reference element in a tuple");}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 0>, const _Alloc&)
            : __value_()
        {static_assert(!is_reference<_Hp>::value,
              "Attempted to default construct a reference element in a tuple");}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a)
            : __value_(allocator_arg_t(), __a)
        {static_assert(!is_reference<_Hp>::value,
              "Attempted to default construct a reference element in a tuple");}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a)
            : __value_(__a)
        {static_assert(!is_reference<_Hp>::value,
              "Attempted to default construct a reference element in a tuple");}

    template <class _Tp,
              class = _EnableIf<
                  _And<
                      _IsNotSame<__uncvref_t<_Tp>, __tuple_leaf>,
                      is_constructible<_Hp, _Tp>
                    >::value
                >
            >
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit __tuple_leaf(_Tp&& __t) _NOEXCEPT_((is_nothrow_constructible<_Hp, _Tp>::value))
            : __value_(_VSTD::forward<_Tp>(__t))
        {static_assert(__can_bind_reference<_Tp&&>(),
       "Attempted construction of reference element binds to a temporary whose lifetime has ended");}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit __tuple_leaf(integral_constant<int, 0>, const _Alloc&, _Tp&& __t)
            : __value_(_VSTD::forward<_Tp>(__t))
        {static_assert(__can_bind_reference<_Tp&&>(),
       "Attempted construction of reference element binds to a temporary whose lifetime has ended");}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a, _Tp&& __t)
            : __value_(allocator_arg_t(), __a, _VSTD::forward<_Tp>(__t))
        {static_assert(!is_reference<_Hp>::value,
            "Attempted to uses-allocator construct a reference element in a tuple");}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a, _Tp&& __t)
            : __value_(_VSTD::forward<_Tp>(__t), __a)
        {static_assert(!is_reference<_Hp>::value,
           "Attempted to uses-allocator construct a reference element in a tuple");}

    __tuple_leaf(const __tuple_leaf& __t) = default;
    __tuple_leaf(__tuple_leaf&& __t) = default;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    int swap(__tuple_leaf& __t) _NOEXCEPT_(__is_nothrow_swappable<__tuple_leaf>::value)
    {
        _VSTD::swap(*this, __t);
        return 0;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11       _Hp& get()       _NOEXCEPT {return __value_;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const _Hp& get() const _NOEXCEPT {return __value_;}
};

template <size_t _Ip, class _Hp>
class __tuple_leaf<_Ip, _Hp, true>
    : private _Hp
{
    _LIBCPP_CONSTEXPR_AFTER_CXX11
    __tuple_leaf& operator=(const __tuple_leaf&);
public:
    _LIBCPP_INLINE_VISIBILITY constexpr __tuple_leaf()
             _NOEXCEPT_(is_nothrow_default_constructible<_Hp>::value) {}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 0>, const _Alloc&) {}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a)
            : _Hp(allocator_arg_t(), __a) {}

    template <class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a)
            : _Hp(__a) {}

    template <class _Tp,
              class = _EnableIf<
                  _And<
                    _IsNotSame<__uncvref_t<_Tp>, __tuple_leaf>,
                    is_constructible<_Hp, _Tp>
                  >::value
                >
            >
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit __tuple_leaf(_Tp&& __t) _NOEXCEPT_((is_nothrow_constructible<_Hp, _Tp>::value))
            : _Hp(_VSTD::forward<_Tp>(__t)) {}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        explicit __tuple_leaf(integral_constant<int, 0>, const _Alloc&, _Tp&& __t)
            : _Hp(_VSTD::forward<_Tp>(__t)) {}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        explicit __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a, _Tp&& __t)
            : _Hp(allocator_arg_t(), __a, _VSTD::forward<_Tp>(__t)) {}

    template <class _Tp, class _Alloc>
        _LIBCPP_INLINE_VISIBILITY constexpr
        explicit __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a, _Tp&& __t)
            : _Hp(_VSTD::forward<_Tp>(__t), __a) {}

    __tuple_leaf(__tuple_leaf const &) = default;
    __tuple_leaf(__tuple_leaf &&) = default;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    int
    swap(__tuple_leaf& __t) _NOEXCEPT_(__is_nothrow_swappable<__tuple_leaf>::value)
    {
        _VSTD::swap(*this, __t);
        return 0;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11       _Hp& get()       _NOEXCEPT {return static_cast<_Hp&>(*this);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const _Hp& get() const _NOEXCEPT {return static_cast<const _Hp&>(*this);}
};

template <class ..._Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
void __swallow(_Tp&&...) _NOEXCEPT {}

template <class _Tp>
struct __all_default_constructible;

template <class ..._Tp>
struct __all_default_constructible<__tuple_types<_Tp...>>
    : __all<is_default_constructible<_Tp>::value...>
{ };

// __tuple_impl

template<class _Indx, class ..._Tp> struct __tuple_impl;

template<size_t ..._Indx, class ..._Tp>
struct _LIBCPP_DECLSPEC_EMPTY_BASES __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
    : public __tuple_leaf<_Indx, _Tp>...
{
    _LIBCPP_INLINE_VISIBILITY
    constexpr __tuple_impl()
        _NOEXCEPT_(__all<is_nothrow_default_constructible<_Tp>::value...>::value) {}

    template <size_t ..._Uf, class ..._Tf,
              size_t ..._Ul, class ..._Tl, class ..._Up>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit
        __tuple_impl(__tuple_indices<_Uf...>, __tuple_types<_Tf...>,
                     __tuple_indices<_Ul...>, __tuple_types<_Tl...>,
                     _Up&&... __u)
                     _NOEXCEPT_((__all<is_nothrow_constructible<_Tf, _Up>::value...>::value &&
                                 __all<is_nothrow_default_constructible<_Tl>::value...>::value)) :
            __tuple_leaf<_Uf, _Tf>(_VSTD::forward<_Up>(__u))...,
            __tuple_leaf<_Ul, _Tl>()...
            {}

    template <class _Alloc, size_t ..._Uf, class ..._Tf,
              size_t ..._Ul, class ..._Tl, class ..._Up>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        explicit
        __tuple_impl(allocator_arg_t, const _Alloc& __a,
                     __tuple_indices<_Uf...>, __tuple_types<_Tf...>,
                     __tuple_indices<_Ul...>, __tuple_types<_Tl...>,
                     _Up&&... __u) :
            __tuple_leaf<_Uf, _Tf>(__uses_alloc_ctor<_Tf, _Alloc, _Up>(), __a,
            _VSTD::forward<_Up>(__u))...,
            __tuple_leaf<_Ul, _Tl>(__uses_alloc_ctor<_Tl, _Alloc>(), __a)...
            {}

    template <class _Tuple,
              class = typename enable_if
                      <
                         __tuple_constructible<_Tuple, tuple<_Tp...> >::value
                      >::type
             >
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        __tuple_impl(_Tuple&& __t) _NOEXCEPT_((__all<is_nothrow_constructible<_Tp, typename tuple_element<_Indx,
                                       typename __make_tuple_types<_Tuple>::type>::type>::value...>::value))
            : __tuple_leaf<_Indx, _Tp>(_VSTD::forward<typename tuple_element<_Indx,
                                       typename __make_tuple_types<_Tuple>::type>::type>(_VSTD::get<_Indx>(__t)))...
            {}

    template <class _Alloc, class _Tuple,
              class = typename enable_if
                      <
                         __tuple_constructible<_Tuple, tuple<_Tp...> >::value
                      >::type
             >
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        __tuple_impl(allocator_arg_t, const _Alloc& __a, _Tuple&& __t)
            : __tuple_leaf<_Indx, _Tp>(__uses_alloc_ctor<_Tp, _Alloc, typename tuple_element<_Indx,
                                       typename __make_tuple_types<_Tuple>::type>::type>(), __a,
                                       _VSTD::forward<typename tuple_element<_Indx,
                                       typename __make_tuple_types<_Tuple>::type>::type>(_VSTD::get<_Indx>(__t)))...
            {}

    __tuple_impl(const __tuple_impl&) = default;
    __tuple_impl(__tuple_impl&&) = default;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    void swap(__tuple_impl& __t)
        _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
    {
        _VSTD::__swallow(__tuple_leaf<_Indx, _Tp>::swap(static_cast<__tuple_leaf<_Indx, _Tp>&>(__t))...);
    }
};

template<class _Dest, class _Source, size_t ..._Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
void __memberwise_copy_assign(_Dest& __dest, _Source const& __source, __tuple_indices<_Np...>) {
    _VSTD::__swallow(((_VSTD::get<_Np>(__dest) = _VSTD::get<_Np>(__source)), void(), 0)...);
}

template<class _Dest, class _Source, class ..._Up, size_t ..._Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
void __memberwise_forward_assign(_Dest& __dest, _Source&& __source, __tuple_types<_Up...>, __tuple_indices<_Np...>) {
    _VSTD::__swallow(((
        _VSTD::get<_Np>(__dest) = _VSTD::forward<_Up>(_VSTD::get<_Np>(__source))
    ), void(), 0)...);
}

template <class ..._Tp>
class _LIBCPP_TEMPLATE_VIS tuple
{
    typedef __tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...> _BaseT;

    _BaseT __base_;

    template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
        typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
    template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
        const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
    template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
        typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
    template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
        const typename tuple_element<_Jp, tuple<_Up...> >::type&& get(const tuple<_Up...>&&) _NOEXCEPT;
public:
    // [tuple.cnstr]

    // tuple() constructors (including allocator_arg_t variants)
    template <template<class...> class _IsImpDefault = __is_implicitly_default_constructible, _EnableIf<
        _And<
            _IsImpDefault<_Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    tuple()
        _NOEXCEPT_(_And<is_nothrow_default_constructible<_Tp>...>::value)
    { }

    template <template<class...> class _IsImpDefault = __is_implicitly_default_constructible,
              template<class...> class _IsDefault = is_default_constructible, _EnableIf<
        _And<
            _IsDefault<_Tp>...,
            _Not<_Lazy<_And, _IsImpDefault<_Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    explicit tuple()
        _NOEXCEPT_(_And<is_nothrow_default_constructible<_Tp>...>::value)
    { }

    template <class _Alloc, template<class...> class _IsImpDefault = __is_implicitly_default_constructible, _EnableIf<
        _And<
            _IsImpDefault<_Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, _Alloc const& __a)
      : __base_(allocator_arg_t(), __a,
                    __tuple_indices<>(), __tuple_types<>(),
                    typename __make_tuple_indices<sizeof...(_Tp), 0>::type(),
                    __tuple_types<_Tp...>()) {}

    template <class _Alloc,
              template<class...> class _IsImpDefault = __is_implicitly_default_constructible,
              template<class...> class _IsDefault = is_default_constructible, _EnableIf<
        _And<
            _IsDefault<_Tp>...,
            _Not<_Lazy<_And, _IsImpDefault<_Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, _Alloc const& __a)
      : __base_(allocator_arg_t(), __a,
                    __tuple_indices<>(), __tuple_types<>(),
                    typename __make_tuple_indices<sizeof...(_Tp), 0>::type(),
                    __tuple_types<_Tp...>()) {}

    // tuple(const T&...) constructors (including allocator_arg_t variants)
    template <template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) >= 1>,
            is_copy_constructible<_Tp>...,
            is_convertible<const _Tp&, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(const _Tp& ... __t)
        _NOEXCEPT_(_And<is_nothrow_copy_constructible<_Tp>...>::value)
        : __base_(typename __make_tuple_indices<sizeof...(_Tp)>::type(),
                typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
                typename __make_tuple_indices<0>::type(),
                typename __make_tuple_types<tuple, 0>::type(),
                __t...
               ) {}

    template <template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) >= 1>,
            is_copy_constructible<_Tp>...,
            _Not<_Lazy<_And, is_convertible<const _Tp&, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(const _Tp& ... __t)
        _NOEXCEPT_(_And<is_nothrow_copy_constructible<_Tp>...>::value)
        : __base_(typename __make_tuple_indices<sizeof...(_Tp)>::type(),
                typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
                typename __make_tuple_indices<0>::type(),
                typename __make_tuple_types<tuple, 0>::type(),
                __t...
               ) {}

    template <class _Alloc, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) >= 1>,
            is_copy_constructible<_Tp>...,
            is_convertible<const _Tp&, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
        : __base_(allocator_arg_t(), __a,
                typename __make_tuple_indices<sizeof...(_Tp)>::type(),
                typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
                typename __make_tuple_indices<0>::type(),
                typename __make_tuple_types<tuple, 0>::type(),
                __t...
               ) {}

    template <class _Alloc, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) >= 1>,
            is_copy_constructible<_Tp>...,
            _Not<_Lazy<_And, is_convertible<const _Tp&, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
        : __base_(allocator_arg_t(), __a,
                typename __make_tuple_indices<sizeof...(_Tp)>::type(),
                typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
                typename __make_tuple_indices<0>::type(),
                typename __make_tuple_types<tuple, 0>::type(),
                __t...
               ) {}

    // tuple(U&& ...) constructors (including allocator_arg_t variants)
    template <class ..._Up> struct _IsThisTuple : false_type { };
    template <class _Up> struct _IsThisTuple<_Up> : is_same<__uncvref_t<_Up>, tuple> { };

    template <class ..._Up>
    struct _EnableUTypesCtor : _And<
        _BoolConstant<sizeof...(_Tp) >= 1>,
        _Not<_IsThisTuple<_Up...> >, // extension to allow mis-behaved user constructors
        is_constructible<_Tp, _Up>...
    > { };

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableUTypesCtor<_Up...>,
            is_convertible<_Up, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(_Up&&... __u)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
        : __base_(typename __make_tuple_indices<sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
                    typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
                    _VSTD::forward<_Up>(__u)...) {}

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableUTypesCtor<_Up...>,
            _Not<_Lazy<_And, is_convertible<_Up, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(_Up&&... __u)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
        : __base_(typename __make_tuple_indices<sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
                    typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
                    _VSTD::forward<_Up>(__u)...) {}

    template <class _Alloc, class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableUTypesCtor<_Up...>,
            is_convertible<_Up, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
        : __base_(allocator_arg_t(), __a,
                    typename __make_tuple_indices<sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
                    typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
                    _VSTD::forward<_Up>(__u)...) {}

    template <class _Alloc, class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableUTypesCtor<_Up...>,
            _Not<_Lazy<_And, is_convertible<_Up, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
        : __base_(allocator_arg_t(), __a,
                    typename __make_tuple_indices<sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
                    typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(),
                    typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
                    _VSTD::forward<_Up>(__u)...) {}

    // Copy and move constructors (including the allocator_arg_t variants)
    tuple(const tuple&) = default;
    tuple(tuple&&) = default;

    template <class _Alloc, template<class...> class _And = _And, _EnableIf<
        _And<is_copy_constructible<_Tp>...>::value
    , int> = 0>
    tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
        : __base_(allocator_arg_t(), __alloc, __t)
    { }

    template <class _Alloc, template<class...> class _And = _And, _EnableIf<
        _And<is_move_constructible<_Tp>...>::value
    , int> = 0>
    tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
        : __base_(allocator_arg_t(), __alloc, _VSTD::move(__t))
    { }

    // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
    template <class ..._Up>
    struct _EnableCopyFromOtherTuple : _And<
        _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
        _Lazy<_Or,
            _BoolConstant<sizeof...(_Tp) != 1>,
            // _Tp and _Up are 1-element packs - the pack expansions look
            // weird to avoid tripping up the type traits in degenerate cases
            _Lazy<_And,
                _Not<is_convertible<const tuple<_Up>&, _Tp> >...,
                _Not<is_constructible<_Tp, const tuple<_Up>&> >...
            >
        >,
        is_constructible<_Tp, const _Up&>...
    > { };

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableCopyFromOtherTuple<_Up...>,
            is_convertible<const _Up&, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(const tuple<_Up...>& __t)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, const _Up&>...>::value))
        : __base_(__t)
    { }

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableCopyFromOtherTuple<_Up...>,
            _Not<_Lazy<_And, is_convertible<const _Up&, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(const tuple<_Up...>& __t)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, const _Up&>...>::value))
        : __base_(__t)
    { }

    template <class ..._Up, class _Alloc, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableCopyFromOtherTuple<_Up...>,
            is_convertible<const _Up&, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
        : __base_(allocator_arg_t(), __a, __t)
    { }

    template <class ..._Up, class _Alloc, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableCopyFromOtherTuple<_Up...>,
            _Not<_Lazy<_And, is_convertible<const _Up&, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
        : __base_(allocator_arg_t(), __a, __t)
    { }

    // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
    template <class ..._Up>
    struct _EnableMoveFromOtherTuple : _And<
        _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
        _Lazy<_Or,
            _BoolConstant<sizeof...(_Tp) != 1>,
            // _Tp and _Up are 1-element packs - the pack expansions look
            // weird to avoid tripping up the type traits in degenerate cases
            _Lazy<_And,
                _Not<is_convertible<tuple<_Up>, _Tp> >...,
                _Not<is_constructible<_Tp, tuple<_Up> > >...
            >
        >,
        is_constructible<_Tp, _Up>...
    > { };

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableMoveFromOtherTuple<_Up...>,
            is_convertible<_Up, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(tuple<_Up...>&& __t)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
        : __base_(_VSTD::move(__t))
    { }

    template <class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableMoveFromOtherTuple<_Up...>,
            _Not<_Lazy<_And, is_convertible<_Up, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(tuple<_Up...>&& __t)
        _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
        : __base_(_VSTD::move(__t))
    { }

    template <class _Alloc, class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableMoveFromOtherTuple<_Up...>,
            is_convertible<_Up, _Tp>... // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
        : __base_(allocator_arg_t(), __a, _VSTD::move(__t))
    { }

    template <class _Alloc, class ..._Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Up) == sizeof...(_Tp)>,
            _EnableMoveFromOtherTuple<_Up...>,
            _Not<_Lazy<_And, is_convertible<_Up, _Tp>...> > // explicit check
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
        : __base_(allocator_arg_t(), __a, _VSTD::move(__t))
    { }

    // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
    template <class _Up1, class _Up2, class ..._DependentTp>
    struct _EnableImplicitCopyFromPair : _And<
        is_constructible<_FirstType<_DependentTp...>, const _Up1&>,
        is_constructible<_SecondType<_DependentTp...>, const _Up2&>,
        is_convertible<const _Up1&, _FirstType<_DependentTp...> >, // explicit check
        is_convertible<const _Up2&, _SecondType<_DependentTp...> >
    > { };

    template <class _Up1, class _Up2, class ..._DependentTp>
    struct _EnableExplicitCopyFromPair : _And<
        is_constructible<_FirstType<_DependentTp...>, const _Up1&>,
        is_constructible<_SecondType<_DependentTp...>, const _Up2&>,
        _Not<is_convertible<const _Up1&, _FirstType<_DependentTp...> > >, // explicit check
        _Not<is_convertible<const _Up2&, _SecondType<_DependentTp...> > >
    > { };

    template <class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableImplicitCopyFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(const pair<_Up1, _Up2>& __p)
        _NOEXCEPT_((_And<
            is_nothrow_constructible<_FirstType<_Tp...>, const _Up1&>,
            is_nothrow_constructible<_SecondType<_Tp...>, const _Up2&>
        >::value))
        : __base_(__p)
    { }

    template <class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableExplicitCopyFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(const pair<_Up1, _Up2>& __p)
        _NOEXCEPT_((_And<
            is_nothrow_constructible<_FirstType<_Tp...>, const _Up1&>,
            is_nothrow_constructible<_SecondType<_Tp...>, const _Up2&>
        >::value))
        : __base_(__p)
    { }

    template <class _Alloc, class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableImplicitCopyFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
        : __base_(allocator_arg_t(), __a, __p)
    { }

    template <class _Alloc, class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableExplicitCopyFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
        : __base_(allocator_arg_t(), __a, __p)
    { }

    // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
    template <class _Up1, class _Up2, class ..._DependentTp>
    struct _EnableImplicitMoveFromPair : _And<
        is_constructible<_FirstType<_DependentTp...>, _Up1>,
        is_constructible<_SecondType<_DependentTp...>, _Up2>,
        is_convertible<_Up1, _FirstType<_DependentTp...> >, // explicit check
        is_convertible<_Up2, _SecondType<_DependentTp...> >
    > { };

    template <class _Up1, class _Up2, class ..._DependentTp>
    struct _EnableExplicitMoveFromPair : _And<
        is_constructible<_FirstType<_DependentTp...>, _Up1>,
        is_constructible<_SecondType<_DependentTp...>, _Up2>,
        _Not<is_convertible<_Up1, _FirstType<_DependentTp...> > >, // explicit check
        _Not<is_convertible<_Up2, _SecondType<_DependentTp...> > >
    > { };

    template <class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableImplicitMoveFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    tuple(pair<_Up1, _Up2>&& __p)
        _NOEXCEPT_((_And<
            is_nothrow_constructible<_FirstType<_Tp...>, _Up1>,
            is_nothrow_constructible<_SecondType<_Tp...>, _Up2>
        >::value))
        : __base_(_VSTD::move(__p))
    { }

    template <class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableExplicitMoveFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    explicit tuple(pair<_Up1, _Up2>&& __p)
        _NOEXCEPT_((_And<
            is_nothrow_constructible<_FirstType<_Tp...>, _Up1>,
            is_nothrow_constructible<_SecondType<_Tp...>, _Up2>
        >::value))
        : __base_(_VSTD::move(__p))
    { }

    template <class _Alloc, class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableImplicitMoveFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
        : __base_(allocator_arg_t(), __a, _VSTD::move(__p))
    { }

    template <class _Alloc, class _Up1, class _Up2, template<class...> class _And = _And, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == 2>,
            _EnableExplicitMoveFromPair<_Up1, _Up2, _Tp...>
        >::value
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    explicit tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
        : __base_(allocator_arg_t(), __a, _VSTD::move(__p))
    { }

    // [tuple.assign]
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
        _NOEXCEPT_((_And<is_nothrow_copy_assignable<_Tp>...>::value))
    {
        _VSTD::__memberwise_copy_assign(*this, __tuple,
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
        _NOEXCEPT_((_And<is_nothrow_move_assignable<_Tp>...>::value))
    {
        _VSTD::__memberwise_forward_assign(*this, _VSTD::move(__tuple),
            __tuple_types<_Tp...>(),
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    template<class... _Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == sizeof...(_Up)>,
            is_assignable<_Tp&, _Up const&>...
        >::value
    ,int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(tuple<_Up...> const& __tuple)
        _NOEXCEPT_((_And<is_nothrow_assignable<_Tp&, _Up const&>...>::value))
    {
        _VSTD::__memberwise_copy_assign(*this, __tuple,
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    template<class... _Up, _EnableIf<
        _And<
            _BoolConstant<sizeof...(_Tp) == sizeof...(_Up)>,
            is_assignable<_Tp&, _Up>...
        >::value
    ,int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(tuple<_Up...>&& __tuple)
        _NOEXCEPT_((_And<is_nothrow_assignable<_Tp&, _Up>...>::value))
    {
        _VSTD::__memberwise_forward_assign(*this, _VSTD::move(__tuple),
            __tuple_types<_Up...>(),
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    template<class _Up1, class _Up2, class _Dep = true_type, _EnableIf<
        _And<_Dep,
            _BoolConstant<sizeof...(_Tp) == 2>,
            is_assignable<_FirstType<_Tp..., _Dep>&, _Up1 const&>,
            is_assignable<_SecondType<_Tp..., _Dep>&, _Up2 const&>
        >::value
    ,int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(pair<_Up1, _Up2> const& __pair)
        _NOEXCEPT_((_And<
            is_nothrow_assignable<_FirstType<_Tp...>&, _Up1 const&>,
            is_nothrow_assignable<_SecondType<_Tp...>&, _Up2 const&>
        >::value))
    {
        _VSTD::get<0>(*this) = __pair.first;
        _VSTD::get<1>(*this) = __pair.second;
        return *this;
    }

    template<class _Up1, class _Up2, class _Dep = true_type, _EnableIf<
        _And<_Dep,
            _BoolConstant<sizeof...(_Tp) == 2>,
            is_assignable<_FirstType<_Tp..., _Dep>&, _Up1>,
            is_assignable<_SecondType<_Tp..., _Dep>&, _Up2>
        >::value
    ,int> = 0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(pair<_Up1, _Up2>&& __pair)
        _NOEXCEPT_((_And<
            is_nothrow_assignable<_FirstType<_Tp...>&, _Up1>,
            is_nothrow_assignable<_SecondType<_Tp...>&, _Up2>
        >::value))
    {
        _VSTD::get<0>(*this) = _VSTD::forward<_Up1>(__pair.first);
        _VSTD::get<1>(*this) = _VSTD::forward<_Up2>(__pair.second);
        return *this;
    }

    // EXTENSION
    template<class _Up, size_t _Np, class = _EnableIf<
        _And<
            _BoolConstant<_Np == sizeof...(_Tp)>,
            is_assignable<_Tp&, _Up const&>...
        >::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(array<_Up, _Np> const& __array)
        _NOEXCEPT_((_And<is_nothrow_assignable<_Tp&, _Up const&>...>::value))
    {
        _VSTD::__memberwise_copy_assign(*this, __array,
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    // EXTENSION
    template<class _Up, size_t _Np, class = void, class = _EnableIf<
        _And<
            _BoolConstant<_Np == sizeof...(_Tp)>,
            is_assignable<_Tp&, _Up>...
        >::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    tuple& operator=(array<_Up, _Np>&& __array)
        _NOEXCEPT_((_And<is_nothrow_assignable<_Tp&, _Up>...>::value))
    {
        _VSTD::__memberwise_forward_assign(*this, _VSTD::move(__array),
            __tuple_types<_If<true, _Up, _Tp>...>(),
            typename __make_tuple_indices<sizeof...(_Tp)>::type());
        return *this;
    }

    // [tuple.swap]
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    void swap(tuple& __t) _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
        {__base_.swap(__t.__base_);}
};

template <>
class _LIBCPP_TEMPLATE_VIS tuple<>
{
public:
    _LIBCPP_INLINE_VISIBILITY constexpr
        tuple() _NOEXCEPT = default;
    template <class _Alloc>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        tuple(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
    template <class _Alloc>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        tuple(allocator_arg_t, const _Alloc&, const tuple&) _NOEXCEPT {}
    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        tuple(array<_Up, 0>) _NOEXCEPT {}
    template <class _Alloc, class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    void swap(tuple&) _NOEXCEPT {}
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template <class ..._Tp>
tuple(_Tp...) -> tuple<_Tp...>;
template <class _Tp1, class _Tp2>
tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
template <class _Alloc, class ..._Tp>
tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
template <class _Alloc, class _Tp1, class _Tp2>
tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
template <class _Alloc, class ..._Tp>
tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
#endif
# 1112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

template <class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
typename enable_if
<
    __all<__is_swappable<_Tp>::value...>::value,
    void
>::type
swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
                 _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
    {__t.swap(__u);}

// get

template <size_t _Ip, class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, tuple<_Tp...> >::type&
get(tuple<_Tp...>& __t) _NOEXCEPT
{
    typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
    return static_cast<__tuple_leaf<_Ip, type>&>(__t.__base_).get();
}

template <size_t _Ip, class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, tuple<_Tp...> >::type&
get(const tuple<_Tp...>& __t) _NOEXCEPT
{
    typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
    return static_cast<const __tuple_leaf<_Ip, type>&>(__t.__base_).get();
}

template <size_t _Ip, class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename tuple_element<_Ip, tuple<_Tp...> >::type&&
get(tuple<_Tp...>&& __t) _NOEXCEPT
{
    typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
    return static_cast<type&&>(
             static_cast<__tuple_leaf<_Ip, type>&&>(__t.__base_).get());
}

template <size_t _Ip, class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
get(const tuple<_Tp...>&& __t) _NOEXCEPT
{
    typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
    return static_cast<const type&&>(
             static_cast<const __tuple_leaf<_Ip, type>&&>(__t.__base_).get());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

namespace __find_detail {

static constexpr size_t __not_found = static_cast<size_t>(-1);
static constexpr size_t __ambiguous = __not_found - 1;

inline _LIBCPP_INLINE_VISIBILITY
constexpr size_t __find_idx_return(size_t __curr_i, size_t __res, bool __matches) {
    return !__matches ? __res :
        (__res == __not_found ? __curr_i : __ambiguous);
}

template <size_t _Nx>
inline _LIBCPP_INLINE_VISIBILITY
constexpr size_t __find_idx(size_t __i, const bool (&__matches)[_Nx]) {
  return __i == _Nx ? __not_found :
      __find_idx_return(__i, __find_idx(__i + 1, __matches), __matches[__i]);
}

template <class _T1, class ..._Args>
struct __find_exactly_one_checked {
    static constexpr bool __matches[sizeof...(_Args)] = {is_same<_T1, _Args>::value...};
    static constexpr size_t value = __find_detail::__find_idx(0, __matches);
    static_assert(value != __not_found, "type not found in type list" );
    static_assert(value != __ambiguous, "type occurs more than once in type list");
};

template <class _T1>
struct __find_exactly_one_checked<_T1> {
    static_assert(!is_same<_T1, _T1>::value, "type not in empty type list");
};

} // namespace __find_detail;

template <typename _T1, typename... _Args>
struct __find_exactly_one_t
    : public __find_detail::__find_exactly_one_checked<_T1, _Args...> {
};

template <class _T1, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1& get(tuple<_Args...>& __tup) noexcept
{
    return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
}

template <class _T1, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
{
    return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
}

template <class _T1, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
{
    return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(_VSTD::move(__tup));
}

template <class _T1, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept
{
    return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(_VSTD::move(__tup));
}

#endif
# 1233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

// tie

template <class ..._Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
tuple<_Tp&...>
tie(_Tp&... __t) _NOEXCEPT
{
    return tuple<_Tp&...>(__t...);
}

template <class _Up>
struct __ignore_t
{
    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    const __ignore_t& operator=(_Tp&&) const {return *this;}
};

namespace {
  _LIBCPP_INLINE_VAR constexpr __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>();
}

template <class... _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
tuple<typename __unwrap_ref_decay<_Tp>::type...>
make_tuple(_Tp&&... __t)
{
    return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
}

template <class... _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
tuple<_Tp&&...>
forward_as_tuple(_Tp&&... __t) _NOEXCEPT
{
    return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
}

template <size_t _Ip>
struct __tuple_equal
{
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _Tp& __x, const _Up& __y)
    {
        return __tuple_equal<_Ip - 1>()(__x, __y) && _VSTD::get<_Ip-1>(__x) == _VSTD::get<_Ip-1>(__y);
    }
};

template <>
struct __tuple_equal<0>
{
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _Tp&, const _Up&)
    {
        return true;
    }
};

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    static_assert (sizeof...(_Tp) == sizeof...(_Up), "Can't compare tuples of different sizes");
    return __tuple_equal<sizeof...(_Tp)>()(__x, __y);
}

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    return !(__x == __y);
}

template <size_t _Ip>
struct __tuple_less
{
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _Tp& __x, const _Up& __y)
    {
        const size_t __idx = tuple_size<_Tp>::value - _Ip;
        if (_VSTD::get<__idx>(__x) < _VSTD::get<__idx>(__y))
            return true;
        if (_VSTD::get<__idx>(__y) < _VSTD::get<__idx>(__x))
            return false;
        return __tuple_less<_Ip-1>()(__x, __y);
    }
};

template <>
struct __tuple_less<0>
{
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    bool operator()(const _Tp&, const _Up&)
    {
        return false;
    }
};

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    static_assert (sizeof...(_Tp) == sizeof...(_Up), "Can't compare tuples of different sizes");
    return __tuple_less<sizeof...(_Tp)>()(__x, __y);
}

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    return __y < __x;
}

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    return !(__x < __y);
}

template <class ..._Tp, class ..._Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
{
    return !(__y < __x);
}

// tuple_cat

template <class _Tp, class _Up> struct __tuple_cat_type;

template <class ..._Ttypes, class ..._Utypes>
struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> >
{
    typedef _LIBCPP_NODEBUG_TYPE tuple<_Ttypes..., _Utypes...> type;
};

template <class _ResultTuple, bool _Is_Tuple0TupleLike, class ..._Tuples>
struct __tuple_cat_return_1
{
};

template <class ..._Types, class _Tuple0>
struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0>
{
    typedef _LIBCPP_NODEBUG_TYPE typename __tuple_cat_type<tuple<_Types...>,
            typename __make_tuple_types<typename __uncvref<_Tuple0>::type>::type>::type
                                                                           type;
};

template <class ..._Types, class _Tuple0, class _Tuple1, class ..._Tuples>
struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
    : public __tuple_cat_return_1<
                 typename __tuple_cat_type<
                     tuple<_Types...>,
                     typename __make_tuple_types<typename __uncvref<_Tuple0>::type>::type
                 >::type,
                 __tuple_like<typename remove_reference<_Tuple1>::type>::value,
                 _Tuple1, _Tuples...>
{
};

template <class ..._Tuples> struct __tuple_cat_return;

template <class _Tuple0, class ..._Tuples>
struct __tuple_cat_return<_Tuple0, _Tuples...>
    : public __tuple_cat_return_1<tuple<>,
         __tuple_like<typename remove_reference<_Tuple0>::type>::value, _Tuple0,
                                                                     _Tuples...>
{
};

template <>
struct __tuple_cat_return<>
{
    typedef _LIBCPP_NODEBUG_TYPE tuple<> type;
};

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
tuple<>
tuple_cat()
{
    return tuple<>();
}

template <class _Rp, class _Indices, class _Tuple0, class ..._Tuples>
struct __tuple_cat_return_ref_imp;

template <class ..._Types, size_t ..._I0, class _Tuple0>
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
{
    typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tuple0>::type _T0;
    typedef tuple<_Types..., typename __apply_cv<_Tuple0,
                          typename tuple_element<_I0, _T0>::type>::type&&...> type;
};

template <class ..._Types, size_t ..._I0, class _Tuple0, class _Tuple1, class ..._Tuples>
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
                                  _Tuple0, _Tuple1, _Tuples...>
    : public __tuple_cat_return_ref_imp<
         tuple<_Types..., typename __apply_cv<_Tuple0,
               typename tuple_element<_I0,
                  typename remove_reference<_Tuple0>::type>::type>::type&&...>,
         typename __make_tuple_indices<tuple_size<typename
                                 remove_reference<_Tuple1>::type>::value>::type,
         _Tuple1, _Tuples...>
{
};

template <class _Tuple0, class ..._Tuples>
struct __tuple_cat_return_ref
    : public __tuple_cat_return_ref_imp<tuple<>,
               typename __make_tuple_indices<
                        tuple_size<typename remove_reference<_Tuple0>::type>::value
               >::type, _Tuple0, _Tuples...>
{
};

template <class _Types, class _I0, class _J0>
struct __tuple_cat;

template <class ..._Types, size_t ..._I0, size_t ..._J0>
struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
{
    template <class _Tuple0>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
    operator()(tuple<_Types...> __t, _Tuple0&& __t0)
    {
        return _VSTD::forward_as_tuple(
            _VSTD::forward<_Types>(_VSTD::get<_I0>(__t))...,
            _VSTD::get<_J0>(_VSTD::forward<_Tuple0>(__t0))...);
    }

    template <class _Tuple0, class _Tuple1, class ..._Tuples>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
    operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
    {
        typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tuple0>::type _T0;
        typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tuple1>::type _T1;
        return __tuple_cat<
            tuple<_Types...,
                  typename __apply_cv<_Tuple0, typename tuple_element<
                                                   _J0, _T0>::type>::type&&...>,
            typename __make_tuple_indices<sizeof...(_Types) +
                                          tuple_size<_T0>::value>::type,
            typename __make_tuple_indices<tuple_size<_T1>::value>::type>()(
            _VSTD::forward_as_tuple(
                _VSTD::forward<_Types>(_VSTD::get<_I0>(__t))...,
                _VSTD::get<_J0>(_VSTD::forward<_Tuple0>(__t0))...),
            _VSTD::forward<_Tuple1>(__t1), _VSTD::forward<_Tuples>(__tpls)...);
    }
};

template <class _Tuple0, class... _Tuples>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename __tuple_cat_return<_Tuple0, _Tuples...>::type
tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls)
{
    typedef _LIBCPP_NODEBUG_TYPE typename remove_reference<_Tuple0>::type _T0;
    return __tuple_cat<tuple<>, __tuple_indices<>,
                  typename __make_tuple_indices<tuple_size<_T0>::value>::type>()
                  (tuple<>(), _VSTD::forward<_Tuple0>(__t0),
                                            _VSTD::forward<_Tuples>(__tpls)...);
}

template <class ..._Tp, class _Alloc>
struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
    : true_type {};

template <class _T1, class _T2>
template <class... _Args1, class... _Args2, size_t ..._I1, size_t ..._I2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
pair<_T1, _T2>::pair(piecewise_construct_t,
                     tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,
                     __tuple_indices<_I1...>, __tuple_indices<_I2...>)
    :  first(_VSTD::forward<_Args1>(_VSTD::get<_I1>( __first_args))...),
      second(_VSTD::forward<_Args2>(_VSTD::get<_I2>(__second_args))...)
{
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t tuple_size_v = tuple_size<_Tp>::value;

#define _LIBCPP_NOEXCEPT_RETURN(...) noexcept(noexcept(__VA_ARGS__)) { return __VA_ARGS__; }

template <class _Fn, class _Tuple, size_t ..._Id>
inline _LIBCPP_INLINE_VISIBILITY
constexpr decltype(auto) __apply_tuple_impl(_Fn && __f, _Tuple && __t,
                                            __tuple_indices<_Id...>)
_LIBCPP_NOEXCEPT_RETURN(
    _VSTD::__invoke_constexpr(
        _VSTD::forward<_Fn>(__f),
        _VSTD::get<_Id>(_VSTD::forward<_Tuple>(__t))...)
)

template <class _Fn, class _Tuple>
inline _LIBCPP_INLINE_VISIBILITY
constexpr decltype(auto) apply(_Fn && __f, _Tuple && __t)
_LIBCPP_NOEXCEPT_RETURN(
    _VSTD::__apply_tuple_impl(
        _VSTD::forward<_Fn>(__f), _VSTD::forward<_Tuple>(__t),
        typename __make_tuple_indices<tuple_size_v<remove_reference_t<_Tuple>>>::type{})
)

template <class _Tp, class _Tuple, size_t... _Idx>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _Tp __make_from_tuple_impl(_Tuple&& __t, __tuple_indices<_Idx...>)
_LIBCPP_NOEXCEPT_RETURN(
    _Tp(_VSTD::get<_Idx>(_VSTD::forward<_Tuple>(__t))...)
)

template <class _Tp, class _Tuple>
inline _LIBCPP_INLINE_VISIBILITY
constexpr _Tp make_from_tuple(_Tuple&& __t)
_LIBCPP_NOEXCEPT_RETURN(
    _VSTD::__make_from_tuple_impl<_Tp>(_VSTD::forward<_Tuple>(__t),
        typename __make_tuple_indices<tuple_size_v<remove_reference_t<_Tuple>>>::type{})
)

#undef _LIBCPP_NOEXCEPT_RETURN

#endif // _LIBCPP_STD_VER > 14
# 1569 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

#endif // !defined(_LIBCPP_CXX03_LANG)
# 1571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_TUPLE
# 1575 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/tuple" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3

template<class _Op, class _Tuple,
         class _Idxs = typename __make_tuple_indices<tuple_size<_Tuple>::value>::type>
struct __perfect_forward_impl;

template<class _Op, class... _Bound, size_t... _Idxs>
struct __perfect_forward_impl<_Op, __tuple_types<_Bound...>, __tuple_indices<_Idxs...>>
{
    tuple<_Bound...> __bound_;

    template<class... _Args>
    _LIBCPP_INLINE_VISIBILITY constexpr auto operator()(_Args&&... __args) &
    noexcept(noexcept(_Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...)))
    -> decltype(      _Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...))
    {return           _Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...);}

    template<class... _Args>
    _LIBCPP_INLINE_VISIBILITY constexpr auto operator()(_Args&&... __args) const&
    noexcept(noexcept(_Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...)))
    -> decltype(      _Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...))
    {return           _Op::__call(_VSTD::get<_Idxs>(__bound_)..., _VSTD::forward<_Args>(__args)...);}

    template<class... _Args>
    _LIBCPP_INLINE_VISIBILITY constexpr auto operator()(_Args&&... __args) &&
    noexcept(noexcept(_Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...)))
    -> decltype(      _Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...))
    {return           _Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...);}

    template<class... _Args>
    _LIBCPP_INLINE_VISIBILITY constexpr auto operator()(_Args&&... __args) const&&
    noexcept(noexcept(_Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...)))
    -> decltype(      _Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...))
    {return           _Op::__call(_VSTD::get<_Idxs>(_VSTD::move(__bound_))...,
                                  _VSTD::forward<_Args>(__args)...);}

    template<class _Fn = typename tuple_element<0, tuple<_Bound...>>::type,
             class = _EnableIf<is_copy_constructible_v<_Fn>>>
    constexpr __perfect_forward_impl(__perfect_forward_impl const& __other)
        : __bound_(__other.__bound_) {}

    template<class _Fn = typename tuple_element<0, tuple<_Bound...>>::type,
             class = _EnableIf<is_move_constructible_v<_Fn>>>
    constexpr __perfect_forward_impl(__perfect_forward_impl && __other)
        : __bound_(_VSTD::move(__other.__bound_)) {}

    template<class... _BoundArgs>
    explicit constexpr __perfect_forward_impl(_BoundArgs&&... __bound) :
        __bound_(_VSTD::forward<_BoundArgs>(__bound)...) { }
};

template<class _Op, class... _Args>
using __perfect_forward =
    __perfect_forward_impl<_Op, __tuple_types<decay_t<_Args>...>>;

#endif // _LIBCPP_STD_VER > 14
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/perfect_forward.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3

struct __bind_front_op
{
    template<class... _Args>
    constexpr static auto __call(_Args&&... __args)
    noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Args>(__args)...)))
    -> decltype(      _VSTD::invoke(_VSTD::forward<_Args>(__args)...))
    { return          _VSTD::invoke(_VSTD::forward<_Args>(__args)...); }
};

template<class _Fn, class... _Args,
         class = _EnableIf<conjunction<is_constructible<decay_t<_Fn>, _Fn>,
                                       is_move_constructible<decay_t<_Fn>>,
                                       is_constructible<decay_t<_Args>, _Args>...,
                                       is_move_constructible<decay_t<_Args>>...
                                       >::value>>
constexpr auto bind_front(_Fn&& __f, _Args&&... __args)
{
    return __perfect_forward<__bind_front_op, _Fn, _Args...>(_VSTD::forward<_Fn>(__f),
                                                             _VSTD::forward<_Args>(__args)...);
}

#endif // _LIBCPP_STD_VER > 17
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BIND_FRONT_H
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind_front.h" 3
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/bind.h>
#endif /* expanded by -frewrite-includes */
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BIND_H
#define _LIBCPP___FUNCTIONAL_BIND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/weak_result_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _Tp> struct __is_bind_expression : public false_type {};
template<class _Tp> struct _LIBCPP_TEMPLATE_VIS is_bind_expression
    : public __is_bind_expression<typename remove_cv<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t is_bind_expression_v = is_bind_expression<_Tp>::value;
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

template<class _Tp> struct __is_placeholder : public integral_constant<int, 0> {};
template<class _Tp> struct _LIBCPP_TEMPLATE_VIS is_placeholder
    : public __is_placeholder<typename remove_cv<_Tp>::type> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t is_placeholder_v = is_placeholder<_Tp>::value;
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

namespace placeholders
{

template <int _Np> struct __ph {};

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
_LIBCPP_FUNC_VIS extern const __ph<1>   _1;
_LIBCPP_FUNC_VIS extern const __ph<2>   _2;
_LIBCPP_FUNC_VIS extern const __ph<3>   _3;
_LIBCPP_FUNC_VIS extern const __ph<4>   _4;
_LIBCPP_FUNC_VIS extern const __ph<5>   _5;
_LIBCPP_FUNC_VIS extern const __ph<6>   _6;
_LIBCPP_FUNC_VIS extern const __ph<7>   _7;
_LIBCPP_FUNC_VIS extern const __ph<8>   _8;
_LIBCPP_FUNC_VIS extern const __ph<9>   _9;
_LIBCPP_FUNC_VIS extern const __ph<10> _10;
#else
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
/* _LIBCPP_INLINE_VAR */ constexpr __ph<1>   _1{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<2>   _2{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<3>   _3{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<4>   _4{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<5>   _5{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<6>   _6{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<7>   _7{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<8>   _8{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<9>   _9{};
/* _LIBCPP_INLINE_VAR */ constexpr __ph<10> _10{};
#endif // defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

}  // placeholders

template<int _Np>
struct __is_placeholder<placeholders::__ph<_Np> >
    : public integral_constant<int, _Np> {};


#ifndef _LIBCPP_CXX03_LANG

template <class _Tp, class _Uj>
inline _LIBCPP_INLINE_VISIBILITY
_Tp&
__mu(reference_wrapper<_Tp> __t, _Uj&)
{
    return __t.get();
}

template <class _Ti, class ..._Uj, size_t ..._Indx>
inline _LIBCPP_INLINE_VISIBILITY
typename __invoke_of<_Ti&, _Uj...>::type
__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>)
{
    return __ti(_VSTD::forward<_Uj>(_VSTD::get<_Indx>(__uj))...);
}

template <class _Ti, class ..._Uj>
inline _LIBCPP_INLINE_VISIBILITY
typename _EnableIf
<
    is_bind_expression<_Ti>::value,
    __invoke_of<_Ti&, _Uj...>
>::type
__mu(_Ti& __ti, tuple<_Uj...>& __uj)
{
    typedef typename __make_tuple_indices<sizeof...(_Uj)>::type __indices;
    return _VSTD::__mu_expand(__ti, __uj, __indices());
}

template <bool IsPh, class _Ti, class _Uj>
struct __mu_return2 {};

template <class _Ti, class _Uj>
struct __mu_return2<true, _Ti, _Uj>
{
    typedef typename tuple_element<is_placeholder<_Ti>::value - 1, _Uj>::type type;
};

template <class _Ti, class _Uj>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    0 < is_placeholder<_Ti>::value,
    typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type
>::type
__mu(_Ti&, _Uj& __uj)
{
    const size_t _Indx = is_placeholder<_Ti>::value - 1;
    return _VSTD::forward<typename tuple_element<_Indx, _Uj>::type>(_VSTD::get<_Indx>(__uj));
}

template <class _Ti, class _Uj>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    !is_bind_expression<_Ti>::value &&
    is_placeholder<_Ti>::value == 0 &&
    !__is_reference_wrapper<_Ti>::value,
    _Ti&
>::type
__mu(_Ti& __ti, _Uj&)
{
    return __ti;
}

template <class _Ti, bool IsReferenceWrapper, bool IsBindEx, bool IsPh,
          class _TupleUj>
struct __mu_return_impl;

template <bool _Invokable, class _Ti, class ..._Uj>
struct __mu_return_invokable  // false
{
    typedef __nat type;
};

template <class _Ti, class ..._Uj>
struct __mu_return_invokable<true, _Ti, _Uj...>
{
    typedef typename __invoke_of<_Ti&, _Uj...>::type type;
};

template <class _Ti, class ..._Uj>
struct __mu_return_impl<_Ti, false, true, false, tuple<_Uj...> >
    : public __mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...>
{
};

template <class _Ti, class _TupleUj>
struct __mu_return_impl<_Ti, false, false, true, _TupleUj>
{
    typedef typename tuple_element<is_placeholder<_Ti>::value - 1,
                                   _TupleUj>::type&& type;
};

template <class _Ti, class _TupleUj>
struct __mu_return_impl<_Ti, true, false, false, _TupleUj>
{
    typedef typename _Ti::type& type;
};

template <class _Ti, class _TupleUj>
struct __mu_return_impl<_Ti, false, false, false, _TupleUj>
{
    typedef _Ti& type;
};

template <class _Ti, class _TupleUj>
struct __mu_return
    : public __mu_return_impl<_Ti,
                              __is_reference_wrapper<_Ti>::value,
                              is_bind_expression<_Ti>::value,
                              0 < is_placeholder<_Ti>::value &&
                              is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value,
                              _TupleUj>
{
};

template <class _Fp, class _BoundArgs, class _TupleUj>
struct __is_valid_bind_return
{
    static const bool value = false;
};

template <class _Fp, class ..._BoundArgs, class _TupleUj>
struct __is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj>
{
    static const bool value = __invokable<_Fp,
                    typename __mu_return<_BoundArgs, _TupleUj>::type...>::value;
};

template <class _Fp, class ..._BoundArgs, class _TupleUj>
struct __is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj>
{
    static const bool value = __invokable<_Fp,
                    typename __mu_return<const _BoundArgs, _TupleUj>::type...>::value;
};

template <class _Fp, class _BoundArgs, class _TupleUj,
          bool = __is_valid_bind_return<_Fp, _BoundArgs, _TupleUj>::value>
struct __bind_return;

template <class _Fp, class ..._BoundArgs, class _TupleUj>
struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true>
{
    typedef typename __invoke_of
    <
        _Fp&,
        typename __mu_return
        <
            _BoundArgs,
            _TupleUj
        >::type...
    >::type type;
};

template <class _Fp, class ..._BoundArgs, class _TupleUj>
struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true>
{
    typedef typename __invoke_of
    <
        _Fp&,
        typename __mu_return
        <
            const _BoundArgs,
            _TupleUj
        >::type...
    >::type type;
};

template <class _Fp, class _BoundArgs, size_t ..._Indx, class _Args>
inline _LIBCPP_INLINE_VISIBILITY
typename __bind_return<_Fp, _BoundArgs, _Args>::type
__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>,
                _Args&& __args)
{
    return _VSTD::__invoke(__f, _VSTD::__mu(_VSTD::get<_Indx>(__bound_args), __args)...);
}

template<class _Fp, class ..._BoundArgs>
class __bind
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 263 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
    : public __weak_result_type<typename decay<_Fp>::type>
#endif
# 265 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
{
protected:
    typedef typename decay<_Fp>::type _Fd;
    typedef tuple<typename decay<_BoundArgs>::type...> _Td;
private:
    _Fd __f_;
    _Td __bound_args_;

    typedef typename __make_tuple_indices<sizeof...(_BoundArgs)>::type __indices;
public:
    template <class _Gp, class ..._BA,
              class = typename enable_if
                               <
                                  is_constructible<_Fd, _Gp>::value &&
                                  !is_same<typename remove_reference<_Gp>::type,
                                           __bind>::value
                               >::type>
      _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
      explicit __bind(_Gp&& __f, _BA&& ...__bound_args)
        : __f_(_VSTD::forward<_Gp>(__f)),
          __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {}

    template <class ..._Args>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type
        operator()(_Args&& ...__args)
        {
            return _VSTD::__apply_functor(__f_, __bound_args_, __indices(),
                                  tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...));
        }

    template <class ..._Args>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type
        operator()(_Args&& ...__args) const
        {
            return _VSTD::__apply_functor(__f_, __bound_args_, __indices(),
                                   tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...));
        }
};

template<class _Fp, class ..._BoundArgs>
struct __is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {};

template<class _Rp, class _Fp, class ..._BoundArgs>
class __bind_r
    : public __bind<_Fp, _BoundArgs...>
{
    typedef __bind<_Fp, _BoundArgs...> base;
    typedef typename base::_Fd _Fd;
    typedef typename base::_Td _Td;
public:
    typedef _Rp result_type;


    template <class _Gp, class ..._BA,
              class = typename enable_if
                               <
                                  is_constructible<_Fd, _Gp>::value &&
                                  !is_same<typename remove_reference<_Gp>::type,
                                           __bind_r>::value
                               >::type>
      _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
      explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args)
        : base(_VSTD::forward<_Gp>(__f),
               _VSTD::forward<_BA>(__bound_args)...) {}

    template <class ..._Args>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        typename enable_if
        <
            is_convertible<typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type,
                           result_type>::value || is_void<_Rp>::value,
            result_type
        >::type
        operator()(_Args&& ...__args)
        {
            typedef __invoke_void_return_wrapper<_Rp> _Invoker;
            return _Invoker::__call(static_cast<base&>(*this), _VSTD::forward<_Args>(__args)...);
        }

    template <class ..._Args>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
        typename enable_if
        <
            is_convertible<typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type,
                           result_type>::value || is_void<_Rp>::value,
            result_type
        >::type
        operator()(_Args&& ...__args) const
        {
            typedef __invoke_void_return_wrapper<_Rp> _Invoker;
            return _Invoker::__call(static_cast<base const&>(*this), _VSTD::forward<_Args>(__args)...);
        }
};

template<class _Rp, class _Fp, class ..._BoundArgs>
struct __is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {};

template<class _Fp, class ..._BoundArgs>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
__bind<_Fp, _BoundArgs...>
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
{
    typedef __bind<_Fp, _BoundArgs...> type;
    return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...);
}

template<class _Rp, class _Fp, class ..._BoundArgs>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
__bind_r<_Rp, _Fp, _BoundArgs...>
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
{
    typedef __bind_r<_Rp, _Fp, _BoundArgs...> type;
    return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...);
}

#endif // _LIBCPP_CXX03_LANG
# 383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BIND_H
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/bind.h" 3
# 497 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binder1st.h>
#endif /* expanded by -frewrite-includes */
# 497 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BINDER1ST_H
#define _LIBCPP___FUNCTIONAL_BINDER1ST_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3

template <class __Operation>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder1st
    : public unary_function<typename __Operation::second_argument_type,
                            typename __Operation::result_type>
{
protected:
    __Operation                               op;
    typename __Operation::first_argument_type value;
public:
    _LIBCPP_INLINE_VISIBILITY binder1st(const __Operation& __x,
                               const typename __Operation::first_argument_type __y)
        : op(__x), value(__y) {}
    _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
        (typename __Operation::second_argument_type& __x) const
            {return op(value, __x);}
    _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
        (const typename __Operation::second_argument_type& __x) const
            {return op(value, __x);}
};

template <class __Operation, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
binder1st<__Operation>
bind1st(const __Operation& __op, const _Tp& __x)
    {return binder1st<__Operation>(__op, __x);}

#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BINDER1ST_H
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder1st.h" 3
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binder2nd.h>
#endif /* expanded by -frewrite-includes */
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_BINDER2ND_H
#define _LIBCPP___FUNCTIONAL_BINDER2ND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3

template <class __Operation>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder2nd
    : public unary_function<typename __Operation::first_argument_type,
                            typename __Operation::result_type>
{
protected:
    __Operation                                op;
    typename __Operation::second_argument_type value;
public:
    _LIBCPP_INLINE_VISIBILITY
    binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y)
        : op(__x), value(__y) {}
    _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
        (      typename __Operation::first_argument_type& __x) const
            {return op(__x, value);}
    _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
        (const typename __Operation::first_argument_type& __x) const
            {return op(__x, value);}
};

template <class __Operation, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
binder2nd<__Operation>
bind2nd(const __Operation& __op, const _Tp& __x)
    {return binder2nd<__Operation>(__op, __x);}

#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_BINDER2ND_H
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/binder2nd.h" 3
# 499 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/default_searcher.h>
#endif /* expanded by -frewrite-includes */
# 499 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H
#define _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/search.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/operations.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3

// default searcher
template<class _ForwardIterator, class _BinaryPredicate = equal_to<>>
class _LIBCPP_TEMPLATE_VIS default_searcher {
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    default_searcher(_ForwardIterator __f, _ForwardIterator __l,
                       _BinaryPredicate __p = _BinaryPredicate())
        : __first_(__f), __last_(__l), __pred_(__p) {}

    template <typename _ForwardIterator2>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    pair<_ForwardIterator2, _ForwardIterator2>
    operator () (_ForwardIterator2 __f, _ForwardIterator2 __l) const
    {
        return _VSTD::__search(__f, __l, __first_, __last_, __pred_,
            typename iterator_traits<_ForwardIterator>::iterator_category(),
            typename iterator_traits<_ForwardIterator2>::iterator_category());
    }

private:
    _ForwardIterator __first_;
    _ForwardIterator __last_;
    _BinaryPredicate __pred_;
    };

#endif // _LIBCPP_STD_VER > 14
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/default_searcher.h" 3
# 500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/function.h>
#endif /* expanded by -frewrite-includes */
# 500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_FUNCTION_H
#define _LIBCPP___FUNCTIONAL_FUNCTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_ALLOCATOR_TRAITS_H
#define _LIBCPP___MEMORY_ALLOCATOR_TRAITS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/construct_at.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_CONSTRUCT_AT_H
#define _LIBCPP___MEMORY_CONSTRUCT_AT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// construct_at

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

template<class _Tp, class ..._Args, class = decltype(
    ::new (declval<void*>()) _Tp(declval<_Args>()...)
)>
_LIBCPP_INLINE_VISIBILITY
constexpr _Tp* construct_at(_Tp* __location, _Args&& ...__args) {
    _LIBCPP_ASSERT(__location, "null pointer given to construct_at");
    return ::new ((void*)__location) _Tp(_VSTD::forward<_Args>(__args)...);
}

#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

// destroy_at

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void destroy_at(_Tp* __loc) {
    _LIBCPP_ASSERT(__loc, "null pointer given to destroy_at");
    __loc->~_Tp();
}

#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_CONSTRUCT_AT_H
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/construct_at.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#define _LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(NAME, PROPERTY)                \
    template <class _Tp, class = void> struct NAME : false_type { };    \
    template <class _Tp>               struct NAME<_Tp, typename __void_t<typename _Tp:: PROPERTY >::type> : true_type { }

// __pointer
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_pointer, pointer);
template <class _Tp, class _Alloc,
          class _RawAlloc = typename remove_reference<_Alloc>::type,
          bool = __has_pointer<_RawAlloc>::value>
struct __pointer {
    using type _LIBCPP_NODEBUG_TYPE = typename _RawAlloc::pointer;
};
template <class _Tp, class _Alloc, class _RawAlloc>
struct __pointer<_Tp, _Alloc, _RawAlloc, false> {
    using type _LIBCPP_NODEBUG_TYPE = _Tp*;
};

// __const_pointer
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_const_pointer, const_pointer);
template <class _Tp, class _Ptr, class _Alloc,
          bool = __has_const_pointer<_Alloc>::value>
struct __const_pointer {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::const_pointer;
};
template <class _Tp, class _Ptr, class _Alloc>
struct __const_pointer<_Tp, _Ptr, _Alloc, false> {
#ifdef _LIBCPP_CXX03_LANG
    using type = typename pointer_traits<_Ptr>::template rebind<const _Tp>::other;
#else
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::template rebind<const _Tp>;
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
};

// __void_pointer
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_void_pointer, void_pointer);
template <class _Ptr, class _Alloc,
          bool = __has_void_pointer<_Alloc>::value>
struct __void_pointer {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::void_pointer;
};
template <class _Ptr, class _Alloc>
struct __void_pointer<_Ptr, _Alloc, false> {
#ifdef _LIBCPP_CXX03_LANG
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::template rebind<void>::other;
#else
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::template rebind<void>;
#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
};

// __const_void_pointer
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_const_void_pointer, const_void_pointer);
template <class _Ptr, class _Alloc,
          bool = __has_const_void_pointer<_Alloc>::value>
struct __const_void_pointer {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::const_void_pointer;
};
template <class _Ptr, class _Alloc>
struct __const_void_pointer<_Ptr, _Alloc, false> {
#ifdef _LIBCPP_CXX03_LANG
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::template rebind<const void>::other;
#else
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::template rebind<const void>;
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
};

// __size_type
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_size_type, size_type);
template <class _Alloc, class _DiffType, bool = __has_size_type<_Alloc>::value>
struct __size_type : make_unsigned<_DiffType> { };
template <class _Alloc, class _DiffType>
struct __size_type<_Alloc, _DiffType, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::size_type;
};

// __alloc_traits_difference_type
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_alloc_traits_difference_type, difference_type);
template <class _Alloc, class _Ptr, bool = __has_alloc_traits_difference_type<_Alloc>::value>
struct __alloc_traits_difference_type {
    using type _LIBCPP_NODEBUG_TYPE = typename pointer_traits<_Ptr>::difference_type;
};
template <class _Alloc, class _Ptr>
struct __alloc_traits_difference_type<_Alloc, _Ptr, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::difference_type;
};

// __propagate_on_container_copy_assignment
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_propagate_on_container_copy_assignment, propagate_on_container_copy_assignment);
template <class _Alloc, bool = __has_propagate_on_container_copy_assignment<_Alloc>::value>
struct __propagate_on_container_copy_assignment : false_type { };
template <class _Alloc>
struct __propagate_on_container_copy_assignment<_Alloc, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::propagate_on_container_copy_assignment;
};

// __propagate_on_container_move_assignment
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_propagate_on_container_move_assignment, propagate_on_container_move_assignment);
template <class _Alloc, bool = __has_propagate_on_container_move_assignment<_Alloc>::value>
struct __propagate_on_container_move_assignment : false_type { };
template <class _Alloc>
struct __propagate_on_container_move_assignment<_Alloc, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::propagate_on_container_move_assignment;
};

// __propagate_on_container_swap
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_propagate_on_container_swap, propagate_on_container_swap);
template <class _Alloc, bool = __has_propagate_on_container_swap<_Alloc>::value>
struct __propagate_on_container_swap : false_type { };
template <class _Alloc>
struct __propagate_on_container_swap<_Alloc, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::propagate_on_container_swap;
};

// __is_always_equal
_LIBCPP_ALLOCATOR_TRAITS_HAS_XXX(__has_is_always_equal, is_always_equal);
template <class _Alloc, bool = __has_is_always_equal<_Alloc>::value>
struct __is_always_equal : is_empty<_Alloc> { };
template <class _Alloc>
struct __is_always_equal<_Alloc, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc::is_always_equal;
};

// __allocator_traits_rebind
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp, class _Up, class = void>
struct __has_rebind_other : false_type { };
template <class _Tp, class _Up>
struct __has_rebind_other<_Tp, _Up, typename __void_t<
    typename _Tp::template rebind<_Up>::other
>::type> : true_type { };

template <class _Tp, class _Up, bool = __has_rebind_other<_Tp, _Up>::value>
struct __allocator_traits_rebind {
    using type _LIBCPP_NODEBUG_TYPE = typename _Tp::template rebind<_Up>::other;
};
template <template <class, class...> class _Alloc, class _Tp, class ..._Args, class _Up>
struct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, true> {
    using type _LIBCPP_NODEBUG_TYPE = typename _Alloc<_Tp, _Args...>::template rebind<_Up>::other;
};
template <template <class, class...> class _Alloc, class _Tp, class ..._Args, class _Up>
struct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, false> {
    using type _LIBCPP_NODEBUG_TYPE = _Alloc<_Up, _Args...>;
};
_LIBCPP_SUPPRESS_DEPRECATED_POP

template<class _Alloc, class _Tp>
using __allocator_traits_rebind_t = typename __allocator_traits_rebind<_Alloc, _Tp>::type;

_LIBCPP_SUPPRESS_DEPRECATED_PUSH

// __has_allocate_hint
template <class _Alloc, class _SizeType, class _ConstVoidPtr, class = void>
struct __has_allocate_hint : false_type { };

template <class _Alloc, class _SizeType, class _ConstVoidPtr>
struct __has_allocate_hint<_Alloc, _SizeType, _ConstVoidPtr, decltype(
    (void)declval<_Alloc>().allocate(declval<_SizeType>(), declval<_ConstVoidPtr>())
)> : true_type { };

// __has_construct
template <class, class _Alloc, class ..._Args>
struct __has_construct_impl : false_type { };

template <class _Alloc, class ..._Args>
struct __has_construct_impl<decltype(
    (void)declval<_Alloc>().construct(declval<_Args>()...)
), _Alloc, _Args...> : true_type { };

template <class _Alloc, class ..._Args>
struct __has_construct : __has_construct_impl<void, _Alloc, _Args...> { };

// __has_destroy
template <class _Alloc, class _Pointer, class = void>
struct __has_destroy : false_type { };

template <class _Alloc, class _Pointer>
struct __has_destroy<_Alloc, _Pointer, decltype(
    (void)declval<_Alloc>().destroy(declval<_Pointer>())
)> : true_type { };

// __has_max_size
template <class _Alloc, class = void>
struct __has_max_size : false_type { };

template <class _Alloc>
struct __has_max_size<_Alloc, decltype(
    (void)declval<_Alloc&>().max_size()
)> : true_type { };

// __has_select_on_container_copy_construction
template <class _Alloc, class = void>
struct __has_select_on_container_copy_construction : false_type { };

template <class _Alloc>
struct __has_select_on_container_copy_construction<_Alloc, decltype(
    (void)declval<_Alloc>().select_on_container_copy_construction()
)> : true_type { };

_LIBCPP_SUPPRESS_DEPRECATED_POP

template <class _Alloc>
struct _LIBCPP_TEMPLATE_VIS allocator_traits
{
    using allocator_type = _Alloc;
    using value_type = typename allocator_type::value_type;
    using pointer = typename __pointer<value_type, allocator_type>::type;
    using const_pointer = typename __const_pointer<value_type, pointer, allocator_type>::type;
    using void_pointer = typename __void_pointer<pointer, allocator_type>::type;
    using const_void_pointer = typename __const_void_pointer<pointer, allocator_type>::type;
    using difference_type = typename __alloc_traits_difference_type<allocator_type, pointer>::type;
    using size_type = typename __size_type<allocator_type, difference_type>::type;
    using propagate_on_container_copy_assignment = typename __propagate_on_container_copy_assignment<allocator_type>::type;
    using propagate_on_container_move_assignment = typename __propagate_on_container_move_assignment<allocator_type>::type;
    using propagate_on_container_swap = typename __propagate_on_container_swap<allocator_type>::type;
    using is_always_equal = typename __is_always_equal<allocator_type>::type;

#ifndef _LIBCPP_CXX03_LANG
    template <class _Tp>
    using rebind_alloc = __allocator_traits_rebind_t<allocator_type, _Tp>;
    template <class _Tp>
    using rebind_traits = allocator_traits<rebind_alloc<_Tp> >;
#else  // _LIBCPP_CXX03_LANG
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    template <class _Tp>
    struct rebind_alloc {
        using other = __allocator_traits_rebind_t<allocator_type, _Tp>;
    };
    template <class _Tp>
    struct rebind_traits {
        using other = allocator_traits<typename rebind_alloc<_Tp>::other>;
    };
#endif // _LIBCPP_CXX03_LANG
# 259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static pointer allocate(allocator_type& __a, size_type __n) {
        return __a.allocate(__n);
    }

    template <class _Ap = _Alloc, class =
        _EnableIf<__has_allocate_hint<_Ap, size_type, const_void_pointer>::value> >
    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static pointer allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) {
        _LIBCPP_SUPPRESS_DEPRECATED_PUSH
        return __a.allocate(__n, __hint);
        _LIBCPP_SUPPRESS_DEPRECATED_POP
    }
    template <class _Ap = _Alloc, class = void, class =
        _EnableIf<!__has_allocate_hint<_Ap, size_type, const_void_pointer>::value> >
    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static pointer allocate(allocator_type& __a, size_type __n, const_void_pointer) {
        return __a.allocate(__n);
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static void deallocate(allocator_type& __a, pointer __p, size_type __n) _NOEXCEPT {
        __a.deallocate(__p, __n);
    }

    template <class _Tp, class... _Args, class =
        _EnableIf<__has_construct<allocator_type, _Tp*, _Args...>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static void construct(allocator_type& __a, _Tp* __p, _Args&&... __args) {
        _LIBCPP_SUPPRESS_DEPRECATED_PUSH
        __a.construct(__p, _VSTD::forward<_Args>(__args)...);
        _LIBCPP_SUPPRESS_DEPRECATED_POP
    }
    template <class _Tp, class... _Args, class = void, class =
        _EnableIf<!__has_construct<allocator_type, _Tp*, _Args...>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static void construct(allocator_type&, _Tp* __p, _Args&&... __args) {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
        _VSTD::construct_at(__p, _VSTD::forward<_Args>(__args)...);
#else
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
        ::new ((void*)__p) _Tp(_VSTD::forward<_Args>(__args)...);
#endif
# 302 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    }

    template <class _Tp, class =
        _EnableIf<__has_destroy<allocator_type, _Tp*>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static void destroy(allocator_type& __a, _Tp* __p) {
        _LIBCPP_SUPPRESS_DEPRECATED_PUSH
        __a.destroy(__p);
        _LIBCPP_SUPPRESS_DEPRECATED_POP
    }
    template <class _Tp, class = void, class =
        _EnableIf<!__has_destroy<allocator_type, _Tp*>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static void destroy(allocator_type&, _Tp* __p) {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
        _VSTD::destroy_at(__p);
#else
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
        __p->~_Tp();
#endif
# 321 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    }

    template <class _Ap = _Alloc, class =
        _EnableIf<__has_max_size<const _Ap>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static size_type max_size(const allocator_type& __a) _NOEXCEPT {
        _LIBCPP_SUPPRESS_DEPRECATED_PUSH
        return __a.max_size();
        _LIBCPP_SUPPRESS_DEPRECATED_POP
    }
    template <class _Ap = _Alloc, class = void, class =
        _EnableIf<!__has_max_size<const _Ap>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static size_type max_size(const allocator_type&) _NOEXCEPT {
        return numeric_limits<size_type>::max() / sizeof(value_type);
    }

    template <class _Ap = _Alloc, class =
        _EnableIf<__has_select_on_container_copy_construction<const _Ap>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static allocator_type select_on_container_copy_construction(const allocator_type& __a) {
        return __a.select_on_container_copy_construction();
    }
    template <class _Ap = _Alloc, class = void, class =
        _EnableIf<!__has_select_on_container_copy_construction<const _Ap>::value> >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static allocator_type select_on_container_copy_construction(const allocator_type& __a) {
        return __a;
    }
};

template <class _Traits, class _Tp>
struct __rebind_alloc_helper {
#ifndef _LIBCPP_CXX03_LANG
    using type _LIBCPP_NODEBUG_TYPE = typename _Traits::template rebind_alloc<_Tp>;
#else
# 357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
    using type = typename _Traits::template rebind_alloc<_Tp>::other;
#endif
# 359 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
};

// __is_default_allocator
template <class _Tp>
struct __is_default_allocator : false_type { };

template <class> class allocator;

template <class _Tp>
struct __is_default_allocator<allocator<_Tp> > : true_type { };

// __is_cpp17_move_insertable
template <class _Alloc, class = void>
struct __is_cpp17_move_insertable
    : is_move_constructible<typename _Alloc::value_type>
{ };

template <class _Alloc>
struct __is_cpp17_move_insertable<_Alloc, _EnableIf<
    !__is_default_allocator<_Alloc>::value &&
    __has_construct<_Alloc, typename _Alloc::value_type*, typename _Alloc::value_type&&>::value
> > : true_type { };

// __is_cpp17_copy_insertable
template <class _Alloc, class = void>
struct __is_cpp17_copy_insertable
    : integral_constant<bool,
        is_copy_constructible<typename _Alloc::value_type>::value &&
        __is_cpp17_move_insertable<_Alloc>::value
    >
{ };

template <class _Alloc>
struct __is_cpp17_copy_insertable<_Alloc, _EnableIf<
    !__is_default_allocator<_Alloc>::value &&
    __has_construct<_Alloc, typename _Alloc::value_type*, const typename _Alloc::value_type&>::value
> >
    : __is_cpp17_move_insertable<_Alloc>
{ };

#undef _LIBCPP_ALLOCATOR_TRAITS_HAS_XXX

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_ALLOCATOR_TRAITS_H
# 406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator_traits.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/compressed_pair.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_COMPRESSED_PAIR_H
#define _LIBCPP___MEMORY_COMPRESSED_PAIR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple> // needed in c++03 for some constructors
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// Tag used to default initialize one or both of the pair's elements.
struct __default_init_tag {};
struct __value_init_tag {};

template <class _Tp, int _Idx,
          bool _CanBeEmptyBase =
              is_empty<_Tp>::value && !__libcpp_is_final<_Tp>::value>
struct __compressed_pair_elem {
  typedef _Tp _ParamT;
  typedef _Tp& reference;
  typedef const _Tp& const_reference;

  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __compressed_pair_elem(__default_init_tag) {}
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __compressed_pair_elem(__value_init_tag) : __value_() {}

  template <class _Up, class = typename enable_if<
      !is_same<__compressed_pair_elem, typename decay<_Up>::type>::value
  >::type>
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR explicit
  __compressed_pair_elem(_Up&& __u)
      : __value_(_VSTD::forward<_Up>(__u))
    {
    }


#ifndef _LIBCPP_CXX03_LANG
  template <class... _Args, size_t... _Indexes>
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
  __compressed_pair_elem(piecewise_construct_t, tuple<_Args...> __args,
                         __tuple_indices<_Indexes...>)
      : __value_(_VSTD::forward<_Args>(_VSTD::get<_Indexes>(__args))...) {}
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3


  _LIBCPP_INLINE_VISIBILITY reference __get() _NOEXCEPT { return __value_; }
  _LIBCPP_INLINE_VISIBILITY
  const_reference __get() const _NOEXCEPT { return __value_; }

private:
  _Tp __value_;
};

template <class _Tp, int _Idx>
struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp {
  typedef _Tp _ParamT;
  typedef _Tp& reference;
  typedef const _Tp& const_reference;
  typedef _Tp __value_type;

  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR __compressed_pair_elem() = default;
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __compressed_pair_elem(__default_init_tag) {}
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __compressed_pair_elem(__value_init_tag) : __value_type() {}

  template <class _Up, class = typename enable_if<
        !is_same<__compressed_pair_elem, typename decay<_Up>::type>::value
  >::type>
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR explicit
  __compressed_pair_elem(_Up&& __u)
      : __value_type(_VSTD::forward<_Up>(__u))
  {}

#ifndef _LIBCPP_CXX03_LANG
  template <class... _Args, size_t... _Indexes>
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
  __compressed_pair_elem(piecewise_construct_t, tuple<_Args...> __args,
                         __tuple_indices<_Indexes...>)
      : __value_type(_VSTD::forward<_Args>(_VSTD::get<_Indexes>(__args))...) {}
#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3

  _LIBCPP_INLINE_VISIBILITY reference __get() _NOEXCEPT { return *this; }
  _LIBCPP_INLINE_VISIBILITY
  const_reference __get() const _NOEXCEPT { return *this; }
};

template <class _T1, class _T2>
class __compressed_pair : private __compressed_pair_elem<_T1, 0>,
                          private __compressed_pair_elem<_T2, 1> {
public:
  // NOTE: This static assert should never fire because __compressed_pair
  // is *almost never* used in a scenario where it's possible for T1 == T2.
  // (The exception is std::function where it is possible that the function
  //  object and the allocator have the same type).
  static_assert((!is_same<_T1, _T2>::value),
    "__compressed_pair cannot be instantiated when T1 and T2 are the same type; "
    "The current implementation is NOT ABI-compatible with the previous "
    "implementation for this configuration");

    typedef _LIBCPP_NODEBUG_TYPE __compressed_pair_elem<_T1, 0> _Base1;
    typedef _LIBCPP_NODEBUG_TYPE __compressed_pair_elem<_T2, 1> _Base2;

    template <bool _Dummy = true,
      class = typename enable_if<
          __dependent_type<is_default_constructible<_T1>, _Dummy>::value &&
          __dependent_type<is_default_constructible<_T2>, _Dummy>::value
      >::type
  >
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR __compressed_pair() : _Base1(__value_init_tag()), _Base2(__value_init_tag()) {}

  template <class _U1, class _U2>
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  __compressed_pair(_U1&& __t1, _U2&& __t2)
      : _Base1(_VSTD::forward<_U1>(__t1)), _Base2(_VSTD::forward<_U2>(__t2)) {}

#ifndef _LIBCPP_CXX03_LANG
  template <class... _Args1, class... _Args2>
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
  __compressed_pair(piecewise_construct_t __pc, tuple<_Args1...> __first_args,
                    tuple<_Args2...> __second_args)
      : _Base1(__pc, _VSTD::move(__first_args),
               typename __make_tuple_indices<sizeof...(_Args1)>::type()),
        _Base2(__pc, _VSTD::move(__second_args),
               typename __make_tuple_indices<sizeof...(_Args2)>::type()) {}
#endif
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3

  _LIBCPP_INLINE_VISIBILITY
  typename _Base1::reference first() _NOEXCEPT {
    return static_cast<_Base1&>(*this).__get();
  }

  _LIBCPP_INLINE_VISIBILITY
  typename _Base1::const_reference first() const _NOEXCEPT {
    return static_cast<_Base1 const&>(*this).__get();
  }

  _LIBCPP_INLINE_VISIBILITY
  typename _Base2::reference second() _NOEXCEPT {
    return static_cast<_Base2&>(*this).__get();
  }

  _LIBCPP_INLINE_VISIBILITY
  typename _Base2::const_reference second() const _NOEXCEPT {
    return static_cast<_Base2 const&>(*this).__get();
  }

  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  static _Base1* __get_first_base(__compressed_pair* __pair) _NOEXCEPT {
    return static_cast<_Base1*>(__pair);
  }
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
  static _Base2* __get_second_base(__compressed_pair* __pair) _NOEXCEPT {
    return static_cast<_Base2*>(__pair);
  }

  _LIBCPP_INLINE_VISIBILITY
  void swap(__compressed_pair& __x)
    _NOEXCEPT_(__is_nothrow_swappable<_T1>::value &&
               __is_nothrow_swappable<_T2>::value)
  {
    using _VSTD::swap;
    swap(first(), __x.first());
    swap(second(), __x.second());
  }
};

template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY
void swap(__compressed_pair<_T1, _T2>& __x, __compressed_pair<_T1, _T2>& __y)
    _NOEXCEPT_(__is_nothrow_swappable<_T1>::value &&
               __is_nothrow_swappable<_T2>::value) {
  __x.swap(__y);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_COMPRESSED_PAIR_H
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/compressed_pair.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/shared_ptr.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_SHARED_PTR_H
#define _LIBCPP___MEMORY_SHARED_PTR_H

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/operations.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/reference_wrapper.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocation_guard.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_ALLOCATION_GUARD_H
#define _LIBCPP___MEMORY_ALLOCATION_GUARD_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

// Helper class to allocate memory using an Allocator in an exception safe
// manner.
//
// The intended usage of this class is as follows:
//
// 0
// 1     __allocation_guard<SomeAllocator> guard(alloc, 10);
// 2     do_some_initialization_that_may_throw(guard.__get());
// 3     save_allocated_pointer_in_a_noexcept_operation(guard.__release_ptr());
// 4
//
// If line (2) throws an exception during initialization of the memory, the
// guard's destructor will be called, and the memory will be released using
// Allocator deallocation. Otherwise, we release the memory from the guard on
// line (3) in an operation that can't throw -- after that, the guard is not
// responsible for the memory anymore.
//
// This is similar to a unique_ptr, except it's easier to use with a
// custom allocator.
template<class _Alloc>
struct __allocation_guard {
    using _Pointer = typename allocator_traits<_Alloc>::pointer;
    using _Size = typename allocator_traits<_Alloc>::size_type;

    template<class _AllocT> // we perform the allocator conversion inside the constructor
    _LIBCPP_HIDE_FROM_ABI
    explicit __allocation_guard(_AllocT __alloc, _Size __n)
        : __alloc_(_VSTD::move(__alloc))
        , __n_(__n)
        , __ptr_(allocator_traits<_Alloc>::allocate(__alloc_, __n_)) // initialization order is important
    { }

    _LIBCPP_HIDE_FROM_ABI
    ~__allocation_guard() _NOEXCEPT {
        if (__ptr_ != nullptr) {
            allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __n_);
        }
    }

    _LIBCPP_HIDE_FROM_ABI
    _Pointer __release_ptr() _NOEXCEPT { // not called __release() because it's a keyword in objective-c++
        _Pointer __tmp = __ptr_;
        __ptr_ = nullptr;
        return __tmp;
    }

    _LIBCPP_HIDE_FROM_ABI
    _Pointer __get() const _NOEXCEPT {
        return __ptr_;
    }

private:
    _Alloc __alloc_;
    _Size __n_;
    _Pointer __ptr_;
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_ALLOCATION_GUARD_H
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocation_guard.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator.h>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_ALLOCATOR_H
#define _LIBCPP___MEMORY_ALLOCATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 1 3
// -*- C++ -*-
//===--------------------------- stdexcept --------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STDEXCEPT
#define _LIBCPP_STDEXCEPT

/*
    stdexcept synopsis

namespace std
{

class logic_error;
    class domain_error;
    class invalid_argument;
    class length_error;
    class out_of_range;
class runtime_error;
    class range_error;
    class overflow_error;
    class underflow_error;

for each class xxx_error:

class xxx_error : public exception // at least indirectly
{
public:
    explicit xxx_error(const string& what_arg);
    explicit xxx_error(const char*   what_arg);

    virtual const char* what() const noexcept // returns what_arg
};

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>  // for string forward decl
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_ABI_VCRUNTIME
class _LIBCPP_HIDDEN __libcpp_refstring
{
    const char* __imp_;

    bool __uses_refcount() const;
public:
    explicit __libcpp_refstring(const char* __msg);
    __libcpp_refstring(const __libcpp_refstring& __s) _NOEXCEPT;
    __libcpp_refstring& operator=(const __libcpp_refstring& __s) _NOEXCEPT;
    ~__libcpp_refstring();

    const char* c_str() const _NOEXCEPT {return __imp_;}
};
#endif // !_LIBCPP_ABI_VCRUNTIME
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3

_LIBCPP_END_NAMESPACE_STD

namespace std  // purposefully not using versioning namespace
{

class _LIBCPP_EXCEPTION_ABI logic_error
    : public exception
{
#ifndef _LIBCPP_ABI_VCRUNTIME
private:
    _VSTD::__libcpp_refstring __imp_;
public:
    explicit logic_error(const string&);
    explicit logic_error(const char*);

    logic_error(const logic_error&) _NOEXCEPT;
    logic_error& operator=(const logic_error&) _NOEXCEPT;

    virtual ~logic_error() _NOEXCEPT;

    virtual const char* what() const _NOEXCEPT;
#else
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
public:
    explicit logic_error(const _VSTD::string&); // Symbol uses versioned std::string
    _LIBCPP_INLINE_VISIBILITY explicit logic_error(const char* __s) : exception(__s) {}
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI runtime_error
    : public exception
{
#ifndef _LIBCPP_ABI_VCRUNTIME
private:
    _VSTD::__libcpp_refstring __imp_;
public:
    explicit runtime_error(const string&);
    explicit runtime_error(const char*);

    runtime_error(const runtime_error&) _NOEXCEPT;
    runtime_error& operator=(const runtime_error&) _NOEXCEPT;

    virtual ~runtime_error() _NOEXCEPT;

    virtual const char* what() const _NOEXCEPT;
#else
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
public:
   explicit runtime_error(const _VSTD::string&); // Symbol uses versioned std::string
   _LIBCPP_INLINE_VISIBILITY explicit runtime_error(const char* __s) : exception(__s) {}
#endif // _LIBCPP_ABI_VCRUNTIME
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI domain_error
    : public logic_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s)   : logic_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    domain_error(const domain_error&) _NOEXCEPT = default;
    virtual ~domain_error() _NOEXCEPT;
#endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI invalid_argument
    : public logic_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s)   : logic_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    invalid_argument(const invalid_argument&) _NOEXCEPT = default;
    virtual ~invalid_argument() _NOEXCEPT;
#endif
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI length_error
    : public logic_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s)   : logic_error(__s) {}
#ifndef _LIBCPP_ABI_VCRUNTIME
    length_error(const length_error&) _NOEXCEPT = default;
    virtual ~length_error() _NOEXCEPT;
#endif
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI out_of_range
    : public logic_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s)   : logic_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    out_of_range(const out_of_range&) _NOEXCEPT = default;
    virtual ~out_of_range() _NOEXCEPT;
#endif
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI range_error
    : public runtime_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s)   : runtime_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    range_error(const range_error&) _NOEXCEPT = default;
    virtual ~range_error() _NOEXCEPT;
#endif
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI overflow_error
    : public runtime_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s)   : runtime_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    overflow_error(const overflow_error&) _NOEXCEPT = default;
    virtual ~overflow_error() _NOEXCEPT;
#endif
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

class _LIBCPP_EXCEPTION_ABI underflow_error
    : public runtime_error
{
public:
    _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {}
    _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s)   : runtime_error(__s) {}

#ifndef _LIBCPP_ABI_VCRUNTIME
    underflow_error(const underflow_error&) _NOEXCEPT = default;
    virtual ~underflow_error() _NOEXCEPT;
#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
};

}  // std

_LIBCPP_BEGIN_NAMESPACE_STD

// in the dylib
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_runtime_error(const char*);

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_logic_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw logic_error(__msg);
#else
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_domain_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw domain_error(__msg);
#else
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_invalid_argument(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw invalid_argument(__msg);
#else
# 247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_length_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw length_error(__msg);
#else
# 258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 261 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_out_of_range(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw out_of_range(__msg);
#else
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_range_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw range_error(__msg);
#else
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_overflow_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw overflow_error(__msg);
#else
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_underflow_error(const char*__msg)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw underflow_error(__msg);
#else
# 302 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
}

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_STDEXCEPT
# 310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdexcept" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp> class allocator;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
template <>
class _LIBCPP_TEMPLATE_VIS allocator<void>
{
public:
    _LIBCPP_DEPRECATED_IN_CXX17 typedef void*             pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const void*       const_pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef void              value_type;

    template <class _Up> struct _LIBCPP_DEPRECATED_IN_CXX17 rebind {typedef allocator<_Up> other;};
};

template <>
class _LIBCPP_TEMPLATE_VIS allocator<const void>
{
public:
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const void*       pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const void*       const_pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const void        value_type;

    template <class _Up> struct _LIBCPP_DEPRECATED_IN_CXX17 rebind {typedef allocator<_Up> other;};
};
#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3

// This class provides a non-trivial default constructor to the class that derives from it
// if the condition is satisfied.
//
// The second template parameter exists to allow giving a unique type to __non_trivial_if,
// which makes it possible to avoid breaking the ABI when making this a base class of an
// existing class. Without that, imagine we have classes D1 and D2, both of which used to
// have no base classes, but which now derive from __non_trivial_if. The layout of a class
// that inherits from both D1 and D2 will change because the two __non_trivial_if base
// classes are not allowed to share the same address.
//
// By making those __non_trivial_if base classes unique, we work around this problem and
// it is safe to start deriving from __non_trivial_if in existing classes.
template <bool _Cond, class _Unique>
struct __non_trivial_if { };

template <class _Unique>
struct __non_trivial_if<true, _Unique> {
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR __non_trivial_if() _NOEXCEPT { }
};

// allocator
//
// Note: For ABI compatibility between C++20 and previous standards, we make
//       allocator<void> trivial in C++20.

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS allocator
    : private __non_trivial_if<!is_void<_Tp>::value, allocator<_Tp> >
{
public:
    typedef size_t      size_type;
    typedef ptrdiff_t   difference_type;
    typedef _Tp         value_type;
    typedef true_type   propagate_on_container_move_assignment;
    typedef true_type   is_always_equal;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    allocator() _NOEXCEPT _LIBCPP_DEFAULT

    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    allocator(const allocator<_Up>&) _NOEXCEPT { }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    _Tp* allocate(size_t __n) {
        if (__n > allocator_traits<allocator>::max_size(*this))
            __throw_length_error("allocator<T>::allocate(size_t n)"
                                 " 'n' exceeds maximum supported size");
        if (__libcpp_is_constant_evaluated()) {
            return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
        } else {
            return static_cast<_Tp*>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
        }
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    void deallocate(_Tp* __p, size_t __n) _NOEXCEPT {
        if (__libcpp_is_constant_evaluated()) {
            ::operator delete(__p);
        } else {
            _VSTD::__libcpp_deallocate((void*)__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));
        }
    }

    // C++20 Removed members
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp*       pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp* const_pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp&       reference;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp& const_reference;

    template <class _Up>
    struct _LIBCPP_DEPRECATED_IN_CXX17 rebind {
        typedef allocator<_Up> other;
    };

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    pointer address(reference __x) const _NOEXCEPT {
        return _VSTD::addressof(__x);
    }
    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    const_pointer address(const_reference __x) const _NOEXCEPT {
        return _VSTD::addressof(__x);
    }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_IN_CXX17
    _Tp* allocate(size_t __n, const void*) {
        return allocate(__n);
    }

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT {
        return size_type(~0) / sizeof(_Tp);
    }

    template <class _Up, class... _Args>
    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    void construct(_Up* __p, _Args&&... __args) {
        ::new ((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
    }

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    void destroy(pointer __p) {
        __p->~_Tp();
    }
#endif
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
};

template <class _Tp>
class _LIBCPP_TEMPLATE_VIS allocator<const _Tp>
    : private __non_trivial_if<!is_void<_Tp>::value, allocator<const _Tp> >
{
public:
    typedef size_t      size_type;
    typedef ptrdiff_t   difference_type;
    typedef const _Tp   value_type;
    typedef true_type   propagate_on_container_move_assignment;
    typedef true_type   is_always_equal;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    allocator() _NOEXCEPT _LIBCPP_DEFAULT

    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    allocator(const allocator<_Up>&) _NOEXCEPT { }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    const _Tp* allocate(size_t __n) {
        if (__n > allocator_traits<allocator>::max_size(*this))
            __throw_length_error("allocator<const T>::allocate(size_t n)"
                                 " 'n' exceeds maximum supported size");
        if (__libcpp_is_constant_evaluated()) {
            return static_cast<const _Tp*>(::operator new(__n * sizeof(_Tp)));
        } else {
            return static_cast<const _Tp*>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
        }
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    void deallocate(const _Tp* __p, size_t __n) {
        if (__libcpp_is_constant_evaluated()) {
            ::operator delete(const_cast<_Tp*>(__p));
        } else {
            _VSTD::__libcpp_deallocate((void*) const_cast<_Tp *>(__p), __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));
        }
    }

    // C++20 Removed members
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp* pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp* const_pointer;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp& reference;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef const _Tp& const_reference;

    template <class _Up>
    struct _LIBCPP_DEPRECATED_IN_CXX17 rebind {
        typedef allocator<_Up> other;
    };

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    const_pointer address(const_reference __x) const _NOEXCEPT {
        return _VSTD::addressof(__x);
    }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_IN_CXX17
    const _Tp* allocate(size_t __n, const void*) {
        return allocate(__n);
    }

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT {
        return size_type(~0) / sizeof(_Tp);
    }

    template <class _Up, class... _Args>
    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    void construct(_Up* __p, _Args&&... __args) {
        ::new ((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
    }

    _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VISIBILITY
    void destroy(pointer __p) {
        __p->~_Tp();
    }
#endif
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
};

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool operator==(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return true;}

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return false;}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_ALLOCATOR_H
# 255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/allocator.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/compressed_pair.h>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/unique_ptr.h>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_UNIQUE_PTR_H
#define _LIBCPP___MEMORY_UNIQUE_PTR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/hash.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_HASH_H
#define _LIBCPP___FUNCTIONAL_HASH_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__tuple>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/pair.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
#endif
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Size>
inline _LIBCPP_INLINE_VISIBILITY
_Size
__loadword(const void* __p)
{
    _Size __r;
    _VSTD::memcpy(&__r, __p, sizeof(__r));
    return __r;
}

// We use murmur2 when size_t is 32 bits, and cityhash64 when size_t
// is 64 bits.  This is because cityhash64 uses 64bit x 64bit
// multiplication, which can be very slow on 32-bit systems.
template <class _Size, size_t = sizeof(_Size)*__CHAR_BIT__>
struct __murmur2_or_cityhash;

template <class _Size>
struct __murmur2_or_cityhash<_Size, 32>
{
    inline _Size operator()(const void* __key, _Size __len)
         _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK;
};

// murmur2
template <class _Size>
_Size
__murmur2_or_cityhash<_Size, 32>::operator()(const void* __key, _Size __len)
{
    const _Size __m = 0x5bd1e995;
    const _Size __r = 24;
    _Size __h = __len;
    const unsigned char* __data = static_cast<const unsigned char*>(__key);
    for (; __len >= 4; __data += 4, __len -= 4)
    {
        _Size __k = __loadword<_Size>(__data);
        __k *= __m;
        __k ^= __k >> __r;
        __k *= __m;
        __h *= __m;
        __h ^= __k;
    }
    switch (__len)
    {
    case 3:
        __h ^= static_cast<_Size>(__data[2] << 16);
        _LIBCPP_FALLTHROUGH();
    case 2:
        __h ^= static_cast<_Size>(__data[1] << 8);
        _LIBCPP_FALLTHROUGH();
    case 1:
        __h ^= __data[0];
        __h *= __m;
    }
    __h ^= __h >> 13;
    __h *= __m;
    __h ^= __h >> 15;
    return __h;
}

template <class _Size>
struct __murmur2_or_cityhash<_Size, 64>
{
    inline _Size operator()(const void* __key, _Size __len)  _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK;

 private:
  // Some primes between 2^63 and 2^64.
  static const _Size __k0 = 0xc3a5c85c97cb3127ULL;
  static const _Size __k1 = 0xb492b66fbe98f273ULL;
  static const _Size __k2 = 0x9ae16a3b2f90404fULL;
  static const _Size __k3 = 0xc949d7c7509e6557ULL;

  static _Size __rotate(_Size __val, int __shift) {
    return __shift == 0 ? __val : ((__val >> __shift) | (__val << (64 - __shift)));
  }

  static _Size __rotate_by_at_least_1(_Size __val, int __shift) {
    return (__val >> __shift) | (__val << (64 - __shift));
  }

  static _Size __shift_mix(_Size __val) {
    return __val ^ (__val >> 47);
  }

  static _Size __hash_len_16(_Size __u, _Size __v)
     _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    const _Size __mul = 0x9ddfea08eb382d69ULL;
    _Size __a = (__u ^ __v) * __mul;
    __a ^= (__a >> 47);
    _Size __b = (__v ^ __a) * __mul;
    __b ^= (__b >> 47);
    __b *= __mul;
    return __b;
  }

  static _Size __hash_len_0_to_16(const char* __s, _Size __len)
     _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    if (__len > 8) {
      const _Size __a = __loadword<_Size>(__s);
      const _Size __b = __loadword<_Size>(__s + __len - 8);
      return __hash_len_16(__a, __rotate_by_at_least_1(__b + __len, __len)) ^ __b;
    }
    if (__len >= 4) {
      const uint32_t __a = __loadword<uint32_t>(__s);
      const uint32_t __b = __loadword<uint32_t>(__s + __len - 4);
      return __hash_len_16(__len + (__a << 3), __b);
    }
    if (__len > 0) {
      const unsigned char __a = static_cast<unsigned char>(__s[0]);
      const unsigned char __b = static_cast<unsigned char>(__s[__len >> 1]);
      const unsigned char __c = static_cast<unsigned char>(__s[__len - 1]);
      const uint32_t __y = static_cast<uint32_t>(__a) +
                           (static_cast<uint32_t>(__b) << 8);
      const uint32_t __z = __len + (static_cast<uint32_t>(__c) << 2);
      return __shift_mix(__y * __k2 ^ __z * __k3) * __k2;
    }
    return __k2;
  }

  static _Size __hash_len_17_to_32(const char *__s, _Size __len)
     _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    const _Size __a = __loadword<_Size>(__s) * __k1;
    const _Size __b = __loadword<_Size>(__s + 8);
    const _Size __c = __loadword<_Size>(__s + __len - 8) * __k2;
    const _Size __d = __loadword<_Size>(__s + __len - 16) * __k0;
    return __hash_len_16(__rotate(__a - __b, 43) + __rotate(__c, 30) + __d,
                         __a + __rotate(__b ^ __k3, 20) - __c + __len);
  }

  // Return a 16-byte hash for 48 bytes.  Quick and dirty.
  // Callers do best to use "random-looking" values for a and b.
  static pair<_Size, _Size> __weak_hash_len_32_with_seeds(
      _Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b)
        _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    __a += __w;
    __b = __rotate(__b + __a + __z, 21);
    const _Size __c = __a;
    __a += __x;
    __a += __y;
    __b += __rotate(__a, 44);
    return pair<_Size, _Size>(__a + __z, __b + __c);
  }

  // Return a 16-byte hash for s[0] ... s[31], a, and b.  Quick and dirty.
  static pair<_Size, _Size> __weak_hash_len_32_with_seeds(
      const char* __s, _Size __a, _Size __b)
    _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    return __weak_hash_len_32_with_seeds(__loadword<_Size>(__s),
                                         __loadword<_Size>(__s + 8),
                                         __loadword<_Size>(__s + 16),
                                         __loadword<_Size>(__s + 24),
                                         __a,
                                         __b);
  }

  // Return an 8-byte hash for 33 to 64 bytes.
  static _Size __hash_len_33_to_64(const char *__s, size_t __len)
    _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
  {
    _Size __z = __loadword<_Size>(__s + 24);
    _Size __a = __loadword<_Size>(__s) +
                (__len + __loadword<_Size>(__s + __len - 16)) * __k0;
    _Size __b = __rotate(__a + __z, 52);
    _Size __c = __rotate(__a, 37);
    __a += __loadword<_Size>(__s + 8);
    __c += __rotate(__a, 7);
    __a += __loadword<_Size>(__s + 16);
    _Size __vf = __a + __z;
    _Size __vs = __b + __rotate(__a, 31) + __c;
    __a = __loadword<_Size>(__s + 16) + __loadword<_Size>(__s + __len - 32);
    __z += __loadword<_Size>(__s + __len - 8);
    __b = __rotate(__a + __z, 52);
    __c = __rotate(__a, 37);
    __a += __loadword<_Size>(__s + __len - 24);
    __c += __rotate(__a, 7);
    __a += __loadword<_Size>(__s + __len - 16);
    _Size __wf = __a + __z;
    _Size __ws = __b + __rotate(__a, 31) + __c;
    _Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0);
    return __shift_mix(__r * __k0 + __vs) * __k2;
  }
};

// cityhash64
template <class _Size>
_Size
__murmur2_or_cityhash<_Size, 64>::operator()(const void* __key, _Size __len)
{
  const char* __s = static_cast<const char*>(__key);
  if (__len <= 32) {
    if (__len <= 16) {
      return __hash_len_0_to_16(__s, __len);
    } else {
      return __hash_len_17_to_32(__s, __len);
    }
  } else if (__len <= 64) {
    return __hash_len_33_to_64(__s, __len);
  }

  // For strings over 64 bytes we hash the end first, and then as we
  // loop we keep 56 bytes of state: v, w, x, y, and z.
  _Size __x = __loadword<_Size>(__s + __len - 40);
  _Size __y = __loadword<_Size>(__s + __len - 16) +
              __loadword<_Size>(__s + __len - 56);
  _Size __z = __hash_len_16(__loadword<_Size>(__s + __len - 48) + __len,
                          __loadword<_Size>(__s + __len - 24));
  pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z);
  pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x);
  __x = __x * __k1 + __loadword<_Size>(__s);

  // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks.
  __len = (__len - 1) & ~static_cast<_Size>(63);
  do {
    __x = __rotate(__x + __y + __v.first + __loadword<_Size>(__s + 8), 37) * __k1;
    __y = __rotate(__y + __v.second + __loadword<_Size>(__s + 48), 42) * __k1;
    __x ^= __w.second;
    __y += __v.first + __loadword<_Size>(__s + 40);
    __z = __rotate(__z + __w.first, 33) * __k1;
    __v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first);
    __w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second,
                                        __y + __loadword<_Size>(__s + 16));
    _VSTD::swap(__z, __x);
    __s += 64;
    __len -= 64;
  } while (__len != 0);
  return __hash_len_16(
      __hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z,
      __hash_len_16(__v.second, __w.second) + __x);
}

template <class _Tp, size_t = sizeof(_Tp) / sizeof(size_t)>
struct __scalar_hash;

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct __scalar_hash<_Tp, 0>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        union
        {
            _Tp    __t;
            size_t __a;
        } __u;
        __u.__a = 0;
        __u.__t = __v;
        return __u.__a;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct __scalar_hash<_Tp, 1>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 309 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        union
        {
            _Tp    __t;
            size_t __a;
        } __u;
        __u.__t = __v;
        return __u.__a;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct __scalar_hash<_Tp, 2>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 331 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 334 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        union
        {
            _Tp __t;
            struct
            {
                size_t __a;
                size_t __b;
            } __s;
        } __u;
        __u.__t = __v;
        return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u));
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct __scalar_hash<_Tp, 3>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 355 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 360 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        union
        {
            _Tp __t;
            struct
            {
                size_t __a;
                size_t __b;
                size_t __c;
            } __s;
        } __u;
        __u.__t = __v;
        return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u));
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct __scalar_hash<_Tp, 4>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        union
        {
            _Tp __t;
            struct
            {
                size_t __a;
                size_t __b;
                size_t __c;
                size_t __d;
            } __s;
        } __u;
        __u.__t = __v;
        return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u));
    }
};

struct _PairT {
  size_t first;
  size_t second;
};

_LIBCPP_INLINE_VISIBILITY
inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT {
    typedef __scalar_hash<_PairT> _HashT;
    const _PairT __p = {__lhs, __rhs};
    return _HashT()(__p);
}

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template<class _Tp>
struct _LIBCPP_TEMPLATE_VIS hash<_Tp*>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp*, size_t>
#endif
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 433 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp* argument_type;
#endif
# 436 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp* __v) const _NOEXCEPT
    {
        union
        {
            _Tp* __t;
            size_t __a;
        } __u;
        __u.__t = __v;
        return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u));
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<bool>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 453 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<bool, size_t>
#endif
# 455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool argument_type;
#endif
# 461 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(bool __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<char>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<char, size_t>
#endif
# 471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef char argument_type;
#endif
# 477 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<signed char>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<signed char, size_t>
#endif
# 487 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef signed char argument_type;
#endif
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(signed char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<unsigned char>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<unsigned char, size_t>
#endif
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned char argument_type;
#endif
# 509 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

#ifndef _LIBCPP_HAS_NO_CHAR8_T
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<char8_t>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<char8_t, size_t>
#endif
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef char8_t argument_type;
#endif
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(char8_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};
#endif // !_LIBCPP_HAS_NO_CHAR8_T
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<char16_t>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 537 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<char16_t, size_t>
#endif
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 542 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef char16_t argument_type;
#endif
# 545 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<char32_t>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 553 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<char32_t, size_t>
#endif
# 555 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 558 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef char32_t argument_type;
#endif
# 561 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 566 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<wchar_t>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<wchar_t, size_t>
#endif
# 573 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 576 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef wchar_t argument_type;
#endif
# 579 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<short>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<short, size_t>
#endif
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef short argument_type;
#endif
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<unsigned short>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<unsigned short, size_t>
#endif
# 605 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 608 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned short argument_type;
#endif
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<int>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<int, size_t>
#endif
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 624 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef int argument_type;
#endif
# 627 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<unsigned int>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<unsigned int, size_t>
#endif
# 637 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 640 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned int argument_type;
#endif
# 643 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<long>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<long, size_t>
#endif
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef long argument_type;
#endif
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<unsigned long>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 667 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<unsigned long, size_t>
#endif
# 669 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned long argument_type;
#endif
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<long long>
    : public __scalar_hash<long long>
{
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<unsigned long long>
    : public __scalar_hash<unsigned long long>
{
};

#ifndef _LIBCPP_HAS_NO_INT128

template <>
struct _LIBCPP_TEMPLATE_VIS hash<__int128_t>
    : public __scalar_hash<__int128_t>
{
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<__uint128_t>
    : public __scalar_hash<__uint128_t>
{
};

#endif
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

template <>
struct _LIBCPP_TEMPLATE_VIS hash<float>
    : public __scalar_hash<float>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(float __v) const _NOEXCEPT
    {
        // -0.0 and 0.0 should return same hash
       if (__v == 0.0f)
           return 0;
        return __scalar_hash<float>::operator()(__v);
    }
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<double>
    : public __scalar_hash<double>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(double __v) const _NOEXCEPT
    {
        // -0.0 and 0.0 should return same hash
       if (__v == 0.0)
           return 0;
        return __scalar_hash<double>::operator()(__v);
    }
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<long double>
    : public __scalar_hash<long double>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(long double __v) const _NOEXCEPT
    {
        // -0.0 and 0.0 should return same hash
        if (__v == 0.0L)
            return 0;
#if 0 /* disabled by -frewrite-includes */
#if defined(__i386__) || (defined(__x86_64__) && defined(__ILP32__))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 746 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
        // Zero out padding bits
        union
        {
            long double __t;
            struct
            {
                size_t __a;
                size_t __b;
                size_t __c;
                size_t __d;
            } __s;
        } __u;
        __u.__s.__a = 0;
        __u.__s.__b = 0;
        __u.__s.__c = 0;
        __u.__s.__d = 0;
        __u.__t = __v;
        return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__x86_64__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 765 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
        // Zero out padding bits
        union
        {
            long double __t;
            struct
            {
                size_t __a;
                size_t __b;
            } __s;
        } __u;
        __u.__s.__a = 0;
        __u.__s.__b = 0;
        __u.__t = __v;
        return __u.__s.__a ^ __u.__s.__b;
#else
# 780 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
        return __scalar_hash<long double>::operator()(__v);
#endif
# 782 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    }
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 786 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp, bool = is_enum<_Tp>::value>
struct _LIBCPP_TEMPLATE_VIS __enum_hash
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 791 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    : public unary_function<_Tp, size_t>
#endif
# 793 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 796 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
#endif
# 799 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(_Tp __v) const _NOEXCEPT
    {
        typedef typename underlying_type<_Tp>::type type;
        return hash<type>{}(static_cast<type>(__v));
    }
};
template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS __enum_hash<_Tp, false> {
    __enum_hash() = delete;
    __enum_hash(__enum_hash const&) = delete;
    __enum_hash& operator=(__enum_hash const&) = delete;
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp>
{
};
#endif
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 820 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TEMPLATE_VIS hash<nullptr_t>
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 825 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
  : public unary_function<nullptr_t, size_t>
#endif
# 827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef nullptr_t argument_type;
#endif
# 833 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(nullptr_t) const _NOEXCEPT {
        return 662607004ull;
    }
};
#endif
# 839 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

#ifndef _LIBCPP_CXX03_LANG
template <class _Key, class _Hash>
using __check_hash_requirements _LIBCPP_NODEBUG_TYPE  = integral_constant<bool,
    is_copy_constructible<_Hash>::value &&
    is_move_constructible<_Hash>::value &&
    __invokable_r<size_t, _Hash, _Key const&>::value
>;

template <class _Key, class _Hash = hash<_Key> >
using __has_enabled_hash _LIBCPP_NODEBUG_TYPE = integral_constant<bool,
    __check_hash_requirements<_Key, _Hash>::value &&
    is_default_constructible<_Hash>::value
>;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 855 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
template <class _Type, class>
using __enable_hash_helper_imp _LIBCPP_NODEBUG_TYPE  = _Type;

template <class _Type, class ..._Keys>
using __enable_hash_helper _LIBCPP_NODEBUG_TYPE  = __enable_hash_helper_imp<_Type,
  typename enable_if<__all<__has_enabled_hash<_Keys>::value...>::value>::type
>;
#else
# 863 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
template <class _Type, class ...>
using __enable_hash_helper _LIBCPP_NODEBUG_TYPE = _Type;
#endif
# 866 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

#endif // !_LIBCPP_CXX03_LANG
# 868 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___FUNCTIONAL_HASH_H
# 874 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/hash.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/operations.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h> // __pointer
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/compressed_pair.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#   include <__memory/auto_ptr.h>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_AUTO_PTR_H
#define _LIBCPP___MEMORY_AUTO_PTR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__nullptr>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
struct _LIBCPP_DEPRECATED_IN_CXX11 auto_ptr_ref
{
    _Tp* __ptr_;
};

template<class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 auto_ptr
{
private:
    _Tp* __ptr_;
public:
    typedef _Tp element_type;

    _LIBCPP_INLINE_VISIBILITY explicit auto_ptr(_Tp* __p = 0) _NOEXCEPT : __ptr_(__p) {}
    _LIBCPP_INLINE_VISIBILITY auto_ptr(auto_ptr& __p) _NOEXCEPT : __ptr_(__p.release()) {}
    template<class _Up> _LIBCPP_INLINE_VISIBILITY auto_ptr(auto_ptr<_Up>& __p) _NOEXCEPT
        : __ptr_(__p.release()) {}
    _LIBCPP_INLINE_VISIBILITY auto_ptr& operator=(auto_ptr& __p) _NOEXCEPT
        {reset(__p.release()); return *this;}
    template<class _Up> _LIBCPP_INLINE_VISIBILITY auto_ptr& operator=(auto_ptr<_Up>& __p) _NOEXCEPT
        {reset(__p.release()); return *this;}
    _LIBCPP_INLINE_VISIBILITY auto_ptr& operator=(auto_ptr_ref<_Tp> __p) _NOEXCEPT
        {reset(__p.__ptr_); return *this;}
    _LIBCPP_INLINE_VISIBILITY ~auto_ptr() _NOEXCEPT {delete __ptr_;}

    _LIBCPP_INLINE_VISIBILITY _Tp& operator*() const _NOEXCEPT
        {return *__ptr_;}
    _LIBCPP_INLINE_VISIBILITY _Tp* operator->() const _NOEXCEPT {return __ptr_;}
    _LIBCPP_INLINE_VISIBILITY _Tp* get() const _NOEXCEPT {return __ptr_;}
    _LIBCPP_INLINE_VISIBILITY _Tp* release() _NOEXCEPT
    {
        _Tp* __t = __ptr_;
        __ptr_ = nullptr;
        return __t;
    }
    _LIBCPP_INLINE_VISIBILITY void reset(_Tp* __p = 0) _NOEXCEPT
    {
        if (__ptr_ != __p)
            delete __ptr_;
        __ptr_ = __p;
    }

    _LIBCPP_INLINE_VISIBILITY auto_ptr(auto_ptr_ref<_Tp> __p) _NOEXCEPT : __ptr_(__p.__ptr_) {}
    template<class _Up> _LIBCPP_INLINE_VISIBILITY operator auto_ptr_ref<_Up>() _NOEXCEPT
        {auto_ptr_ref<_Up> __t; __t.__ptr_ = release(); return __t;}
    template<class _Up> _LIBCPP_INLINE_VISIBILITY operator auto_ptr<_Up>() _NOEXCEPT
        {return auto_ptr<_Up>(release());}
};

template <>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 auto_ptr<void>
{
public:
    typedef void element_type;
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_AUTO_PTR_H
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/auto_ptr.h" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 2 3
#endif
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS default_delete {
    static_assert(!is_function<_Tp>::value,
                  "default_delete cannot be instantiated for function types");
#ifndef _LIBCPP_CXX03_LANG
  _LIBCPP_INLINE_VISIBILITY constexpr default_delete() _NOEXCEPT = default;
#else
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
  _LIBCPP_INLINE_VISIBILITY default_delete() {}
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  default_delete(const default_delete<_Up>&,
                 typename enable_if<is_convertible<_Up*, _Tp*>::value>::type* =
                     0) _NOEXCEPT {}

  _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __ptr) const _NOEXCEPT {
    static_assert(sizeof(_Tp) > 0,
                  "default_delete can not delete incomplete type");
    static_assert(!is_void<_Tp>::value,
                  "default_delete can not delete incomplete type");
    delete __ptr;
  }
};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS default_delete<_Tp[]> {
private:
  template <class _Up>
  struct _EnableIfConvertible
      : enable_if<is_convertible<_Up(*)[], _Tp(*)[]>::value> {};

public:
#ifndef _LIBCPP_CXX03_LANG
  _LIBCPP_INLINE_VISIBILITY constexpr default_delete() _NOEXCEPT = default;
#else
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
  _LIBCPP_INLINE_VISIBILITY default_delete() {}
#endif
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  default_delete(const default_delete<_Up[]>&,
                 typename _EnableIfConvertible<_Up>::type* = 0) _NOEXCEPT {}

  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  typename _EnableIfConvertible<_Up>::type
  operator()(_Up* __ptr) const _NOEXCEPT {
    static_assert(sizeof(_Tp) > 0,
                  "default_delete can not delete incomplete type");
    static_assert(!is_void<_Tp>::value,
                  "default_delete can not delete void type");
    delete[] __ptr;
  }
};

template <class _Deleter>
struct __unique_ptr_deleter_sfinae {
  static_assert(!is_reference<_Deleter>::value, "incorrect specialization");
  typedef const _Deleter& __lval_ref_type;
  typedef _Deleter&& __good_rval_ref_type;
  typedef true_type __enable_rval_overload;
};

template <class _Deleter>
struct __unique_ptr_deleter_sfinae<_Deleter const&> {
  typedef const _Deleter& __lval_ref_type;
  typedef const _Deleter&& __bad_rval_ref_type;
  typedef false_type __enable_rval_overload;
};

template <class _Deleter>
struct __unique_ptr_deleter_sfinae<_Deleter&> {
  typedef _Deleter& __lval_ref_type;
  typedef _Deleter&& __bad_rval_ref_type;
  typedef false_type __enable_rval_overload;
};

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#  define _LIBCPP_UNIQUE_PTR_TRIVIAL_ABI __attribute__((trivial_abi))
#else
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
#  define _LIBCPP_UNIQUE_PTR_TRIVIAL_ABI
#endif
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

template <class _Tp, class _Dp = default_delete<_Tp> >
class _LIBCPP_UNIQUE_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS unique_ptr {
public:
  typedef _Tp element_type;
  typedef _Dp deleter_type;
  typedef _LIBCPP_NODEBUG_TYPE typename __pointer<_Tp, deleter_type>::type pointer;

  static_assert(!is_rvalue_reference<deleter_type>::value,
                "the specified deleter type cannot be an rvalue reference");

private:
  __compressed_pair<pointer, deleter_type> __ptr_;

  struct __nat { int __for_bool_; };

  typedef _LIBCPP_NODEBUG_TYPE __unique_ptr_deleter_sfinae<_Dp> _DeleterSFINAE;

  template <bool _Dummy>
  using _LValRefType _LIBCPP_NODEBUG_TYPE =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type;

  template <bool _Dummy>
  using _GoodRValRefType _LIBCPP_NODEBUG_TYPE =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type;

  template <bool _Dummy>
  using _BadRValRefType _LIBCPP_NODEBUG_TYPE  =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type;

  template <bool _Dummy, class _Deleter = typename __dependent_type<
                             __identity<deleter_type>, _Dummy>::type>
  using _EnableIfDeleterDefaultConstructible _LIBCPP_NODEBUG_TYPE =
      typename enable_if<is_default_constructible<_Deleter>::value &&
                         !is_pointer<_Deleter>::value>::type;

  template <class _ArgType>
  using _EnableIfDeleterConstructible _LIBCPP_NODEBUG_TYPE  =
      typename enable_if<is_constructible<deleter_type, _ArgType>::value>::type;

  template <class _UPtr, class _Up>
  using _EnableIfMoveConvertible _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      is_convertible<typename _UPtr::pointer, pointer>::value &&
      !is_array<_Up>::value
  >::type;

  template <class _UDel>
  using _EnableIfDeleterConvertible _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      (is_reference<_Dp>::value && is_same<_Dp, _UDel>::value) ||
      (!is_reference<_Dp>::value && is_convertible<_UDel, _Dp>::value)
    >::type;

  template <class _UDel>
  using _EnableIfDeleterAssignable = typename enable_if<
      is_assignable<_Dp&, _UDel&&>::value
    >::type;

public:
  template <bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy> >
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR unique_ptr() _NOEXCEPT : __ptr_(pointer(), __default_init_tag()) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy> >
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR unique_ptr(nullptr_t) _NOEXCEPT : __ptr_(pointer(), __default_init_tag()) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy> >
  _LIBCPP_INLINE_VISIBILITY
  explicit unique_ptr(pointer __p) _NOEXCEPT : __ptr_(__p, __default_init_tag()) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_LValRefType<_Dummy> > >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(pointer __p, _LValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(__p, __d) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_GoodRValRefType<_Dummy> > >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(pointer __p, _GoodRValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(__p, _VSTD::move(__d)) {
    static_assert(!is_reference<deleter_type>::value,
                  "rvalue deleter bound to reference");
  }

  template <bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_BadRValRefType<_Dummy> > >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(pointer __p, _BadRValRefType<_Dummy> __d) = delete;

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(unique_ptr&& __u) _NOEXCEPT
      : __ptr_(__u.release(), _VSTD::forward<deleter_type>(__u.get_deleter())) {
  }

  template <class _Up, class _Ep,
      class = _EnableIfMoveConvertible<unique_ptr<_Up, _Ep>, _Up>,
      class = _EnableIfDeleterConvertible<_Ep>
  >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(unique_ptr<_Up, _Ep>&& __u) _NOEXCEPT
      : __ptr_(__u.release(), _VSTD::forward<_Ep>(__u.get_deleter())) {}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(auto_ptr<_Up>&& __p,
             typename enable_if<is_convertible<_Up*, _Tp*>::value &&
                                    is_same<_Dp, default_delete<_Tp> >::value,
                                __nat>::type = __nat()) _NOEXCEPT
      : __ptr_(__p.release(), __default_init_tag()) {}
#endif
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr& operator=(unique_ptr&& __u) _NOEXCEPT {
    reset(__u.release());
    __ptr_.second() = _VSTD::forward<deleter_type>(__u.get_deleter());
    return *this;
  }

  template <class _Up, class _Ep,
      class = _EnableIfMoveConvertible<unique_ptr<_Up, _Ep>, _Up>,
      class = _EnableIfDeleterAssignable<_Ep>
  >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr& operator=(unique_ptr<_Up, _Ep>&& __u) _NOEXCEPT {
    reset(__u.release());
    __ptr_.second() = _VSTD::forward<_Ep>(__u.get_deleter());
    return *this;
  }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
      typename enable_if<is_convertible<_Up*, _Tp*>::value &&
                             is_same<_Dp, default_delete<_Tp> >::value,
                         unique_ptr&>::type
      operator=(auto_ptr<_Up> __p) {
    reset(__p.release());
    return *this;
  }
#endif
# 264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

#ifdef _LIBCPP_CXX03_LANG
  unique_ptr(unique_ptr const&) = delete;
  unique_ptr& operator=(unique_ptr const&) = delete;
#endif
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3


  _LIBCPP_INLINE_VISIBILITY
  ~unique_ptr() { reset(); }

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr& operator=(nullptr_t) _NOEXCEPT {
    reset();
    return *this;
  }

  _LIBCPP_INLINE_VISIBILITY
  typename add_lvalue_reference<_Tp>::type
  operator*() const {
    return *__ptr_.first();
  }
  _LIBCPP_INLINE_VISIBILITY
  pointer operator->() const _NOEXCEPT {
    return __ptr_.first();
  }
  _LIBCPP_INLINE_VISIBILITY
  pointer get() const _NOEXCEPT {
    return __ptr_.first();
  }
  _LIBCPP_INLINE_VISIBILITY
  deleter_type& get_deleter() _NOEXCEPT {
    return __ptr_.second();
  }
  _LIBCPP_INLINE_VISIBILITY
  const deleter_type& get_deleter() const _NOEXCEPT {
    return __ptr_.second();
  }
  _LIBCPP_INLINE_VISIBILITY
  explicit operator bool() const _NOEXCEPT {
    return __ptr_.first() != nullptr;
  }

  _LIBCPP_INLINE_VISIBILITY
  pointer release() _NOEXCEPT {
    pointer __t = __ptr_.first();
    __ptr_.first() = pointer();
    return __t;
  }

  _LIBCPP_INLINE_VISIBILITY
  void reset(pointer __p = pointer()) _NOEXCEPT {
    pointer __tmp = __ptr_.first();
    __ptr_.first() = __p;
    if (__tmp)
      __ptr_.second()(__tmp);
  }

  _LIBCPP_INLINE_VISIBILITY
  void swap(unique_ptr& __u) _NOEXCEPT {
    __ptr_.swap(__u.__ptr_);
  }
};


template <class _Tp, class _Dp>
class _LIBCPP_UNIQUE_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS unique_ptr<_Tp[], _Dp> {
public:
  typedef _Tp element_type;
  typedef _Dp deleter_type;
  typedef typename __pointer<_Tp, deleter_type>::type pointer;

private:
  __compressed_pair<pointer, deleter_type> __ptr_;

  template <class _From>
  struct _CheckArrayPointerConversion : is_same<_From, pointer> {};

  template <class _FromElem>
  struct _CheckArrayPointerConversion<_FromElem*>
      : integral_constant<bool,
          is_same<_FromElem*, pointer>::value ||
            (is_same<pointer, element_type*>::value &&
             is_convertible<_FromElem(*)[], element_type(*)[]>::value)
      >
  {};

  typedef __unique_ptr_deleter_sfinae<_Dp> _DeleterSFINAE;

  template <bool _Dummy>
  using _LValRefType _LIBCPP_NODEBUG_TYPE =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__lval_ref_type;

  template <bool _Dummy>
  using _GoodRValRefType _LIBCPP_NODEBUG_TYPE =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__good_rval_ref_type;

  template <bool _Dummy>
  using _BadRValRefType _LIBCPP_NODEBUG_TYPE =
      typename __dependent_type<_DeleterSFINAE, _Dummy>::__bad_rval_ref_type;

  template <bool _Dummy, class _Deleter = typename __dependent_type<
                             __identity<deleter_type>, _Dummy>::type>
  using _EnableIfDeleterDefaultConstructible _LIBCPP_NODEBUG_TYPE  =
      typename enable_if<is_default_constructible<_Deleter>::value &&
                         !is_pointer<_Deleter>::value>::type;

  template <class _ArgType>
  using _EnableIfDeleterConstructible _LIBCPP_NODEBUG_TYPE  =
      typename enable_if<is_constructible<deleter_type, _ArgType>::value>::type;

  template <class _Pp>
  using _EnableIfPointerConvertible _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      _CheckArrayPointerConversion<_Pp>::value
  >::type;

  template <class _UPtr, class _Up,
        class _ElemT = typename _UPtr::element_type>
  using _EnableIfMoveConvertible _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      is_array<_Up>::value &&
      is_same<pointer, element_type*>::value &&
      is_same<typename _UPtr::pointer, _ElemT*>::value &&
      is_convertible<_ElemT(*)[], element_type(*)[]>::value
    >::type;

  template <class _UDel>
  using _EnableIfDeleterConvertible _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      (is_reference<_Dp>::value && is_same<_Dp, _UDel>::value) ||
      (!is_reference<_Dp>::value && is_convertible<_UDel, _Dp>::value)
    >::type;

  template <class _UDel>
  using _EnableIfDeleterAssignable _LIBCPP_NODEBUG_TYPE  = typename enable_if<
      is_assignable<_Dp&, _UDel&&>::value
    >::type;

public:
  template <bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy> >
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR unique_ptr() _NOEXCEPT : __ptr_(pointer(), __default_init_tag()) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy> >
  _LIBCPP_INLINE_VISIBILITY
  _LIBCPP_CONSTEXPR unique_ptr(nullptr_t) _NOEXCEPT : __ptr_(pointer(), __default_init_tag()) {}

  template <class _Pp, bool _Dummy = true,
            class = _EnableIfDeleterDefaultConstructible<_Dummy>,
            class = _EnableIfPointerConvertible<_Pp> >
  _LIBCPP_INLINE_VISIBILITY
  explicit unique_ptr(_Pp __p) _NOEXCEPT
      : __ptr_(__p, __default_init_tag()) {}

  template <class _Pp, bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_LValRefType<_Dummy> >,
            class = _EnableIfPointerConvertible<_Pp> >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(_Pp __p, _LValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(__p, __d) {}

  template <bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_LValRefType<_Dummy> > >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(nullptr_t, _LValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(nullptr, __d) {}

  template <class _Pp, bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_GoodRValRefType<_Dummy> >,
            class = _EnableIfPointerConvertible<_Pp> >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(_Pp __p, _GoodRValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(__p, _VSTD::move(__d)) {
    static_assert(!is_reference<deleter_type>::value,
                  "rvalue deleter bound to reference");
  }

  template <bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_GoodRValRefType<_Dummy> > >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(nullptr_t, _GoodRValRefType<_Dummy> __d) _NOEXCEPT
      : __ptr_(nullptr, _VSTD::move(__d)) {
    static_assert(!is_reference<deleter_type>::value,
                  "rvalue deleter bound to reference");
  }

  template <class _Pp, bool _Dummy = true,
            class = _EnableIfDeleterConstructible<_BadRValRefType<_Dummy> >,
            class = _EnableIfPointerConvertible<_Pp> >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(_Pp __p, _BadRValRefType<_Dummy> __d) = delete;

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(unique_ptr&& __u) _NOEXCEPT
      : __ptr_(__u.release(), _VSTD::forward<deleter_type>(__u.get_deleter())) {
  }

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr& operator=(unique_ptr&& __u) _NOEXCEPT {
    reset(__u.release());
    __ptr_.second() = _VSTD::forward<deleter_type>(__u.get_deleter());
    return *this;
  }

  template <class _Up, class _Ep,
      class = _EnableIfMoveConvertible<unique_ptr<_Up, _Ep>, _Up>,
      class = _EnableIfDeleterConvertible<_Ep>
  >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr(unique_ptr<_Up, _Ep>&& __u) _NOEXCEPT
      : __ptr_(__u.release(), _VSTD::forward<_Ep>(__u.get_deleter())) {
  }

  template <class _Up, class _Ep,
      class = _EnableIfMoveConvertible<unique_ptr<_Up, _Ep>, _Up>,
      class = _EnableIfDeleterAssignable<_Ep>
  >
  _LIBCPP_INLINE_VISIBILITY
  unique_ptr&
  operator=(unique_ptr<_Up, _Ep>&& __u) _NOEXCEPT {
    reset(__u.release());
    __ptr_.second() = _VSTD::forward<_Ep>(__u.get_deleter());
    return *this;
  }

#ifdef _LIBCPP_CXX03_LANG
  unique_ptr(unique_ptr const&) = delete;
  unique_ptr& operator=(unique_ptr const&) = delete;
#endif
# 492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

public:
  _LIBCPP_INLINE_VISIBILITY
  ~unique_ptr() { reset(); }

  _LIBCPP_INLINE_VISIBILITY
  unique_ptr& operator=(nullptr_t) _NOEXCEPT {
    reset();
    return *this;
  }

  _LIBCPP_INLINE_VISIBILITY
  typename add_lvalue_reference<_Tp>::type
  operator[](size_t __i) const {
    return __ptr_.first()[__i];
  }
  _LIBCPP_INLINE_VISIBILITY
  pointer get() const _NOEXCEPT {
    return __ptr_.first();
  }

  _LIBCPP_INLINE_VISIBILITY
  deleter_type& get_deleter() _NOEXCEPT {
    return __ptr_.second();
  }

  _LIBCPP_INLINE_VISIBILITY
  const deleter_type& get_deleter() const _NOEXCEPT {
    return __ptr_.second();
  }
  _LIBCPP_INLINE_VISIBILITY
  explicit operator bool() const _NOEXCEPT {
    return __ptr_.first() != nullptr;
  }

  _LIBCPP_INLINE_VISIBILITY
  pointer release() _NOEXCEPT {
    pointer __t = __ptr_.first();
    __ptr_.first() = pointer();
    return __t;
  }

  template <class _Pp>
  _LIBCPP_INLINE_VISIBILITY
  typename enable_if<
      _CheckArrayPointerConversion<_Pp>::value
  >::type
  reset(_Pp __p) _NOEXCEPT {
    pointer __tmp = __ptr_.first();
    __ptr_.first() = __p;
    if (__tmp)
      __ptr_.second()(__tmp);
  }

  _LIBCPP_INLINE_VISIBILITY
  void reset(nullptr_t = nullptr) _NOEXCEPT {
    pointer __tmp = __ptr_.first();
    __ptr_.first() = nullptr;
    if (__tmp)
      __ptr_.second()(__tmp);
  }

  _LIBCPP_INLINE_VISIBILITY
  void swap(unique_ptr& __u) _NOEXCEPT {
    __ptr_.swap(__u.__ptr_);
  }

};

template <class _Tp, class _Dp>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<
    __is_swappable<_Dp>::value,
    void
>::type
swap(unique_ptr<_Tp, _Dp>& __x, unique_ptr<_Tp, _Dp>& __y) _NOEXCEPT {__x.swap(__y);}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return __x.get() == __y.get();}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__x == __y);}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y)
{
    typedef typename unique_ptr<_T1, _D1>::pointer _P1;
    typedef typename unique_ptr<_T2, _D2>::pointer _P2;
    typedef typename common_type<_P1, _P2>::type _Vp;
    return less<_Vp>()(__x.get(), __y.get());
}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return __y < __x;}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__y < __x);}

template <class _T1, class _D1, class _T2, class _D2>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__x < __y);}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const unique_ptr<_T1, _D1>& __x, nullptr_t) _NOEXCEPT
{
    return !__x;
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(nullptr_t, const unique_ptr<_T1, _D1>& __x) _NOEXCEPT
{
    return !__x;
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const unique_ptr<_T1, _D1>& __x, nullptr_t) _NOEXCEPT
{
    return static_cast<bool>(__x);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(nullptr_t, const unique_ptr<_T1, _D1>& __x) _NOEXCEPT
{
    return static_cast<bool>(__x);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(const unique_ptr<_T1, _D1>& __x, nullptr_t)
{
    typedef typename unique_ptr<_T1, _D1>::pointer _P1;
    return less<_P1>()(__x.get(), nullptr);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(nullptr_t, const unique_ptr<_T1, _D1>& __x)
{
    typedef typename unique_ptr<_T1, _D1>::pointer _P1;
    return less<_P1>()(nullptr, __x.get());
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>(const unique_ptr<_T1, _D1>& __x, nullptr_t)
{
    return nullptr < __x;
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>(nullptr_t, const unique_ptr<_T1, _D1>& __x)
{
    return __x < nullptr;
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const unique_ptr<_T1, _D1>& __x, nullptr_t)
{
    return !(nullptr < __x);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(nullptr_t, const unique_ptr<_T1, _D1>& __x)
{
    return !(__x < nullptr);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t)
{
    return !(__x < nullptr);
}

template <class _T1, class _D1>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x)
{
    return !(nullptr < __x);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

template<class _Tp>
struct __unique_if
{
    typedef unique_ptr<_Tp> __unique_single;
};

template<class _Tp>
struct __unique_if<_Tp[]>
{
    typedef unique_ptr<_Tp[]> __unique_array_unknown_bound;
};

template<class _Tp, size_t _Np>
struct __unique_if<_Tp[_Np]>
{
    typedef void __unique_array_known_bound;
};

template<class _Tp, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
typename __unique_if<_Tp>::__unique_single
make_unique(_Args&&... __args)
{
    return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...));
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
typename __unique_if<_Tp>::__unique_array_unknown_bound
make_unique(size_t __n)
{
    typedef typename remove_extent<_Tp>::type _Up;
    return unique_ptr<_Tp>(new _Up[__n]());
}

template<class _Tp, class... _Args>
    typename __unique_if<_Tp>::__unique_array_known_bound
    make_unique(_Args&&...) = delete;

#endif // _LIBCPP_STD_VER > 11
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS hash;

template <class _Tp, class _Dp>
#ifdef _LIBCPP_CXX03_LANG
struct _LIBCPP_TEMPLATE_VIS hash<unique_ptr<_Tp, _Dp> >
#else
# 752 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
struct _LIBCPP_TEMPLATE_VIS hash<__enable_hash_helper<
    unique_ptr<_Tp, _Dp>, typename unique_ptr<_Tp, _Dp>::pointer> >
#endif
# 755 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 757 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef unique_ptr<_Tp, _Dp> argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t               result_type;
#endif
# 760 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3

    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const unique_ptr<_Tp, _Dp>& __ptr) const
    {
        typedef typename unique_ptr<_Tp, _Dp>::pointer pointer;
        return hash<pointer>()(__ptr.get());
    }
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_UNIQUE_PTR_H
# 774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/unique_ptr.h" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib> // abort
#endif /* expanded by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#  include <atomic>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 1 3
// -*- C++ -*-
//===--------------------------- atomic -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_ATOMIC
#define _LIBCPP_ATOMIC

/*
    atomic synopsis

namespace std
{

// feature test macro [version.syn]

#define __cpp_lib_atomic_is_always_lock_free
#define __cpp_lib_atomic_flag_test
#define __cpp_lib_atomic_lock_free_type_aliases
#define __cpp_lib_atomic_wait

 // order and consistency

 enum memory_order: unspecified // enum class in C++20
 {
    relaxed,
    consume, // load-consume
    acquire, // load-acquire
    release, // store-release
    acq_rel, // store-release load-acquire
    seq_cst // store-release load-acquire
 };

 inline constexpr auto memory_order_relaxed = memory_order::relaxed;
 inline constexpr auto memory_order_consume = memory_order::consume;
 inline constexpr auto memory_order_acquire = memory_order::acquire;
 inline constexpr auto memory_order_release = memory_order::release;
 inline constexpr auto memory_order_acq_rel = memory_order::acq_rel;
 inline constexpr auto memory_order_seq_cst = memory_order::seq_cst;

template <class T> T kill_dependency(T y) noexcept;

// lock-free property

#define ATOMIC_BOOL_LOCK_FREE unspecified
#define ATOMIC_CHAR_LOCK_FREE unspecified
#define ATOMIC_CHAR8_T_LOCK_FREE unspecified // C++20
#define ATOMIC_CHAR16_T_LOCK_FREE unspecified
#define ATOMIC_CHAR32_T_LOCK_FREE unspecified
#define ATOMIC_WCHAR_T_LOCK_FREE unspecified
#define ATOMIC_SHORT_LOCK_FREE unspecified
#define ATOMIC_INT_LOCK_FREE unspecified
#define ATOMIC_LONG_LOCK_FREE unspecified
#define ATOMIC_LLONG_LOCK_FREE unspecified
#define ATOMIC_POINTER_LOCK_FREE unspecified

template <class T>
struct atomic
{
    using value_type = T;

    static constexpr bool is_always_lock_free;
    bool is_lock_free() const volatile noexcept;
    bool is_lock_free() const noexcept;

    atomic() noexcept = default; // until C++20
    constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>); // since C++20
    constexpr atomic(T desr) noexcept;
    atomic(const atomic&) = delete;
    atomic& operator=(const atomic&) = delete;
    atomic& operator=(const atomic&) volatile = delete;

    T load(memory_order m = memory_order_seq_cst) const volatile noexcept;
    T load(memory_order m = memory_order_seq_cst) const noexcept;
    operator T() const volatile noexcept;
    operator T() const noexcept;
    void store(T desr, memory_order m = memory_order_seq_cst) volatile noexcept;
    void store(T desr, memory_order m = memory_order_seq_cst) noexcept;
    T operator=(T) volatile noexcept;
    T operator=(T) noexcept;

    T exchange(T desr, memory_order m = memory_order_seq_cst) volatile noexcept;
    T exchange(T desr, memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_weak(T& expc, T desr,
                               memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_weak(T& expc, T desr, memory_order s, memory_order f) noexcept;
    bool compare_exchange_strong(T& expc, T desr,
                                 memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_strong(T& expc, T desr,
                                 memory_order s, memory_order f) noexcept;
    bool compare_exchange_weak(T& expc, T desr,
                               memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_weak(T& expc, T desr,
                               memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_strong(T& expc, T desr,
                                memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_strong(T& expc, T desr,
                                 memory_order m = memory_order_seq_cst) noexcept;

    void wait(T, memory_order = memory_order::seq_cst) const volatile noexcept;
    void wait(T, memory_order = memory_order::seq_cst) const noexcept;
    void notify_one() volatile noexcept;
    void notify_one() noexcept;
    void notify_all() volatile noexcept;
    void notify_all() noexcept;
};

template <>
struct atomic<integral>
{
    using value_type = integral;
    using difference_type = value_type;

    static constexpr bool is_always_lock_free;
    bool is_lock_free() const volatile noexcept;
    bool is_lock_free() const noexcept;

    atomic() noexcept = default;
    constexpr atomic(integral desr) noexcept;
    atomic(const atomic&) = delete;
    atomic& operator=(const atomic&) = delete;
    atomic& operator=(const atomic&) volatile = delete;

    integral load(memory_order m = memory_order_seq_cst) const volatile noexcept;
    integral load(memory_order m = memory_order_seq_cst) const noexcept;
    operator integral() const volatile noexcept;
    operator integral() const noexcept;
    void store(integral desr, memory_order m = memory_order_seq_cst) volatile noexcept;
    void store(integral desr, memory_order m = memory_order_seq_cst) noexcept;
    integral operator=(integral desr) volatile noexcept;
    integral operator=(integral desr) noexcept;

    integral exchange(integral desr,
                      memory_order m = memory_order_seq_cst) volatile noexcept;
    integral exchange(integral desr, memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_weak(integral& expc, integral desr,
                               memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_weak(integral& expc, integral desr,
                               memory_order s, memory_order f) noexcept;
    bool compare_exchange_strong(integral& expc, integral desr,
                                 memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_strong(integral& expc, integral desr,
                                 memory_order s, memory_order f) noexcept;
    bool compare_exchange_weak(integral& expc, integral desr,
                               memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_weak(integral& expc, integral desr,
                               memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_strong(integral& expc, integral desr,
                                memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_strong(integral& expc, integral desr,
                                 memory_order m = memory_order_seq_cst) noexcept;

    integral fetch_add(integral op, memory_order m = memory_order_seq_cst) volatile noexcept;
    integral fetch_add(integral op, memory_order m = memory_order_seq_cst) noexcept;
    integral fetch_sub(integral op, memory_order m = memory_order_seq_cst) volatile noexcept;
    integral fetch_sub(integral op, memory_order m = memory_order_seq_cst) noexcept;
    integral fetch_and(integral op, memory_order m = memory_order_seq_cst) volatile noexcept;
    integral fetch_and(integral op, memory_order m = memory_order_seq_cst) noexcept;
    integral fetch_or(integral op, memory_order m = memory_order_seq_cst) volatile noexcept;
    integral fetch_or(integral op, memory_order m = memory_order_seq_cst) noexcept;
    integral fetch_xor(integral op, memory_order m = memory_order_seq_cst) volatile noexcept;
    integral fetch_xor(integral op, memory_order m = memory_order_seq_cst) noexcept;

    integral operator++(int) volatile noexcept;
    integral operator++(int) noexcept;
    integral operator--(int) volatile noexcept;
    integral operator--(int) noexcept;
    integral operator++() volatile noexcept;
    integral operator++() noexcept;
    integral operator--() volatile noexcept;
    integral operator--() noexcept;
    integral operator+=(integral op) volatile noexcept;
    integral operator+=(integral op) noexcept;
    integral operator-=(integral op) volatile noexcept;
    integral operator-=(integral op) noexcept;
    integral operator&=(integral op) volatile noexcept;
    integral operator&=(integral op) noexcept;
    integral operator|=(integral op) volatile noexcept;
    integral operator|=(integral op) noexcept;
    integral operator^=(integral op) volatile noexcept;
    integral operator^=(integral op) noexcept;

    void wait(integral, memory_order = memory_order::seq_cst) const volatile noexcept;
    void wait(integral, memory_order = memory_order::seq_cst) const noexcept;
    void notify_one() volatile noexcept;
    void notify_one() noexcept;
    void notify_all() volatile noexcept;
    void notify_all() noexcept;
};

template <class T>
struct atomic<T*>
{
    using value_type = T*;
    using difference_type = ptrdiff_t;

    static constexpr bool is_always_lock_free;
    bool is_lock_free() const volatile noexcept;
    bool is_lock_free() const noexcept;

    atomic() noexcept = default; // until C++20
    constexpr atomic() noexcept; // since C++20
    constexpr atomic(T* desr) noexcept;
    atomic(const atomic&) = delete;
    atomic& operator=(const atomic&) = delete;
    atomic& operator=(const atomic&) volatile = delete;

    T* load(memory_order m = memory_order_seq_cst) const volatile noexcept;
    T* load(memory_order m = memory_order_seq_cst) const noexcept;
    operator T*() const volatile noexcept;
    operator T*() const noexcept;
    void store(T* desr, memory_order m = memory_order_seq_cst) volatile noexcept;
    void store(T* desr, memory_order m = memory_order_seq_cst) noexcept;
    T* operator=(T*) volatile noexcept;
    T* operator=(T*) noexcept;

    T* exchange(T* desr, memory_order m = memory_order_seq_cst) volatile noexcept;
    T* exchange(T* desr, memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_weak(T*& expc, T* desr,
                               memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_weak(T*& expc, T* desr,
                               memory_order s, memory_order f) noexcept;
    bool compare_exchange_strong(T*& expc, T* desr,
                                 memory_order s, memory_order f) volatile noexcept;
    bool compare_exchange_strong(T*& expc, T* desr,
                                 memory_order s, memory_order f) noexcept;
    bool compare_exchange_weak(T*& expc, T* desr,
                               memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_weak(T*& expc, T* desr,
                               memory_order m = memory_order_seq_cst) noexcept;
    bool compare_exchange_strong(T*& expc, T* desr,
                                memory_order m = memory_order_seq_cst) volatile noexcept;
    bool compare_exchange_strong(T*& expc, T* desr,
                                 memory_order m = memory_order_seq_cst) noexcept;
    T* fetch_add(ptrdiff_t op, memory_order m = memory_order_seq_cst) volatile noexcept;
    T* fetch_add(ptrdiff_t op, memory_order m = memory_order_seq_cst) noexcept;
    T* fetch_sub(ptrdiff_t op, memory_order m = memory_order_seq_cst) volatile noexcept;
    T* fetch_sub(ptrdiff_t op, memory_order m = memory_order_seq_cst) noexcept;

    T* operator++(int) volatile noexcept;
    T* operator++(int) noexcept;
    T* operator--(int) volatile noexcept;
    T* operator--(int) noexcept;
    T* operator++() volatile noexcept;
    T* operator++() noexcept;
    T* operator--() volatile noexcept;
    T* operator--() noexcept;
    T* operator+=(ptrdiff_t op) volatile noexcept;
    T* operator+=(ptrdiff_t op) noexcept;
    T* operator-=(ptrdiff_t op) volatile noexcept;
    T* operator-=(ptrdiff_t op) noexcept;

    void wait(T*, memory_order = memory_order::seq_cst) const volatile noexcept;
    void wait(T*, memory_order = memory_order::seq_cst) const noexcept;
    void notify_one() volatile noexcept;
    void notify_one() noexcept;
    void notify_all() volatile noexcept;
    void notify_all() noexcept;
};


template <class T>
  bool atomic_is_lock_free(const volatile atomic<T>* obj) noexcept;

template <class T>
  bool atomic_is_lock_free(const atomic<T>* obj) noexcept;

template <class T>
  void atomic_store(volatile atomic<T>* obj, T desr) noexcept;

template <class T>
  void atomic_store(atomic<T>* obj, T desr) noexcept;

template <class T>
  void atomic_store_explicit(volatile atomic<T>* obj, T desr, memory_order m) noexcept;

template <class T>
  void atomic_store_explicit(atomic<T>* obj, T desr, memory_order m) noexcept;

template <class T>
  T atomic_load(const volatile atomic<T>* obj) noexcept;

template <class T>
  T atomic_load(const atomic<T>* obj) noexcept;

template <class T>
  T atomic_load_explicit(const volatile atomic<T>* obj, memory_order m) noexcept;

template <class T>
  T atomic_load_explicit(const atomic<T>* obj, memory_order m) noexcept;

template <class T>
  T atomic_exchange(volatile atomic<T>* obj, T desr) noexcept;

template <class T>
  T atomic_exchange(atomic<T>* obj, T desr) noexcept;

template <class T>
  T atomic_exchange_explicit(volatile atomic<T>* obj, T desr, memory_order m) noexcept;

template <class T>
  T atomic_exchange_explicit(atomic<T>* obj, T desr, memory_order m) noexcept;

template <class T>
  bool atomic_compare_exchange_weak(volatile atomic<T>* obj, T* expc, T desr) noexcept;

template <class T>
  bool atomic_compare_exchange_weak(atomic<T>* obj, T* expc, T desr) noexcept;

template <class T>
  bool atomic_compare_exchange_strong(volatile atomic<T>* obj, T* expc, T desr) noexcept;

template <class T>
  bool atomic_compare_exchange_strong(atomic<T>* obj, T* expc, T desr) noexcept;

template <class T>
  bool atomic_compare_exchange_weak_explicit(volatile atomic<T>* obj, T* expc,
                                             T desr,
                                             memory_order s, memory_order f) noexcept;

template <class T>
  bool atomic_compare_exchange_weak_explicit(atomic<T>* obj, T* expc, T desr,
                                             memory_order s, memory_order f) noexcept;

template <class T>
  bool atomic_compare_exchange_strong_explicit(volatile atomic<T>* obj,
                                               T* expc, T desr,
                                               memory_order s, memory_order f) noexcept;

template <class T>
  bool atomic_compare_exchange_strong_explicit(atomic<T>* obj, T* expc,
                                               T desr,
                                               memory_order s, memory_order f) noexcept;

template <class T>
  void atomic_wait(const volatile atomic<T>* obj, T old) noexcept;

template <class T>
  void atomic_wait(const atomic<T>* obj, T old) noexcept;

template <class T>
  void atomic_wait_explicit(const volatile atomic<T>* obj, T old, memory_order m) noexcept;

template <class T>
  void atomic_wait_explicit(const atomic<T>* obj, T old, memory_order m) noexcept;

template <class T>
  void atomic_one(volatile atomic<T>* obj) noexcept;

template <class T>
  void atomic_one(atomic<T>* obj) noexcept;

template <class T>
  void atomic_all(volatile atomic<T>* obj) noexcept;

template <class T>
  void atomic_all(atomic<T>* obj) noexcept;

template <class Integral>
  Integral atomic_fetch_add(volatile atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_add(atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_add_explicit(volatile atomic<Integral>* obj, Integral op,
                              memory_order m) noexcept;
template <class Integral>
  Integral atomic_fetch_add_explicit(atomic<Integral>* obj, Integral op,
                              memory_order m) noexcept;
template <class Integral>
  Integral atomic_fetch_sub(volatile atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_sub(atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_sub_explicit(volatile atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_sub_explicit(atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_and(volatile atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_and(atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_and_explicit(volatile atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_and_explicit(atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_or(volatile atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_or(atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_or_explicit(volatile atomic<Integral>* obj, Integral op,
                             memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_or_explicit(atomic<Integral>* obj, Integral op,
                             memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_xor(volatile atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_xor(atomic<Integral>* obj, Integral op) noexcept;

template <class Integral>
  Integral atomic_fetch_xor_explicit(volatile atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class Integral>
  Integral atomic_fetch_xor_explicit(atomic<Integral>* obj, Integral op,
                                     memory_order m) noexcept;

template <class T>
  T* atomic_fetch_add(volatile atomic<T*>* obj, ptrdiff_t op) noexcept;

template <class T>
  T* atomic_fetch_add(atomic<T*>* obj, ptrdiff_t op) noexcept;

template <class T>
  T* atomic_fetch_add_explicit(volatile atomic<T*>* obj, ptrdiff_t op,
                               memory_order m) noexcept;

template <class T>
  T* atomic_fetch_add_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order m) noexcept;

template <class T>
  T* atomic_fetch_sub(volatile atomic<T*>* obj, ptrdiff_t op) noexcept;

template <class T>
  T* atomic_fetch_sub(atomic<T*>* obj, ptrdiff_t op) noexcept;

template <class T>
  T* atomic_fetch_sub_explicit(volatile atomic<T*>* obj, ptrdiff_t op,
                               memory_order m) noexcept;

template <class T>
  T* atomic_fetch_sub_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order m) noexcept;

// Atomics for standard typedef types

typedef atomic<bool>               atomic_bool;
typedef atomic<char>               atomic_char;
typedef atomic<signed char>        atomic_schar;
typedef atomic<unsigned char>      atomic_uchar;
typedef atomic<short>              atomic_short;
typedef atomic<unsigned short>     atomic_ushort;
typedef atomic<int>                atomic_int;
typedef atomic<unsigned int>       atomic_uint;
typedef atomic<long>               atomic_long;
typedef atomic<unsigned long>      atomic_ulong;
typedef atomic<long long>          atomic_llong;
typedef atomic<unsigned long long> atomic_ullong;
typedef atomic<char8_t>            atomic_char8_t; // C++20
typedef atomic<char16_t>           atomic_char16_t;
typedef atomic<char32_t>           atomic_char32_t;
typedef atomic<wchar_t>            atomic_wchar_t;

typedef atomic<int_least8_t>   atomic_int_least8_t;
typedef atomic<uint_least8_t>  atomic_uint_least8_t;
typedef atomic<int_least16_t>  atomic_int_least16_t;
typedef atomic<uint_least16_t> atomic_uint_least16_t;
typedef atomic<int_least32_t>  atomic_int_least32_t;
typedef atomic<uint_least32_t> atomic_uint_least32_t;
typedef atomic<int_least64_t>  atomic_int_least64_t;
typedef atomic<uint_least64_t> atomic_uint_least64_t;

typedef atomic<int_fast8_t>   atomic_int_fast8_t;
typedef atomic<uint_fast8_t>  atomic_uint_fast8_t;
typedef atomic<int_fast16_t>  atomic_int_fast16_t;
typedef atomic<uint_fast16_t> atomic_uint_fast16_t;
typedef atomic<int_fast32_t>  atomic_int_fast32_t;
typedef atomic<uint_fast32_t> atomic_uint_fast32_t;
typedef atomic<int_fast64_t>  atomic_int_fast64_t;
typedef atomic<uint_fast64_t> atomic_uint_fast64_t;

typedef atomic<int8_t>   atomic_int8_t;
typedef atomic<uint8_t>  atomic_uint8_t;
typedef atomic<int16_t>  atomic_int16_t;
typedef atomic<uint16_t> atomic_uint16_t;
typedef atomic<int32_t>  atomic_int32_t;
typedef atomic<uint32_t> atomic_uint32_t;
typedef atomic<int64_t>  atomic_int64_t;
typedef atomic<uint64_t> atomic_uint64_t;

typedef atomic<intptr_t>  atomic_intptr_t;
typedef atomic<uintptr_t> atomic_uintptr_t;
typedef atomic<size_t>    atomic_size_t;
typedef atomic<ptrdiff_t> atomic_ptrdiff_t;
typedef atomic<intmax_t>  atomic_intmax_t;
typedef atomic<uintmax_t> atomic_uintmax_t;

// flag type and operations

typedef struct atomic_flag
{
    atomic_flag() noexcept = default; // until C++20
    constexpr atomic_flag() noexcept; // since C++20
    atomic_flag(const atomic_flag&) = delete;
    atomic_flag& operator=(const atomic_flag&) = delete;
    atomic_flag& operator=(const atomic_flag&) volatile = delete;

    bool test(memory_order m = memory_order_seq_cst) volatile noexcept;
    bool test(memory_order m = memory_order_seq_cst) noexcept;
    bool test_and_set(memory_order m = memory_order_seq_cst) volatile noexcept;
    bool test_and_set(memory_order m = memory_order_seq_cst) noexcept;
    void clear(memory_order m = memory_order_seq_cst) volatile noexcept;
    void clear(memory_order m = memory_order_seq_cst) noexcept;

    void wait(bool, memory_order = memory_order::seq_cst) const volatile noexcept;
    void wait(bool, memory_order = memory_order::seq_cst) const noexcept;
    void notify_one() volatile noexcept;
    void notify_one() noexcept;
    void notify_all() volatile noexcept;
    void notify_all() noexcept;
} atomic_flag;

bool atomic_flag_test(volatile atomic_flag* obj) noexcept;
bool atomic_flag_test(atomic_flag* obj) noexcept;
bool atomic_flag_test_explicit(volatile atomic_flag* obj,
                               memory_order m) noexcept;
bool atomic_flag_test_explicit(atomic_flag* obj, memory_order m) noexcept;
bool atomic_flag_test_and_set(volatile atomic_flag* obj) noexcept;
bool atomic_flag_test_and_set(atomic_flag* obj) noexcept;
bool atomic_flag_test_and_set_explicit(volatile atomic_flag* obj,
                                       memory_order m) noexcept;
bool atomic_flag_test_and_set_explicit(atomic_flag* obj, memory_order m) noexcept;
void atomic_flag_clear(volatile atomic_flag* obj) noexcept;
void atomic_flag_clear(atomic_flag* obj) noexcept;
void atomic_flag_clear_explicit(volatile atomic_flag* obj, memory_order m) noexcept;
void atomic_flag_clear_explicit(atomic_flag* obj, memory_order m) noexcept;

void atomic_wait(const volatile atomic_flag* obj, T old) noexcept;
void atomic_wait(const atomic_flag* obj, T old) noexcept;
void atomic_wait_explicit(const volatile atomic_flag* obj, T old, memory_order m) noexcept;
void atomic_wait_explicit(const atomic_flag* obj, T old, memory_order m) noexcept;
void atomic_one(volatile atomic_flag* obj) noexcept;
void atomic_one(atomic_flag* obj) noexcept;
void atomic_all(volatile atomic_flag* obj) noexcept;
void atomic_all(atomic_flag* obj) noexcept;

// fences

void atomic_thread_fence(memory_order m) noexcept;
void atomic_signal_fence(memory_order m) noexcept;

// deprecated

template <class T>
  void atomic_init(volatile atomic<T>* obj, typename atomic<T>::value_type desr) noexcept;

template <class T>
  void atomic_init(atomic<T>* obj, typename atomic<T>::value_type desr) noexcept;

#define ATOMIC_VAR_INIT(value) see below

#define ATOMIC_FLAG_INIT see below

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <__threading_support>
#endif /* expanded by -frewrite-includes */
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_THREADING_SUPPORT
#define _LIBCPP_THREADING_SUPPORT

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
#include <chrono>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 1 3
// -*- C++ -*-
//===---------------------------- chrono ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CHRONO
#define _LIBCPP_CHRONO

/*
    chrono synopsis

namespace std
{
namespace chrono
{

template <class ToDuration, class Rep, class Period>
constexpr
ToDuration
duration_cast(const duration<Rep, Period>& fd);

template <class Rep> struct treat_as_floating_point : is_floating_point<Rep> {};

template <class Rep> inline constexpr bool treat_as_floating_point_v
    = treat_as_floating_point<Rep>::value;                       // C++17

template <class Rep>
struct duration_values
{
public:
    static constexpr Rep zero(); // noexcept in C++20
    static constexpr Rep max();  // noexcept in C++20
    static constexpr Rep min();  // noexcept in C++20
};

// duration

template <class Rep, class Period = ratio<1>>
class duration
{
    static_assert(!__is_duration<Rep>::value, "A duration representation can not be a duration");
    static_assert(__is_ratio<Period>::value, "Second template parameter of duration must be a std::ratio");
    static_assert(Period::num > 0, "duration period must be positive");
public:
    typedef Rep rep;
    typedef typename _Period::type period;

    constexpr duration() = default;
    template <class Rep2>
        constexpr explicit duration(const Rep2& r,
            typename enable_if
            <
               is_convertible<Rep2, rep>::value &&
               (treat_as_floating_point<rep>::value ||
               !treat_as_floating_point<rep>::value && !treat_as_floating_point<Rep2>::value)
            >::type* = 0);

    // conversions
    template <class Rep2, class Period2>
        constexpr duration(const duration<Rep2, Period2>& d,
            typename enable_if
            <
                treat_as_floating_point<rep>::value ||
                ratio_divide<Period2, period>::type::den == 1
            >::type* = 0);

    // observer

    constexpr rep count() const;

    // arithmetic

    constexpr common_type<duration>::type  operator+() const;
    constexpr common_type<duration>::type  operator-() const;
    constexpr duration& operator++();    // constexpr in C++17
    constexpr duration  operator++(int); // constexpr in C++17
    constexpr duration& operator--();    // constexpr in C++17
    constexpr duration  operator--(int); // constexpr in C++17

    constexpr duration& operator+=(const duration& d);  // constexpr in C++17
    constexpr duration& operator-=(const duration& d);  // constexpr in C++17

    duration& operator*=(const rep& rhs);       // constexpr in C++17
    duration& operator/=(const rep& rhs);       // constexpr in C++17
    duration& operator%=(const rep& rhs);       // constexpr in C++17
    duration& operator%=(const duration& rhs);  // constexpr in C++17

    // special values

    static constexpr duration zero(); // noexcept in C++20
    static constexpr duration min();  // noexcept in C++20
    static constexpr duration max();  // noexcept in C++20
};

typedef duration<long long,         nano> nanoseconds;
typedef duration<long long,        micro> microseconds;
typedef duration<long long,        milli> milliseconds;
typedef duration<long long              > seconds;
typedef duration<     long, ratio<  60> > minutes;
typedef duration<     long, ratio<3600> > hours;

template <class Clock, class Duration = typename Clock::duration>
class time_point
{
public:
    typedef Clock                     clock;
    typedef Duration                  duration;
    typedef typename duration::rep    rep;
    typedef typename duration::period period;
private:
    duration d_;  // exposition only

public:
    time_point();  // has value "epoch" // constexpr in C++14
    explicit time_point(const duration& d);  // same as time_point() + d // constexpr in C++14

    // conversions
    template <class Duration2>
       time_point(const time_point<clock, Duration2>& t); // constexpr in C++14

    // observer

    duration time_since_epoch() const; // constexpr in C++14

    // arithmetic

    time_point& operator+=(const duration& d); // constexpr in C++17
    time_point& operator-=(const duration& d); // constexpr in C++17

    // special values

    static constexpr time_point min();  // noexcept in C++20
    static constexpr time_point max();  // noexcept in C++20
};

} // chrono

// common_type traits
template <class Rep1, class Period1, class Rep2, class Period2>
  struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>>;

template <class Clock, class Duration1, class Duration2>
  struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>>;

namespace chrono {


template<class T> struct is_clock;  // C++20
template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;   // C++20


// duration arithmetic
template <class Rep1, class Period1, class Rep2, class Period2>
  constexpr
  typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
  operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
  constexpr
  typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
  operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period, class Rep2>
  constexpr
  duration<typename common_type<Rep1, Rep2>::type, Period>
  operator*(const duration<Rep1, Period>& d, const Rep2& s);
template <class Rep1, class Period, class Rep2>
  constexpr
  duration<typename common_type<Rep1, Rep2>::type, Period>
  operator*(const Rep1& s, const duration<Rep2, Period>& d);
template <class Rep1, class Period, class Rep2>
  constexpr
  duration<typename common_type<Rep1, Rep2>::type, Period>
  operator/(const duration<Rep1, Period>& d, const Rep2& s);
template <class Rep1, class Period1, class Rep2, class Period2>
  constexpr
  typename common_type<Rep1, Rep2>::type
  operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);

// duration comparisons
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
   constexpr
   bool operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);

// duration_cast
template <class ToDuration, class Rep, class Period>
  ToDuration duration_cast(const duration<Rep, Period>& d);

template <class ToDuration, class Rep, class Period>
    constexpr ToDuration floor(const duration<Rep, Period>& d);    // C++17
template <class ToDuration, class Rep, class Period>
    constexpr ToDuration ceil(const duration<Rep, Period>& d);     // C++17
template <class ToDuration, class Rep, class Period>
    constexpr ToDuration round(const duration<Rep, Period>& d);    // C++17

// duration I/O is elsewhere

// time_point arithmetic (all constexpr in C++14)
template <class Clock, class Duration1, class Rep2, class Period2>
  time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type>
  operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Clock, class Duration2>
  time_point<Clock, typename common_type<duration<Rep1, Period1>, Duration2>::type>
  operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Rep2, class Period2>
  time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type>
  operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
template <class Clock, class Duration1, class Duration2>
  typename common_type<Duration1, Duration2>::type
  operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);

// time_point comparisons (all constexpr in C++14)
template <class Clock, class Duration1, class Duration2>
   bool operator==(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
   bool operator!=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
   bool operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
   bool operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
   bool operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
   bool operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);

// time_point_cast (constexpr in C++14)

template <class ToDuration, class Clock, class Duration>
  time_point<Clock, ToDuration> time_point_cast(const time_point<Clock, Duration>& t);

template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    floor(const time_point<Clock, Duration>& tp);                  // C++17

template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    ceil(const time_point<Clock, Duration>& tp);                   // C++17

template <class ToDuration, class Clock, class Duration>
    constexpr time_point<Clock, ToDuration>
    round(const time_point<Clock, Duration>& tp);                  // C++17

template <class Rep, class Period>
    constexpr duration<Rep, Period> abs(duration<Rep, Period> d);  // C++17

// Clocks

class system_clock
{
public:
    typedef microseconds                     duration;
    typedef duration::rep                    rep;
    typedef duration::period                 period;
    typedef chrono::time_point<system_clock> time_point;
    static const bool is_steady =            false; // constexpr in C++14

    static time_point now() noexcept;
    static time_t     to_time_t  (const time_point& __t) noexcept;
    static time_point from_time_t(time_t __t) noexcept;
};

template <class Duration>
  using sys_time  = time_point<system_clock, Duration>; // C++20
using sys_seconds = sys_time<seconds>;                  // C++20
using sys_days    = sys_time<days>;                     // C++20

class utc_clock;                                        // C++20

template <class Duration>
  using utc_time  = time_point<utc_clock, Duration>;    // C++20
using utc_seconds = utc_time<seconds>;                  // C++20

class tai_clock;                                        // C++20

template <class Duration>
  using tai_time  = time_point<tai_clock, Duration>;    // C++20
using tai_seconds = tai_time<seconds>;                  // C++20

class file_clock;                                       // C++20

template<class Duration>
  using file_time = time_point<file_clock, Duration>;   // C++20

class steady_clock
{
public:
    typedef nanoseconds                                   duration;
    typedef duration::rep                                 rep;
    typedef duration::period                              period;
    typedef chrono::time_point<steady_clock, duration>    time_point;
    static const bool is_steady =                         true; // constexpr in C++14

    static time_point now() noexcept;
};

typedef steady_clock high_resolution_clock;

// 25.7.8, local time           // C++20
struct local_t {};
template<class Duration>
  using local_time  = time_point<local_t, Duration>;
using local_seconds = local_time<seconds>;
using local_days    = local_time<days>;

// 25.7.9, time_point conversions template<class DestClock, class SourceClock>    // C++20
struct clock_time_conversion;

template<class DestClock, class SourceClock, class Duration>
  auto clock_cast(const time_point<SourceClock, Duration>& t);

// 25.8.2, class last_spec    // C++20
struct last_spec;

// 25.8.3, class day          // C++20

class day;
constexpr bool operator==(const day& x, const day& y) noexcept;
constexpr bool operator!=(const day& x, const day& y) noexcept;
constexpr bool operator< (const day& x, const day& y) noexcept;
constexpr bool operator> (const day& x, const day& y) noexcept;
constexpr bool operator<=(const day& x, const day& y) noexcept;
constexpr bool operator>=(const day& x, const day& y) noexcept;
constexpr day  operator+(const day&  x, const days& y) noexcept;
constexpr day  operator+(const days& x, const day&  y) noexcept;
constexpr day  operator-(const day&  x, const days& y) noexcept;
constexpr days operator-(const day&  x, const day&  y) noexcept;

// 25.8.4, class month    // C++20
class month;
constexpr bool operator==(const month& x, const month& y) noexcept;
constexpr bool operator!=(const month& x, const month& y) noexcept;
constexpr bool operator< (const month& x, const month& y) noexcept;
constexpr bool operator> (const month& x, const month& y) noexcept;
constexpr bool operator<=(const month& x, const month& y) noexcept;
constexpr bool operator>=(const month& x, const month& y) noexcept;
constexpr month  operator+(const month&  x, const months& y) noexcept;
constexpr month  operator+(const months& x,  const month& y) noexcept;
constexpr month  operator-(const month&  x, const months& y) noexcept;
constexpr months operator-(const month&  x,  const month& y) noexcept;

// 25.8.5, class year    // C++20
class year;
constexpr bool operator==(const year& x, const year& y) noexcept;
constexpr bool operator!=(const year& x, const year& y) noexcept;
constexpr bool operator< (const year& x, const year& y) noexcept;
constexpr bool operator> (const year& x, const year& y) noexcept;
constexpr bool operator<=(const year& x, const year& y) noexcept;
constexpr bool operator>=(const year& x, const year& y) noexcept;
constexpr year  operator+(const year&  x, const years& y) noexcept;
constexpr year  operator+(const years& x, const year&  y) noexcept;
constexpr year  operator-(const year&  x, const years& y) noexcept;
constexpr years operator-(const year&  x, const year&  y) noexcept;

// 25.8.6, class weekday    // C++20
class weekday;

constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
constexpr bool operator!=(const weekday& x, const weekday& y) noexcept;
constexpr weekday operator+(const weekday& x, const days&    y) noexcept;
constexpr weekday operator+(const days&    x, const weekday& y) noexcept;
constexpr weekday operator-(const weekday& x, const days&    y) noexcept;
constexpr days    operator-(const weekday& x, const weekday& y) noexcept;

// 25.8.7, class weekday_indexed    // C++20

class weekday_indexed;
constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
constexpr bool operator!=(const weekday_indexed& x, const weekday_indexed& y) noexcept;

// 25.8.8, class weekday_last    // C++20
class weekday_last;

constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
constexpr bool operator!=(const weekday_last& x, const weekday_last& y) noexcept;

// 25.8.9, class month_day    // C++20
class month_day;

constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
constexpr bool operator!=(const month_day& x, const month_day& y) noexcept;
constexpr bool operator< (const month_day& x, const month_day& y) noexcept;
constexpr bool operator> (const month_day& x, const month_day& y) noexcept;
constexpr bool operator<=(const month_day& x, const month_day& y) noexcept;
constexpr bool operator>=(const month_day& x, const month_day& y) noexcept;


// 25.8.10, class month_day_last    // C++20
class month_day_last;

constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
constexpr bool operator!=(const month_day_last& x, const month_day_last& y) noexcept;
constexpr bool operator< (const month_day_last& x, const month_day_last& y) noexcept;
constexpr bool operator> (const month_day_last& x, const month_day_last& y) noexcept;
constexpr bool operator<=(const month_day_last& x, const month_day_last& y) noexcept;
constexpr bool operator>=(const month_day_last& x, const month_day_last& y) noexcept;

// 25.8.11, class month_weekday    // C++20
class month_weekday;

constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
constexpr bool operator!=(const month_weekday& x, const month_weekday& y) noexcept;

// 25.8.12, class month_weekday_last    // C++20
class month_weekday_last;

constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
constexpr bool operator!=(const month_weekday_last& x, const month_weekday_last& y) noexcept;


// 25.8.13, class year_month    // C++20
class year_month;

constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
constexpr bool operator!=(const year_month& x, const year_month& y) noexcept;
constexpr bool operator< (const year_month& x, const year_month& y) noexcept;
constexpr bool operator> (const year_month& x, const year_month& y) noexcept;
constexpr bool operator<=(const year_month& x, const year_month& y) noexcept;
constexpr bool operator>=(const year_month& x, const year_month& y) noexcept;

constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
constexpr months operator-(const year_month& x, const year_month& y) noexcept;
constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;

// 25.8.14, class year_month_day class    // C++20
year_month_day;

constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
constexpr bool operator!=(const year_month_day& x, const year_month_day& y) noexcept;
constexpr bool operator< (const year_month_day& x, const year_month_day& y) noexcept;
constexpr bool operator> (const year_month_day& x, const year_month_day& y) noexcept;
constexpr bool operator<=(const year_month_day& x, const year_month_day& y) noexcept;
constexpr bool operator>=(const year_month_day& x, const year_month_day& y) noexcept;

constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;


// 25.8.15, class year_month_day_last    // C++20
class year_month_day_last;

constexpr bool operator==(const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;
constexpr bool operator!=(const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;
constexpr bool operator< (const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;
constexpr bool operator> (const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;
constexpr bool operator<=(const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;
constexpr bool operator>=(const year_month_day_last& x,
                          const year_month_day_last& y) noexcept;

constexpr year_month_day_last
  operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
constexpr year_month_day_last
  operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
constexpr year_month_day_last
  operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
constexpr year_month_day_last
  operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
constexpr year_month_day_last
  operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
constexpr year_month_day_last
  operator-(const year_month_day_last& ymdl, const years& dy) noexcept;

// 25.8.16, class year_month_weekday    // C++20
class year_month_weekday;

constexpr bool operator==(const year_month_weekday& x,
                          const year_month_weekday& y) noexcept;
constexpr bool operator!=(const year_month_weekday& x,
                          const year_month_weekday& y) noexcept;

constexpr year_month_weekday
  operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
constexpr year_month_weekday
  operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
constexpr year_month_weekday
  operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
constexpr year_month_weekday
  operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
constexpr year_month_weekday
  operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
constexpr year_month_weekday
  operator-(const year_month_weekday& ymwd, const years& dy) noexcept;

// 25.8.17, class year_month_weekday_last    // C++20
class year_month_weekday_last;

constexpr bool operator==(const year_month_weekday_last& x,
                          const year_month_weekday_last& y) noexcept;
constexpr bool operator!=(const year_month_weekday_last& x,
                          const year_month_weekday_last& y) noexcept;
constexpr year_month_weekday_last
  operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
constexpr year_month_weekday_last
  operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
constexpr year_month_weekday_last
  operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
constexpr year_month_weekday_last
  operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
constexpr year_month_weekday_last
  operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
constexpr year_month_weekday_last
  operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;

// 25.8.18, civil calendar conventional syntax operators    // C++20
constexpr year_month
  operator/(const year& y, const month& m) noexcept;
constexpr year_month
  operator/(const year& y, int m) noexcept;
constexpr month_day
  operator/(const month& m, const day& d) noexcept;
constexpr month_day
  operator/(const month& m, int d) noexcept;
constexpr month_day
  operator/(int m, const day& d) noexcept;
constexpr month_day
  operator/(const day& d, const month& m) noexcept;
constexpr month_day
  operator/(const day& d, int m) noexcept;
constexpr month_day_last
  operator/(const month& m, last_spec) noexcept;
constexpr month_day_last
  operator/(int m, last_spec) noexcept;
constexpr month_day_last
  operator/(last_spec, const month& m) noexcept;
constexpr month_day_last
  operator/(last_spec, int m) noexcept;
constexpr month_weekday
  operator/(const month& m, const weekday_indexed& wdi) noexcept;
constexpr month_weekday
  operator/(int m, const weekday_indexed& wdi) noexcept;
constexpr month_weekday
  operator/(const weekday_indexed& wdi, const month& m) noexcept;
constexpr month_weekday
  operator/(const weekday_indexed& wdi, int m) noexcept;
constexpr month_weekday_last
  operator/(const month& m, const weekday_last& wdl) noexcept;
constexpr month_weekday_last
  operator/(int m, const weekday_last& wdl) noexcept;
constexpr month_weekday_last
  operator/(const weekday_last& wdl, const month& m) noexcept;
constexpr month_weekday_last
  operator/(const weekday_last& wdl, int m) noexcept;
constexpr year_month_day
  operator/(const year_month& ym, const day& d) noexcept;
constexpr year_month_day
  operator/(const year_month& ym, int d) noexcept;
constexpr year_month_day
  operator/(const year& y, const month_day& md) noexcept;
constexpr year_month_day
  operator/(int y, const month_day& md) noexcept;
constexpr year_month_day
  operator/(const month_day& md, const year& y) noexcept;
constexpr year_month_day
  operator/(const month_day& md, int y) noexcept;
constexpr year_month_day_last
  operator/(const year_month& ym, last_spec) noexcept;
constexpr year_month_day_last
  operator/(const year& y, const month_day_last& mdl) noexcept;
constexpr year_month_day_last
  operator/(int y, const month_day_last& mdl) noexcept;
constexpr year_month_day_last
  operator/(const month_day_last& mdl, const year& y) noexcept;
constexpr year_month_day_last
  operator/(const month_day_last& mdl, int y) noexcept;
constexpr year_month_weekday
  operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
constexpr year_month_weekday
  operator/(const year& y, const month_weekday& mwd) noexcept;
constexpr year_month_weekday
  operator/(int y, const month_weekday& mwd) noexcept;
constexpr year_month_weekday
  operator/(const month_weekday& mwd, const year& y) noexcept;
constexpr year_month_weekday
  operator/(const month_weekday& mwd, int y) noexcept;
constexpr year_month_weekday_last
  operator/(const year_month& ym, const weekday_last& wdl) noexcept;
constexpr year_month_weekday_last
  operator/(const year& y, const month_weekday_last& mwdl) noexcept;
constexpr year_month_weekday_last
  operator/(int y, const month_weekday_last& mwdl) noexcept;
constexpr year_month_weekday_last
  operator/(const month_weekday_last& mwdl, const year& y) noexcept;
constexpr year_month_weekday_last
  operator/(const month_weekday_last& mwdl, int y) noexcept;

// 26.9, class template hh_mm_ss
template <class Duration>
class hh_mm_ss
{
    bool            is_neg; // exposition only
    chrono::hours   h;      // exposition only
    chrono::minutes m;      // exposition only
    chrono::seconds s;      // exposition only
    precision       ss;     // exposition only

public:
    static unsigned constexpr fractional_width = see below;
    using precision                            = see below;

    constexpr hh_mm_ss() noexcept : hh_mm_ss{Duration::zero()} {}
    constexpr explicit hh_mm_ss(Duration d) noexcept;

    constexpr bool is_negative() const noexcept;
    constexpr chrono::hours hours() const noexcept;
    constexpr chrono::minutes minutes() const noexcept;
    constexpr chrono::seconds seconds() const noexcept;
    constexpr precision subseconds() const noexcept;

    constexpr explicit operator  precision()   const noexcept;
    constexpr          precision to_duration() const noexcept;
};

template <class charT, class traits, class Duration>
  basic_ostream<charT, traits>&
    operator<<(basic_ostream<charT, traits>& os, hh_mm_ss<Duration> const& hms);

// 26.10, 12/24 hour functions
constexpr bool is_am(hours const& h) noexcept;
constexpr bool is_pm(hours const& h) noexcept;
constexpr hours make12(const hours& h) noexcept;
constexpr hours make24(const hours& h, bool is_pm) noexcept;


// 25.10.2, time zone database     // C++20
struct tzdb;
class tzdb_list;

// 25.10.2.3, time zone database access    // C++20
const tzdb& get_tzdb();
tzdb_list& get_tzdb_list();
const time_zone* locate_zone(string_view tz_name);
const time_zone* current_zone();

// 25.10.2.4, remote time zone database support    // C++20
const tzdb& reload_tzdb();
string remote_version();

// 25.10.3, exception classes    // C++20
class nonexistent_local_time;
class ambiguous_local_time;

// 25.10.4, information classes    // C++20
struct sys_info;
struct local_info;

// 25.10.5, class time_zone    // C++20
enum class choose {earliest, latest};
class time_zone;
bool operator==(const time_zone& x, const time_zone& y) noexcept;
bool operator!=(const time_zone& x, const time_zone& y) noexcept;
bool operator<(const time_zone& x, const time_zone& y) noexcept;
bool operator>(const time_zone& x, const time_zone& y) noexcept;
bool operator<=(const time_zone& x, const time_zone& y) noexcept;
bool operator>=(const time_zone& x, const time_zone& y) noexcept;

// 25.10.6, class template zoned_traits    // C++20
template<class T> struct zoned_traits;

// 25.10.7, class template zoned_time    // C++20
template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
using zoned_seconds = zoned_time<seconds>;

template<class Duration1, class Duration2, class TimeZonePtr>
  bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
                  const zoned_time<Duration2, TimeZonePtr>& y);
template<class Duration1, class Duration2, class TimeZonePtr>
  bool operator!=(const zoned_time<Duration1, TimeZonePtr>& x,
                  const zoned_time<Duration2, TimeZonePtr>& y);

// 25.10.8, leap second support    // C++20
class leap;

bool operator==(const leap& x, const leap& y);
bool operator!=(const leap& x, const leap& y);
bool operator< (const leap& x, const leap& y);
bool operator> (const leap& x, const leap& y);
bool operator<=(const leap& x, const leap& y);
bool operator>=(const leap& x, const leap& y);
template<class Duration>
  bool operator==(const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator==(const sys_time<Duration>& x, const leap& y);
template<class Duration>
  bool operator!=(const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator!=(const sys_time<Duration>& x, const leap& y);
template<class Duration>
  bool operator< (const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator< (const sys_time<Duration>& x, const leap& y);
template<class Duration>
  bool operator> (const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator> (const sys_time<Duration>& x, const leap& y);
template<class Duration>
  bool operator<=(const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator<=(const sys_time<Duration>& x, const leap& y);
template<class Duration>
  bool operator>=(const leap& x, const sys_time<Duration>& y);
template<class Duration>
  bool operator>=(const sys_time<Duration>& x, const leap& y);

// 25.10.9, class link    // C++20
class link;
bool operator==(const link& x, const link& y);
bool operator!=(const link& x, const link& y);
bool operator< (const link& x, const link& y);
bool operator> (const link& x, const link& y);
bool operator<=(const link& x, const link& y);
bool operator>=(const link& x, const link& y);

// 25.11, formatting    // C++20
template<class charT, class Streamable>
  basic_string<charT>
    format(const charT* fmt, const Streamable& s);

template<class charT, class Streamable>
  basic_string<charT>
    format(const locale& loc, const charT* fmt, const Streamable& s);

template<class charT, class traits, class Alloc, class Streamable>
  basic_string<charT, traits, Alloc>
    format(const basic_string<charT, traits, Alloc>& fmt, const Streamable& s);

template<class charT, class traits, class Alloc, class Streamable>
  basic_string<charT, traits, Alloc>
    format(const locale& loc, const basic_string<charT, traits, Alloc>& fmt,
           const Streamable& s);

// 25.12, parsing    // C++20
template<class charT, class traits, class Alloc, class Parsable>
unspecified
    parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp);

template<class charT, class traits, class Alloc, class Parsable>
unspecified
    parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
          basic_string<charT, traits, Alloc>& abbrev);

template<class charT, class traits, class Alloc, class Parsable>
unspecified
    parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
          minutes& offset);

template<class charT, class traits, class Alloc, class Parsable>
unspecified
    parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
          basic_string<charT, traits, Alloc>& abbrev, minutes& offset);

// calendrical constants
inline constexpr last_spec                              last{};       // C++20
inline constexpr chrono::weekday                        Sunday{0};    // C++20
inline constexpr chrono::weekday                        Monday{1};    // C++20
inline constexpr chrono::weekday                        Tuesday{2};   // C++20
inline constexpr chrono::weekday                        Wednesday{3}; // C++20
inline constexpr chrono::weekday                        Thursday{4};  // C++20
inline constexpr chrono::weekday                        Friday{5};    // C++20
inline constexpr chrono::weekday                        Saturday{6};  // C++20

inline constexpr chrono::month                          January{1};   // C++20
inline constexpr chrono::month                          February{2};  // C++20
inline constexpr chrono::month                          March{3};     // C++20
inline constexpr chrono::month                          April{4};     // C++20
inline constexpr chrono::month                          May{5};       // C++20
inline constexpr chrono::month                          June{6};      // C++20
inline constexpr chrono::month                          July{7};      // C++20
inline constexpr chrono::month                          August{8};    // C++20
inline constexpr chrono::month                          September{9}; // C++20
inline constexpr chrono::month                          October{10};  // C++20
inline constexpr chrono::month                          November{11}; // C++20
inline constexpr chrono::month                          December{12}; // C++20
}  // chrono

inline namespace literals {
  inline namespace chrono_literals {
constexpr chrono::hours                                 operator ""h(unsigned long long); // C++14
constexpr chrono::duration<unspecified , ratio<3600,1>> operator ""h(long double); // C++14
constexpr chrono::minutes                               operator ""min(unsigned long long); // C++14
constexpr chrono::duration<unspecified , ratio<60,1>>   operator ""min(long double); // C++14
constexpr chrono::seconds                               operator ""s(unsigned long long); // C++14
constexpr chrono::duration<unspecified >                operator ""s(long double); // C++14
constexpr chrono::milliseconds                          operator ""ms(unsigned long long); // C++14
constexpr chrono::duration<unspecified , milli>         operator ""ms(long double); // C++14
constexpr chrono::microseconds                          operator ""us(unsigned long long); // C++14
constexpr chrono::duration<unspecified , micro>         operator ""us(long double); // C++14
constexpr chrono::nanoseconds                           operator ""ns(unsigned long long); // C++14
constexpr chrono::duration<unspecified , nano>          operator ""ns(long double); // C++14
constexpr chrono::day                                   operator ""d(unsigned long long d) noexcept; // C++20
constexpr chrono::year                                  operator ""y(unsigned long long y) noexcept; // C++20
}  // chrono_literals
}  // literals

}  // std
*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 826 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 828 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 828 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 829 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#include <ctime>
#endif /* expanded by -frewrite-includes */
# 829 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 1 3
// -*- C++ -*-
//===---------------------------- ctime -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CTIME
#define _LIBCPP_CTIME

/*
    ctime synopsis

Macros:

    NULL
    CLOCKS_PER_SEC
    TIME_UTC // C++17

namespace std
{

Types:

    clock_t
    size_t
    time_t
    tm
    timespec // C++17

clock_t clock();
double difftime(time_t time1, time_t time0);
time_t mktime(tm* timeptr);
time_t time(time_t* timer);
char* asctime(const tm* timeptr);
char* ctime(const time_t* timer);
tm*    gmtime(const time_t* timer);
tm* localtime(const time_t* timer);
size_t strftime(char* restrict s, size_t maxsize, const char* restrict format,
                const tm* restrict timeptr);
int timespec_get( struct timespec *ts, int base); // C++17
}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#if 0 /* expanded by -frewrite-includes */
#include <time.h>
#endif /* expanded by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)time.h	8.3 (Berkeley) 1/21/94
 */

/*
 * $FreeBSD$
 */

#ifndef _TIME_H_
#define	_TIME_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_clock_id.h>
#endif /* expanded by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)time.h	8.3 (Berkeley) 1/21/94
 */

#ifndef _SYS_SYS__CLOCK_ID_H
#define	_SYS_SYS__CLOCK_ID_H

/*
 * These macros are shared between time.h and sys/time.h.
 */

/*
 * Note: The values shown below as a comment for the __POSIX_VISIBLE values are
 * the ones FreeBSD traditionally used based on our reading of the POSIX
 * standards. However, glibc uses 199309 for all of them, even those many were
 * not defined there. To remain bug compatible with glibc means more software
 * that relied on the glibc behavior will compile easily on FreeBSD.
 *
 * Also, CLOCK_UPTIME_FAST is improperly visible temporarily for the lang/pocl
 * port until it can be updated properly. It incorrectly assumes that this was a
 * standard value. It will be moved back to the __BSD_VISIBLE section once the
 * issue is corrected.
 */

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309		/* 199506 */
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define CLOCK_REALTIME		0
#endif /* __POSIX_VISIBLE >= 199309 */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#ifdef __BSD_VISIBLE
#define CLOCK_VIRTUAL		1
#define CLOCK_PROF		2
#endif /* __BSD_VISIBLE */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309		/* 200112 */
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define CLOCK_MONOTONIC		4
#define CLOCK_UPTIME_FAST	8
#endif /* __POSIX_VISIBLE >= 199309 */
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#ifdef __BSD_VISIBLE
/*
 * FreeBSD-specific clocks.
 */
#define CLOCK_UPTIME		5
#define CLOCK_UPTIME_PRECISE	7
#define CLOCK_REALTIME_PRECISE	9
#define CLOCK_REALTIME_FAST	10
#define CLOCK_MONOTONIC_PRECISE	11
#define CLOCK_MONOTONIC_FAST	12
#define CLOCK_SECOND		13
#endif /* __BSD_VISIBLE */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309		/* 200112 */
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define CLOCK_THREAD_CPUTIME_ID	14
#define	CLOCK_PROCESS_CPUTIME_ID 15
#endif /* __POSIX_VISIBLE >= 199309 */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4

/*
 * Linux compatible names.
 */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define	CLOCK_BOOTTIME		CLOCK_UPTIME
#define	CLOCK_REALTIME_COARSE	CLOCK_REALTIME_FAST
#define	CLOCK_MONOTONIC_COARSE	CLOCK_MONOTONIC_FAST
#endif
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define TIMER_RELTIME	0x0	/* relative timer */
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
#define TIMER_ABSTIME	0x1	/* absolute timer */
#endif /* __POSIX_VISIBLE >= 199309 */
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4

#endif /* _SYS_SYS__CLOCK_ID_H */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_clock_id.h" 3 4
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 2 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
/*
 * Frequency of the clock ticks reported by times().  Deprecated - use
 * sysconf(_SC_CLK_TCK) instead.  (Removed in 1003.1-2001.)
 */
#define	CLK_TCK		128
#endif
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

/* Frequency of the clock ticks reported by clock().  */
#define	CLOCKS_PER_SEC	128

#ifndef _CLOCK_T_DECLARED
typedef	__clock_t	clock_t;
#define	_CLOCK_T_DECLARED
#endif
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#ifndef _TIME_T_DECLARED
typedef	__time_t	time_t;
#define	_TIME_T_DECLARED
#endif
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
/*
 * New in POSIX 1003.1b-1993.
 */
#ifndef _CLOCKID_T_DECLARED
typedef	__clockid_t	clockid_t;
#define	_CLOCKID_T_DECLARED
#endif
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#ifndef _TIMER_T_DECLARED
typedef	__timer_t	timer_t;
#define	_TIMER_T_DECLARED
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/timespec.h>
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)time.h	8.5 (Berkeley) 5/4/95
 * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
 *	$FreeBSD$
 */

#ifndef _SYS_TIMESPEC_H_
#define _SYS_TIMESPEC_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timespec.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)time.h	8.5 (Berkeley) 5/4/95
 * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
 *	$FreeBSD$
 */

#ifndef _SYS__TIMESPEC_H_
#define	_SYS__TIMESPEC_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timespec.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timespec.h" 3 4

#ifndef _TIME_T_DECLARED
typedef	__time_t	time_t;
#define	_TIME_T_DECLARED
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timespec.h" 3 4

struct timespec {
	time_t	tv_sec;		/* seconds */
	long	tv_nsec;	/* and nanoseconds */
};

#endif /* !_SYS__TIMESPEC_H_ */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timespec.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 2 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4
#define	TIMEVAL_TO_TIMESPEC(tv, ts)					\
	do {								\
		(ts)->tv_sec = (tv)->tv_sec;				\
		(ts)->tv_nsec = (tv)->tv_usec * 1000;			\
	} while (0)
#define	TIMESPEC_TO_TIMEVAL(tv, ts)					\
	do {								\
		(tv)->tv_sec = (ts)->tv_sec;				\
		(tv)->tv_usec = (ts)->tv_nsec / 1000;			\
	} while (0)

#endif /* __BSD_VISIBLE */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4

/*
 * Structure defined by POSIX.1b to be like a itimerval, but with
 * timespecs. Used in the timer_*() system calls.
 */
struct itimerspec {
	struct timespec  it_interval;
	struct timespec  it_value;
};

#endif /* _SYS_TIMESPEC_H_ */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/timespec.h" 3 4
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 2 3 4
#endif /* __POSIX_VISIBLE >= 199309 */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#ifndef _PID_T_DECLARED
typedef	__pid_t		pid_t;
#define	_PID_T_DECLARED
#endif
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#endif
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

struct tm {
	int	tm_sec;		/* seconds after the minute [0-60] */
	int	tm_min;		/* minutes after the hour [0-59] */
	int	tm_hour;	/* hours since midnight [0-23] */
	int	tm_mday;	/* day of the month [1-31] */
	int	tm_mon;		/* months since January [0-11] */
	int	tm_year;	/* years since 1900 */
	int	tm_wday;	/* days since Sunday [0-6] */
	int	tm_yday;	/* days since January 1 [0-365] */
	int	tm_isdst;	/* Daylight Savings Time flag */
	long	tm_gmtoff;	/* offset from UTC in seconds */
	char	*tm_zone;	/* timezone abbreviation */
};

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
extern char *tzname[];
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

__BEGIN_DECLS
char *asctime(const struct tm *);
clock_t clock(void);
char *ctime(const time_t *);
#ifndef _STANDALONE
double difftime(time_t, time_t);
#endif
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
/* XXX missing: getdate() */
struct tm *gmtime(const time_t *);
struct tm *localtime(const time_t *);
time_t mktime(struct tm *);
size_t strftime(char * __restrict, size_t, const char * __restrict,
    const struct tm * __restrict);
time_t time(time_t *);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
struct sigevent;
int timer_create(clockid_t, struct sigevent *__restrict, timer_t *__restrict);
int timer_delete(timer_t);
int timer_gettime(timer_t, struct itimerspec *);
int timer_getoverrun(timer_t);
int timer_settime(timer_t, int, const struct itimerspec *__restrict,
	struct itimerspec *__restrict);
#endif
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
void tzset(void);
#endif
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
int clock_getres(clockid_t, struct timespec *);
int clock_gettime(clockid_t, struct timespec *);
int clock_settime(clockid_t, const struct timespec *);
int nanosleep(const struct timespec *, struct timespec *);
#endif /* __POSIX_VISIBLE >= 199309 */
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
int clock_getcpuclockid(pid_t, clockid_t *);
int clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *);
#endif
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
char *asctime_r(const struct tm *, char *);
char *ctime_r(const time_t *, char *);
struct tm *gmtime_r(const time_t *, struct tm *);
struct tm *localtime_r(const time_t *, struct tm *);
#endif
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 166 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
char *strptime(const char * __restrict, const char * __restrict,
    struct tm * __restrict);
#endif
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
char *timezone(int, int);	/* XXX XSI conflict */
void tzsetwall(void);
time_t timelocal(struct tm * const);
time_t timegm(struct tm * const);
int timer_oshandle_np(timer_t timerid);
time_t time2posix(time_t t);
time_t posix2time(time_t t);
#endif /* __BSD_VISIBLE */
# 179 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_time.h>
#endif /* expanded by -frewrite-includes */
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4

/*
 * This file is included from both locale.h and xlocale.h.  We need to expose
 * the declarations unconditionally if we are included from xlocale.h, but only
 * if we are in POSIX2008 mode if included from locale.h.
 */
#ifndef _XLOCALE_LOCALE1_H
#define _XLOCALE_LOCALE1_H

size_t	 strftime_l(char * __restrict, size_t, const char * __restrict,
	    const struct tm * __restrict, locale_t) __strftimelike(3, 0);

#endif /* _XLOCALE_LOCALE1_H */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4

#ifdef _XLOCALE_H_
#ifndef _XLOCALE_LOCALE2_H
#define _XLOCALE_LOCALE2_H

char	*strptime_l(const char * __restrict, const char * __restrict,
           struct tm * __restrict, locale_t);

#endif /* _XLOCALE_LOCALE2_H */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4
#endif /* _XLOCALE_H_ */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 2 3 4
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__BSD_VISIBLE) || __ISO_C_VISIBLE >= 2011 || \
    (defined(__cplusplus) && __cplusplus >= 201703)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
/* ISO/IEC 9899:201x 7.27.2.5 The timespec_get function */
#define TIME_UTC	1	/* time elapsed since epoch */
int timespec_get(struct timespec *ts, int base);
#endif
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4

__END_DECLS

#endif /* !_TIME_H_ */
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/time.h" 3 4
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3

// FIXME:
// Apple SDKs don't define ::timespec_get unconditionally in C++ mode. This
// should be fixed in future SDKs, but for the time being we need to avoid
// trying to use that declaration when the SDK doesn't provide it. Note that
// we're detecting this here instead of in <__config> because we can't include
// system headers from <__config>, since it leads to circular module dependencies.
// This is also meant to be a very temporary workaround until the SDKs are fixed.
#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) && !__has_attribute(using_if_exists)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#if 0 /* expanded by -frewrite-includes */
#   include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#if 0 /* disabled by -frewrite-includes */
#   if defined(_LIBCPP_HAS_TIMESPEC_GET) && (__DARWIN_C_LEVEL < __DARWIN_C_FULL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#       define _LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED
#   endif
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::clock_t _LIBCPP_USING_IF_EXISTS;
using ::size_t _LIBCPP_USING_IF_EXISTS;
using ::time_t _LIBCPP_USING_IF_EXISTS;
using ::tm _LIBCPP_USING_IF_EXISTS;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
using ::timespec _LIBCPP_USING_IF_EXISTS;
#endif
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
using ::clock _LIBCPP_USING_IF_EXISTS;
using ::difftime _LIBCPP_USING_IF_EXISTS;
using ::mktime _LIBCPP_USING_IF_EXISTS;
using ::time _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
using ::asctime _LIBCPP_USING_IF_EXISTS;
using ::ctime _LIBCPP_USING_IF_EXISTS;
using ::gmtime _LIBCPP_USING_IF_EXISTS;
using ::localtime _LIBCPP_USING_IF_EXISTS;
#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
using ::strftime _LIBCPP_USING_IF_EXISTS;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET) && !defined(_LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
using ::timespec_get _LIBCPP_USING_IF_EXISTS;
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CTIME
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctime" 3
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 831 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#include <ratio>
#endif /* expanded by -frewrite-includes */
# 831 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 1 3
// -*- C++ -*-
//===---------------------------- ratio -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_RATIO
#define _LIBCPP_RATIO

/*
    ratio synopsis

namespace std
{

template <intmax_t N, intmax_t D = 1>
class ratio
{
public:
    static constexpr intmax_t num;
    static constexpr intmax_t den;
    typedef ratio<num, den> type;
};

// ratio arithmetic
template <class R1, class R2> using ratio_add = ...;
template <class R1, class R2> using ratio_subtract = ...;
template <class R1, class R2> using ratio_multiply = ...;
template <class R1, class R2> using ratio_divide = ...;

// ratio comparison
template <class R1, class R2> struct ratio_equal;
template <class R1, class R2> struct ratio_not_equal;
template <class R1, class R2> struct ratio_less;
template <class R1, class R2> struct ratio_less_equal;
template <class R1, class R2> struct ratio_greater;
template <class R1, class R2> struct ratio_greater_equal;

// convenience SI typedefs
typedef ratio<1, 1000000000000000000000000> yocto;  // not supported
typedef ratio<1,    1000000000000000000000> zepto;  // not supported
typedef ratio<1,       1000000000000000000> atto;
typedef ratio<1,          1000000000000000> femto;
typedef ratio<1,             1000000000000> pico;
typedef ratio<1,                1000000000> nano;
typedef ratio<1,                   1000000> micro;
typedef ratio<1,                      1000> milli;
typedef ratio<1,                       100> centi;
typedef ratio<1,                        10> deci;
typedef ratio<                       10, 1> deca;
typedef ratio<                      100, 1> hecto;
typedef ratio<                     1000, 1> kilo;
typedef ratio<                  1000000, 1> mega;
typedef ratio<               1000000000, 1> giga;
typedef ratio<            1000000000000, 1> tera;
typedef ratio<         1000000000000000, 1> peta;
typedef ratio<      1000000000000000000, 1> exa;
typedef ratio<   1000000000000000000000, 1> zetta;  // not supported
typedef ratio<1000000000000000000000000, 1> yotta;  // not supported

  // 20.11.5, ratio comparison
  template <class R1, class R2> inline constexpr bool ratio_equal_v
    = ratio_equal<R1, R2>::value;                                       // C++17
  template <class R1, class R2> inline constexpr bool ratio_not_equal_v
    = ratio_not_equal<R1, R2>::value;                                   // C++17
  template <class R1, class R2> inline constexpr bool ratio_less_v
    = ratio_less<R1, R2>::value;                                        // C++17
  template <class R1, class R2> inline constexpr bool ratio_less_equal_v
    = ratio_less_equal<R1, R2>::value;                                  // C++17
  template <class R1, class R2> inline constexpr bool ratio_greater_v
    = ratio_greater<R1, R2>::value;                                     // C++17
  template <class R1, class R2> inline constexpr bool ratio_greater_equal_v
    = ratio_greater_equal<R1, R2>::value;                               // C++17
}
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
#if 0 /* expanded by -frewrite-includes */
#include <climits>
#endif /* expanded by -frewrite-includes */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 1 3
// -*- C++ -*-
//===--------------------------- climits ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CLIMITS
#define _LIBCPP_CLIMITS

/*
    climits synopsis

Macros:

    CHAR_BIT
    SCHAR_MIN
    SCHAR_MAX
    UCHAR_MAX
    CHAR_MIN
    CHAR_MAX
    MB_LEN_MAX
    SHRT_MIN
    SHRT_MAX
    USHRT_MAX
    INT_MIN
    INT_MAX
    UINT_MAX
    LONG_MIN
    LONG_MAX
    ULONG_MAX
    LLONG_MIN   // C99
    LLONG_MAX   // C99
    ULLONG_MAX  // C99

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 1 3
// -*- C++ -*-
//===--------------------------- limits.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_LIMITS_H
#define _LIBCPP_LIMITS_H

/*
    limits.h synopsis

Macros:

    CHAR_BIT
    SCHAR_MIN
    SCHAR_MAX
    UCHAR_MAX
    CHAR_MIN
    CHAR_MAX
    MB_LEN_MAX
    SHRT_MIN
    SHRT_MAX
    USHRT_MAX
    INT_MIN
    INT_MAX
    UINT_MAX
    LONG_MIN
    LONG_MAX
    ULONG_MAX
    LLONG_MIN   // C99
    LLONG_MAX   // C99
    ULLONG_MAX  // C99

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3

#ifndef __GNUC__
#if 0 /* expanded by -frewrite-includes */
#include_next <limits.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
#else
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
// GCC header limits.h recursively includes itself through another header called
// syslimits.h for some reason. This setup breaks down if we directly
// #include_next GCC's limits.h (reasons not entirely clear to me). Therefore,
// we manually re-create the necessary include sequence below:

// Get the system limits.h defines (force recurse into the next level)
#define _GCC_LIMITS_H_
#define _GCC_NEXT_LIMITS_H
#if 0 /* expanded by -frewrite-includes */
#include_next <limits.h>
#endif /* expanded by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1988, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)limits.h	8.2 (Berkeley) 1/4/94
 * $FreeBSD$
 */

#ifndef _LIMITS_H_
#define	_LIMITS_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_ARG_MAX		4096
#define	_POSIX_LINK_MAX		8
#define	_POSIX_MAX_CANON	255
#define	_POSIX_MAX_INPUT	255
#define	_POSIX_NAME_MAX		14
#define	_POSIX_PIPE_BUF		512
#define	_POSIX_SSIZE_MAX	32767
#define	_POSIX_STREAM_MAX	8

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_CHILD_MAX	25
#define	_POSIX_NGROUPS_MAX	8
#define	_POSIX_OPEN_MAX		20
#define	_POSIX_PATH_MAX		256
#define	_POSIX_TZNAME_MAX	6
#else
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_CHILD_MAX	6
#define	_POSIX_NGROUPS_MAX	0
#define	_POSIX_OPEN_MAX		16
#define	_POSIX_PATH_MAX		255
#define	_POSIX_TZNAME_MAX	3
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	BC_BASE_MAX		   99	/* max ibase/obase values in bc(1) */
#define	BC_DIM_MAX		 2048	/* max array elements in bc(1) */
#define	BC_SCALE_MAX		   99	/* max scale value in bc(1) */
#define	BC_STRING_MAX		 1000	/* max const string length in bc(1) */
#define	CHARCLASS_NAME_MAX	   14	/* max character class name size */
#define	COLL_WEIGHTS_MAX	   10	/* max weights for order keyword */
#define	EXPR_NEST_MAX		   32	/* max expressions nested in expr(1) */
#define	LINE_MAX		 2048	/* max bytes in an input line */
#define	RE_DUP_MAX		  255	/* max RE's in interval notation */

#define	_POSIX2_BC_BASE_MAX	99
#define	_POSIX2_BC_DIM_MAX	2048
#define	_POSIX2_BC_SCALE_MAX	99
#define	_POSIX2_BC_STRING_MAX	1000
#define	_POSIX2_CHARCLASS_NAME_MAX 14
#define	_POSIX2_COLL_WEIGHTS_MAX 2
#define	_POSIX2_EQUIV_CLASS_MAX	2
#define	_POSIX2_EXPR_NEST_MAX	32
#define	_POSIX2_LINE_MAX	2048
#define	_POSIX2_RE_DUP_MAX	255
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#endif
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_AIO_LISTIO_MAX	2
#define	_POSIX_AIO_MAX		1
#define	_POSIX_DELAYTIMER_MAX	32
#define	_POSIX_MQ_OPEN_MAX	8
#define	_POSIX_MQ_PRIO_MAX	32
#define	_POSIX_RTSIG_MAX	8
#define	_POSIX_SEM_NSEMS_MAX	256
#define	_POSIX_SEM_VALUE_MAX	32767
#define	_POSIX_SIGQUEUE_MAX	32
#define	_POSIX_TIMER_MAX	32

#define	_POSIX_CLOCKRES_MIN	20000000
#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
#define	_POSIX_THREAD_KEYS_MAX	128
#define	_POSIX_THREAD_THREADS_MAX 64
#endif
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_POSIX_HOST_NAME_MAX	255
#define	_POSIX_LOGIN_NAME_MAX	9
#define	_POSIX_SS_REPL_MAX	4
#define	_POSIX_SYMLINK_MAX	255
#define	_POSIX_SYMLOOP_MAX	8
#define	_POSIX_TRACE_EVENT_NAME_MAX 30
#define	_POSIX_TRACE_NAME_MAX	8
#define	_POSIX_TRACE_SYS_MAX	8
#define	_POSIX_TRACE_USER_EVENT_MAX 32
#define	_POSIX_TTY_NAME_MAX	9

#define	_POSIX_RE_DUP_MAX	_POSIX2_RE_DUP_MAX
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	NL_ARGMAX		4096	/* max # of position args for printf */
#define	NL_MSGMAX		32767
#define	NL_SETMAX		255
#define	NL_TEXTMAX		2048
#endif
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#define	_XOPEN_IOV_MAX		16
#define	_XOPEN_NAME_MAX		255
#define	_XOPEN_PATH_MAX		1024
#define	PASS_MAX		128	/* _PASSWORD_LEN from <pwd.h> */

#define	NL_LANGMAX		31	/* max LANG name length */
#define	NL_NMAX			1
#endif
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#define	MB_LEN_MAX		6	/* 31-bit UTF-8 */

#if 0 /* expanded by -frewrite-includes */
#include <sys/limits.h>
#endif /* expanded by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1988, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_LIMITS_H_
#define	_SYS_LIMITS_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#define	CHAR_BIT	__CHAR_BIT	/* number of bits in a char */

#define	SCHAR_MAX	__SCHAR_MAX	/* max value for a signed char */
#define	SCHAR_MIN	__SCHAR_MIN	/* min value for a signed char */

#define	UCHAR_MAX	__UCHAR_MAX	/* max value for an unsigned char */

#ifdef __CHAR_UNSIGNED__
#define	CHAR_MAX	UCHAR_MAX	/* max value for a char */
#define	CHAR_MIN	0		/* min value for a char */
#else
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	CHAR_MAX	SCHAR_MAX
#define	CHAR_MIN	SCHAR_MIN
#endif
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#define	USHRT_MAX	__USHRT_MAX	/* max value for an unsigned short */
#define	SHRT_MAX	__SHRT_MAX	/* max value for a short */
#define	SHRT_MIN	__SHRT_MIN	/* min value for a short */

#define	UINT_MAX	__UINT_MAX	/* max value for an unsigned int */
#define	INT_MAX		__INT_MAX	/* max value for an int */
#define	INT_MIN		__INT_MIN	/* min value for an int */

#define	ULONG_MAX	__ULONG_MAX	/* max for an unsigned long */
#define	LONG_MAX	__LONG_MAX	/* max for a long */
#define	LONG_MIN	__LONG_MIN	/* min for a long */

#ifdef __LONG_LONG_SUPPORTED
#define	ULLONG_MAX	__ULLONG_MAX	/* max for an unsigned long long */
#define	LLONG_MAX	__LLONG_MAX	/* max for a long long */
#define	LLONG_MIN	__LLONG_MIN	/* min for a long long */
#endif
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	SSIZE_MAX	__SSIZE_MAX	/* max value for an ssize_t */
#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	SIZE_T_MAX	__SIZE_T_MAX	/* max value for a size_t */

#define	OFF_MAX		__OFF_MAX	/* max value for an off_t */
#define	OFF_MIN		__OFF_MIN	/* min value for an off_t */
#endif
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	GID_MAX		UINT_MAX	/* max value for a gid_t */
#define	UID_MAX		UINT_MAX	/* max value for a uid_t */

#define	UQUAD_MAX	(__UQUAD_MAX)	/* max value for a uquad_t */
#define	QUAD_MAX	(__QUAD_MAX)	/* max value for a quad_t */
#define	QUAD_MIN	(__QUAD_MIN)	/* min value for a quad_t */
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	LONG_BIT	__LONG_BIT
#define	WORD_BIT	__WORD_BIT
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
#define	MQ_PRIO_MAX	64
#endif
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4

#endif /* !_SYS_LIMITS_H_ */
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/limits.h" 3 4
# 144 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 2 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/syslimits.h>
#endif /* expanded by -frewrite-includes */
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1988, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)syslimits.h	8.1 (Berkeley) 6/2/93
 * $FreeBSD$
 */

#ifndef _SYS_SYSLIMITS_H_
#define _SYS_SYSLIMITS_H_

#if 0 /* disabled by -frewrite-includes */
#if !defined(_STANDALONE) && !defined(_KERNEL) && !defined(_LIMITS_H_) && !defined(_SYS_PARAM_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#ifndef _SYS_CDEFS_H_
#error this file needs sys/cdefs.h as a prerequisite
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#ifdef __CC_SUPPORTS_WARNING
#warning "No user-serviceable parts inside."
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4

/*
 * Do not add any new variables here.  (See the comment at the end of
 * the file for why.)
 */
#ifndef __ILP32__
#define	ARG_MAX	      (2 * 256 * 1024)	/* max bytes for an exec function */
#else
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#define	ARG_MAX		  (256 * 1024)	/* max bytes for KVA-starved archs */
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#ifndef CHILD_MAX
#define	CHILD_MAX		   40	/* max simultaneous processes */
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#define	MAX_CANON		  255	/* max bytes in term canon input line */
#define	MAX_INPUT		  255	/* max bytes in terminal input */
#define	NAME_MAX		  255	/* max bytes in a file name */
#ifndef NGROUPS_MAX
#define	NGROUPS_MAX	 	 1023	/* max supplemental group id's */
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#ifndef OPEN_MAX
#define	OPEN_MAX		   64	/* max open files per process */
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
#define	PATH_MAX		 1024	/* max bytes in pathname */
#define	PIPE_BUF		  512	/* max bytes for atomic pipe writes */
#define	IOV_MAX			 1024	/* max elements in i/o vector */

/*
 * We leave the following values undefined to force applications to either
 * assume conservative values or call sysconf() to get the current value.
 *
 * HOST_NAME_MAX
 *
 * (We should do this for most of the values currently defined here,
 * but many programs are not prepared to deal with this yet.)
 */
#endif
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/syslimits.h" 3 4
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 2 3 4
#endif
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4

#endif /* !_LIMITS_H_ */
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/limits.h" 3 4
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 2 3

// Get the ISO C defines
#undef _GCC_LIMITS_H_
#if 0 /* expanded by -frewrite-includes */
#include_next <limits.h>
#endif /* expanded by -frewrite-includes */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
#endif // __GNUC__
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3

#endif // _LIBCPP_LIMITS_H
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/limits.h" 3
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
#endif
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3

#endif // _LIBCPP_CLIMITS
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/climits" 3
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

// __static_gcd

template <intmax_t _Xp, intmax_t _Yp>
struct __static_gcd
{
    static const intmax_t value = __static_gcd<_Yp, _Xp % _Yp>::value;
};

template <intmax_t _Xp>
struct __static_gcd<_Xp, 0>
{
    static const intmax_t value = _Xp;
};

template <>
struct __static_gcd<0, 0>
{
    static const intmax_t value = 1;
};

// __static_lcm

template <intmax_t _Xp, intmax_t _Yp>
struct __static_lcm
{
    static const intmax_t value = _Xp / __static_gcd<_Xp, _Yp>::value * _Yp;
};

template <intmax_t _Xp>
struct __static_abs
{
    static const intmax_t value = _Xp < 0 ? -_Xp : _Xp;
};

template <intmax_t _Xp>
struct __static_sign
{
    static const intmax_t value = _Xp == 0 ? 0 : (_Xp < 0 ? -1 : 1);
};

template <intmax_t _Xp, intmax_t _Yp, intmax_t = __static_sign<_Yp>::value>
class __ll_add;

template <intmax_t _Xp, intmax_t _Yp>
class __ll_add<_Xp, _Yp, 1>
{
    static const intmax_t min = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1;
    static const intmax_t max = -min;

    static_assert(_Xp <= max - _Yp, "overflow in __ll_add");
public:
    static const intmax_t value = _Xp + _Yp;
};

template <intmax_t _Xp, intmax_t _Yp>
class __ll_add<_Xp, _Yp, 0>
{
public:
    static const intmax_t value = _Xp;
};

template <intmax_t _Xp, intmax_t _Yp>
class __ll_add<_Xp, _Yp, -1>
{
    static const intmax_t min = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1;
    static const intmax_t max = -min;

    static_assert(min - _Yp <= _Xp, "overflow in __ll_add");
public:
    static const intmax_t value = _Xp + _Yp;
};

template <intmax_t _Xp, intmax_t _Yp, intmax_t = __static_sign<_Yp>::value>
class __ll_sub;

template <intmax_t _Xp, intmax_t _Yp>
class __ll_sub<_Xp, _Yp, 1>
{
    static const intmax_t min = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1;
    static const intmax_t max = -min;

    static_assert(min + _Yp <= _Xp, "overflow in __ll_sub");
public:
    static const intmax_t value = _Xp - _Yp;
};

template <intmax_t _Xp, intmax_t _Yp>
class __ll_sub<_Xp, _Yp, 0>
{
public:
    static const intmax_t value = _Xp;
};

template <intmax_t _Xp, intmax_t _Yp>
class __ll_sub<_Xp, _Yp, -1>
{
    static const intmax_t min = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1;
    static const intmax_t max = -min;

    static_assert(_Xp <= max + _Yp, "overflow in __ll_sub");
public:
    static const intmax_t value = _Xp - _Yp;
};

template <intmax_t _Xp, intmax_t _Yp>
class __ll_mul
{
    static const intmax_t nan = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1));
    static const intmax_t min = nan + 1;
    static const intmax_t max = -min;
    static const intmax_t __a_x = __static_abs<_Xp>::value;
    static const intmax_t __a_y = __static_abs<_Yp>::value;

    static_assert(_Xp != nan && _Yp != nan && __a_x <= max / __a_y, "overflow in __ll_mul");
public:
    static const intmax_t value = _Xp * _Yp;
};

template <intmax_t _Yp>
class __ll_mul<0, _Yp>
{
public:
    static const intmax_t value = 0;
};

template <intmax_t _Xp>
class __ll_mul<_Xp, 0>
{
public:
    static const intmax_t value = 0;
};

template <>
class __ll_mul<0, 0>
{
public:
    static const intmax_t value = 0;
};

// Not actually used but left here in case needed in future maintenance
template <intmax_t _Xp, intmax_t _Yp>
class __ll_div
{
    static const intmax_t nan = (1LL << (sizeof(intmax_t) * CHAR_BIT - 1));
    static const intmax_t min = nan + 1;
    static const intmax_t max = -min;

    static_assert(_Xp != nan && _Yp != nan && _Yp != 0, "overflow in __ll_div");
public:
    static const intmax_t value = _Xp / _Yp;
};

template <intmax_t _Num, intmax_t _Den = 1>
class _LIBCPP_TEMPLATE_VIS ratio
{
    static_assert(__static_abs<_Num>::value >= 0, "ratio numerator is out of range");
    static_assert(_Den != 0, "ratio divide by 0");
    static_assert(__static_abs<_Den>::value >  0, "ratio denominator is out of range");
    static _LIBCPP_CONSTEXPR const intmax_t __na = __static_abs<_Num>::value;
    static _LIBCPP_CONSTEXPR const intmax_t __da = __static_abs<_Den>::value;
    static _LIBCPP_CONSTEXPR const intmax_t __s = __static_sign<_Num>::value * __static_sign<_Den>::value;
    static _LIBCPP_CONSTEXPR const intmax_t __gcd = __static_gcd<__na, __da>::value;
public:
    static _LIBCPP_CONSTEXPR const intmax_t num = __s * __na / __gcd;
    static _LIBCPP_CONSTEXPR const intmax_t den = __da / __gcd;

    typedef ratio<num, den> type;
};

template <intmax_t _Num, intmax_t _Den>
_LIBCPP_CONSTEXPR const intmax_t ratio<_Num, _Den>::num;

template <intmax_t _Num, intmax_t _Den>
_LIBCPP_CONSTEXPR const intmax_t ratio<_Num, _Den>::den;

template <class _Tp>                    struct __is_ratio                     : false_type {};
template <intmax_t _Num, intmax_t _Den> struct __is_ratio<ratio<_Num, _Den> > : true_type  {};

typedef ratio<1LL, 1000000000000000000LL> atto;
typedef ratio<1LL,    1000000000000000LL> femto;
typedef ratio<1LL,       1000000000000LL> pico;
typedef ratio<1LL,          1000000000LL> nano;
typedef ratio<1LL,             1000000LL> micro;
typedef ratio<1LL,                1000LL> milli;
typedef ratio<1LL,                 100LL> centi;
typedef ratio<1LL,                  10LL> deci;
typedef ratio<                 10LL, 1LL> deca;
typedef ratio<                100LL, 1LL> hecto;
typedef ratio<               1000LL, 1LL> kilo;
typedef ratio<            1000000LL, 1LL> mega;
typedef ratio<         1000000000LL, 1LL> giga;
typedef ratio<      1000000000000LL, 1LL> tera;
typedef ratio<   1000000000000000LL, 1LL> peta;
typedef ratio<1000000000000000000LL, 1LL> exa;

template <class _R1, class _R2>
struct __ratio_multiply
{
private:
    static const intmax_t __gcd_n1_d2 = __static_gcd<_R1::num, _R2::den>::value;
    static const intmax_t __gcd_d1_n2 = __static_gcd<_R1::den, _R2::num>::value;
public:
    typedef typename ratio
        <
            __ll_mul<_R1::num / __gcd_n1_d2, _R2::num / __gcd_d1_n2>::value,
            __ll_mul<_R2::den / __gcd_n1_d2, _R1::den / __gcd_d1_n2>::value
        >::type type;
};

#ifndef _LIBCPP_CXX03_LANG

template <class _R1, class _R2> using ratio_multiply
                                    = typename __ratio_multiply<_R1, _R2>::type;

#else  // _LIBCPP_CXX03_LANG
# 310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_multiply
    : public __ratio_multiply<_R1, _R2>::type {};

#endif // _LIBCPP_CXX03_LANG
# 316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct __ratio_divide
{
private:
    static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
    static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
public:
    typedef typename ratio
        <
            __ll_mul<_R1::num / __gcd_n1_n2, _R2::den / __gcd_d1_d2>::value,
            __ll_mul<_R2::num / __gcd_n1_n2, _R1::den / __gcd_d1_d2>::value
        >::type type;
};

#ifndef _LIBCPP_CXX03_LANG

template <class _R1, class _R2> using ratio_divide
                                      = typename __ratio_divide<_R1, _R2>::type;

#else  // _LIBCPP_CXX03_LANG
# 337 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_divide
    : public __ratio_divide<_R1, _R2>::type {};

#endif // _LIBCPP_CXX03_LANG
# 343 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct __ratio_add
{
private:
    static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
    static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
public:
    typedef typename ratio_multiply
        <
            ratio<__gcd_n1_n2, _R1::den / __gcd_d1_d2>,
            ratio
            <
                __ll_add
                <
                    __ll_mul<_R1::num / __gcd_n1_n2, _R2::den / __gcd_d1_d2>::value,
                    __ll_mul<_R2::num / __gcd_n1_n2, _R1::den / __gcd_d1_d2>::value
                >::value,
                _R2::den
            >
        >::type type;
};

#ifndef _LIBCPP_CXX03_LANG

template <class _R1, class _R2> using ratio_add
                                         = typename __ratio_add<_R1, _R2>::type;

#else  // _LIBCPP_CXX03_LANG
# 372 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_add
    : public __ratio_add<_R1, _R2>::type {};

#endif // _LIBCPP_CXX03_LANG
# 378 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct __ratio_subtract
{
private:
    static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
    static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
public:
    typedef typename ratio_multiply
        <
            ratio<__gcd_n1_n2, _R1::den / __gcd_d1_d2>,
            ratio
            <
                __ll_sub
                <
                    __ll_mul<_R1::num / __gcd_n1_n2, _R2::den / __gcd_d1_d2>::value,
                    __ll_mul<_R2::num / __gcd_n1_n2, _R1::den / __gcd_d1_d2>::value
                >::value,
                _R2::den
            >
        >::type type;
};

#ifndef _LIBCPP_CXX03_LANG

template <class _R1, class _R2> using ratio_subtract
                                    = typename __ratio_subtract<_R1, _R2>::type;

#else  // _LIBCPP_CXX03_LANG
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_subtract
    : public __ratio_subtract<_R1, _R2>::type {};

#endif // _LIBCPP_CXX03_LANG
# 413 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

// ratio_equal

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_equal
    : public _LIBCPP_BOOL_CONSTANT((_R1::num == _R2::num && _R1::den == _R2::den)) {};

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_not_equal
    : public _LIBCPP_BOOL_CONSTANT((!ratio_equal<_R1, _R2>::value)) {};

// ratio_less

template <class _R1, class _R2, bool _Odd = false,
          intmax_t _Q1 = _R1::num / _R1::den, intmax_t _M1 = _R1::num % _R1::den,
          intmax_t _Q2 = _R2::num / _R2::den, intmax_t _M2 = _R2::num % _R2::den>
struct __ratio_less1
{
    static const bool value = _Odd ? _Q2 < _Q1 : _Q1 < _Q2;
};

template <class _R1, class _R2, bool _Odd, intmax_t _Qp>
struct __ratio_less1<_R1, _R2, _Odd, _Qp, 0, _Qp, 0>
{
    static const bool value = false;
};

template <class _R1, class _R2, bool _Odd, intmax_t _Qp, intmax_t _M2>
struct __ratio_less1<_R1, _R2, _Odd, _Qp, 0, _Qp, _M2>
{
    static const bool value = !_Odd;
};

template <class _R1, class _R2, bool _Odd, intmax_t _Qp, intmax_t _M1>
struct __ratio_less1<_R1, _R2, _Odd, _Qp, _M1, _Qp, 0>
{
    static const bool value = _Odd;
};

template <class _R1, class _R2, bool _Odd, intmax_t _Qp, intmax_t _M1,
                                                        intmax_t _M2>
struct __ratio_less1<_R1, _R2, _Odd, _Qp, _M1, _Qp, _M2>
{
    static const bool value = __ratio_less1<ratio<_R1::den, _M1>,
                                            ratio<_R2::den, _M2>, !_Odd>::value;
};

template <class _R1, class _R2, intmax_t _S1 = __static_sign<_R1::num>::value,
                                intmax_t _S2 = __static_sign<_R2::num>::value>
struct __ratio_less
{
    static const bool value = _S1 < _S2;
};

template <class _R1, class _R2>
struct __ratio_less<_R1, _R2, 1LL, 1LL>
{
    static const bool value = __ratio_less1<_R1, _R2>::value;
};

template <class _R1, class _R2>
struct __ratio_less<_R1, _R2, -1LL, -1LL>
{
    static const bool value = __ratio_less1<ratio<-_R2::num, _R2::den>, ratio<-_R1::num, _R1::den> >::value;
};

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_less
    : public _LIBCPP_BOOL_CONSTANT((__ratio_less<_R1, _R2>::value)) {};

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_less_equal
    : public _LIBCPP_BOOL_CONSTANT((!ratio_less<_R2, _R1>::value)) {};

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_greater
    : public _LIBCPP_BOOL_CONSTANT((ratio_less<_R2, _R1>::value)) {};

template <class _R1, class _R2>
struct _LIBCPP_TEMPLATE_VIS ratio_greater_equal
    : public _LIBCPP_BOOL_CONSTANT((!ratio_less<_R1, _R2>::value)) {};

template <class _R1, class _R2>
struct __ratio_gcd
{
    typedef ratio<__static_gcd<_R1::num, _R2::num>::value,
                  __static_lcm<_R1::den, _R2::den>::value> type;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_equal_v
    = ratio_equal<_R1, _R2>::value;

template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_not_equal_v
    = ratio_not_equal<_R1, _R2>::value;

template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_less_v
    = ratio_less<_R1, _R2>::value;

template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_less_equal_v
    = ratio_less_equal<_R1, _R2>::value;

template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_greater_v
    = ratio_greater<_R1, _R2>::value;

template <class _R1, class _R2>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_greater_equal_v
    = ratio_greater_equal<_R1, _R2>::value;
#endif
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_RATIO
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ratio" 3
# 832 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 832 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 833 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 833 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 836 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 837 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
#endif
# 838 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 840 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 841 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 2 3

#ifndef _LIBCPP_CXX03_LANG
_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
struct _FilesystemClock;
_LIBCPP_END_NAMESPACE_FILESYSTEM
#endif // !_LIBCPP_CXX03_LANG
# 847 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

_LIBCPP_BEGIN_NAMESPACE_STD

namespace chrono
{

template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TEMPLATE_VIS duration;

template <class _Tp>
struct __is_duration : false_type {};

template <class _Rep, class _Period>
struct __is_duration<duration<_Rep, _Period> > : true_type  {};

template <class _Rep, class _Period>
struct __is_duration<const duration<_Rep, _Period> > : true_type  {};

template <class _Rep, class _Period>
struct __is_duration<volatile duration<_Rep, _Period> > : true_type  {};

template <class _Rep, class _Period>
struct __is_duration<const volatile duration<_Rep, _Period> > : true_type  {};

} // chrono

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
struct _LIBCPP_TEMPLATE_VIS common_type<chrono::duration<_Rep1, _Period1>,
                                         chrono::duration<_Rep2, _Period2> >
{
    typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type,
                             typename __ratio_gcd<_Period1, _Period2>::type> type;
};

namespace chrono {

// duration_cast

template <class _FromDuration, class _ToDuration,
          class _Period = typename ratio_divide<typename _FromDuration::period, typename _ToDuration::period>::type,
          bool = _Period::num == 1,
          bool = _Period::den == 1>
struct __duration_cast;

template <class _FromDuration, class _ToDuration, class _Period>
struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    _ToDuration operator()(const _FromDuration& __fd) const
    {
        return _ToDuration(static_cast<typename _ToDuration::rep>(__fd.count()));
    }
};

template <class _FromDuration, class _ToDuration, class _Period>
struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    _ToDuration operator()(const _FromDuration& __fd) const
    {
        typedef typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type _Ct;
        return _ToDuration(static_cast<typename _ToDuration::rep>(
                           static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den)));
    }
};

template <class _FromDuration, class _ToDuration, class _Period>
struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    _ToDuration operator()(const _FromDuration& __fd) const
    {
        typedef typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type _Ct;
        return _ToDuration(static_cast<typename _ToDuration::rep>(
                           static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num)));
    }
};

template <class _FromDuration, class _ToDuration, class _Period>
struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    _ToDuration operator()(const _FromDuration& __fd) const
    {
        typedef typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type _Ct;
        return _ToDuration(static_cast<typename _ToDuration::rep>(
                           static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num)
                                                          / static_cast<_Ct>(_Period::den)));
    }
};

template <class _ToDuration, class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    _ToDuration
>::type
duration_cast(const duration<_Rep, _Period>& __fd)
{
    return __duration_cast<duration<_Rep, _Period>, _ToDuration>()(__fd);
}

template <class _Rep>
struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 954 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
template <class _Rep>
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool treat_as_floating_point_v
    = treat_as_floating_point<_Rep>::value;
#endif
# 958 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

template <class _Rep>
struct _LIBCPP_TEMPLATE_VIS duration_values
{
public:
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT {return _Rep(0);}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max()  _NOEXCEPT {return numeric_limits<_Rep>::max();}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min()  _NOEXCEPT {return numeric_limits<_Rep>::lowest();}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 969 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
template <class _ToDuration, class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    _ToDuration
>::type
floor(const duration<_Rep, _Period>& __d)
{
    _ToDuration __t = duration_cast<_ToDuration>(__d);
    if (__t > __d)
        __t = __t - _ToDuration{1};
    return __t;
}

template <class _ToDuration, class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    _ToDuration
>::type
ceil(const duration<_Rep, _Period>& __d)
{
    _ToDuration __t = duration_cast<_ToDuration>(__d);
    if (__t < __d)
        __t = __t + _ToDuration{1};
    return __t;
}

template <class _ToDuration, class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    _ToDuration
>::type
round(const duration<_Rep, _Period>& __d)
{
    _ToDuration __lower = floor<_ToDuration>(__d);
    _ToDuration __upper = __lower + _ToDuration{1};
    auto __lowerDiff = __d - __lower;
    auto __upperDiff = __upper - __d;
    if (__lowerDiff < __upperDiff)
        return __lower;
    if (__lowerDiff > __upperDiff)
        return __upper;
    return __lower.count() & 1 ? __upper : __lower;
}
#endif
# 1019 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

// duration

template <class _Rep, class _Period>
class _LIBCPP_TEMPLATE_VIS duration
{
    static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration");
    static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio");
    static_assert(_Period::num > 0, "duration period must be positive");

    template <class _R1, class _R2>
    struct __no_overflow
    {
    private:
        static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
        static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
        static const intmax_t __n1 = _R1::num / __gcd_n1_n2;
        static const intmax_t __d1 = _R1::den / __gcd_d1_d2;
        static const intmax_t __n2 = _R2::num / __gcd_n1_n2;
        static const intmax_t __d2 = _R2::den / __gcd_d1_d2;
        static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1);

        template <intmax_t _Xp, intmax_t _Yp, bool __overflow>
        struct __mul    // __overflow == false
        {
            static const intmax_t value = _Xp * _Yp;
        };

        template <intmax_t _Xp, intmax_t _Yp>
        struct __mul<_Xp, _Yp, true>
        {
            static const intmax_t value = 1;
        };

    public:
        static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1);
        typedef ratio<__mul<__n1, __d2, !value>::value,
                      __mul<__n2, __d1, !value>::value> type;
    };

public:
    typedef _Rep rep;
    typedef typename _Period::type period;
private:
    rep __rep_;
public:

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
#ifndef _LIBCPP_CXX03_LANG
        duration() = default;
#else
# 1070 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
        duration() {}
#endif
# 1072 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

    template <class _Rep2>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
        explicit duration(const _Rep2& __r,
            typename enable_if
            <
               is_convertible<_Rep2, rep>::value &&
               (treat_as_floating_point<rep>::value ||
               !treat_as_floating_point<_Rep2>::value)
            >::type* = nullptr)
                : __rep_(__r) {}

    // conversions
    template <class _Rep2, class _Period2>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
        duration(const duration<_Rep2, _Period2>& __d,
            typename enable_if
            <
                __no_overflow<_Period2, period>::value && (
                treat_as_floating_point<rep>::value ||
                (__no_overflow<_Period2, period>::type::den == 1 &&
                 !treat_as_floating_point<_Rep2>::value))
            >::type* = nullptr)
                : __rep_(chrono::duration_cast<duration>(__d).count()) {}

    // observer

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR rep count() const {return __rep_;}

    // arithmetic

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type<duration>::type operator+() const {return typename common_type<duration>::type(*this);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type<duration>::type operator-() const {return typename common_type<duration>::type(-__rep_);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator++()      {++__rep_; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration  operator++(int)   {return duration(__rep_++);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator--()      {--__rep_; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration  operator--(int)   {return duration(__rep_--);}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator*=(const rep& rhs) {__rep_ *= rhs; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator/=(const rep& rhs) {__rep_ /= rhs; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator%=(const rep& rhs) {__rep_ %= rhs; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 duration& operator%=(const duration& rhs) {__rep_ %= rhs.count(); return *this;}

    // special values

    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() _NOEXCEPT {return duration(duration_values<rep>::zero());}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min()  _NOEXCEPT {return duration(duration_values<rep>::min());}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max()  _NOEXCEPT {return duration(duration_values<rep>::max());}
};

typedef duration<long long,         nano> nanoseconds;
typedef duration<long long,        micro> microseconds;
typedef duration<long long,        milli> milliseconds;
typedef duration<long long              > seconds;
typedef duration<     long, ratio<  60> > minutes;
typedef duration<     long, ratio<3600> > hours;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
typedef duration<     int, ratio_multiply<ratio<24>, hours::period>>         days;
typedef duration<     int, ratio_multiply<ratio<7>,   days::period>>         weeks;
typedef duration<     int, ratio_multiply<ratio<146097, 400>, days::period>> years;
typedef duration<     int, ratio_divide<years::period, ratio<12>>>           months;
#endif
# 1137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
// Duration ==

template <class _LhsDuration, class _RhsDuration>
struct __duration_eq
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const
        {
            typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct;
            return _Ct(__lhs).count() == _Ct(__rhs).count();
        }
};

template <class _LhsDuration>
struct __duration_eq<_LhsDuration, _LhsDuration>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const
        {return __lhs.count() == __rhs.count();}
};

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return __duration_eq<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >()(__lhs, __rhs);
}

// Duration !=

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return !(__lhs == __rhs);
}

// Duration <

template <class _LhsDuration, class _RhsDuration>
struct __duration_lt
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const
        {
            typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct;
            return _Ct(__lhs).count() < _Ct(__rhs).count();
        }
};

template <class _LhsDuration>
struct __duration_lt<_LhsDuration, _LhsDuration>
{
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const
        {return __lhs.count() < __rhs.count();}
};

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator< (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return __duration_lt<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >()(__lhs, __rhs);
}

// Duration >

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator> (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return __rhs < __lhs;
}

// Duration <=

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return !(__rhs < __lhs);
}

// Duration >=

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
bool
operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    return !(__lhs < __rhs);
}

// Duration +

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type
operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type _Cd;
    return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count());
}

// Duration -

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type
operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type _Cd;
    return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count());
}

// Duration *

template <class _Rep1, class _Period, class _Rep2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename enable_if
<
    is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
    duration<typename common_type<_Rep1, _Rep2>::type, _Period>
>::type
operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
{
    typedef typename common_type<_Rep1, _Rep2>::type _Cr;
    typedef duration<_Cr, _Period> _Cd;
    return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s));
}

template <class _Rep1, class _Period, class _Rep2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename enable_if
<
    is_convertible<_Rep1, typename common_type<_Rep1, _Rep2>::type>::value,
    duration<typename common_type<_Rep1, _Rep2>::type, _Period>
>::type
operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d)
{
    return __d * __s;
}

// Duration /

template <class _Rep1, class _Period, class _Rep2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename enable_if
<
    !__is_duration<_Rep2>::value &&
      is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
    duration<typename common_type<_Rep1, _Rep2>::type, _Period>
>::type
operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
{
    typedef typename common_type<_Rep1, _Rep2>::type _Cr;
    typedef duration<_Cr, _Period> _Cd;
    return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s));
}

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename common_type<_Rep1, _Rep2>::type
operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type _Ct;
    return _Ct(__lhs).count() / _Ct(__rhs).count();
}

// Duration %

template <class _Rep1, class _Period, class _Rep2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename enable_if
<
    !__is_duration<_Rep2>::value &&
      is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
    duration<typename common_type<_Rep1, _Rep2>::type, _Period>
>::type
operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
{
    typedef typename common_type<_Rep1, _Rep2>::type _Cr;
    typedef duration<_Cr, _Period> _Cd;
    return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s));
}

template <class _Rep1, class _Period1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type
operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef typename common_type<_Rep1, _Rep2>::type _Cr;
    typedef typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2> >::type _Cd;
    return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count()));
}

//////////////////////////////////////////////////////////
///////////////////// time_point /////////////////////////
//////////////////////////////////////////////////////////

template <class _Clock, class _Duration = typename _Clock::duration>
class _LIBCPP_TEMPLATE_VIS time_point
{
    static_assert(__is_duration<_Duration>::value,
                  "Second template parameter of time_point must be a std::chrono::duration");
public:
    typedef _Clock                    clock;
    typedef _Duration                 duration;
    typedef typename duration::rep    rep;
    typedef typename duration::period period;
private:
    duration __d_;

public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 time_point() : __d_(duration::zero()) {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 explicit time_point(const duration& __d) : __d_(__d) {}

    // conversions
    template <class _Duration2>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
    time_point(const time_point<clock, _Duration2>& t,
        typename enable_if
        <
            is_convertible<_Duration2, duration>::value
        >::type* = nullptr)
            : __d_(t.time_since_epoch()) {}

    // observer

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 duration time_since_epoch() const {return __d_;}

    // arithmetic

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 time_point& operator+=(const duration& __d) {__d_ += __d; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 time_point& operator-=(const duration& __d) {__d_ -= __d; return *this;}

    // special values

    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() _NOEXCEPT {return time_point(duration::min());}
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() _NOEXCEPT {return time_point(duration::max());}
};

} // chrono

template <class _Clock, class _Duration1, class _Duration2>
struct _LIBCPP_TEMPLATE_VIS common_type<chrono::time_point<_Clock, _Duration1>,
                                         chrono::time_point<_Clock, _Duration2> >
{
    typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type;
};

namespace chrono {

template <class _ToDuration, class _Clock, class _Duration>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
time_point<_Clock, _ToDuration>
time_point_cast(const time_point<_Clock, _Duration>& __t)
{
    return time_point<_Clock, _ToDuration>(chrono::duration_cast<_ToDuration>(__t.time_since_epoch()));
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
template <class _ToDuration, class _Clock, class _Duration>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    time_point<_Clock, _ToDuration>
>::type
floor(const time_point<_Clock, _Duration>& __t)
{
    return time_point<_Clock, _ToDuration>{floor<_ToDuration>(__t.time_since_epoch())};
}

template <class _ToDuration, class _Clock, class _Duration>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    time_point<_Clock, _ToDuration>
>::type
ceil(const time_point<_Clock, _Duration>& __t)
{
    return time_point<_Clock, _ToDuration>{ceil<_ToDuration>(__t.time_since_epoch())};
}

template <class _ToDuration, class _Clock, class _Duration>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    __is_duration<_ToDuration>::value,
    time_point<_Clock, _ToDuration>
>::type
round(const time_point<_Clock, _Duration>& __t)
{
    return time_point<_Clock, _ToDuration>{round<_ToDuration>(__t.time_since_epoch())};
}

template <class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    numeric_limits<_Rep>::is_signed,
    duration<_Rep, _Period>
>::type
abs(duration<_Rep, _Period> __d)
{
    return __d >= __d.zero() ? +__d : -__d;
}
#endif
# 1466 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

// time_point ==

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return __lhs.time_since_epoch() == __rhs.time_since_epoch();
}

// time_point !=

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return !(__lhs == __rhs);
}

// time_point <

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return __lhs.time_since_epoch() < __rhs.time_since_epoch();
}

// time_point >

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return __rhs < __lhs;
}

// time_point <=

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return !(__rhs < __lhs);
}

// time_point >=

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
bool
operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return !(__lhs < __rhs);
}

// time_point operator+(time_point x, duration y);

template <class _Clock, class _Duration1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type>
operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Tr;
    return _Tr (__lhs.time_since_epoch() + __rhs);
}

// time_point operator+(duration x, time_point y);

template <class _Rep1, class _Period1, class _Clock, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
time_point<_Clock, typename common_type<duration<_Rep1, _Period1>, _Duration2>::type>
operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return __rhs + __lhs;
}

// time_point operator-(time_point x, duration y);

template <class _Clock, class _Duration1, class _Rep2, class _Period2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type>
operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
{
    typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Ret;
    return _Ret(__lhs.time_since_epoch() -__rhs);
}

// duration operator-(time_point x, time_point y);

template <class _Clock, class _Duration1, class _Duration2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename common_type<_Duration1, _Duration2>::type
operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
{
    return __lhs.time_since_epoch() - __rhs.time_since_epoch();
}

//////////////////////////////////////////////////////////
/////////////////////// clocks ///////////////////////////
//////////////////////////////////////////////////////////

class _LIBCPP_TYPE_VIS system_clock
{
public:
    typedef microseconds                     duration;
    typedef duration::rep                    rep;
    typedef duration::period                 period;
    typedef chrono::time_point<system_clock> time_point;
    static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false;

    static time_point now() _NOEXCEPT;
    static time_t     to_time_t  (const time_point& __t) _NOEXCEPT;
    static time_point from_time_t(time_t __t) _NOEXCEPT;
};

#ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK
class _LIBCPP_TYPE_VIS steady_clock
{
public:
    typedef nanoseconds                                   duration;
    typedef duration::rep                                 rep;
    typedef duration::period                              period;
    typedef chrono::time_point<steady_clock, duration>    time_point;
    static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = true;

    static time_point now() _NOEXCEPT;
};

typedef steady_clock high_resolution_clock;
#else
# 1602 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
typedef system_clock high_resolution_clock;
#endif
# 1604 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
// [time.clock.file], type file_clock
using file_clock = _VSTD_FS::_FilesystemClock;

template<class _Duration>
using file_time = time_point<file_clock, _Duration>;


template <class _Duration>
using sys_time    = time_point<system_clock, _Duration>;
using sys_seconds = sys_time<seconds>;
using sys_days    = sys_time<days>;

struct local_t {};
template<class Duration>
using local_time  = time_point<local_t, Duration>;
using local_seconds = local_time<seconds>;
using local_days    = local_time<days>;


struct last_spec { explicit last_spec() = default; };

class day {
private:
    unsigned char __d;
public:
    day() = default;
    explicit inline constexpr day(unsigned __val) noexcept : __d(static_cast<unsigned char>(__val)) {}
    inline constexpr day& operator++()    noexcept { ++__d; return *this; }
    inline constexpr day  operator++(int) noexcept { day __tmp = *this; ++(*this); return __tmp; }
    inline constexpr day& operator--()    noexcept { --__d; return *this; }
    inline constexpr day  operator--(int) noexcept { day __tmp = *this; --(*this); return __tmp; }
           constexpr day& operator+=(const days& __dd) noexcept;
           constexpr day& operator-=(const days& __dd) noexcept;
    explicit inline constexpr operator unsigned() const noexcept { return __d; }
    inline constexpr bool ok() const noexcept { return __d >= 1 && __d <= 31; }
  };


inline constexpr
bool operator==(const day& __lhs, const day& __rhs) noexcept
{ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs); }

inline constexpr
bool operator!=(const day& __lhs, const day& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const day& __lhs, const day& __rhs) noexcept
{ return static_cast<unsigned>(__lhs) <  static_cast<unsigned>(__rhs); }

inline constexpr
bool operator> (const day& __lhs, const day& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const day& __lhs, const day& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const day& __lhs, const day& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr
day operator+ (const day& __lhs, const days& __rhs) noexcept
{ return day(static_cast<unsigned>(__lhs) + __rhs.count()); }

inline constexpr
day operator+ (const days& __lhs, const day& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
day operator- (const day& __lhs, const days& __rhs) noexcept
{ return __lhs + -__rhs; }

inline constexpr
days operator-(const day& __lhs, const day& __rhs) noexcept
{ return days(static_cast<int>(static_cast<unsigned>(__lhs)) -
              static_cast<int>(static_cast<unsigned>(__rhs))); }

inline constexpr day& day::operator+=(const days& __dd) noexcept
{ *this = *this + __dd; return *this; }

inline constexpr day& day::operator-=(const days& __dd) noexcept
{ *this = *this - __dd; return *this; }


class month {
private:
    unsigned char __m;
public:
    month() = default;
    explicit inline constexpr month(unsigned __val) noexcept : __m(static_cast<unsigned char>(__val)) {}
    inline constexpr month& operator++()    noexcept { ++__m; return *this; }
    inline constexpr month  operator++(int) noexcept { month __tmp = *this; ++(*this); return __tmp; }
    inline constexpr month& operator--()    noexcept { --__m; return *this; }
    inline constexpr month  operator--(int) noexcept { month __tmp = *this; --(*this); return __tmp; }
           constexpr month& operator+=(const months& __m1) noexcept;
           constexpr month& operator-=(const months& __m1) noexcept;
    explicit inline constexpr operator unsigned() const noexcept { return __m; }
    inline constexpr bool ok() const noexcept { return __m >= 1 && __m <= 12; }
};


inline constexpr
bool operator==(const month& __lhs, const month& __rhs) noexcept
{ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs); }

inline constexpr
bool operator!=(const month& __lhs, const month& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const month& __lhs, const month& __rhs) noexcept
{ return static_cast<unsigned>(__lhs)  < static_cast<unsigned>(__rhs); }

inline constexpr
bool operator> (const month& __lhs, const month& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const month& __lhs, const month& __rhs) noexcept
{ return !(__rhs < __lhs); }

inline constexpr
bool operator>=(const month& __lhs, const month& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr
month operator+ (const month& __lhs, const months& __rhs) noexcept
{
    auto const __mu = static_cast<long long>(static_cast<unsigned>(__lhs)) + (__rhs.count() - 1);
    auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12;
    return month{static_cast<unsigned>(__mu - __yr * 12 + 1)};
}

inline constexpr
month operator+ (const months& __lhs, const month& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
month operator- (const month& __lhs, const months& __rhs) noexcept
{ return __lhs + -__rhs; }

inline constexpr
months operator-(const month& __lhs, const month& __rhs) noexcept
{
    auto const __dm = static_cast<unsigned>(__lhs) - static_cast<unsigned>(__rhs);
    return months(__dm <= 11 ? __dm : __dm + 12);
}

inline constexpr month& month::operator+=(const months& __dm) noexcept
{ *this = *this + __dm; return *this; }

inline constexpr month& month::operator-=(const months& __dm) noexcept
{ *this = *this - __dm; return *this; }


class year {
private:
    short __y;
public:
    year() = default;
    explicit inline constexpr year(int __val) noexcept : __y(static_cast<short>(__val)) {}

    inline constexpr year& operator++()    noexcept { ++__y; return *this; }
    inline constexpr year  operator++(int) noexcept { year __tmp = *this; ++(*this); return __tmp; }
    inline constexpr year& operator--()    noexcept { --__y; return *this; }
    inline constexpr year  operator--(int) noexcept { year __tmp = *this; --(*this); return __tmp; }
           constexpr year& operator+=(const years& __dy) noexcept;
           constexpr year& operator-=(const years& __dy) noexcept;
    inline constexpr year operator+() const noexcept { return *this; }
    inline constexpr year operator-() const noexcept { return year{-__y}; }

    inline constexpr bool is_leap() const noexcept { return __y % 4 == 0 && (__y % 100 != 0 || __y % 400 == 0); }
    explicit inline constexpr operator int() const noexcept { return __y; }
           constexpr bool ok() const noexcept;
    static inline constexpr year min() noexcept { return year{-32767}; }
    static inline constexpr year max() noexcept { return year{ 32767}; }
};


inline constexpr
bool operator==(const year& __lhs, const year& __rhs) noexcept
{ return static_cast<int>(__lhs) == static_cast<int>(__rhs); }

inline constexpr
bool operator!=(const year& __lhs, const year& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const year& __lhs, const year& __rhs) noexcept
{ return static_cast<int>(__lhs)  < static_cast<int>(__rhs); }

inline constexpr
bool operator> (const year& __lhs, const year& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const year& __lhs, const year& __rhs) noexcept
{ return !(__rhs < __lhs); }

inline constexpr
bool operator>=(const year& __lhs, const year& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr
year operator+ (const year& __lhs, const years& __rhs) noexcept
{ return year(static_cast<int>(__lhs) + __rhs.count()); }

inline constexpr
year operator+ (const years& __lhs, const year& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year operator- (const year& __lhs, const years& __rhs) noexcept
{ return __lhs + -__rhs; }

inline constexpr
years operator-(const year& __lhs, const year& __rhs) noexcept
{ return years{static_cast<int>(__lhs) - static_cast<int>(__rhs)}; }


inline constexpr year& year::operator+=(const years& __dy) noexcept
{ *this = *this + __dy; return *this; }

inline constexpr year& year::operator-=(const years& __dy) noexcept
{ *this = *this - __dy; return *this; }

inline constexpr bool year::ok() const noexcept
{ return static_cast<int>(min()) <= __y && __y <= static_cast<int>(max()); }

class weekday_indexed;
class weekday_last;

class weekday {
private:
    unsigned char __wd;
public:
  weekday() = default;
  inline explicit constexpr weekday(unsigned __val) noexcept : __wd(static_cast<unsigned char>(__val == 7 ? 0 : __val)) {}
  inline constexpr          weekday(const sys_days& __sysd) noexcept
          : __wd(__weekday_from_days(__sysd.time_since_epoch().count())) {}
  inline explicit constexpr weekday(const local_days& __locd) noexcept
          : __wd(__weekday_from_days(__locd.time_since_epoch().count())) {}

  inline constexpr weekday& operator++()    noexcept { __wd = (__wd == 6 ? 0 : __wd + 1); return *this; }
  inline constexpr weekday  operator++(int) noexcept { weekday __tmp = *this; ++(*this); return __tmp; }
  inline constexpr weekday& operator--()    noexcept { __wd = (__wd == 0 ? 6 : __wd - 1); return *this; }
  inline constexpr weekday  operator--(int) noexcept { weekday __tmp = *this; --(*this); return __tmp; }
         constexpr weekday& operator+=(const days& __dd) noexcept;
         constexpr weekday& operator-=(const days& __dd) noexcept;
  inline constexpr unsigned c_encoding()   const noexcept { return __wd; }
  inline constexpr unsigned iso_encoding() const noexcept { return __wd == 0u ? 7 : __wd; }
  inline constexpr bool ok() const noexcept { return __wd <= 6; }
         constexpr weekday_indexed operator[](unsigned __index) const noexcept;
         constexpr weekday_last    operator[](last_spec) const noexcept;

  // TODO: Make private?
  static constexpr unsigned char __weekday_from_days(int __days) noexcept;
};


// https://howardhinnant.github.io/date_algorithms.html#weekday_from_days
inline constexpr
unsigned char weekday::__weekday_from_days(int __days) noexcept
{
    return static_cast<unsigned char>(
              static_cast<unsigned>(__days >= -4 ? (__days+4) % 7 : (__days+5) % 7 + 6)
           );
}

inline constexpr
bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept
{ return __lhs.c_encoding() == __rhs.c_encoding(); }

inline constexpr
bool operator!=(const weekday& __lhs, const weekday& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const weekday& __lhs, const weekday& __rhs) noexcept
{ return __lhs.c_encoding() < __rhs.c_encoding(); }

inline constexpr
bool operator> (const weekday& __lhs, const weekday& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept
{ return !(__lhs < __rhs); }

constexpr weekday operator+(const weekday& __lhs, const days& __rhs) noexcept
{
    auto const __mu = static_cast<long long>(__lhs.c_encoding()) + __rhs.count();
    auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7;
    return weekday{static_cast<unsigned>(__mu - __yr * 7)};
}

constexpr weekday operator+(const days& __lhs, const weekday& __rhs) noexcept
{ return __rhs + __lhs; }

constexpr weekday operator-(const weekday& __lhs, const days& __rhs) noexcept
{ return __lhs + -__rhs; }

constexpr days operator-(const weekday& __lhs, const weekday& __rhs) noexcept
{
    const int __wdu = __lhs.c_encoding() - __rhs.c_encoding();
    const int __wk = (__wdu >= 0 ? __wdu : __wdu-6) / 7;
    return days{__wdu - __wk * 7};
}

inline constexpr weekday& weekday::operator+=(const days& __dd) noexcept
{ *this = *this + __dd; return *this; }

inline constexpr weekday& weekday::operator-=(const days& __dd) noexcept
{ *this = *this - __dd; return *this; }


class weekday_indexed {
private:
    chrono::weekday __wd;
    unsigned char          __idx;
public:
    weekday_indexed() = default;
    inline constexpr weekday_indexed(const chrono::weekday& __wdval, unsigned __idxval) noexcept
        : __wd{__wdval}, __idx(__idxval) {}
    inline constexpr chrono::weekday weekday() const noexcept { return __wd; }
    inline constexpr unsigned                 index() const noexcept { return __idx; }
    inline constexpr bool ok() const noexcept { return __wd.ok() && __idx >= 1 && __idx <= 5; }
};

inline constexpr
bool operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
{ return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index(); }

inline constexpr
bool operator!=(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
{ return !(__lhs == __rhs); }


class weekday_last {
private:
    chrono::weekday __wd;
public:
    explicit constexpr weekday_last(const chrono::weekday& __val) noexcept
        : __wd{__val} {}
    constexpr chrono::weekday weekday() const noexcept { return __wd; }
    constexpr bool ok() const noexcept { return __wd.ok(); }
};

inline constexpr
bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
{ return __lhs.weekday() == __rhs.weekday(); }

inline constexpr
bool operator!=(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
weekday_indexed weekday::operator[](unsigned __index) const noexcept { return weekday_indexed{*this, __index}; }

inline constexpr
weekday_last    weekday::operator[](last_spec) const noexcept { return weekday_last{*this}; }


inline constexpr last_spec last{};
inline constexpr weekday   Sunday{0};
inline constexpr weekday   Monday{1};
inline constexpr weekday   Tuesday{2};
inline constexpr weekday   Wednesday{3};
inline constexpr weekday   Thursday{4};
inline constexpr weekday   Friday{5};
inline constexpr weekday   Saturday{6};

inline constexpr month January{1};
inline constexpr month February{2};
inline constexpr month March{3};
inline constexpr month April{4};
inline constexpr month May{5};
inline constexpr month June{6};
inline constexpr month July{7};
inline constexpr month August{8};
inline constexpr month September{9};
inline constexpr month October{10};
inline constexpr month November{11};
inline constexpr month December{12};


class month_day {
private:
   chrono::month __m;
   chrono::day   __d;
public:
    month_day() = default;
    constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept
        : __m{__mval}, __d{__dval} {}
    inline constexpr chrono::month month() const noexcept { return __m; }
    inline constexpr chrono::day   day()   const noexcept { return __d; }
    constexpr bool ok() const noexcept;
};

inline constexpr
bool month_day::ok() const noexcept
{
    if (!__m.ok()) return false;
    const unsigned __dval = static_cast<unsigned>(__d);
    if (__dval < 1 || __dval > 31) return false;
    if (__dval <= 29) return true;
//  Now we've got either 30 or 31
    const unsigned __mval = static_cast<unsigned>(__m);
    if (__mval == 2) return false;
    if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11)
        return __dval == 30;
    return true;
}

inline constexpr
bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept
{ return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); }

inline constexpr
bool operator!=(const month_day& __lhs, const month_day& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
month_day operator/(const month& __lhs, const day& __rhs) noexcept
{ return month_day{__lhs, __rhs}; }

constexpr
month_day operator/(const day& __lhs, const month& __rhs) noexcept
{ return __rhs / __lhs; }

inline constexpr
month_day operator/(const month& __lhs, int __rhs) noexcept
{ return __lhs / day(__rhs); }

constexpr
month_day operator/(int __lhs, const day& __rhs) noexcept
{ return month(__lhs) / __rhs; }

constexpr
month_day operator/(const day& __lhs, int __rhs) noexcept
{ return month(__rhs) / __lhs; }


inline constexpr
bool operator< (const month_day& __lhs, const month_day& __rhs) noexcept
{ return __lhs.month() != __rhs.month() ? __lhs.month() < __rhs.month() : __lhs.day() < __rhs.day(); }

inline constexpr
bool operator> (const month_day& __lhs, const month_day& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const month_day& __lhs, const month_day& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const month_day& __lhs, const month_day& __rhs) noexcept
{ return !(__lhs < __rhs); }



class month_day_last {
private:
    chrono::month __m;
public:
    explicit constexpr month_day_last(const chrono::month& __val) noexcept
        : __m{__val} {}
    inline constexpr chrono::month month() const noexcept { return __m; }
    inline constexpr bool ok() const noexcept { return __m.ok(); }
};

inline constexpr
bool operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return __lhs.month() == __rhs.month(); }

inline constexpr
bool operator!=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return __lhs.month() < __rhs.month(); }

inline constexpr
bool operator> (const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr
month_day_last operator/(const month& __lhs, last_spec) noexcept
{ return month_day_last{__lhs}; }

inline constexpr
month_day_last operator/(last_spec, const month& __rhs) noexcept
{ return month_day_last{__rhs}; }

inline constexpr
month_day_last operator/(int __lhs, last_spec) noexcept
{ return month_day_last{month(__lhs)}; }

inline constexpr
month_day_last operator/(last_spec, int __rhs) noexcept
{ return month_day_last{month(__rhs)}; }


class month_weekday {
private:
    chrono::month __m;
    chrono::weekday_indexed __wdi;
public:
    month_weekday() = default;
    constexpr month_weekday(const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept
        : __m{__mval}, __wdi{__wdival} {}
    inline constexpr chrono::month                     month() const noexcept { return __m; }
    inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi; }
    inline constexpr bool                                 ok() const noexcept { return __m.ok() && __wdi.ok(); }
};

inline constexpr
bool operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
{ return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); }

inline constexpr
bool operator!=(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
month_weekday operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept
{ return month_weekday{__lhs, __rhs}; }

inline constexpr
month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept
{ return month_weekday{month(__lhs), __rhs}; }

inline constexpr
month_weekday operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept
{ return month_weekday{__rhs, __lhs}; }

inline constexpr
month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept
{ return month_weekday{month(__rhs), __lhs}; }


class month_weekday_last {
    chrono::month        __m;
    chrono::weekday_last __wdl;
  public:
    constexpr month_weekday_last(const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept
        : __m{__mval}, __wdl{__wdlval} {}
    inline constexpr chrono::month               month() const noexcept { return __m; }
    inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl; }
    inline constexpr bool                           ok() const noexcept { return __m.ok() && __wdl.ok(); }
};

inline constexpr
bool operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
{ return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); }

inline constexpr
bool operator!=(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
{ return !(__lhs == __rhs); }


inline constexpr
month_weekday_last operator/(const month& __lhs, const weekday_last& __rhs) noexcept
{ return month_weekday_last{__lhs, __rhs}; }

inline constexpr
month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept
{ return month_weekday_last{month(__lhs), __rhs}; }

inline constexpr
month_weekday_last operator/(const weekday_last& __lhs, const month& __rhs) noexcept
{ return month_weekday_last{__rhs, __lhs}; }

inline constexpr
month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept
{ return month_weekday_last{month(__rhs), __lhs}; }


class year_month {
    chrono::year  __y;
    chrono::month __m;
public:
    year_month() = default;
    constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept
        : __y{__yval}, __m{__mval} {}
    inline constexpr chrono::year  year()  const noexcept { return __y; }
    inline constexpr chrono::month month() const noexcept { return __m; }
    inline constexpr year_month& operator+=(const months& __dm) noexcept { this->__m += __dm; return *this; }
    inline constexpr year_month& operator-=(const months& __dm) noexcept { this->__m -= __dm; return *this; }
    inline constexpr year_month& operator+=(const years& __dy)  noexcept { this->__y += __dy; return *this; }
    inline constexpr year_month& operator-=(const years& __dy)  noexcept { this->__y -= __dy; return *this; }
    inline constexpr bool ok() const noexcept { return __y.ok() && __m.ok(); }
};

inline constexpr
year_month operator/(const year& __y, const month& __m) noexcept { return year_month{__y, __m}; }

inline constexpr
year_month operator/(const year& __y, int __m) noexcept { return year_month{__y, month(__m)}; }

inline constexpr
bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept
{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month(); }

inline constexpr
bool operator!=(const year_month& __lhs, const year_month& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const year_month& __lhs, const year_month& __rhs) noexcept
{ return __lhs.year() != __rhs.year() ? __lhs.year() < __rhs.year() : __lhs.month() < __rhs.month(); }

inline constexpr
bool operator> (const year_month& __lhs, const year_month& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const year_month& __lhs, const year_month& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const year_month& __lhs, const year_month& __rhs) noexcept
{ return !(__lhs < __rhs); }

constexpr year_month operator+(const year_month& __lhs, const months& __rhs) noexcept
{
    int __dmi = static_cast<int>(static_cast<unsigned>(__lhs.month())) - 1 + __rhs.count();
    const int __dy = (__dmi >= 0 ? __dmi : __dmi-11) / 12;
    __dmi = __dmi - __dy * 12 + 1;
    return (__lhs.year() + years(__dy)) / month(static_cast<unsigned>(__dmi));
}

constexpr year_month operator+(const months& __lhs, const year_month& __rhs) noexcept
{ return __rhs + __lhs; }

constexpr year_month operator+(const year_month& __lhs, const years& __rhs) noexcept
{ return (__lhs.year() + __rhs) / __lhs.month(); }

constexpr year_month operator+(const years& __lhs, const year_month& __rhs) noexcept
{ return __rhs + __lhs; }

constexpr months     operator-(const year_month& __lhs, const year_month& __rhs) noexcept
{ return (__lhs.year() - __rhs.year()) + months(static_cast<unsigned>(__lhs.month()) - static_cast<unsigned>(__rhs.month())); }

constexpr year_month operator-(const year_month& __lhs, const months& __rhs) noexcept
{ return __lhs + -__rhs; }

constexpr year_month operator-(const year_month& __lhs, const years& __rhs) noexcept
{ return __lhs + -__rhs; }

class year_month_day_last;

class year_month_day {
private:
    chrono::year  __y;
    chrono::month __m;
    chrono::day   __d;
public:
     year_month_day() = default;
     inline constexpr year_month_day(
            const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept
            : __y{__yval}, __m{__mval}, __d{__dval} {}
            constexpr year_month_day(const year_month_day_last& __ymdl) noexcept;
     inline constexpr year_month_day(const sys_days& __sysd) noexcept
            : year_month_day(__from_days(__sysd.time_since_epoch())) {}
     inline explicit constexpr year_month_day(const local_days& __locd) noexcept
            : year_month_day(__from_days(__locd.time_since_epoch())) {}

            constexpr year_month_day& operator+=(const months& __dm) noexcept;
            constexpr year_month_day& operator-=(const months& __dm) noexcept;
            constexpr year_month_day& operator+=(const years& __dy)  noexcept;
            constexpr year_month_day& operator-=(const years& __dy)  noexcept;

     inline constexpr chrono::year   year() const noexcept { return __y; }
     inline constexpr chrono::month month() const noexcept { return __m; }
     inline constexpr chrono::day     day() const noexcept { return __d; }
     inline constexpr operator   sys_days() const noexcept          { return   sys_days{__to_days()}; }
     inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; }

            constexpr bool             ok() const noexcept;

     static constexpr year_month_day __from_days(days __d) noexcept;
     constexpr days __to_days() const noexcept;
};


// https://howardhinnant.github.io/date_algorithms.html#civil_from_days
inline constexpr
year_month_day
year_month_day::__from_days(days __d) noexcept
{
    static_assert(numeric_limits<unsigned>::digits >= 18, "");
    static_assert(numeric_limits<int>::digits >= 20     , "");
    const int      __z = __d.count() + 719468;
    const int      __era = (__z >= 0 ? __z : __z - 146096) / 146097;
    const unsigned __doe = static_cast<unsigned>(__z - __era * 146097);              // [0, 146096]
    const unsigned __yoe = (__doe - __doe/1460 + __doe/36524 - __doe/146096) / 365;  // [0, 399]
    const int      __yr = static_cast<int>(__yoe) + __era * 400;
    const unsigned __doy = __doe - (365 * __yoe + __yoe/4 - __yoe/100);              // [0, 365]
    const unsigned __mp = (5 * __doy + 2)/153;                                       // [0, 11]
    const unsigned __dy = __doy - (153 * __mp + 2)/5 + 1;                            // [1, 31]
    const unsigned __mth = __mp + (__mp < 10 ? 3 : -9);                              // [1, 12]
    return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}};
}

// https://howardhinnant.github.io/date_algorithms.html#days_from_civil
inline constexpr days year_month_day::__to_days() const noexcept
{
    static_assert(numeric_limits<unsigned>::digits >= 18, "");
    static_assert(numeric_limits<int>::digits >= 20     , "");

    const int      __yr  = static_cast<int>(__y) - (__m <= February);
    const unsigned __mth = static_cast<unsigned>(__m);
    const unsigned __dy  = static_cast<unsigned>(__d);

    const int      __era = (__yr >= 0 ? __yr : __yr - 399) / 400;
    const unsigned __yoe = static_cast<unsigned>(__yr - __era * 400);                // [0, 399]
    const unsigned __doy = (153 * (__mth + (__mth > 2 ? -3 : 9)) + 2) / 5 + __dy-1;  // [0, 365]
    const unsigned __doe = __yoe * 365 + __yoe/4 - __yoe/100 + __doy;                // [0, 146096]
    return days{__era * 146097 + static_cast<int>(__doe) - 719468};
}

inline constexpr
bool operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); }

inline constexpr
bool operator!=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{
    if (__lhs.year() < __rhs.year()) return true;
    if (__lhs.year() > __rhs.year()) return false;
    if (__lhs.month() < __rhs.month()) return true;
    if (__lhs.month() > __rhs.month()) return false;
    return __lhs.day() < __rhs.day();
}

inline constexpr
bool operator> (const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr
year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept
{ return year_month_day{__lhs.year(), __lhs.month(), __rhs}; }

inline constexpr
year_month_day operator/(const year_month& __lhs, int __rhs) noexcept
{ return __lhs / day(__rhs); }

inline constexpr
year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept
{ return __lhs / __rhs.month() / __rhs.day(); }

inline constexpr
year_month_day operator/(int __lhs, const month_day& __rhs) noexcept
{ return year(__lhs) / __rhs; }

inline constexpr
year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept
{ return __rhs / __lhs; }

inline constexpr
year_month_day operator/(const month_day& __lhs, int __rhs) noexcept
{ return year(__rhs) / __lhs; }


inline constexpr
year_month_day operator+(const year_month_day& __lhs, const months& __rhs) noexcept
{ return (__lhs.year()/__lhs.month() + __rhs)/__lhs.day(); }

inline constexpr
year_month_day operator+(const months& __lhs, const year_month_day& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_day operator-(const year_month_day& __lhs, const months& __rhs) noexcept
{ return __lhs + -__rhs; }

inline constexpr
year_month_day operator+(const year_month_day& __lhs, const years& __rhs) noexcept
{ return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day(); }

inline constexpr
year_month_day operator+(const years& __lhs, const year_month_day& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_day operator-(const year_month_day& __lhs, const years& __rhs) noexcept
{ return __lhs + -__rhs; }

inline constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
inline constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
inline constexpr year_month_day& year_month_day::operator+=(const years& __dy)  noexcept { *this = *this + __dy; return *this; }
inline constexpr year_month_day& year_month_day::operator-=(const years& __dy)  noexcept { *this = *this - __dy; return *this; }

class year_month_day_last {
private:
    chrono::year           __y;
    chrono::month_day_last __mdl;
public:
     constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept
        : __y{__yval}, __mdl{__mdlval} {}

     constexpr year_month_day_last& operator+=(const months& __m) noexcept;
     constexpr year_month_day_last& operator-=(const months& __m) noexcept;
     constexpr year_month_day_last& operator+=(const years& __y)  noexcept;
     constexpr year_month_day_last& operator-=(const years& __y)  noexcept;

     inline constexpr chrono::year                     year() const noexcept { return __y; }
     inline constexpr chrono::month                   month() const noexcept { return __mdl.month(); }
     inline constexpr chrono::month_day_last month_day_last() const noexcept { return __mdl; }
            constexpr chrono::day                       day() const noexcept;
     inline constexpr operator                     sys_days() const noexcept { return   sys_days{year()/month()/day()}; }
     inline explicit constexpr operator          local_days() const noexcept { return local_days{year()/month()/day()}; }
     inline constexpr bool                               ok() const noexcept { return __y.ok() && __mdl.ok(); }
};

inline constexpr
chrono::day year_month_day_last::day() const noexcept
{
    constexpr chrono::day __d[] =
    {
        chrono::day(31), chrono::day(28), chrono::day(31),
        chrono::day(30), chrono::day(31), chrono::day(30),
        chrono::day(31), chrono::day(31), chrono::day(30),
        chrono::day(31), chrono::day(30), chrono::day(31)
    };
    return (month() != February || !__y.is_leap()) && month().ok() ?
        __d[static_cast<unsigned>(month()) - 1] : chrono::day{29};
}

inline constexpr
bool operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{ return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last(); }

inline constexpr
bool operator!=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
bool operator< (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{
    if (__lhs.year() < __rhs.year()) return true;
    if (__lhs.year() > __rhs.year()) return false;
    return __lhs.month_day_last() < __rhs.month_day_last();
}

inline constexpr
bool operator> (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{ return __rhs < __lhs; }

inline constexpr
bool operator<=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{ return !(__rhs < __lhs);}

inline constexpr
bool operator>=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
{ return !(__lhs < __rhs); }

inline constexpr year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept
{ return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}}; }

inline constexpr year_month_day_last operator/(const year& __lhs, const month_day_last& __rhs) noexcept
{ return year_month_day_last{__lhs, __rhs}; }

inline constexpr year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept
{ return year_month_day_last{year{__lhs}, __rhs}; }

inline constexpr year_month_day_last operator/(const month_day_last& __lhs, const year& __rhs) noexcept
{ return __rhs / __lhs; }

inline constexpr year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept
{ return year{__rhs} / __lhs; }


inline constexpr
year_month_day_last operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept
{ return (__lhs.year() / __lhs.month() + __rhs) / last; }

inline constexpr
year_month_day_last operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_day_last operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept
{ return __lhs + (-__rhs); }

inline constexpr
year_month_day_last operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept
{ return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()}; }

inline constexpr
year_month_day_last operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_day_last operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept
{ return __lhs + (-__rhs); }

inline constexpr year_month_day_last& year_month_day_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
inline constexpr year_month_day_last& year_month_day_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
inline constexpr year_month_day_last& year_month_day_last::operator+=(const years& __dy)  noexcept { *this = *this + __dy; return *this; }
inline constexpr year_month_day_last& year_month_day_last::operator-=(const years& __dy)  noexcept { *this = *this - __dy; return *this; }

inline constexpr year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept
    : __y{__ymdl.year()}, __m{__ymdl.month()}, __d{__ymdl.day()} {}

inline constexpr bool year_month_day::ok() const noexcept
{
    if (!__y.ok() || !__m.ok()) return false;
    return chrono::day{1} <= __d && __d <= (__y / __m / last).day();
}

class year_month_weekday {
    chrono::year            __y;
    chrono::month           __m;
    chrono::weekday_indexed __wdi;
public:
    year_month_weekday() = default;
    constexpr year_month_weekday(const chrono::year& __yval, const chrono::month& __mval,
                               const chrono::weekday_indexed& __wdival) noexcept
        : __y{__yval}, __m{__mval}, __wdi{__wdival} {}
    constexpr year_month_weekday(const sys_days& __sysd) noexcept
            : year_month_weekday(__from_days(__sysd.time_since_epoch())) {}
    inline explicit constexpr year_month_weekday(const local_days& __locd) noexcept
            : year_month_weekday(__from_days(__locd.time_since_epoch())) {}
    constexpr year_month_weekday& operator+=(const months& m) noexcept;
    constexpr year_month_weekday& operator-=(const months& m) noexcept;
    constexpr year_month_weekday& operator+=(const years& y)  noexcept;
    constexpr year_month_weekday& operator-=(const years& y)  noexcept;

    inline constexpr chrono::year                       year() const noexcept { return __y; }
    inline constexpr chrono::month                     month() const noexcept { return __m; }
    inline constexpr chrono::weekday                 weekday() const noexcept { return __wdi.weekday(); }
    inline constexpr unsigned                          index() const noexcept { return __wdi.index(); }
    inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi; }

    inline constexpr                       operator sys_days() const noexcept { return   sys_days{__to_days()}; }
    inline explicit constexpr operator            local_days() const noexcept { return local_days{__to_days()}; }
    inline constexpr bool ok() const noexcept
    {
        if (!__y.ok() || !__m.ok() || !__wdi.ok()) return false;
        if (__wdi.index() <= 4) return true;
        auto __nth_weekday_day =
            __wdi.weekday() -
            chrono::weekday{static_cast<sys_days>(__y / __m / 1)} +
            days{(__wdi.index() - 1) * 7 + 1};
        return static_cast<unsigned>(__nth_weekday_day.count()) <=
               static_cast<unsigned>((__y / __m / last).day());
    }

    static constexpr year_month_weekday __from_days(days __d) noexcept;
    constexpr days __to_days() const noexcept;
};

inline constexpr
year_month_weekday year_month_weekday::__from_days(days __d) noexcept
{
    const sys_days      __sysd{__d};
    const chrono::weekday __wd = chrono::weekday(__sysd);
    const year_month_day __ymd = year_month_day(__sysd);
    return year_month_weekday{__ymd.year(), __ymd.month(),
                              __wd[(static_cast<unsigned>(__ymd.day())-1)/7+1]};
}

inline constexpr
days year_month_weekday::__to_days() const noexcept
{
    const sys_days __sysd = sys_days(__y/__m/1);
    return (__sysd + (__wdi.weekday() - chrono::weekday(__sysd) + days{(__wdi.index()-1)*7}))
                .time_since_epoch();
}

inline constexpr
bool operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); }

inline constexpr
bool operator!=(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
{ return !(__lhs == __rhs); }

inline constexpr
year_month_weekday operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept
{ return year_month_weekday{__lhs.year(), __lhs.month(), __rhs}; }

inline constexpr
year_month_weekday operator/(const year& __lhs, const month_weekday& __rhs) noexcept
{ return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()}; }

inline constexpr
year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept
{ return year(__lhs) / __rhs; }

inline constexpr
year_month_weekday operator/(const month_weekday& __lhs, const year& __rhs) noexcept
{ return __rhs / __lhs; }

inline constexpr
year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept
{ return year(__rhs) / __lhs; }


inline constexpr
year_month_weekday operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept
{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed(); }

inline constexpr
year_month_weekday operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_weekday operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept
{ return __lhs + (-__rhs); }

inline constexpr
year_month_weekday operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept
{ return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()}; }

inline constexpr
year_month_weekday operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_weekday operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept
{ return __lhs + (-__rhs); }


inline constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
inline constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
inline constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy)  noexcept { *this = *this + __dy; return *this; }
inline constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy)  noexcept { *this = *this - __dy; return *this; }

class year_month_weekday_last {
private:
    chrono::year         __y;
    chrono::month        __m;
    chrono::weekday_last __wdl;
public:
    constexpr year_month_weekday_last(const chrono::year& __yval, const chrono::month& __mval,
                                      const chrono::weekday_last& __wdlval) noexcept
                : __y{__yval}, __m{__mval}, __wdl{__wdlval} {}
    constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept;
    constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept;
    constexpr year_month_weekday_last& operator+=(const years& __dy)  noexcept;
    constexpr year_month_weekday_last& operator-=(const years& __dy)  noexcept;

    inline constexpr chrono::year                 year() const noexcept { return __y; }
    inline constexpr chrono::month               month() const noexcept { return __m; }
    inline constexpr chrono::weekday           weekday() const noexcept { return __wdl.weekday(); }
    inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl; }
    inline constexpr operator                 sys_days() const noexcept { return   sys_days{__to_days()}; }
    inline explicit constexpr operator      local_days() const noexcept { return local_days{__to_days()}; }
    inline constexpr bool ok() const noexcept { return __y.ok() && __m.ok() && __wdl.ok(); }

    constexpr days __to_days() const noexcept;

};

inline constexpr
days year_month_weekday_last::__to_days() const noexcept
{
    const sys_days __last = sys_days{__y/__m/last};
    return (__last - (chrono::weekday{__last} - __wdl.weekday())).time_since_epoch();

}

inline constexpr
bool operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); }

inline constexpr
bool operator!=(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
{ return !(__lhs == __rhs); }


inline constexpr
year_month_weekday_last operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept
{ return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs}; }

inline constexpr
year_month_weekday_last operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept
{ return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()}; }

inline constexpr
year_month_weekday_last operator/(int __lhs, const month_weekday_last& __rhs) noexcept
{ return year(__lhs) / __rhs; }

inline constexpr
year_month_weekday_last operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept
{ return __rhs / __lhs; }

inline constexpr
year_month_weekday_last operator/(const month_weekday_last& __lhs, int __rhs) noexcept
{ return year(__rhs) / __lhs; }


inline constexpr
year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last(); }

inline constexpr
year_month_weekday_last operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
{ return __lhs + (-__rhs); }

inline constexpr
year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
{ return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()}; }

inline constexpr
year_month_weekday_last operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept
{ return __rhs + __lhs; }

inline constexpr
year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
{ return __lhs + (-__rhs); }

inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; }
inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; }
inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const years& __dy)  noexcept { *this = *this + __dy; return *this; }
inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const years& __dy)  noexcept { *this = *this - __dy; return *this; }


template <class _Duration>
class hh_mm_ss
{
private:
    static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration");
    using __CommonType = common_type_t<_Duration, chrono::seconds>;

    static constexpr uint64_t __pow10(unsigned __exp)
    {
        uint64_t __ret = 1;
        for (unsigned __i = 0; __i < __exp; ++__i)
            __ret *= 10U;
        return __ret;
    }

    static constexpr unsigned __width(uint64_t __n, uint64_t __d = 10, unsigned __w = 0)
    {
        if (__n >= 2 && __d != 0 && __w < 19)
            return 1 + __width(__n, __d % __n * 10, __w+1);
        return 0;
    }

public:
    static unsigned constexpr fractional_width = __width(__CommonType::period::den) < 19 ?
                                                 __width(__CommonType::period::den) : 6u;
    using precision = duration<typename __CommonType::rep, ratio<1, __pow10(fractional_width)>>;

    constexpr hh_mm_ss() noexcept : hh_mm_ss{_Duration::zero()} {}

    constexpr explicit hh_mm_ss(_Duration __d) noexcept :
        __is_neg(__d < _Duration(0)),
        __h(duration_cast<chrono::hours>  (abs(__d))),
        __m(duration_cast<chrono::minutes>(abs(__d) - hours())),
        __s(duration_cast<chrono::seconds>(abs(__d) - hours() - minutes())),
        __f(duration_cast<precision>      (abs(__d) - hours() - minutes() - seconds()))
        {}

    constexpr bool is_negative()        const noexcept { return __is_neg; }
    constexpr chrono::hours hours()     const noexcept { return __h; }
    constexpr chrono::minutes minutes() const noexcept { return __m; }
    constexpr chrono::seconds seconds() const noexcept { return __s; }
    constexpr precision subseconds()    const noexcept { return __f; }

    constexpr precision to_duration() const noexcept
    {
        auto __dur = __h + __m + __s + __f;
        return __is_neg ? -__dur : __dur;
    }

    constexpr explicit operator precision() const noexcept { return to_duration(); }

private:
    bool            __is_neg;
    chrono::hours   __h;
    chrono::minutes __m;
    chrono::seconds __s;
    precision       __f;
};

constexpr bool is_am(const hours& __h) noexcept { return __h >= hours( 0) && __h < hours(12); }
constexpr bool is_pm(const hours& __h) noexcept { return __h >= hours(12) && __h < hours(24); }

constexpr hours make12(const hours& __h) noexcept
{
    if      (__h == hours( 0)) return hours(12);
    else if (__h <= hours(12)) return __h;
    else                       return __h - hours(12);
}

constexpr hours make24(const hours& __h, bool __is_pm) noexcept
{
    if (__is_pm)
        return __h == hours(12) ? __h : __h + hours(12);
    else
        return __h == hours(12) ? hours(0) : __h;
}

#endif // _LIBCPP_STD_VER > 17
# 2836 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
} // chrono

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2839 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
// Suffixes for duration literals [time.duration.literals]
inline namespace literals
{
  inline namespace chrono_literals
  {

    constexpr chrono::hours operator""h(unsigned long long __h)
    {
        return chrono::hours(static_cast<chrono::hours::rep>(__h));
    }

    constexpr chrono::duration<long double, ratio<3600,1>> operator""h(long double __h)
    {
        return chrono::duration<long double, ratio<3600,1>>(__h);
    }


    constexpr chrono::minutes operator""min(unsigned long long __m)
    {
        return chrono::minutes(static_cast<chrono::minutes::rep>(__m));
    }

    constexpr chrono::duration<long double, ratio<60,1>> operator""min(long double __m)
    {
        return chrono::duration<long double, ratio<60,1>> (__m);
    }


    constexpr chrono::seconds operator""s(unsigned long long __s)
    {
        return chrono::seconds(static_cast<chrono::seconds::rep>(__s));
    }

    constexpr chrono::duration<long double> operator""s(long double __s)
    {
        return chrono::duration<long double> (__s);
    }


    constexpr chrono::milliseconds operator""ms(unsigned long long __ms)
    {
        return chrono::milliseconds(static_cast<chrono::milliseconds::rep>(__ms));
    }

    constexpr chrono::duration<long double, milli> operator""ms(long double __ms)
    {
        return chrono::duration<long double, milli>(__ms);
    }


    constexpr chrono::microseconds operator""us(unsigned long long __us)
    {
        return chrono::microseconds(static_cast<chrono::microseconds::rep>(__us));
    }

    constexpr chrono::duration<long double, micro> operator""us(long double __us)
    {
        return chrono::duration<long double, micro> (__us);
    }


    constexpr chrono::nanoseconds operator""ns(unsigned long long __ns)
    {
        return chrono::nanoseconds(static_cast<chrono::nanoseconds::rep>(__ns));
    }

    constexpr chrono::duration<long double, nano> operator""ns(long double __ns)
    {
        return chrono::duration<long double, nano> (__ns);
    }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2911 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
    constexpr chrono::day operator ""d(unsigned long long __d) noexcept
    {
        return chrono::day(static_cast<unsigned>(__d));
    }

    constexpr chrono::year operator ""y(unsigned long long __y) noexcept
    {
        return chrono::year(static_cast<int>(__y));
    }
#endif
# 2921 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
}}

namespace chrono { // hoist the literals into namespace std::chrono
   using namespace literals::chrono_literals;
}

#endif
# 2928 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

_LIBCPP_END_NAMESPACE_STD

#ifndef _LIBCPP_CXX03_LANG
_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
struct _FilesystemClock {
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_INT128)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2935 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
  typedef __int128_t rep;
  typedef nano period;
#else
# 2938 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
  typedef long long rep;
  typedef nano period;
#endif
# 2941 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

  typedef chrono::duration<rep, period> duration;
  typedef chrono::time_point<_FilesystemClock> time_point;

  _LIBCPP_EXPORTED_FROM_ABI
  static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false;

  _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_FUNC_VIS static time_point now() noexcept;

  _LIBCPP_INLINE_VISIBILITY
  static time_t to_time_t(const time_point& __t) noexcept {
      typedef chrono::duration<rep> __secs;
      return time_t(
          chrono::duration_cast<__secs>(__t.time_since_epoch()).count());
  }

  _LIBCPP_INLINE_VISIBILITY
  static time_point from_time_t(time_t __t) noexcept {
      typedef chrono::duration<rep> __secs;
      return time_point(__secs(__t));
  }
};
_LIBCPP_END_NAMESPACE_FILESYSTEM
#endif // !_LIBCPP_CXX03_LANG
# 2965 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3

_LIBCPP_POP_MACROS

#endif // _LIBCPP_CHRONO
# 2969 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/chrono" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <errno.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 1 3
// -*- C++ -*-
//===-------------------------- errno.h -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_ERRNO_H
#define _LIBCPP_ERRNO_H

/*
    errno.h synopsis

Macros:

    EDOM
    EILSEQ  // C99
    ERANGE
    errno

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#endif
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <errno.h>
#endif /* expanded by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)errno.h	8.5 (Berkeley) 1/21/94
 * $FreeBSD$
 */

#ifndef _SYS_ERRNO_H_
#define _SYS_ERRNO_H_

#if 0 /* disabled by -frewrite-includes */
#if !defined(_KERNEL) && !defined(_STANDALONE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
__BEGIN_DECLS
int *	__error(void);
__END_DECLS
#define	errno		(* __error())
#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#define	EPERM		1		/* Operation not permitted */
#define	ENOENT		2		/* No such file or directory */
#define	ESRCH		3		/* No such process */
#define	EINTR		4		/* Interrupted system call */
#define	EIO		5		/* Input/output error */
#define	ENXIO		6		/* Device not configured */
#define	E2BIG		7		/* Argument list too long */
#define	ENOEXEC		8		/* Exec format error */
#define	EBADF		9		/* Bad file descriptor */
#define	ECHILD		10		/* No child processes */
#define	EDEADLK		11		/* Resource deadlock avoided */
					/* 11 was EAGAIN */
#define	ENOMEM		12		/* Cannot allocate memory */
#define	EACCES		13		/* Permission denied */
#define	EFAULT		14		/* Bad address */
#ifndef _POSIX_SOURCE
#define	ENOTBLK		15		/* Block device required */
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#define	EBUSY		16		/* Device busy */
#define	EEXIST		17		/* File exists */
#define	EXDEV		18		/* Cross-device link */
#define	ENODEV		19		/* Operation not supported by device */
#define	ENOTDIR		20		/* Not a directory */
#define	EISDIR		21		/* Is a directory */
#define	EINVAL		22		/* Invalid argument */
#define	ENFILE		23		/* Too many open files in system */
#define	EMFILE		24		/* Too many open files */
#define	ENOTTY		25		/* Inappropriate ioctl for device */
#ifndef _POSIX_SOURCE
#define	ETXTBSY		26		/* Text file busy */
#endif
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#define	EFBIG		27		/* File too large */
#define	ENOSPC		28		/* No space left on device */
#define	ESPIPE		29		/* Illegal seek */
#define	EROFS		30		/* Read-only filesystem */
#define	EMLINK		31		/* Too many links */
#define	EPIPE		32		/* Broken pipe */

/* math software */
#define	EDOM		33		/* Numerical argument out of domain */
#define	ERANGE		34		/* Result too large */

/* non-blocking and interrupt i/o */
#define	EAGAIN		35		/* Resource temporarily unavailable */
#ifndef _POSIX_SOURCE
#define	EWOULDBLOCK	EAGAIN		/* Operation would block */
#define	EINPROGRESS	36		/* Operation now in progress */
#define	EALREADY	37		/* Operation already in progress */

/* ipc/network software -- argument errors */
#define	ENOTSOCK	38		/* Socket operation on non-socket */
#define	EDESTADDRREQ	39		/* Destination address required */
#define	EMSGSIZE	40		/* Message too long */
#define	EPROTOTYPE	41		/* Protocol wrong type for socket */
#define	ENOPROTOOPT	42		/* Protocol not available */
#define	EPROTONOSUPPORT	43		/* Protocol not supported */
#define	ESOCKTNOSUPPORT	44		/* Socket type not supported */
#define	EOPNOTSUPP	45		/* Operation not supported */
#define	ENOTSUP		EOPNOTSUPP	/* Operation not supported */
#define	EPFNOSUPPORT	46		/* Protocol family not supported */
#define	EAFNOSUPPORT	47		/* Address family not supported by protocol family */
#define	EADDRINUSE	48		/* Address already in use */
#define	EADDRNOTAVAIL	49		/* Can't assign requested address */

/* ipc/network software -- operational errors */
#define	ENETDOWN	50		/* Network is down */
#define	ENETUNREACH	51		/* Network is unreachable */
#define	ENETRESET	52		/* Network dropped connection on reset */
#define	ECONNABORTED	53		/* Software caused connection abort */
#define	ECONNRESET	54		/* Connection reset by peer */
#define	ENOBUFS		55		/* No buffer space available */
#define	EISCONN		56		/* Socket is already connected */
#define	ENOTCONN	57		/* Socket is not connected */
#define	ESHUTDOWN	58		/* Can't send after socket shutdown */
#define	ETOOMANYREFS	59		/* Too many references: can't splice */
#define	ETIMEDOUT	60		/* Operation timed out */
#define	ECONNREFUSED	61		/* Connection refused */

#define	ELOOP		62		/* Too many levels of symbolic links */
#endif /* _POSIX_SOURCE */
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#define	ENAMETOOLONG	63		/* File name too long */

/* should be rearranged */
#ifndef _POSIX_SOURCE
#define	EHOSTDOWN	64		/* Host is down */
#define	EHOSTUNREACH	65		/* No route to host */
#endif /* _POSIX_SOURCE */
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#define	ENOTEMPTY	66		/* Directory not empty */

/* quotas & mush */
#ifndef _POSIX_SOURCE
#define	EPROCLIM	67		/* Too many processes */
#define	EUSERS		68		/* Too many users */
#define	EDQUOT		69		/* Disc quota exceeded */

/* Network File System */
#define	ESTALE		70		/* Stale NFS file handle */
#define	EREMOTE		71		/* Too many levels of remote in path */
#define	EBADRPC		72		/* RPC struct is bad */
#define	ERPCMISMATCH	73		/* RPC version wrong */
#define	EPROGUNAVAIL	74		/* RPC prog. not avail */
#define	EPROGMISMATCH	75		/* Program version wrong */
#define	EPROCUNAVAIL	76		/* Bad procedure for program */
#endif /* _POSIX_SOURCE */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#define	ENOLCK		77		/* No locks available */
#define	ENOSYS		78		/* Function not implemented */

#ifndef _POSIX_SOURCE
#define	EFTYPE		79		/* Inappropriate file type or format */
#define	EAUTH		80		/* Authentication error */
#define	ENEEDAUTH	81		/* Need authenticator */
#define	EIDRM		82		/* Identifier removed */
#define	ENOMSG		83		/* No message of desired type */
#define	EOVERFLOW	84		/* Value too large to be stored in data type */
#define	ECANCELED	85		/* Operation canceled */
#define	EILSEQ		86		/* Illegal byte sequence */
#define	ENOATTR		87		/* Attribute not found */

#define	EDOOFUS		88		/* Programming error */
#endif /* _POSIX_SOURCE */
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#define	EBADMSG		89		/* Bad message */
#define	EMULTIHOP	90		/* Multihop attempted */
#define	ENOLINK		91		/* Link has been severed */
#define	EPROTO		92		/* Protocol error */

#ifndef _POSIX_SOURCE
#define	ENOTCAPABLE	93		/* Capabilities insufficient */
#define	ECAPMODE	94		/* Not permitted in capability mode */
#define	ENOTRECOVERABLE	95		/* State not recoverable */
#define	EOWNERDEAD	96		/* Previous owner died */
#define	EINTEGRITY	97		/* Integrity check failed */
#endif /* _POSIX_SOURCE */
# 185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#ifndef _POSIX_SOURCE
#define	ELAST		97		/* Must be equal largest errno */
#endif /* _POSIX_SOURCE */
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) || defined(_WANT_KERNEL_ERRNO) || defined(_STANDALONE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
/* pseudo-errors returned inside kernel to modify return to process */
#define	ERESTART	(-1)		/* restart syscall */
#define	EJUSTRETURN	(-2)		/* don't modify regs, just return */
#define	ENOIOCTL	(-3)		/* ioctl not handled by this layer */
#define	EDIRIOCTL	(-4)		/* do direct ioctl in GEOM */
#define	ERELOOKUP	(-5)		/* retry the directory lookup */
#endif
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#ifndef _KERNEL
#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
/* ISO/IEC 9899:2011 K.3.2.2 */
#ifndef _ERRNO_T_DEFINED
#define _ERRNO_T_DEFINED
typedef int errno_t;
#endif
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#endif /* __EXT1_VISIBLE */
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
#endif
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4

#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/errno.h" 3 4
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 2 3

#ifdef __cplusplus

#if 0 /* disabled by -frewrite-includes */
#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) || !defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

static const int __elast1 = ELAST+1;
static const int __elast2 = ELAST+2;
static const int __elast3 = ELAST+3;

#else
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

static const int __elast1 = 104;
static const int __elast2 = 105;
static const int __elast3 = 106;

#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define ENOTRECOVERABLE __elast1
#define EOWNERDEAD __elast2
#define EINTEGRITY __elast3
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EINTEGRITY
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define ENOTRECOVERABLE __elast1
#define EOWNERDEAD __elast2
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EOWNERDEAD
#endif
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define EOWNERDEAD __elast1
#define EINTEGRITY __elast2
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EINTEGRITY
#endif
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define EOWNERDEAD __elast1
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EOWNERDEAD
#endif
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define ENOTRECOVERABLE __elast1
#define EINTEGRITY __elast2
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EINTEGRITY
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define ENOTRECOVERABLE __elast1
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST ENOTRECOVERABLE
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#define EINTEGRITY __elast1
#if 0 /* disabled by -frewrite-includes */
#if defined(ELAST)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
#undef ELAST
#define ELAST EINTEGRITY
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) && !defined(INTEGRITY)
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) || !defined(INTEGRITY)
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

//  supply errno values likely to be missing, particularly on Windows

#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT 9901
#endif
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EADDRINUSE
#define EADDRINUSE 9902
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL 9903
#endif
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EISCONN
#define EISCONN 9904
#endif
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EBADMSG
#define EBADMSG 9905
#endif
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ECONNABORTED
#define ECONNABORTED 9906
#endif
# 134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EALREADY
#define EALREADY 9907
#endif
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ECONNREFUSED
#define ECONNREFUSED 9908
#endif
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ECONNRESET
#define ECONNRESET 9909
#endif
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EDESTADDRREQ
#define EDESTADDRREQ 9910
#endif
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EHOSTUNREACH
#define EHOSTUNREACH 9911
#endif
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EIDRM
#define EIDRM 9912
#endif
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EMSGSIZE
#define EMSGSIZE 9913
#endif
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENETDOWN
#define ENETDOWN 9914
#endif
# 166 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENETRESET
#define ENETRESET 9915
#endif
# 170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENETUNREACH
#define ENETUNREACH 9916
#endif
# 174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOBUFS
#define ENOBUFS 9917
#endif
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOLINK
#define ENOLINK 9918
#endif
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENODATA
#define ENODATA 9919
#endif
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOMSG
#define ENOMSG 9920
#endif
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOPROTOOPT
#define ENOPROTOOPT 9921
#endif
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOSR
#define ENOSR 9922
#endif
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTSOCK
#define ENOTSOCK 9923
#endif
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOSTR
#define ENOSTR 9924
#endif
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTCONN
#define ENOTCONN 9925
#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTSUP
#define ENOTSUP 9926
#endif
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ECANCELED
#define ECANCELED 9927
#endif
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EINPROGRESS
#define EINPROGRESS 9928
#endif
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EOPNOTSUPP
#define EOPNOTSUPP 9929
#endif
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EWOULDBLOCK
#define EWOULDBLOCK 9930
#endif
# 230 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EOWNERDEAD
#define EOWNERDEAD  9931
#endif
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EPROTO
#define EPROTO 9932
#endif
# 238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EPROTONOSUPPORT
#define EPROTONOSUPPORT 9933
#endif
# 242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTRECOVERABLE
#define ENOTRECOVERABLE 9934
#endif
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ETIME
#define ETIME 9935
#endif
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ETXTBSY
#define ETXTBSY 9936
#endif
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ETIMEDOUT
#define ETIMEDOUT 9938
#endif
# 258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ELOOP
#define ELOOP 9939
#endif
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EOVERFLOW
#define EOVERFLOW 9940
#endif
# 266 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EPROTOTYPE
#define EPROTOTYPE 9941
#endif
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOSYS
#define ENOSYS 9942
#endif
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EINVAL
#define EINVAL 9943
#endif
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ERANGE
#define ERANGE 9944
#endif
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EILSEQ
#define EILSEQ 9945
#endif
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

//  Windows Mobile doesn't appear to define these:

#ifndef E2BIG
#define E2BIG 9946
#endif
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EDOM
#define EDOM 9947
#endif
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EFAULT
#define EFAULT 9948
#endif
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EBADF
#define EBADF 9949
#endif
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EPIPE
#define EPIPE 9950
#endif
# 308 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EXDEV
#define EXDEV 9951
#endif
# 312 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EBUSY
#define EBUSY 9952
#endif
# 316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTEMPTY
#define ENOTEMPTY 9953
#endif
# 320 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOEXEC
#define ENOEXEC 9954
#endif
# 324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EEXIST
#define EEXIST 9955
#endif
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EFBIG
#define EFBIG 9956
#endif
# 332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENAMETOOLONG
#define ENAMETOOLONG 9957
#endif
# 336 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTTY
#define ENOTTY 9958
#endif
# 340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EINTR
#define EINTR 9959
#endif
# 344 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ESPIPE
#define ESPIPE 9960
#endif
# 348 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EIO
#define EIO 9961
#endif
# 352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EISDIR
#define EISDIR 9962
#endif
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ECHILD
#define ECHILD 9963
#endif
# 360 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOLCK
#define ENOLCK 9964
#endif
# 364 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOSPC
#define ENOSPC 9965
#endif
# 368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENXIO
#define ENXIO 9966
#endif
# 372 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENODEV
#define ENODEV 9967
#endif
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOENT
#define ENOENT 9968
#endif
# 380 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ESRCH
#define ESRCH 9969
#endif
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOTDIR
#define ENOTDIR 9970
#endif
# 388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENOMEM
#define ENOMEM 9971
#endif
# 392 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EPERM
#define EPERM 9972
#endif
# 396 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EACCES
#define EACCES 9973
#endif
# 400 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EROFS
#define EROFS 9974
#endif
# 404 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EDEADLK
#define EDEADLK 9975
#endif
# 408 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EAGAIN
#define EAGAIN 9976
#endif
# 412 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef ENFILE
#define ENFILE 9977
#endif
# 416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EMFILE
#define EMFILE 9978
#endif
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EMLINK
#define EMLINK 9979
#endif
# 424 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#ifndef EINTEGRITY
#define EINTEGRITY 9980
#endif
# 428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#endif // __cplusplus
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3

#endif // _LIBCPP_ERRNO_H
# 432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/errno.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#ifdef __MVS__
#if 0 /* expanded by -frewrite-includes */
# include <__support/ibm/nanosleep.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#endif
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
# include <__external_threading>
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) || defined(__MVS__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# define _LIBCPP_NO_NATIVE_SEMAPHORES
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
# include <pthread.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-4-Clause
 *
 * Copyright (c) 1993, 1994 by Chris Provenzano, proven@mit.edu
 * Copyright (c) 1995-1998 by John Birrell <jb@cimlogic.com.au>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *  This product includes software developed by Chris Provenzano.
 * 4. The name of Chris Provenzano may not be used to endorse or promote 
 *	  products derived from this software without specific prior written
 *	  permission.
 *
 * THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY 
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */
#ifndef _PTHREAD_H_
#define	_PTHREAD_H_

/*
 * Header files.
 */
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_pthreadtypes.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_pthreadtypes.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1993, 1994 by Chris Provenzano, proven@mit.edu
 * Copyright (c) 1995-1998 by John Birrell <jb@cimlogic.com.au>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *  This product includes software developed by Chris Provenzano.
 * 4. The name of Chris Provenzano may not be used to endorse or promote 
 *	  products derived from this software without specific prior written
 *	  permission.
 *
 * THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY 
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__PTHREADTYPES_H_
#define _SYS__PTHREADTYPES_H_

/*
 * Forward structure definitions.
 *
 * These are mostly opaque to the user.
 */
struct pthread;
struct pthread_attr;
struct pthread_cond;
struct pthread_cond_attr;
struct pthread_mutex;
struct pthread_mutex_attr;
struct pthread_once;
struct pthread_rwlock;
struct pthread_rwlockattr;
struct pthread_barrier;
struct pthread_barrier_attr;
struct pthread_spinlock;

/*
 * Primitive system data type definitions required by P1003.1c.
 *
 * Note that P1003.1c specifies that there are no defined comparison
 * or assignment operators for the types pthread_attr_t, pthread_cond_t,
 * pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t.
 */
#ifndef _PTHREAD_T_DECLARED
typedef struct	pthread			*pthread_t;
#define	_PTHREAD_T_DECLARED
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_pthreadtypes.h" 3 4
typedef struct	pthread_attr		*pthread_attr_t;
typedef struct	pthread_mutex		*pthread_mutex_t;
typedef struct	pthread_mutex_attr	*pthread_mutexattr_t;
typedef struct	pthread_cond		*pthread_cond_t;
typedef struct	pthread_cond_attr	*pthread_condattr_t;
typedef int     			pthread_key_t;
typedef struct	pthread_once		pthread_once_t;
typedef struct	pthread_rwlock		*pthread_rwlock_t;
typedef struct	pthread_rwlockattr	*pthread_rwlockattr_t;
typedef struct	pthread_barrier		*pthread_barrier_t;
typedef struct	pthread_barrierattr	*pthread_barrierattr_t;
typedef struct	pthread_spinlock	*pthread_spinlock_t;

/*
 * Additional type definitions:
 *
 * Note that P1003.1c reserves the prefixes pthread_ and PTHREAD_ for
 * use in header symbols.
 */
typedef void	*pthread_addr_t;
typedef void	*(*pthread_startroutine_t)(void *);

/*
 * Once definitions.
 */
struct pthread_once {
	int		state;
	pthread_mutex_t	mutex;
};

#endif /* ! _SYS__PTHREADTYPES_H_ */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_pthreadtypes.h" 3 4
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_types.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_sigset.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_sigset.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1989, 1991, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)signal.h	8.4 (Berkeley) 5/4/95
 * $FreeBSD$
 */

#ifndef _SYS__SIGSET_H_
#define	_SYS__SIGSET_H_

/*
 * sigset_t macros.
 */
#define	_SIG_WORDS	4
#define	_SIG_MAXSIG	128
#define	_SIG_IDX(sig)	((sig) - 1)
#define	_SIG_WORD(sig)	(_SIG_IDX(sig) >> 5)
#define	_SIG_BIT(sig)	(1U << (_SIG_IDX(sig) & 31))
#define	_SIG_VALID(sig)	((sig) <= _SIG_MAXSIG && (sig) > 0)

typedef struct __sigset {
	__uint32_t __bits[_SIG_WORDS];
} __sigset_t;

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) && defined(COMPAT_43)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_sigset.h" 3 4
typedef unsigned int osigset_t;
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_sigset.h" 3 4

#endif /* !_SYS__SIGSET_H_ */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_sigset.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sched.h>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 1 3 4
/*-
 * Copyright (c) 2021 The FreeBSD Foundation
 *
 * This software were developed by Konstantin Belousov <kib@FreeBSD.org>
 * under sponsorship from the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#ifndef __SCHED_H__
#define __SCHED_H__

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1991, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)types.h	8.6 (Berkeley) 2/19/95
 * $FreeBSD$
 */

#ifndef _SYS_TYPES_H_
#define	_SYS_TYPES_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

/* Machine type dependent parameters. */
#if 0 /* expanded by -frewrite-includes */
#include <machine/endian.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/_pthreadtypes.h>
#endif /* expanded by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;
#ifndef _KERNEL
typedef	unsigned short	ushort;		/* Sys V compatibility */
typedef	unsigned int	uint;		/* Sys V compatibility */
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

/*
 * XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
 */
#if 0 /* expanded by -frewrite-includes */
#include <sys/_stdint.h>
#endif /* expanded by -frewrite-includes */
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef __uint8_t	u_int8_t;	/* unsigned integrals (deprecated) */
typedef __uint16_t	u_int16_t;
typedef __uint32_t	u_int32_t;
typedef __uint64_t	u_int64_t;

typedef	__uint64_t	u_quad_t;	/* quads (deprecated) */
typedef	__int64_t	quad_t;
typedef	quad_t *	qaddr_t;

typedef	char *		caddr_t;	/* core address */
typedef	const char *	c_caddr_t;	/* core address, pointer to const */

#ifndef _BLKSIZE_T_DECLARED
typedef	__blksize_t	blksize_t;
#define	_BLKSIZE_T_DECLARED
#endif
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__cpuwhich_t	cpuwhich_t;
typedef	__cpulevel_t	cpulevel_t;
typedef	__cpusetid_t	cpusetid_t;

#ifndef _BLKCNT_T_DECLARED
typedef	__blkcnt_t	blkcnt_t;
#define	_BLKCNT_T_DECLARED
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _CLOCK_T_DECLARED
typedef	__clock_t	clock_t;
#define	_CLOCK_T_DECLARED
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _CLOCKID_T_DECLARED
typedef	__clockid_t	clockid_t;
#define	_CLOCKID_T_DECLARED
#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__critical_t	critical_t;	/* Critical section value */
typedef	__daddr_t	daddr_t;	/* disk address */

#ifndef _DEV_T_DECLARED
typedef	__dev_t		dev_t;		/* device number or struct cdev */
#define	_DEV_T_DECLARED
#endif
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _FFLAGS_T_DECLARED
typedef	__fflags_t	fflags_t;	/* file flags */
#define	_FFLAGS_T_DECLARED
#endif
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__fixpt_t	fixpt_t;	/* fixed point number */

#ifndef _FSBLKCNT_T_DECLARED		/* for statvfs() */
typedef	__fsblkcnt_t	fsblkcnt_t;
typedef	__fsfilcnt_t	fsfilcnt_t;
#define	_FSBLKCNT_T_DECLARED
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _GID_T_DECLARED
typedef	__gid_t		gid_t;		/* group id */
#define	_GID_T_DECLARED
#endif
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _IN_ADDR_T_DECLARED
typedef	__uint32_t	in_addr_t;	/* base type for internet address */
#define	_IN_ADDR_T_DECLARED
#endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _IN_PORT_T_DECLARED
typedef	__uint16_t	in_port_t;
#define	_IN_PORT_T_DECLARED
#endif
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _ID_T_DECLARED
typedef	__id_t		id_t;		/* can hold a uid_t or pid_t */
#define	_ID_T_DECLARED
#endif
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _INO_T_DECLARED
typedef	__ino_t		ino_t;		/* inode number */
#define	_INO_T_DECLARED
#endif
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _KEY_T_DECLARED
typedef	__key_t		key_t;		/* IPC key (for Sys V IPC) */
#define	_KEY_T_DECLARED
#endif
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _LWPID_T_DECLARED
typedef	__lwpid_t	lwpid_t;	/* Thread ID (a.k.a. LWP) */
#define	_LWPID_T_DECLARED
#endif
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _MODE_T_DECLARED
typedef	__mode_t	mode_t;		/* permissions */
#define	_MODE_T_DECLARED
#endif
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _ACCMODE_T_DECLARED
typedef	__accmode_t	accmode_t;	/* access permissions */
#define	_ACCMODE_T_DECLARED
#endif
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _NLINK_T_DECLARED
typedef	__nlink_t	nlink_t;	/* link count */
#define	_NLINK_T_DECLARED
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _OFF_T_DECLARED
typedef	__off_t		off_t;		/* file offset */
#define	_OFF_T_DECLARED
#endif
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _OFF64_T_DECLARED
typedef	__off64_t	off64_t;	/* file offset (alias) */
#define	_OFF64_T_DECLARED
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _PID_T_DECLARED
typedef	__pid_t		pid_t;		/* process id */
#define	_PID_T_DECLARED
#endif
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__register_t	register_t;

#ifndef _RLIM_T_DECLARED
typedef	__rlim_t	rlim_t;		/* resource limit */
#define	_RLIM_T_DECLARED
#endif
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__int64_t	sbintime_t;

typedef	__segsz_t	segsz_t;	/* segment size (in pages) */

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _SSIZE_T_DECLARED
typedef	__ssize_t	ssize_t;
#define	_SSIZE_T_DECLARED
#endif
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _SUSECONDS_T_DECLARED
typedef	__suseconds_t	suseconds_t;	/* microseconds (signed) */
#define	_SUSECONDS_T_DECLARED
#endif
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _TIME_T_DECLARED
typedef	__time_t	time_t;
#define	_TIME_T_DECLARED
#endif
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _TIMER_T_DECLARED
typedef	__timer_t	timer_t;
#define	_TIMER_T_DECLARED
#endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _MQD_T_DECLARED
typedef	__mqd_t	mqd_t;
#define	_MQD_T_DECLARED
#endif
# 229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

typedef	__u_register_t	u_register_t;

#ifndef _UID_T_DECLARED
typedef	__uid_t		uid_t;		/* user id */
#define	_UID_T_DECLARED
#endif
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _USECONDS_T_DECLARED
typedef	__useconds_t	useconds_t;	/* microseconds (unsigned) */
#define	_USECONDS_T_DECLARED
#endif
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _CAP_IOCTL_T_DECLARED
#define	_CAP_IOCTL_T_DECLARED
typedef	unsigned long	cap_ioctl_t;
#endif
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#ifndef _CAP_RIGHTS_T_DECLARED
#define	_CAP_RIGHTS_T_DECLARED
struct cap_rights;

typedef	struct cap_rights	cap_rights_t;
#endif
# 253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

/*
 * Types suitable for exporting physical addresses, virtual addresses
 * (pointers), and memory object sizes from the kernel independent of native
 * word size.  These should be used in place of vm_paddr_t, (u)intptr_t, and
 * size_t in structs which contain such types that are shared with userspace.
 */
typedef	__uint64_t	kpaddr_t;
typedef	__uint64_t	kvaddr_t;
typedef	__uint64_t	ksize_t;
typedef	__int64_t	kssize_t;

typedef	__vm_offset_t	vm_offset_t;
typedef	__uint64_t	vm_ooffset_t;
typedef	__vm_paddr_t	vm_paddr_t;
typedef	__uint64_t	vm_pindex_t;
typedef	__vm_size_t	vm_size_t;

typedef __rman_res_t    rman_res_t;

#ifdef _KERNEL
typedef	int		boolean_t;
typedef	struct _device	*device_t;
typedef	__intfptr_t	intfptr_t;

/*
 * XXX this is fixed width for historical reasons.  It should have had type
 * __int_fast32_t.  Fixed-width types should not be used unless binary
 * compatibility is essential.  Least-width types should be used even less
 * since they provide smaller benefits.
 *
 * XXX should be MD.
 *
 * XXX this is bogus in -current, but still used for spl*().
 */
typedef	__uint32_t	intrmask_t;	/* Interrupt mask (spl, xxx_imask...) */

typedef	__uintfptr_t	uintfptr_t;
typedef	__uint64_t	uoff_t;
typedef	char		vm_memattr_t;	/* memory attribute codes */
typedef	struct vm_page	*vm_page_t;

#define offsetof(type, field) __offsetof(type, field)
#endif /* _KERNEL */
# 297 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if	defined(_KERNEL) || defined(_STANDALONE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 299 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined(__bool_true_false_are_defined) && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#define	__bool_true_false_are_defined	1
#define	false	0
#define	true	1
typedef	_Bool	bool;
#endif /* !__bool_true_false_are_defined && !__cplusplus */
# 305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#endif /* KERNEL || _STANDALONE */
# 306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

/*
 * The following are all things that really shouldn't exist in this header,
 * since its purpose is to provide typedefs, not miscellaneous doodads.
 */

#ifdef __POPCNT__
#define	__bitcount64(x)	__builtin_popcountll((__uint64_t)(x))
#define	__bitcount32(x)	__builtin_popcount((__uint32_t)(x))
#define	__bitcount16(x)	__builtin_popcount((__uint16_t)(x))
#define	__bitcountl(x)	__builtin_popcountl((unsigned long)(x))
#define	__bitcount(x)	__builtin_popcount((unsigned int)(x))
#else
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
/*
 * Population count algorithm using SWAR approach
 * - "SIMD Within A Register".
 */
static __inline __uint16_t
__bitcount16(__uint16_t _x)
{

	_x = (_x & 0x5555) + ((_x & 0xaaaa) >> 1);
	_x = (_x & 0x3333) + ((_x & 0xcccc) >> 2);
	_x = (_x + (_x >> 4)) & 0x0f0f;
	_x = (_x + (_x >> 8)) & 0x00ff;
	return (_x);
}

static __inline __uint32_t
__bitcount32(__uint32_t _x)
{

	_x = (_x & 0x55555555) + ((_x & 0xaaaaaaaa) >> 1);
	_x = (_x & 0x33333333) + ((_x & 0xcccccccc) >> 2);
	_x = (_x + (_x >> 4)) & 0x0f0f0f0f;
	_x = (_x + (_x >> 8));
	_x = (_x + (_x >> 16)) & 0x000000ff;
	return (_x);
}

#ifdef __LP64__
static __inline __uint64_t
__bitcount64(__uint64_t _x)
{

	_x = (_x & 0x5555555555555555) + ((_x & 0xaaaaaaaaaaaaaaaa) >> 1);
	_x = (_x & 0x3333333333333333) + ((_x & 0xcccccccccccccccc) >> 2);
	_x = (_x + (_x >> 4)) & 0x0f0f0f0f0f0f0f0f;
	_x = (_x + (_x >> 8));
	_x = (_x + (_x >> 16));
	_x = (_x + (_x >> 32)) & 0x000000ff;
	return (_x);
}

#define	__bitcountl(x)	__bitcount64((unsigned long)(x))
#else
# 362 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
static __inline __uint64_t
__bitcount64(__uint64_t _x)
{

	return (__bitcount32(_x >> 32) + __bitcount32(_x));
}

#define	__bitcountl(x)	__bitcount32((unsigned long)(x))
#endif
# 371 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#define	__bitcount(x)	__bitcount32((unsigned int)(x))
#endif
# 373 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/select.h>
#endif /* expanded by -frewrite-includes */
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_SELECT_H_
#define	_SYS_SELECT_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/_sigset.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timeval.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__TIMEVAL_H_
#define _SYS__TIMEVAL_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 3 4

#ifndef _SUSECONDS_T_DECLARED
typedef	__suseconds_t	suseconds_t;
#define	_SUSECONDS_T_DECLARED
#endif
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 3 4

#ifndef _TIME_T_DECLARED
typedef	__time_t	time_t;
#define	_TIME_T_DECLARED
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 3 4

/*
 * Structure returned by gettimeofday(2) system call, and used in other calls.
 */
struct timeval {
	time_t		tv_sec;		/* seconds */
	suseconds_t	tv_usec;	/* and microseconds */
};

#endif /* !_SYS__TIMEVAL_H_ */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_timeval.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/timespec.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

typedef	unsigned long	__fd_mask;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
typedef	__fd_mask	fd_mask;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#ifndef _SIGSET_T_DECLARED
#define	_SIGSET_T_DECLARED
typedef	__sigset_t	sigset_t;
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

/*
 * Select uses bit masks of file descriptors in longs.  These macros
 * manipulate such bit fields (the filesystem macros use chars).
 * FD_SETSIZE may be defined by the user, but the default here should
 * be enough for most uses.
 */
#ifndef	FD_SETSIZE
#define	FD_SETSIZE	1024
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#define	_NFDBITS	(sizeof(__fd_mask) * 8)	/* bits per mask */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#define	NFDBITS		_NFDBITS
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#ifndef _howmany
#define	_howmany(x, y)	(((x) + ((y) - 1)) / (y))
#endif
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

typedef	struct fd_set {
	__fd_mask	__fds_bits[_howmany(FD_SETSIZE, _NFDBITS)];
} fd_set;
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#define	fds_bits	__fds_bits
#endif
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#define	__fdset_mask(n)	((__fd_mask)1 << ((n) % _NFDBITS))
#define	FD_CLR(n, p)	((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n))
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#define	FD_COPY(f, t)	(void)(*(t) = *(f))
#endif
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
#define	FD_ISSET(n, p)	(((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0)
#define	FD_SET(n, p)	((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n))
#define	FD_ZERO(p) do {					\
	fd_set *_p;					\
	__size_t _n;					\
							\
	_p = (p);					\
	_n = _howmany(FD_SETSIZE, _NFDBITS);		\
	while (_n > 0)					\
		_p->__fds_bits[--_n] = 0;		\
} while (0)

#ifndef _KERNEL

__BEGIN_DECLS
int pselect(int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict,
	const struct timespec *__restrict, const sigset_t *__restrict);
#ifndef _SELECT_DECLARED
#define	_SELECT_DECLARED
/* XXX missing restrict type-qualifier */
int	select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
#endif
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
__END_DECLS
#endif /* !_KERNEL */
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4

#endif /* _SYS_SELECT_H_ */
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/select.h" 3 4
# 377 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 2 3 4

/*
 * The major and minor numbers are encoded in dev_t as MMMmmmMm (where
 * letters correspond to bytes).  The encoding of the lower 4 bytes is
 * constrained by compatibility with 16-bit and 32-bit dev_t's.  The
 * encoding of of the upper 4 bytes is the least unnatural one consistent
 * with this and other constraints.  Also, the decoding of the m bytes by
 * minor() is unnatural to maximize compatibility subject to not discarding
 * bits.  The upper m byte is shifted into the position of the lower M byte
 * instead of shifting 3 upper m bytes to close the gap.  Compatibility for
 * minor() is achieved iff the upper m byte is 0.
 */
#define	major(d)	__major(d)
static __inline int
__major(dev_t _d)
{
	return (((_d >> 32) & 0xffffff00) | ((_d >> 8) & 0xff));
}
#define	minor(d)	__minor(d)
static __inline int
__minor(dev_t _d)
{
	return (((_d >> 24) & 0xff00) | (_d & 0xffff00ff));
}
#define	makedev(M, m)	__makedev((M), (m))
static __inline dev_t
__makedev(int _Major, int _Minor)
{
	return (((dev_t)(_Major & 0xffffff00) << 32) | ((_Major & 0xff) << 8) |
	    ((dev_t)(_Minor & 0xff00) << 24) | (_Minor & 0xffff00ff));
}

/*
 * These declarations belong elsewhere, but are repeated here and in
 * <stdio.h> to give broken programs a better chance of working with
 * 64-bit off_t's.
 */
#ifndef _KERNEL
__BEGIN_DECLS
#ifndef _FTRUNCATE_DECLARED
#define	_FTRUNCATE_DECLARED
int	 ftruncate(int, off_t);
#endif
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#ifndef _LSEEK_DECLARED
#define	_LSEEK_DECLARED
off_t	 lseek(int, off_t, int);
#endif
# 424 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#ifndef _MMAP_DECLARED
#define	_MMAP_DECLARED
void *	 mmap(void *, size_t, int, int, int, off_t);
#endif
# 428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
#ifndef _TRUNCATE_DECLARED
#define	_TRUNCATE_DECLARED
int	 truncate(const char *, off_t);
#endif
# 432 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
__END_DECLS
#endif /* !_KERNEL */
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#endif /* __BSD_VISIBLE */
# 436 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4

#endif /* !_SYS_TYPES_H_ */
# 438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/types.h" 3 4
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/sched.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 1 3 4
/*-
 * SPDX-License-Identifier: (BSD-4-Clause AND BSD-2-Clause-FreeBSD)
 *
 * Copyright (c) 1996, 1997
 *      HD Associates, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by HD Associates, Inc
 *      and Jukka Antero Ukkonen.
 * 4. Neither the name of the author nor the names of any co-contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

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

#ifndef _SCHED_H_
#define	_SCHED_H_

#ifdef _KERNEL
/*
 * General scheduling info.
 *
 * sched_load:
 *	Total runnable non-ithread threads in the system.
 *
 * sched_runnable:
 *	Runnable threads for this processor.
 */
int	sched_load(void);
int	sched_rr_interval(void);
int	sched_runnable(void);

/* 
 * Proc related scheduling hooks.
 */
void	sched_exit(struct proc *p, struct thread *childtd);
void	sched_fork(struct thread *td, struct thread *childtd);
void	sched_fork_exit(struct thread *td);
void	sched_class(struct thread *td, int class);
void	sched_nice(struct proc *p, int nice);

/*
 * Threads are switched in and out, block on resources, have temporary
 * priorities inherited from their procs, and use up cpu time.
 */
void	sched_exit_thread(struct thread *td, struct thread *child);
u_int	sched_estcpu(struct thread *td);
void	sched_fork_thread(struct thread *td, struct thread *child);
void	sched_lend_prio(struct thread *td, u_char prio);
void	sched_lend_user_prio(struct thread *td, u_char pri);
void	sched_lend_user_prio_cond(struct thread *td, u_char pri);
fixpt_t	sched_pctcpu(struct thread *td);
void	sched_prio(struct thread *td, u_char prio);
void	sched_sleep(struct thread *td, int prio);
void	sched_switch(struct thread *td, int flags);
void	sched_throw(struct thread *td);
void	sched_unlend_prio(struct thread *td, u_char prio);
void	sched_user_prio(struct thread *td, u_char prio);
void	sched_userret_slowpath(struct thread *td);
#ifdef	RACCT
#ifdef	SCHED_4BSD
fixpt_t	sched_pctcpu_delta(struct thread *td);
#endif
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
#endif
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

static inline void
sched_userret(struct thread *td)
{

	/*
	 * XXX we cheat slightly on the locking here to avoid locking in
	 * the usual case.  Setting td_priority here is essentially an
	 * incomplete workaround for not setting it properly elsewhere.
	 * Now that some interrupt handlers are threads, not setting it
	 * properly elsewhere can clobber it in the window between setting
	 * it here and returning to user mode, so don't waste time setting
	 * it perfectly here.
	 */
	KASSERT((td->td_flags & TDF_BORROWING) == 0,
	    ("thread with borrowed priority returning to userland"));
	if (__predict_false(td->td_priority != td->td_user_pri))
		sched_userret_slowpath(td);
}

/*
 * Threads are moved on and off of run queues
 */
void	sched_add(struct thread *td, int flags);
struct thread *sched_choose(void);
void	sched_clock(struct thread *td, int cnt);
void	sched_idletd(void *);
void	sched_preempt(struct thread *td);
void	sched_relinquish(struct thread *td);
void	sched_rem(struct thread *td);
void	sched_wakeup(struct thread *td, int srqflags);

/*
 * Binding makes cpu affinity permanent while pinning is used to temporarily
 * hold a thread on a particular CPU.
 */
void	sched_bind(struct thread *td, int cpu);
static __inline void sched_pin(void);
void	sched_unbind(struct thread *td);
static __inline void sched_unpin(void);
int	sched_is_bound(struct thread *td);
void	sched_affinity(struct thread *td);

/*
 * These procedures tell the process data structure allocation code how
 * many bytes to actually allocate.
 */
int	sched_sizeof_proc(void);
int	sched_sizeof_thread(void);

/*
 * This routine provides a consistent thread name for use with KTR graphing
 * functions.
 */
char	*sched_tdname(struct thread *td);
#ifdef KTR
void	sched_clear_tdname(struct thread *td);
#endif
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

static __inline void
sched_pin(void)
{
	curthread->td_pinned++;
	atomic_interrupt_fence();
}

static __inline void
sched_unpin(void)
{
	atomic_interrupt_fence();
	curthread->td_pinned--;
}

/* sched_add arguments (formerly setrunqueue) */
#define	SRQ_BORING	0x0000		/* No special circumstances. */
#define	SRQ_YIELDING	0x0001		/* We are yielding (from mi_switch). */
#define	SRQ_OURSELF	0x0002		/* It is ourself (from mi_switch). */
#define	SRQ_INTR	0x0004		/* It is probably urgent. */
#define	SRQ_PREEMPTED	0x0008		/* has been preempted.. be kind */
#define	SRQ_BORROWING	0x0010		/* Priority updated due to prio_lend */
#define	SRQ_HOLD	0x0020		/* Return holding original td lock */
#define	SRQ_HOLDTD	0x0040		/* Return holding td lock */

/* Scheduler stats. */
#ifdef SCHED_STATS
DPCPU_DECLARE(long, sched_switch_stats[SWT_COUNT]);

#define	SCHED_STAT_DEFINE_VAR(name, ptr, descr)				\
static void name ## _add_proc(void *dummy __unused)			\
{									\
									\
	SYSCTL_ADD_PROC(NULL,						\
	    SYSCTL_STATIC_CHILDREN(_kern_sched_stats), OID_AUTO,	\
	    #name, CTLTYPE_LONG|CTLFLAG_RD|CTLFLAG_MPSAFE,		\
	    ptr, 0, sysctl_dpcpu_long, "LU", descr);			\
}									\
SYSINIT(name, SI_SUB_LAST, SI_ORDER_MIDDLE, name ## _add_proc, NULL);

#define	SCHED_STAT_DEFINE(name, descr)					\
    DPCPU_DEFINE(unsigned long, name);					\
    SCHED_STAT_DEFINE_VAR(name, &DPCPU_NAME(name), descr)
/*
 * Sched stats are always incremented in critical sections so no atomic
 * is necesssary to increment them.
 */
#define SCHED_STAT_INC(var)     DPCPU_GET(var)++;
#else
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
#define	SCHED_STAT_DEFINE_VAR(name, descr, ptr)
#define	SCHED_STAT_DEFINE(name, descr)
#define SCHED_STAT_INC(var)			(void)0
#endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

/*
 * Fixup scheduler state for proc0 and thread0
 */
void schedinit(void);
#endif /* _KERNEL */
# 230 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

/* POSIX 1003.1b Process Scheduling */

/*
 * POSIX scheduling policies
 */
#define SCHED_FIFO      1
#define SCHED_OTHER     2
#define SCHED_RR        3

struct sched_param {
        int     sched_priority;
};

/*
 * POSIX scheduling declarations for userland.
 */
#ifndef _KERNEL
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
# 249 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 249 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
# 251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

#ifndef _PID_T_DECLARED
typedef __pid_t         pid_t;
#define _PID_T_DECLARED
#endif
# 256 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4

__BEGIN_DECLS
int     sched_get_priority_max(int);
int     sched_get_priority_min(int);
int     sched_getparam(pid_t, struct sched_param *);
int     sched_getscheduler(pid_t);
int     sched_rr_get_interval(pid_t, struct timespec *);
int     sched_setparam(pid_t, const struct sched_param *);
int     sched_setscheduler(pid_t, int, const struct sched_param *);
int     sched_yield(void);
__END_DECLS

#endif
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
#endif /* !_SCHED_H_ */
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/sched.h" 3 4
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 2 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/cpuset.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2008,	Jeffrey Roberson <jeff@freebsd.org>
 * All rights reserved.
 *
 * Copyright (c) 2008 Nokia Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_CPUSET_H_
#define	_SYS_CPUSET_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_cpuset.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2008,	Jeffrey Roberson <jeff@freebsd.org>
 * All rights reserved.
 *
 * Copyright (c) 2008 Nokia Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__CPUSET_H_
#define	_SYS__CPUSET_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_bitset.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_bitset.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2008, Jeffrey Roberson <jeff@freebsd.org>
 * All rights reserved.
 *
 * Copyright (c) 2008 Nokia Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__BITSET_H_
#define	_SYS__BITSET_H_

/*
 * Macros addressing word and bit within it, tuned to make compiler
 * optimize cases when SETSIZE fits into single machine word.
 */
#define	_BITSET_BITS		(sizeof(long) * 8)

#define	__howmany(x, y)	(((x) + ((y) - 1)) / (y))

#define	__bitset_words(_s)	(__howmany(_s, _BITSET_BITS))

#define	__BITSET_DEFINE(_t, _s)						\
struct _t {								\
        long    __bits[__bitset_words((_s))];				\
}

/*
 * Helper to declare a bitset without it's size being a constant.
 *
 * Sadly we cannot declare a bitset struct with 'bits[]', because it's
 * the only member of the struct and the compiler complains.
 */
#define __BITSET_DEFINE_VAR(_t)	__BITSET_DEFINE(_t, 1)

/*
 * Define a default type that can be used while manually specifying size
 * to every call.
 */

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) || defined(_WANT_FREEBSD_BITSET)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_bitset.h" 3 4
__BITSET_DEFINE(bitset, 1);

#define	BITSET_DEFINE(_t, _s)	__BITSET_DEFINE(_t, _s)
#define	BITSET_DEFINE_VAR(_t)	__BITSET_DEFINE_VAR(_t)
#endif /* defined(_KERNEL) || defined(_WANT_FREEBSD_BITSET) */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_bitset.h" 3 4

#endif /* !_SYS__BITSET_H_ */
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_bitset.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 2 3 4

#ifdef _KERNEL
#define	CPU_SETSIZE	MAXCPU
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 3 4

#define	CPU_MAXSIZE	256

#ifndef	CPU_SETSIZE
#define	CPU_SETSIZE	CPU_MAXSIZE
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 3 4

__BITSET_DEFINE(_cpuset, CPU_SETSIZE);
typedef struct _cpuset cpuset_t;

#ifndef _KERNEL
__BEGIN_DECLS
cpuset_t *__cpuset_alloc(size_t set_size);
void __cpuset_free(cpuset_t *ptr);
__END_DECLS
#endif
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 3 4

#endif /* !_SYS__CPUSET_H_ */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_cpuset.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 2 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/_bitset.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/bitset.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2008, Jeffrey Roberson <jeff@freebsd.org>
 * All rights reserved.
 *
 * Copyright (c) 2008 Nokia Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS_BITSET_H_
#define	_SYS_BITSET_H_

/*
 * Whether expr is both constant and true.  Result is itself constant.
 * Used to enable optimizations for sets with a known small size.
 */
#define	__constexpr_cond(expr)	(__builtin_constant_p((expr)) && (expr))

#define	__bitset_mask(_s, n)						\
	(1UL << (__constexpr_cond(__bitset_words((_s)) == 1) ?		\
	    (__size_t)(n) : ((n) % _BITSET_BITS)))

#define	__bitset_word(_s, n)						\
	(__constexpr_cond(__bitset_words((_s)) == 1) ?			\
	 0 : ((n) / _BITSET_BITS))

#define	__BIT_CLR(_s, n, p)						\
	((p)->__bits[__bitset_word(_s, n)] &= ~__bitset_mask((_s), (n)))

#define	__BIT_COPY(_s, f, t)	(void)(*(t) = *(f))

#define	__BIT_ISSET(_s, n, p)						\
	((((p)->__bits[__bitset_word(_s, n)] & __bitset_mask((_s), (n))) != 0))

#define	__BIT_SET(_s, n, p)						\
	((p)->__bits[__bitset_word(_s, n)] |= __bitset_mask((_s), (n)))

#define	__BIT_ZERO(_s, p) do {						\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(p)->__bits[__i] = 0L;					\
} while (0)

#define	__BIT_FILL(_s, p) do {						\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(p)->__bits[__i] = -1L;					\
} while (0)

#define	__BIT_SETOF(_s, n, p) do {					\
	__BIT_ZERO(_s, p);						\
	(p)->__bits[__bitset_word(_s, n)] = __bitset_mask((_s), (n));	\
} while (0)

/* Is p empty. */
#define	__BIT_EMPTY(_s, p) __extension__ ({				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		if ((p)->__bits[__i])					\
			break;						\
	__i == __bitset_words((_s));					\
})

/* Is p full set. */
#define	__BIT_ISFULLSET(_s, p) __extension__ ({				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		if ((p)->__bits[__i] != (long)-1)			\
			break;						\
	__i == __bitset_words((_s));					\
})

/* Is c a subset of p. */
#define	__BIT_SUBSET(_s, p, c) __extension__ ({				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		if (((c)->__bits[__i] &					\
		    (p)->__bits[__i]) !=				\
		    (c)->__bits[__i])					\
			break;						\
	__i == __bitset_words((_s));					\
})

/* Are there any common bits between b & c? */
#define	__BIT_OVERLAP(_s, p, c) __extension__ ({	       		\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		if (((c)->__bits[__i] &					\
		    (p)->__bits[__i]) != 0)				\
			break;						\
	__i != __bitset_words((_s));					\
})

/* Compare two sets, returns 0 if equal 1 otherwise. */
#define	__BIT_CMP(_s, p, c) __extension__ ({				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		if (((c)->__bits[__i] !=				\
		    (p)->__bits[__i]))					\
			break;						\
	__i != __bitset_words((_s));					\
})

#define	__BIT_OR(_s, d, s) do {						\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] |= (s)->__bits[__i];			\
} while (0)

#define	__BIT_OR2(_s, d, s1, s2) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] = (s1)->__bits[__i] | (s2)->__bits[__i];\
} while (0)

#define	__BIT_AND(_s, d, s) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] &= (s)->__bits[__i];			\
} while (0)

#define	__BIT_AND2(_s, d, s1, s2) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] = (s1)->__bits[__i] & (s2)->__bits[__i];\
} while (0)

#define	__BIT_ANDNOT(_s, d, s) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] &= ~(s)->__bits[__i];			\
} while (0)

#define	__BIT_ANDNOT2(_s, d, s1, s2) do {				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] = (s1)->__bits[__i] & ~(s2)->__bits[__i];\
} while (0)

#define	__BIT_XOR(_s, d, s) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] ^= (s)->__bits[__i];			\
} while (0)

#define	__BIT_XOR2(_s, d, s1, s2) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		(d)->__bits[__i] = (s1)->__bits[__i] ^ (s2)->__bits[__i];\
} while (0)

/*
 * Note, the atomic(9) API is not consistent between clear/set and
 * testandclear/testandset in whether the value argument is a mask
 * or a bit index.
 */

#define	__BIT_CLR_ATOMIC(_s, n, p)					\
	atomic_clear_long(&(p)->__bits[__bitset_word(_s, n)],		\
	    __bitset_mask((_s), n))

#define	__BIT_SET_ATOMIC(_s, n, p)					\
	atomic_set_long(&(p)->__bits[__bitset_word(_s, n)],		\
	    __bitset_mask((_s), n))

#define	__BIT_SET_ATOMIC_ACQ(_s, n, p)					\
	atomic_set_acq_long(&(p)->__bits[__bitset_word(_s, n)],		\
	    __bitset_mask((_s), n))

#define	__BIT_TEST_CLR_ATOMIC(_s, n, p)					\
	(atomic_testandclear_long(					\
	    &(p)->__bits[__bitset_word((_s), (n))], (n)) != 0)

#define	__BIT_TEST_SET_ATOMIC(_s, n, p)					\
	(atomic_testandset_long(					\
	    &(p)->__bits[__bitset_word((_s), (n))], (n)) != 0)

/* Convenience functions catering special cases. */
#define	__BIT_AND_ATOMIC(_s, d, s) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		atomic_clear_long(&(d)->__bits[__i],			\
		    ~(s)->__bits[__i]);					\
} while (0)

#define	__BIT_OR_ATOMIC(_s, d, s) do {					\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		atomic_set_long(&(d)->__bits[__i],			\
		    (s)->__bits[__i]);					\
} while (0)

#define	__BIT_COPY_STORE_REL(_s, f, t) do {				\
	__size_t __i;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		atomic_store_rel_long(&(t)->__bits[__i],		\
		    (f)->__bits[__i]);					\
} while (0)

/*
 * Note that `start` and the returned value from __BIT_FFS_AT are
 * 1-based bit indices.
 */
#define	__BIT_FFS_AT(_s, p, start) __extension__ ({			\
	__size_t __i;							\
	long __bit, __mask;						\
									\
	__mask = ~0UL << ((start) % _BITSET_BITS);			\
	__bit = 0;							\
	for (__i = __bitset_word((_s), (start));			\
	    __i < __bitset_words((_s));					\
	    __i++) {							\
		if (((p)->__bits[__i] & __mask) != 0) {			\
			__bit = ffsl((p)->__bits[__i] & __mask);	\
			__bit += __i * _BITSET_BITS;			\
			break;						\
		}							\
		__mask = ~0UL;						\
	}								\
	__bit;								\
})

#define	__BIT_FFS(_s, p) __BIT_FFS_AT((_s), (p), 0)

#define	__BIT_FLS(_s, p) __extension__ ({			       	\
	__size_t __i;							\
	long __bit;							\
									\
	__bit = 0;							\
	for (__i = __bitset_words((_s)); __i > 0; __i--) {		\
		if ((p)->__bits[__i - 1] != 0) {			\
			__bit = flsl((p)->__bits[__i - 1]);		\
			__bit += (__i - 1) * _BITSET_BITS;		\
			break;						\
		}							\
	}								\
	__bit;								\
})

#define	__BIT_COUNT(_s, p) __extension__ ({				\
	__size_t __i;							\
	long __count;							\
									\
	__count = 0;							\
	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
		__count += __bitcountl((p)->__bits[__i]);		\
	__count;							\
})

#define	__BIT_FOREACH_ADVANCE(_s, i, p, op) __extension__ ({		\
	int __found;							\
	for (;;) {							\
		if (__bits != 0) {					\
			int __bit = ffsl(__bits) - 1;			\
			__bits &= ~(1ul << __bit);			\
			(i) = __i * _BITSET_BITS + __bit;		\
			__found = 1;					\
			break;						\
		}							\
		if (++__i == __bitset_words(_s)) {			\
			__found = 0;					\
			break;						\
		}							\
		__bits = op((p)->__bits[__i]);				\
	}								\
	__found != 0;							\
})

/*
 * Non-destructively loop over all set or clear bits in the set.
 */
#define __BIT_FOREACH(_s, i, p, op)					\
	for (long __i = -1, __bits = 0;					\
	    __BIT_FOREACH_ADVANCE(_s, i, p, op); )

#define	__BIT_FOREACH_ISSET(_s, i, p)	__BIT_FOREACH(_s, i, p, )
#define	__BIT_FOREACH_ISCLR(_s, i, p)	__BIT_FOREACH(_s, i, p, ~)

#define	__BITSET_T_INITIALIZER(x)					\
	{ .__bits = { x } }

#define	__BITSET_FSET(n)						\
	[ 0 ... ((n) - 1) ] = (-1L)

#define	__BITSET_SIZE(_s)	(__bitset_words((_s)) * sizeof(long))

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) || defined(_WANT_FREEBSD_BITSET)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 312 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 3 4
/*
 * Dynamically allocate a bitset.
 */
#define	BIT_AND(_s, d, s)			__BIT_AND(_s, d, s)
#define	BIT_AND2(_s, d, s1, s2)			__BIT_AND2(_s, d, s1, s2)
#define	BIT_ANDNOT(_s, d, s)			__BIT_ANDNOT(_s, d, s)
#define	BIT_ANDNOT2(_s, d, s1, s2)		__BIT_ANDNOT2(_s, d, s1, s2)
#define	BIT_AND_ATOMIC(_s, d, s)		__BIT_AND_ATOMIC(_s, d, s)
#define	BIT_CLR(_s, n, p)			__BIT_CLR(_s, n, p)
#define	BIT_CLR_ATOMIC(_s, n, p)		__BIT_CLR_ATOMIC(_s, n, p)
#define	BIT_CMP(_s, p, c)			__BIT_CMP(_s, p, c)
#define	BIT_COPY(_s, f, t)			__BIT_COPY(_s, f, t)
#define	BIT_COPY_STORE_REL(_s, f, t)		__BIT_COPY_STORE_REL(_s, f, t)
#define	BIT_COUNT(_s, p)			__BIT_COUNT(_s, p)
#define	BIT_EMPTY(_s, p)			__BIT_EMPTY(_s, p)
#define	BIT_FFS(_s, p)				__BIT_FFS(_s, p)
#define	BIT_FFS_AT(_s, p, start)		__BIT_FFS_AT(_s, p, start)
#define	BIT_FILL(_s, p)				__BIT_FILL(_s, p)
#define	BIT_FLS(_s, p)				__BIT_FLS(_s, p)
#define BIT_FOREACH(_s, i, p, op)		__BIT_FOREACH(_s, i, p, op)
#define	BIT_FOREACH_ADVANCE(_s, i, p, op)	__BIT_FOREACH_ADVANCE(_s, i, p, op)
#define	BIT_FOREACH_ISCLR(_s, i, p)		__BIT_FOREACH_ISCLR(_s, i, p)
#define	BIT_FOREACH_ISSET(_s, i, p)		__BIT_FOREACH_ISSET(_s, i, p)
#define	BIT_ISFULLSET(_s, p)			__BIT_ISFULLSET(_s, p)
#define	BIT_ISSET(_s, n, p)			__BIT_ISSET(_s, n, p)
#define	BIT_OR(_s, d, s)			__BIT_OR(_s, d, s)
#define	BIT_OR2(_s, d, s1, s2)			__BIT_OR2(_s, d, s1, s2)
#define	BIT_OR_ATOMIC(_s, d, s)			__BIT_OR_ATOMIC(_s, d, s)
#define	BIT_OVERLAP(_s, p, c)			__BIT_OVERLAP(_s, p, c)
#define	BIT_SET(_s, n, p)			__BIT_SET(_s, n, p)
#define	BIT_SETOF(_s, n, p)			__BIT_SETOF(_s, n, p)
#define	BIT_SET_ATOMIC(_s, n, p)		__BIT_SET_ATOMIC(_s, n, p)
#define	BIT_SET_ATOMIC_ACQ(_s, n, p)		__BIT_SET_ATOMIC_ACQ(_s, n, p)
#define	BIT_SUBSET(_s, p, c)			__BIT_SUBSET(_s, p, c)
#define	BIT_TEST_CLR_ATOMIC(_s, n, p)		__BIT_TEST_CLR_ATOMIC(_s, n, p)
#define	BIT_TEST_SET_ATOMIC(_s, n, p)		__BIT_TEST_SET_ATOMIC(_s, n, p)
#define	BIT_XOR(_s, d, s)			__BIT_XOR(_s, d, s)
#define	BIT_XOR2(_s, d, s1, s2)			__BIT_XOR2(_s, d, s1, s2)
#define	BIT_ZERO(_s, p)				__BIT_ZERO(_s, p)

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 3 4
#define BITSET_ALLOC(_s, mt, mf)		malloc(__BITSET_SIZE((_s)), mt, (mf))
#define	BITSET_FREE(p, mt)			free(p, mt)
#endif /* _KERNEL */
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 3 4

#define	BITSET_FSET(n)				__BITSET_FSET(n)
#define	BITSET_SIZE(_s)				__BITSET_SIZE(_s)
#define	BITSET_T_INITIALIZER(x)			__BITSET_T_INITIALIZER(x)
#endif /* defined(_KERNEL) || defined(_WANT_FREEBSD_BITSET) */
# 361 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 3 4

#endif /* !_SYS_BITSET_H_ */
# 363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/bitset.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 2 3 4

#define	_NCPUBITS	_BITSET_BITS
#define	_NCPUWORDS	__bitset_words(CPU_SETSIZE)

#define	CPUSETBUFSIZ	((2 + sizeof(long) * 2) * _NCPUWORDS)

#define	CPU_CLR(n, p)			__BIT_CLR(CPU_SETSIZE, n, p)
#define	CPU_COPY(f, t)			__BIT_COPY(CPU_SETSIZE, f, t)
#define	CPU_ISSET(n, p)			__BIT_ISSET(CPU_SETSIZE, n, p)
#define	CPU_SET(n, p)			__BIT_SET(CPU_SETSIZE, n, p)
#define	CPU_ZERO(p) 			__BIT_ZERO(CPU_SETSIZE, p)
#define	CPU_FILL(p) 			__BIT_FILL(CPU_SETSIZE, p)
#define	CPU_SETOF(n, p)			__BIT_SETOF(CPU_SETSIZE, n, p)
#define	CPU_EQUAL(p, c)			(__BIT_CMP(CPU_SETSIZE, p, c) == 0)
#define	CPU_EMPTY(p)			__BIT_EMPTY(CPU_SETSIZE, p)
#define	CPU_ISFULLSET(p)		__BIT_ISFULLSET(CPU_SETSIZE, p)
#define	CPU_SUBSET(p, c)		__BIT_SUBSET(CPU_SETSIZE, p, c)
#define	CPU_OVERLAP(p, c)		__BIT_OVERLAP(CPU_SETSIZE, p, c)
#define	CPU_CMP(p, c)			__BIT_CMP(CPU_SETSIZE, p, c)
#define	CPU_OR(d, s1, s2)		__BIT_OR2(CPU_SETSIZE, d, s1, s2)
#define	CPU_AND(d, s1, s2)		__BIT_AND2(CPU_SETSIZE, d, s1, s2)
#define	CPU_ANDNOT(d, s1, s2)		__BIT_ANDNOT2(CPU_SETSIZE, d, s1, s2)
#define	CPU_XOR(d, s1, s2)		__BIT_XOR2(CPU_SETSIZE, d, s1, s2)
#define	CPU_CLR_ATOMIC(n, p)		__BIT_CLR_ATOMIC(CPU_SETSIZE, n, p)
#define	CPU_SET_ATOMIC(n, p)		__BIT_SET_ATOMIC(CPU_SETSIZE, n, p)
#define	CPU_SET_ATOMIC_ACQ(n, p)	__BIT_SET_ATOMIC_ACQ(CPU_SETSIZE, n, p)
#define	CPU_AND_ATOMIC(n, p)		__BIT_AND_ATOMIC(CPU_SETSIZE, n, p)
#define	CPU_OR_ATOMIC(d, s)		__BIT_OR_ATOMIC(CPU_SETSIZE, d, s)
#define	CPU_COPY_STORE_REL(f, t)	__BIT_COPY_STORE_REL(CPU_SETSIZE, f, t)
#define	CPU_FFS(p)			__BIT_FFS(CPU_SETSIZE, p)
#define	CPU_FLS(p)			__BIT_FLS(CPU_SETSIZE, p)
#define	CPU_FOREACH_ISSET(i, p)		__BIT_FOREACH_ISSET(CPU_SETSIZE, i, p)
#define	CPU_FOREACH_ISCLR(i, p)		__BIT_FOREACH_ISCLR(CPU_SETSIZE, i, p)
#define	CPU_COUNT(p)			((int)__BIT_COUNT(CPU_SETSIZE, p))
#define	CPUSET_FSET			__BITSET_FSET(_NCPUWORDS)
#define	CPUSET_T_INITIALIZER(x)		__BITSET_T_INITIALIZER(x)

#if 0 /* disabled by -frewrite-includes */
#if !defined(_KERNEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
#define CPU_ALLOC_SIZE(_s)		__BITSET_SIZE(_s)
#define CPU_ALLOC(_s)			__cpuset_alloc(_s)
#define CPU_FREE(p)			__cpuset_free(p)

#define CPU_ISSET_S(n, _s, p)		__BIT_ISSET(_s, n, p)
#define CPU_SET_S(n, _s, p)		__BIT_SET(_s, n, p)
#define CPU_CLR_S(n, _s, p)		__BIT_CLR(_s, n, p)
#define CPU_ZERO_S(_s, p)		__BIT_ZERO(_s, p)

#define	CPU_OR_S(_s, d, s1, s2)		__BIT_OR2(_s, d, s1, s2)
#define	CPU_AND_S(_s, d, s1, s2)	__BIT_AND2(_s, d, s1, s2)
#define	CPU_XOR_S(_s, d, s1, s2)	__BIT_XOR2(_s, d, s1, s2)

#define	CPU_COUNT_S(_s, p)		((int)__BIT_COUNT(_s, p))
#define	CPU_EQUAL_S(_s, p, c)		(__BIT_CMP(_s, p, c) == 0)
#endif
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4

/*
 * Valid cpulevel_t values.
 */
#define	CPU_LEVEL_ROOT		1	/* All system cpus. */
#define	CPU_LEVEL_CPUSET	2	/* Available cpus for which. */
#define	CPU_LEVEL_WHICH		3	/* Actual mask/id for which. */

/*
 * Valid cpuwhich_t values.
 */
#define	CPU_WHICH_TID		1	/* Specifies a thread id. */
#define	CPU_WHICH_PID		2	/* Specifies a process id. */
#define	CPU_WHICH_CPUSET	3	/* Specifies a set id. */
#define	CPU_WHICH_IRQ		4	/* Specifies an irq #. */
#define	CPU_WHICH_JAIL		5	/* Specifies a jail id. */
#define	CPU_WHICH_DOMAIN	6	/* Specifies a NUMA domain id. */
#define	CPU_WHICH_INTRHANDLER	7	/* Specifies an irq # (not ithread). */
#define	CPU_WHICH_ITHREAD	8	/* Specifies an irq's ithread. */

/*
 * Reserved cpuset identifiers.
 */
#define	CPUSET_INVALID	-1
#define	CPUSET_DEFAULT	0

#ifdef _KERNEL
#if 0 /* expanded by -frewrite-includes */
#include <sys/queue.h>
#endif /* expanded by -frewrite-includes */
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4

LIST_HEAD(setlist, cpuset);

/*
 * cpusets encapsulate cpu binding information for one or more threads.
 *
 * 	a - Accessed with atomics.
 *	s - Set at creation, never modified.  Only a ref required to read.
 *	c - Locked internally by a cpuset lock.
 *
 * The bitmask is only modified while holding the cpuset lock.  It may be
 * read while only a reference is held but the consumer must be prepared
 * to deal with inconsistent results.
 */
struct cpuset {
	volatile u_int		cs_ref;		/* (a) Reference count. */
	int			cs_flags;	/* (s) Flags from below. */
	LIST_ENTRY(cpuset)	cs_link;	/* (c) All identified sets. */
	LIST_ENTRY(cpuset)	cs_siblings;	/* (c) Sibling set link. */
	struct setlist		cs_children;	/* (c) List of children. */
	struct domainset	*cs_domain;	/* (c) NUMA policy. */
	cpusetid_t		cs_id;		/* (s) Id or INVALID. */
	struct cpuset		*cs_parent;	/* (s) Pointer to our parent. */
	cpuset_t		cs_mask;	/* bitmask of valid cpus. */
};

#define CPU_SET_ROOT    0x0001  /* Set is a root set. */
#define CPU_SET_RDONLY  0x0002  /* No modification allowed. */

extern cpuset_t *cpuset_root;
struct prison;
struct proc;
struct thread;

struct cpuset *cpuset_thread0(void);
struct cpuset *cpuset_ref(struct cpuset *);
void	cpuset_rel(struct cpuset *);
int	cpuset_setthread(lwpid_t id, cpuset_t *);
int	cpuset_setithread(lwpid_t id, int cpu);
int	cpuset_create_root(struct prison *, struct cpuset **);
int	cpuset_setproc_update_set(struct proc *, struct cpuset *);
int	cpuset_which(cpuwhich_t, id_t, struct proc **,
	    struct thread **, struct cpuset **);
void	cpuset_kernthread(struct thread *);

char	*cpusetobj_strprint(char *, const cpuset_t *);
int	cpusetobj_strscan(cpuset_t *, const char *);
#ifdef DDB
void	ddb_display_cpuset(const cpuset_t *);
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4

#else
# 175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
__BEGIN_DECLS
int	cpuset(cpusetid_t *);
int	cpuset_setid(cpuwhich_t, id_t, cpusetid_t);
int	cpuset_getid(cpulevel_t, cpuwhich_t, id_t, cpusetid_t *);
int	cpuset_getaffinity(cpulevel_t, cpuwhich_t, id_t, size_t, cpuset_t *);
int	cpuset_setaffinity(cpulevel_t, cpuwhich_t, id_t, size_t, const cpuset_t *);
__END_DECLS
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
#endif /* !_SYS_CPUSET_H_ */
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/cpuset.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 2 3 4
struct _cpuset;
typedef struct _cpuset cpu_set_t;
#endif /* __BSD_VISIBLE */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4

__BEGIN_DECLS
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
int sched_getaffinity(pid_t pid, size_t cpusetsz, cpuset_t *cpuset);
int sched_setaffinity(pid_t pid, size_t cpusetsz, const cpuset_t *cpuset);
int sched_getcpu(void);
#endif /* __BSD_VISIBLE */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
__END_DECLS

#endif	/* __SCHED_H__ */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sched.h" 3 4
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <time.h>
#endif /* expanded by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4

/*
 * Run-time invariant values:
 */
#define	PTHREAD_DESTRUCTOR_ITERATIONS		4
#define	PTHREAD_KEYS_MAX			256
#define	PTHREAD_STACK_MIN			__MINSIGSTKSZ
#define	PTHREAD_THREADS_MAX			__ULONG_MAX
#define	PTHREAD_BARRIER_SERIAL_THREAD		-1

/*
 * Flags for threads and thread attributes.
 */
#define	PTHREAD_DETACHED		0x1
#define	PTHREAD_SCOPE_SYSTEM		0x2
#define	PTHREAD_INHERIT_SCHED		0x4
#define	PTHREAD_NOFLOAT			0x8

#define	PTHREAD_CREATE_DETACHED		PTHREAD_DETACHED
#define	PTHREAD_CREATE_JOINABLE		0
#define	PTHREAD_SCOPE_PROCESS		0
#define	PTHREAD_EXPLICIT_SCHED		0

/*
 * Values for process shared/private attributes.
 */
#define	PTHREAD_PROCESS_PRIVATE		0
#define	PTHREAD_PROCESS_SHARED		1

/*
 * Flags for cancelling threads
 */
#define	PTHREAD_CANCEL_ENABLE		0
#define	PTHREAD_CANCEL_DISABLE		1
#define	PTHREAD_CANCEL_DEFERRED		0
#define	PTHREAD_CANCEL_ASYNCHRONOUS	2
#define	PTHREAD_CANCELED		((void *) 1)

/*
 * Flags for once initialization.
 */
#define	PTHREAD_NEEDS_INIT	0
#define	PTHREAD_DONE_INIT	1

/*
 * Static once initialization values.
 */
#define	PTHREAD_ONCE_INIT	{ PTHREAD_NEEDS_INIT, NULL }

/*
 * Static initialization values.
 */
#define	PTHREAD_MUTEX_INITIALIZER	NULL
#define	PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP	((pthread_mutex_t)1)
#define	PTHREAD_COND_INITIALIZER	NULL
#define	PTHREAD_RWLOCK_INITIALIZER	NULL

/*
 * Default attribute arguments (draft 4, deprecated).
 */
#ifndef PTHREAD_KERNEL
#define	pthread_condattr_default	NULL
#define	pthread_mutexattr_default	NULL
#define	pthread_attr_default		NULL
#endif
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4

#define	PTHREAD_PRIO_NONE	0
#define	PTHREAD_PRIO_INHERIT	1
#define	PTHREAD_PRIO_PROTECT	2

/*
 * Mutex types (Single UNIX Specification, Version 2, 1997).
 *
 * Note that a mutex attribute with one of the following types:
 *
 *	PTHREAD_MUTEX_NORMAL
 *	PTHREAD_MUTEX_RECURSIVE
 *
 * will deviate from POSIX specified semantics.
 */
enum pthread_mutextype {
	PTHREAD_MUTEX_ERRORCHECK	= 1,	/* Default POSIX mutex */
	PTHREAD_MUTEX_RECURSIVE		= 2,	/* Recursive mutex */
	PTHREAD_MUTEX_NORMAL		= 3,	/* No error checking */
	PTHREAD_MUTEX_ADAPTIVE_NP	= 4,	/* Adaptive mutex, spins briefly before blocking on lock */
	PTHREAD_MUTEX_TYPE_MAX
};

#define	PTHREAD_MUTEX_DEFAULT		PTHREAD_MUTEX_ERRORCHECK

#define	PTHREAD_MUTEX_STALLED		0
#define	PTHREAD_MUTEX_ROBUST		1

struct _pthread_cleanup_info {
	__uintptr_t	pthread_cleanup_pad[8];
};

/*
 * Thread function prototype definitions:
 */
__BEGIN_DECLS
int		pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
int		pthread_attr_destroy(pthread_attr_t *);
int		pthread_attr_getstack(
		    const pthread_attr_t * __restrict, void ** __restrict,
		    size_t * __restrict);
int		pthread_attr_getstacksize(const pthread_attr_t * __restrict,
		    size_t * __restrict);
int		pthread_attr_getguardsize(const pthread_attr_t * __restrict,
		    size_t * __restrict);
int		pthread_attr_getstackaddr(const pthread_attr_t *, void **);
int		pthread_attr_getdetachstate(const pthread_attr_t *,
		    int *);
int		pthread_attr_init(pthread_attr_t *);
int		pthread_attr_setstacksize(pthread_attr_t *, size_t);
int		pthread_attr_setguardsize(pthread_attr_t *, size_t);
int		pthread_attr_setstack(pthread_attr_t *, void *,
		    size_t);
int		pthread_attr_setstackaddr(pthread_attr_t *, void *);
int		pthread_attr_setdetachstate(pthread_attr_t *, int);
int		pthread_barrier_destroy(pthread_barrier_t *);
int		pthread_barrier_init(pthread_barrier_t * __restrict,
			const pthread_barrierattr_t * __restrict, unsigned);
int		pthread_barrier_wait(pthread_barrier_t *);
int		pthread_barrierattr_destroy(pthread_barrierattr_t *);
int		pthread_barrierattr_getpshared(
		    const pthread_barrierattr_t * __restrict, int * __restrict);
int		pthread_barrierattr_init(pthread_barrierattr_t *);
int		pthread_barrierattr_setpshared(pthread_barrierattr_t *, int);

#define		pthread_cleanup_push(cleanup_routine, cleanup_arg)		\
		{								\
			struct _pthread_cleanup_info __cleanup_info__;		\
			__pthread_cleanup_push_imp(cleanup_routine, cleanup_arg,\
				&__cleanup_info__);				\
			{

#define		pthread_cleanup_pop(execute)					\
				(void)0;					\
			}							\
			__pthread_cleanup_pop_imp(execute);			\
		}

int		pthread_condattr_destroy(pthread_condattr_t *);
int		pthread_condattr_getclock(const pthread_condattr_t * __restrict,
		    clockid_t * __restrict);
int		pthread_condattr_getpshared(const pthread_condattr_t *, int *);
int		pthread_condattr_init(pthread_condattr_t *);
int		pthread_condattr_setclock(pthread_condattr_t *, clockid_t);
int		pthread_condattr_setpshared(pthread_condattr_t *, int);
int		pthread_cond_broadcast(pthread_cond_t *);
int		pthread_cond_destroy(pthread_cond_t *);
int		pthread_cond_init(pthread_cond_t * __restrict,
		    const pthread_condattr_t * __restrict);
int		pthread_cond_signal(pthread_cond_t *);
int		pthread_cond_timedwait(pthread_cond_t *,
		    pthread_mutex_t * __mutex,
		    const struct timespec *)
		    __requires_exclusive(*__mutex);
int		pthread_cond_wait(pthread_cond_t * __restrict,
		    pthread_mutex_t * __restrict __mutex)
		    __requires_exclusive(*__mutex);
int		pthread_create(pthread_t * __restrict,
		    const pthread_attr_t * __restrict, void *(*) (void *),
		    void * __restrict);
int		pthread_detach(pthread_t);
int		pthread_equal(pthread_t, pthread_t);
void		pthread_exit(void *) __dead2;
void		*pthread_getspecific(pthread_key_t);
int		pthread_getcpuclockid(pthread_t, clockid_t *);
int		pthread_join(pthread_t, void **);
int		pthread_key_create(pthread_key_t *, void (*) (void *));
int		pthread_key_delete(pthread_key_t);
int		pthread_mutexattr_init(pthread_mutexattr_t *);
int		pthread_mutexattr_destroy(pthread_mutexattr_t *);
int		pthread_mutexattr_getpshared(
		    const pthread_mutexattr_t * __restrict,
		    int * __restrict);
int		pthread_mutexattr_gettype(
		    const pthread_mutexattr_t * __restrict, int * __restrict);
int		pthread_mutexattr_settype(pthread_mutexattr_t *, int);
int		pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
int		pthread_mutex_consistent(pthread_mutex_t * __mutex)
		    __requires_exclusive(*__mutex);
int		pthread_mutex_destroy(pthread_mutex_t * __mutex)
		    __requires_unlocked(*__mutex);
int		pthread_mutex_init(pthread_mutex_t * __restrict __mutex,
		    const pthread_mutexattr_t * __restrict)
		    __requires_unlocked(*__mutex);
int		pthread_mutex_lock(pthread_mutex_t * __mutex)
		    __locks_exclusive(*__mutex);
int		pthread_mutex_trylock(pthread_mutex_t * __mutex)
		    __trylocks_exclusive(0, *__mutex);
int		pthread_mutex_timedlock(pthread_mutex_t * __restrict __mutex,
		    const struct timespec * __restrict)
		    __trylocks_exclusive(0, *__mutex);
int		pthread_mutex_unlock(pthread_mutex_t * __mutex)
		    __unlocks(*__mutex);
int		pthread_once(pthread_once_t *, void (*) (void));
int		pthread_rwlock_destroy(pthread_rwlock_t * __rwlock)
		    __requires_unlocked(*__rwlock);
int		pthread_rwlock_init(pthread_rwlock_t * __restrict __rwlock,
		    const pthread_rwlockattr_t * __restrict)
		    __requires_unlocked(*__rwlock);
int		pthread_rwlock_rdlock(pthread_rwlock_t * __rwlock)
		    __locks_shared(*__rwlock);
int		pthread_rwlock_timedrdlock(
		    pthread_rwlock_t * __restrict __rwlock,
		    const struct timespec * __restrict)
		    __trylocks_shared(0, *__rwlock);
int		pthread_rwlock_timedwrlock(
		    pthread_rwlock_t * __restrict __rwlock,
		    const struct timespec * __restrict)
		    __trylocks_exclusive(0, *__rwlock);
int		pthread_rwlock_tryrdlock(pthread_rwlock_t * __rwlock)
		    __trylocks_shared(0, *__rwlock);
int		pthread_rwlock_trywrlock(pthread_rwlock_t * __rwlock)
		    __trylocks_exclusive(0, *__rwlock);
int		pthread_rwlock_unlock(pthread_rwlock_t * __rwlock)
		    __unlocks(*__rwlock);
int		pthread_rwlock_wrlock(pthread_rwlock_t * __rwlock)
		    __locks_exclusive(*__rwlock);
int		pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
int		pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *,
		    int *);
int		pthread_rwlockattr_getpshared(
		    const pthread_rwlockattr_t * __restrict,
		    int * __restrict);
int		pthread_rwlockattr_init(pthread_rwlockattr_t *);
int		pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *,
		    int);
int		pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
pthread_t	pthread_self(void);
int		pthread_setspecific(pthread_key_t, const void *);

int		pthread_spin_init(pthread_spinlock_t * __spin, int)
		    __requires_unlocked(*__spin);
int		pthread_spin_destroy(pthread_spinlock_t * __spin)
		    __requires_unlocked(*__spin);
int		pthread_spin_lock(pthread_spinlock_t * __spin)
			__locks_exclusive(*__spin);
int		pthread_spin_trylock(pthread_spinlock_t * __spin)
			__trylocks_exclusive(0, *__spin);
int		pthread_spin_unlock(pthread_spinlock_t * __spin)
			__unlocks(*__spin);
int		pthread_cancel(pthread_t);
int		pthread_setcancelstate(int, int *);
int		pthread_setcanceltype(int, int *);
void		pthread_testcancel(void);

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
int		pthread_getprio(pthread_t);
int		pthread_setprio(pthread_t, int);
void		pthread_yield(void);

int		pthread_getname_np(pthread_t, char *, size_t);
int		pthread_setname_np(pthread_t, const char *);
#endif
# 308 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4

int		pthread_mutexattr_getprioceiling(
		    const pthread_mutexattr_t * __restrict,
		    int * __restrict);
int		pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
int		pthread_mutex_getprioceiling(const pthread_mutex_t * __restrict,
		    int * __restrict);
int		pthread_mutex_setprioceiling(pthread_mutex_t * __restrict, int,
		    int * __restrict);

int		pthread_mutexattr_getprotocol(
		    const pthread_mutexattr_t * __restrict,
		    int * __restrict);
int		pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);

int		pthread_mutexattr_getrobust(
		    pthread_mutexattr_t * __restrict, int * __restrict);
int		pthread_mutexattr_setrobust(pthread_mutexattr_t *, int);

int		pthread_attr_getinheritsched(const pthread_attr_t * __restrict,
		    int * __restrict);
int		pthread_attr_getschedparam(const pthread_attr_t *,
		    struct sched_param *);
int		pthread_attr_getschedpolicy(const pthread_attr_t * __restrict,
		    int * __restrict);
int		pthread_attr_getscope(const pthread_attr_t * __restrict,
		    int * __restrict);
int		pthread_attr_setinheritsched(pthread_attr_t *, int);
int		pthread_attr_setschedparam(pthread_attr_t *,
		    const struct sched_param *);
int		pthread_attr_setschedpolicy(pthread_attr_t *, int);
int		pthread_attr_setscope(pthread_attr_t *, int);
int		pthread_getschedparam(pthread_t pthread, int * __restrict,
		    struct sched_param * __restrict);
int		pthread_setschedparam(pthread_t, int,
		    const struct sched_param *);
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
int		pthread_getconcurrency(void);
int		pthread_setconcurrency(int);
#endif
# 348 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4

void		__pthread_cleanup_push_imp(void (*)(void *), void *,
			struct _pthread_cleanup_info *);
void		__pthread_cleanup_pop_imp(int);
__END_DECLS

#endif	/* !_PTHREAD_H_ */
# 355 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/pthread.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 2 3
#if 0 /* expanded by -frewrite-includes */
# include <sched.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# ifndef _LIBCPP_NO_NATIVE_SEMAPHORES
#if 0 /* expanded by -frewrite-includes */
#   include <semaphore.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2010 David Xu <davidxu@freebsd.org>
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

/* semaphore.h: POSIX 1003.1b semaphores */

#ifndef _SEMAPHORE_H_
#define _SEMAPHORE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_umtx.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2010, David Xu <davidxu@freebsd.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 *
 */

#ifndef _SYS__UMTX_H_
#define	_SYS__UMTX_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4

struct umtx {
	volatile unsigned long	u_owner;	/* Owner of the mutex. */
};

struct umutex {
	volatile __lwpid_t	m_owner;	/* Owner of the mutex */
	__uint32_t		m_flags;	/* Flags of the mutex */
	__uint32_t		m_ceilings[2];	/* Priority protect ceiling */
	__uintptr_t		m_rb_lnk;	/* Robust linkage */
#ifndef __LP64__
	__uint32_t		m_pad;
#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4
	__uint32_t		m_spare[2];
};

struct ucond {
	volatile __uint32_t	c_has_waiters;	/* Has waiters in kernel */
	__uint32_t		c_flags;	/* Flags of the condition variable */
	__uint32_t              c_clockid;	/* Clock id */
	__uint32_t              c_spare[1];	/* Spare space */
};

struct urwlock {
	volatile __int32_t	rw_state;
	__uint32_t		rw_flags;
	__uint32_t		rw_blocked_readers;
	__uint32_t		rw_blocked_writers;
	__uint32_t		rw_spare[4];
};

struct _usem {
	volatile __uint32_t	_has_waiters;
	volatile __uint32_t	_count;
	__uint32_t		_flags;
};

struct _usem2 {
	volatile __uint32_t	_count;		/* Waiters flag in high bit. */
	__uint32_t		_flags;
};

struct _umtx_time {
	struct timespec		_timeout;
	__uint32_t		_flags;
	__uint32_t		_clockid;
};

#endif /* !_SYS__UMTX_H_ */
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_umtx.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 2 3 4

#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4

struct _sem {
	__uint32_t	_magic;
	struct _usem2	_kern;
	__uint32_t	_padding;	/* Preserve structure size */
};

typedef	struct _sem	sem_t;

#define	SEM_FAILED	((sem_t *)0)
#define	SEM_VALUE_MAX	__INT_MAX

struct timespec;

__BEGIN_DECLS
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
int	 sem_clockwait_np(sem_t * __restrict, __clockid_t, int,
	    const struct timespec *, struct timespec *);
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
int	 sem_close(sem_t *);
int	 sem_destroy(sem_t *);
int	 sem_getvalue(sem_t * __restrict, int * __restrict);
int	 sem_init(sem_t *, int, unsigned int);
sem_t	*sem_open(const char *, int, ...);
int	 sem_post(sem_t *);
int	 sem_timedwait(sem_t * __restrict, const struct timespec * __restrict);
int	 sem_trywait(sem_t *);
int	 sem_unlink(const char *);
int	 sem_wait(sem_t *);
__END_DECLS

#endif /* !_SEMAPHORE_H_ */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/semaphore.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 2 3
# endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_HAS_THREAD_API_C11)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#if 0 /* expanded by -frewrite-includes */
# include <threads.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
    defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL) || \
    defined(_LIBCPP_HAS_THREAD_API_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#define _LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_FUNC_VIS
#else
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#define _LIBCPP_THREAD_ABI_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__FreeBSD__) && defined(__clang__) && __has_attribute(no_thread_safety_analysis)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS __attribute__((no_thread_safety_analysis))
#else
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
#define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

typedef ::timespec __libcpp_timespec_t;
#endif // !defined(_LIBCPP_HAS_NO_THREADS)
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
// Mutex
typedef pthread_mutex_t __libcpp_mutex_t;
#define _LIBCPP_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER

typedef pthread_mutex_t __libcpp_recursive_mutex_t;

// Condition Variable
typedef pthread_cond_t __libcpp_condvar_t;
#define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER

#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES
// Semaphore
typedef sem_t __libcpp_semaphore_t;
# define _LIBCPP_SEMAPHORE_MAX SEM_VALUE_MAX
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Execute once
typedef pthread_once_t __libcpp_exec_once_flag;
#define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT

// Thread id
#if 0 /* disabled by -frewrite-includes */
#if defined(__MVS__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
  typedef unsigned long long __libcpp_thread_id;
#else
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
  typedef pthread_t __libcpp_thread_id;
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Thread
#define _LIBCPP_NULL_THREAD ((__libcpp_thread_t()))
typedef pthread_t __libcpp_thread_t;

// Thread Local Storage
typedef pthread_key_t __libcpp_tls_key;

#define _LIBCPP_TLS_DESTRUCTOR_CC
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_HAS_THREAD_API_C11)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
// Mutex
typedef mtx_t __libcpp_mutex_t;
// mtx_t is a struct so using {} for initialization is valid.
#define _LIBCPP_MUTEX_INITIALIZER {}

typedef mtx_t __libcpp_recursive_mutex_t;

// Condition Variable
typedef cnd_t __libcpp_condvar_t;
// cnd_t is a struct so using {} for initialization is valid.
#define _LIBCPP_CONDVAR_INITIALIZER {}

// Execute once
typedef once_flag __libcpp_exec_once_flag;
#define _LIBCPP_EXEC_ONCE_INITIALIZER ONCE_FLAG_INIT

// Thread id
typedef thrd_t __libcpp_thread_id;

// Thread
#define _LIBCPP_NULL_THREAD 0U

typedef thrd_t __libcpp_thread_t;

// Thread Local Storage
typedef tss_t __libcpp_tls_key;

#define _LIBCPP_TLS_DESTRUCTOR_CC
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
// Mutex
typedef void* __libcpp_mutex_t;
#define _LIBCPP_MUTEX_INITIALIZER 0

#if 0 /* disabled by -frewrite-includes */
#if defined(_M_IX86) || defined(__i386__) || defined(_M_ARM) || defined(__arm__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
typedef void* __libcpp_recursive_mutex_t[6];
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_M_AMD64) || defined(__x86_64__) || defined(_M_ARM64) || defined(__aarch64__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
typedef void* __libcpp_recursive_mutex_t[5];
#else
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# error Unsupported architecture
#endif
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Condition Variable
typedef void* __libcpp_condvar_t;
#define _LIBCPP_CONDVAR_INITIALIZER 0

// Semaphore
typedef void* __libcpp_semaphore_t;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_WIN32)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# define _LIBCPP_SEMAPHORE_MAX (::std::numeric_limits<long>::max())
#endif
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Execute Once
typedef void* __libcpp_exec_once_flag;
#define _LIBCPP_EXEC_ONCE_INITIALIZER 0

// Thread ID
typedef long __libcpp_thread_id;

// Thread
#define _LIBCPP_NULL_THREAD 0U

typedef void* __libcpp_thread_t;

// Thread Local Storage
typedef long __libcpp_tls_key;

#define _LIBCPP_TLS_DESTRUCTOR_CC __stdcall
#endif // !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
# 175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
// Mutex
_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_mutex_lock(__libcpp_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_mutex_unlock(__libcpp_mutex_t *__m);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_mutex_destroy(__libcpp_mutex_t *__m);

// Condition variable
_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_condvar_signal(__libcpp_condvar_t* __cv);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_condvar_broadcast(__libcpp_condvar_t* __cv);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_condvar_wait(__libcpp_condvar_t* __cv, __libcpp_mutex_t* __m);

_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m,
                               __libcpp_timespec_t *__ts);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv);

#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES

// Semaphore
_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_semaphore_init(__libcpp_semaphore_t* __sem, int __init);

_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_semaphore_destroy(__libcpp_semaphore_t* __sem);

_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_semaphore_post(__libcpp_semaphore_t* __sem);

_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_semaphore_wait(__libcpp_semaphore_t* __sem);

_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_semaphore_wait_timed(__libcpp_semaphore_t* __sem, chrono::nanoseconds const& __ns);

#endif // _LIBCPP_NO_NATIVE_SEMAPHORES
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Execute once
_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_execute_once(__libcpp_exec_once_flag *flag,
                          void (*init_routine)());

// Thread id
_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id t2);

_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_thread_id_less(__libcpp_thread_id t1, __libcpp_thread_id t2);

// Thread
_LIBCPP_THREAD_ABI_VISIBILITY
bool __libcpp_thread_isnull(const __libcpp_thread_t *__t);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *),
                           void *__arg);

_LIBCPP_THREAD_ABI_VISIBILITY
__libcpp_thread_id __libcpp_thread_get_current_id();

_LIBCPP_THREAD_ABI_VISIBILITY
__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_thread_join(__libcpp_thread_t *__t);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_thread_detach(__libcpp_thread_t *__t);

_LIBCPP_THREAD_ABI_VISIBILITY
void __libcpp_thread_yield();

_LIBCPP_THREAD_ABI_VISIBILITY
void __libcpp_thread_sleep_for(const chrono::nanoseconds& __ns);

// Thread local storage
_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_tls_create(__libcpp_tls_key* __key,
                        void(_LIBCPP_TLS_DESTRUCTOR_CC* __at_exit)(void*));

_LIBCPP_THREAD_ABI_VISIBILITY
void *__libcpp_tls_get(__libcpp_tls_key __key);

_LIBCPP_THREAD_ABI_VISIBILITY
int __libcpp_tls_set(__libcpp_tls_key __key, void *__p);

#endif // !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

struct __libcpp_timed_backoff_policy {
  _LIBCPP_INLINE_VISIBILITY
  bool operator()(chrono::nanoseconds __elapsed) const
  {
      if(__elapsed > chrono::milliseconds(128))
          __libcpp_thread_sleep_for(chrono::milliseconds(8));
      else if(__elapsed > chrono::microseconds(64))
          __libcpp_thread_sleep_for(__elapsed / 2);
      else if(__elapsed > chrono::microseconds(4))
        __libcpp_thread_yield();
      else
        {} // poll
      return false;
  }
};

static _LIBCPP_CONSTEXPR const int __libcpp_polling_count = 64;

template<class _Fn, class _BFn>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
bool __libcpp_thread_poll_with_backoff(
  _Fn && __f, _BFn && __bf, chrono::nanoseconds __max_elapsed = chrono::nanoseconds::zero())
{
    auto const __start = chrono::high_resolution_clock::now();
    for(int __count = 0;;) {
      if(__f())
        return true; // _Fn completion means success
      if(__count < __libcpp_polling_count) {
        __count += 1;
        continue;
      }
      chrono::nanoseconds const __elapsed = chrono::high_resolution_clock::now() - __start;
      if(__max_elapsed != chrono::nanoseconds::zero() && __max_elapsed < __elapsed)
          return false; // timeout failure
      if(__bf(__elapsed))
        return false; // _BFn completion means failure
    }
}

#if 0 /* disabled by -frewrite-includes */
#if (!defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
     defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 334 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3


namespace __thread_detail {

inline __libcpp_timespec_t __convert_to_timespec(const chrono::nanoseconds& __ns)
{
  using namespace chrono;
  seconds __s = duration_cast<seconds>(__ns);
  __libcpp_timespec_t __ts;
  typedef decltype(__ts.tv_sec) __ts_sec;
  const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max();

  if (__s.count() < __ts_sec_max)
  {
    __ts.tv_sec = static_cast<__ts_sec>(__s.count());
    __ts.tv_nsec = static_cast<decltype(__ts.tv_nsec)>((__ns - __s).count());
  }
  else
  {
    __ts.tv_sec = __ts_sec_max;
    __ts.tv_nsec = 999999999; // (10^9 - 1)
  }

  return __ts;
}

}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 363 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m)
{
  pthread_mutexattr_t attr;
  int __ec = pthread_mutexattr_init(&attr);
  if (__ec)
    return __ec;
  __ec = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  if (__ec) {
    pthread_mutexattr_destroy(&attr);
    return __ec;
  }
  __ec = pthread_mutex_init(__m, &attr);
  if (__ec) {
    pthread_mutexattr_destroy(&attr);
    return __ec;
  }
  __ec = pthread_mutexattr_destroy(&attr);
  if (__ec) {
    pthread_mutex_destroy(__m);
    return __ec;
  }
  return 0;
}

int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m)
{
  return pthread_mutex_lock(__m);
}

bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
{
  return pthread_mutex_trylock(__m) == 0;
}

int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m)
{
  return pthread_mutex_unlock(__m);
}

int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m)
{
  return pthread_mutex_destroy(__m);
}

int __libcpp_mutex_lock(__libcpp_mutex_t *__m)
{
  return pthread_mutex_lock(__m);
}

bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
{
  return pthread_mutex_trylock(__m) == 0;
}

int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
{
  return pthread_mutex_unlock(__m);
}

int __libcpp_mutex_destroy(__libcpp_mutex_t *__m)
{
  return pthread_mutex_destroy(__m);
}

// Condition Variable
int __libcpp_condvar_signal(__libcpp_condvar_t *__cv)
{
  return pthread_cond_signal(__cv);
}

int __libcpp_condvar_broadcast(__libcpp_condvar_t *__cv)
{
  return pthread_cond_broadcast(__cv);
}

int __libcpp_condvar_wait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m)
{
  return pthread_cond_wait(__cv, __m);
}

int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m,
                               __libcpp_timespec_t *__ts)
{
  return pthread_cond_timedwait(__cv, __m, __ts);
}

int __libcpp_condvar_destroy(__libcpp_condvar_t *__cv)
{
  return pthread_cond_destroy(__cv);
}

#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES

// Semaphore
bool __libcpp_semaphore_init(__libcpp_semaphore_t* __sem, int __init)
{
    return sem_init(__sem, 0, __init) == 0;
}

bool __libcpp_semaphore_destroy(__libcpp_semaphore_t* __sem)
{
    return sem_destroy(__sem) == 0;
}

bool __libcpp_semaphore_post(__libcpp_semaphore_t* __sem)
{
    return sem_post(__sem) == 0;
}

bool __libcpp_semaphore_wait(__libcpp_semaphore_t* __sem)
{
    return sem_wait(__sem) == 0;
}

bool __libcpp_semaphore_wait_timed(__libcpp_semaphore_t* __sem, chrono::nanoseconds const& __ns)
{
    auto const __abs_time = chrono::system_clock::now().time_since_epoch() + __ns;
    __libcpp_timespec_t __ts = __thread_detail::__convert_to_timespec(__abs_time);
    return sem_timedwait(__sem, &__ts) == 0;
}

#endif //_LIBCPP_NO_NATIVE_SEMAPHORES
# 486 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

// Execute once
int __libcpp_execute_once(__libcpp_exec_once_flag *flag,
                          void (*init_routine)()) {
  return pthread_once(flag, init_routine);
}

// Thread id
// Returns non-zero if the thread ids are equal, otherwise 0
bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id t2)
{
  return t1 == t2;
}

// Returns non-zero if t1 < t2, otherwise 0
bool __libcpp_thread_id_less(__libcpp_thread_id t1, __libcpp_thread_id t2)
{
  return t1 < t2;
}

// Thread
bool __libcpp_thread_isnull(const __libcpp_thread_t *__t) {
  return __libcpp_thread_get_id(__t) == 0;
}

int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *),
                           void *__arg)
{
  return pthread_create(__t, nullptr, __func, __arg);
}

__libcpp_thread_id __libcpp_thread_get_current_id()
{
  const __libcpp_thread_t thread = pthread_self();
  return __libcpp_thread_get_id(&thread);
}

__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t)
{
#if 0 /* disabled by -frewrite-includes */
#if defined(__MVS__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
  return __t->__;
#else
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
  return *__t;
#endif
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
}

int __libcpp_thread_join(__libcpp_thread_t *__t)
{
  return pthread_join(*__t, nullptr);
}

int __libcpp_thread_detach(__libcpp_thread_t *__t)
{
  return pthread_detach(*__t);
}

void __libcpp_thread_yield()
{
  sched_yield();
}

void __libcpp_thread_sleep_for(const chrono::nanoseconds& __ns)
{
   __libcpp_timespec_t __ts = __thread_detail::__convert_to_timespec(__ns);
   while (nanosleep(&__ts, &__ts) == -1 && errno == EINTR);
}

// Thread local storage
int __libcpp_tls_create(__libcpp_tls_key *__key, void (*__at_exit)(void *))
{
  return pthread_key_create(__key, __at_exit);
}

void *__libcpp_tls_get(__libcpp_tls_key __key)
{
  return pthread_getspecific(__key);
}

int __libcpp_tls_set(__libcpp_tls_key __key, void *__p)
{
    return pthread_setspecific(__key, __p);
}

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_HAS_THREAD_API_C11)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 570 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m)
{
  return mtx_init(__m, mtx_plain | mtx_recursive) == thrd_success ? 0 : EINVAL;
}

int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m)
{
  return mtx_lock(__m) == thrd_success ? 0 : EINVAL;
}

bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
{
  return mtx_trylock(__m) == thrd_success;
}

int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m)
{
  return mtx_unlock(__m) == thrd_success ? 0 : EINVAL;
}

int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m)
{
  mtx_destroy(__m);
  return 0;
}

int __libcpp_mutex_lock(__libcpp_mutex_t *__m)
{
  return mtx_lock(__m) == thrd_success ? 0 : EINVAL;
}

bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
{
  return mtx_trylock(__m) == thrd_success;
}

int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
{
  return mtx_unlock(__m) == thrd_success ? 0 : EINVAL;
}

int __libcpp_mutex_destroy(__libcpp_mutex_t *__m)
{
  mtx_destroy(__m);
  return 0;
}

// Condition Variable
int __libcpp_condvar_signal(__libcpp_condvar_t *__cv)
{
  return cnd_signal(__cv) == thrd_success ? 0 : EINVAL;
}

int __libcpp_condvar_broadcast(__libcpp_condvar_t *__cv)
{
  return cnd_broadcast(__cv) == thrd_success ? 0 : EINVAL;
}

int __libcpp_condvar_wait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m)
{
  return cnd_wait(__cv, __m) == thrd_success ? 0 : EINVAL;
}

int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m,
                               timespec *__ts)
{
  int __ec = cnd_timedwait(__cv, __m, __ts);
  return __ec == thrd_timedout ? ETIMEDOUT : __ec;
}

int __libcpp_condvar_destroy(__libcpp_condvar_t *__cv)
{
  cnd_destroy(__cv);
  return 0;
}

// Execute once
int __libcpp_execute_once(__libcpp_exec_once_flag *flag,
                          void (*init_routine)(void)) {
  ::call_once(flag, init_routine);
  return 0;
}

// Thread id
// Returns non-zero if the thread ids are equal, otherwise 0
bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id t2)
{
  return thrd_equal(t1, t2) != 0;
}

// Returns non-zero if t1 < t2, otherwise 0
bool __libcpp_thread_id_less(__libcpp_thread_id t1, __libcpp_thread_id t2)
{
  return t1 < t2;
}

// Thread
bool __libcpp_thread_isnull(const __libcpp_thread_t *__t) {
  return __libcpp_thread_get_id(__t) == 0;
}

int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *),
                           void *__arg)
{
  int __ec = thrd_create(__t, reinterpret_cast<thrd_start_t>(__func), __arg);
  return __ec == thrd_nomem ? ENOMEM : __ec;
}

__libcpp_thread_id __libcpp_thread_get_current_id()
{
  return thrd_current();
}

__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t)
{
  return *__t;
}

int __libcpp_thread_join(__libcpp_thread_t *__t)
{
  return thrd_join(*__t, nullptr) == thrd_success ? 0 : EINVAL;
}

int __libcpp_thread_detach(__libcpp_thread_t *__t)
{
  return thrd_detach(*__t) == thrd_success ? 0 : EINVAL;
}

void __libcpp_thread_yield()
{
  thrd_yield();
}

void __libcpp_thread_sleep_for(const chrono::nanoseconds& __ns)
{
   __libcpp_timespec_t __ts = __thread_detail::__convert_to_timespec(__ns);
  thrd_sleep(&__ts, nullptr);
}

// Thread local storage
int __libcpp_tls_create(__libcpp_tls_key *__key, void (*__at_exit)(void *))
{
  return tss_create(__key, __at_exit) == thrd_success ? 0 : EINVAL;
}

void *__libcpp_tls_get(__libcpp_tls_key __key)
{
  return tss_get(__key);
}

int __libcpp_tls_set(__libcpp_tls_key __key, void *__p)
{
  return tss_set(__key, __p) == thrd_success ? 0 : EINVAL;
}

#endif
# 727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3


#endif // !_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL || _LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL
# 730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

class _LIBCPP_TYPE_VIS thread;
class _LIBCPP_TYPE_VIS __thread_id;

namespace this_thread
{

_LIBCPP_INLINE_VISIBILITY __thread_id get_id() _NOEXCEPT;

}  // this_thread

template<> struct hash<__thread_id>;

class _LIBCPP_TEMPLATE_VIS __thread_id
{
    // FIXME: pthread_t is a pointer on Darwin but a long on Linux.
    // NULL is the no-thread value on Darwin.  Someone needs to check
    // on other platforms.  We assume 0 works everywhere for now.
    __libcpp_thread_id __id_;

public:
    _LIBCPP_INLINE_VISIBILITY
    __thread_id() _NOEXCEPT : __id_(0) {}

    friend _LIBCPP_INLINE_VISIBILITY
        bool operator==(__thread_id __x, __thread_id __y) _NOEXCEPT
        { // don't pass id==0 to underlying routines
        if (__x.__id_ == 0) return __y.__id_ == 0;
        if (__y.__id_ == 0) return false;
        return __libcpp_thread_id_equal(__x.__id_, __y.__id_);
        }
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator!=(__thread_id __x, __thread_id __y) _NOEXCEPT
        {return !(__x == __y);}
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator< (__thread_id __x, __thread_id __y) _NOEXCEPT
        { // id==0 is always less than any other thread_id
        if (__x.__id_ == 0) return __y.__id_ != 0;
        if (__y.__id_ == 0) return false;
        return  __libcpp_thread_id_less(__x.__id_, __y.__id_);
        }
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator<=(__thread_id __x, __thread_id __y) _NOEXCEPT
        {return !(__y < __x);}
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator> (__thread_id __x, __thread_id __y) _NOEXCEPT
        {return   __y < __x ;}
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator>=(__thread_id __x, __thread_id __y) _NOEXCEPT
        {return !(__x < __y);}

    _LIBCPP_INLINE_VISIBILITY
    void __reset() { __id_ = 0; }

    template<class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, __thread_id __id);

private:
    _LIBCPP_INLINE_VISIBILITY
    __thread_id(__libcpp_thread_id __id) : __id_(__id) {}

    friend __thread_id this_thread::get_id() _NOEXCEPT;
    friend class _LIBCPP_TYPE_VIS thread;
    friend struct _LIBCPP_TEMPLATE_VIS hash<__thread_id>;
};

namespace this_thread
{

inline _LIBCPP_INLINE_VISIBILITY
__thread_id
get_id() _NOEXCEPT
{
    return __libcpp_thread_get_current_id();
}

}  // this_thread

#endif // !_LIBCPP_HAS_NO_THREADS
# 812 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_THREADING_SUPPORT
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__threading_support" 3
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 588 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#endif
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#ifdef _LIBCPP_HAS_NO_THREADS
# error <atomic> is not supported on this single threaded system
#endif
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#ifdef _LIBCPP_HAS_NO_ATOMIC_HEADER
# error <atomic> is not implemented
#endif
# 599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
#ifdef kill_dependency
# error C++ standard library is incompatible with <stdatomic.h>
#endif
# 602 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#define _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) \
  _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_consume || \
                           __m == memory_order_acquire || \
                           __m == memory_order_acq_rel,   \
                        "memory order argument to atomic operation is invalid")

#define _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) \
  _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_release || \
                           __m == memory_order_acq_rel,   \
                        "memory order argument to atomic operation is invalid")

#define _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__m, __f) \
  _LIBCPP_DIAGNOSE_WARNING(__f == memory_order_release || \
                           __f == memory_order_acq_rel,   \
                        "memory order argument to atomic operation is invalid")

_LIBCPP_BEGIN_NAMESPACE_STD

// Figure out what the underlying type for `memory_order` would be if it were
// declared as an unscoped enum (accounting for -fshort-enums). Use this result
// to pin the underlying type in C++20.
enum __legacy_memory_order {
    __mo_relaxed,
    __mo_consume,
    __mo_acquire,
    __mo_release,
    __mo_acq_rel,
    __mo_seq_cst
};

typedef underlying_type<__legacy_memory_order>::type __memory_order_underlying_t;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 636 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

enum class memory_order : __memory_order_underlying_t {
  relaxed = __mo_relaxed,
  consume = __mo_consume,
  acquire = __mo_acquire,
  release = __mo_release,
  acq_rel = __mo_acq_rel,
  seq_cst = __mo_seq_cst
};

inline constexpr auto memory_order_relaxed = memory_order::relaxed;
inline constexpr auto memory_order_consume = memory_order::consume;
inline constexpr auto memory_order_acquire = memory_order::acquire;
inline constexpr auto memory_order_release = memory_order::release;
inline constexpr auto memory_order_acq_rel = memory_order::acq_rel;
inline constexpr auto memory_order_seq_cst = memory_order::seq_cst;

#else
# 654 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

typedef enum memory_order {
  memory_order_relaxed = __mo_relaxed,
  memory_order_consume = __mo_consume,
  memory_order_acquire = __mo_acquire,
  memory_order_release = __mo_release,
  memory_order_acq_rel = __mo_acq_rel,
  memory_order_seq_cst = __mo_seq_cst,
} memory_order;

#endif // _LIBCPP_STD_VER > 17
# 665 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <typename _Tp> _LIBCPP_INLINE_VISIBILITY
bool __cxx_nonatomic_compare_equal(_Tp const& __lhs, _Tp const& __rhs) {
    return _VSTD::memcmp(&__lhs, &__rhs, sizeof(_Tp)) == 0;
}

static_assert((is_same<underlying_type<memory_order>::type, __memory_order_underlying_t>::value),
  "unexpected underlying type for std::memory_order");

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) || \
    defined(_LIBCPP_ATOMIC_ONLY_USE_BUILTINS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

// [atomics.types.generic]p1 guarantees _Tp is trivially copyable. Because
// the default operator= in an object is not volatile, a byte-by-byte copy
// is required.
template <typename _Tp, typename _Tv> _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_assignable<_Tp&, _Tv>::value>::type
__cxx_atomic_assign_volatile(_Tp& __a_value, _Tv const& __val) {
  __a_value = __val;
}
template <typename _Tp, typename _Tv> _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_assignable<_Tp&, _Tv>::value>::type
__cxx_atomic_assign_volatile(_Tp volatile& __a_value, _Tv volatile const& __val) {
  volatile char* __to = reinterpret_cast<volatile char*>(&__a_value);
  volatile char* __end = __to + sizeof(_Tp);
  volatile const char* __from = reinterpret_cast<volatile const char*>(&__val);
  while (__to != __end)
    *__to++ = *__from++;
}

#endif
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_GCC_ATOMIC_IMP)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <typename _Tp>
struct __cxx_atomic_base_impl {

  _LIBCPP_INLINE_VISIBILITY
#ifndef _LIBCPP_CXX03_LANG
    __cxx_atomic_base_impl() _NOEXCEPT = default;
#else
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    __cxx_atomic_base_impl() _NOEXCEPT : __a_value() {}
#endif // _LIBCPP_CXX03_LANG
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
  _LIBCPP_CONSTEXPR explicit __cxx_atomic_base_impl(_Tp value) _NOEXCEPT
    : __a_value(value) {}
  _Tp __a_value;
};

_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR int __to_gcc_order(memory_order __order) {
  // Avoid switch statement to make this a constexpr.
  return __order == memory_order_relaxed ? __ATOMIC_RELAXED:
         (__order == memory_order_acquire ? __ATOMIC_ACQUIRE:
          (__order == memory_order_release ? __ATOMIC_RELEASE:
           (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST:
            (__order == memory_order_acq_rel ? __ATOMIC_ACQ_REL:
              __ATOMIC_CONSUME))));
}

_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR int __to_gcc_failure_order(memory_order __order) {
  // Avoid switch statement to make this a constexpr.
  return __order == memory_order_relaxed ? __ATOMIC_RELAXED:
         (__order == memory_order_acquire ? __ATOMIC_ACQUIRE:
          (__order == memory_order_release ? __ATOMIC_RELAXED:
           (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST:
            (__order == memory_order_acq_rel ? __ATOMIC_ACQUIRE:
              __ATOMIC_CONSUME))));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(volatile __cxx_atomic_base_impl<_Tp>* __a,  _Tp __val) {
  __cxx_atomic_assign_volatile(__a->__a_value, __val);
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp>* __a,  _Tp __val) {
  __a->__a_value = __val;
}

_LIBCPP_INLINE_VISIBILITY inline
void __cxx_atomic_thread_fence(memory_order __order) {
  __atomic_thread_fence(__to_gcc_order(__order));
}

_LIBCPP_INLINE_VISIBILITY inline
void __cxx_atomic_signal_fence(memory_order __order) {
  __atomic_signal_fence(__to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(volatile __cxx_atomic_base_impl<_Tp>* __a,  _Tp __val,
                        memory_order __order) {
  __atomic_store(&__a->__a_value, &__val,
                 __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp>* __a,  _Tp __val,
                        memory_order __order) {
  __atomic_store(&__a->__a_value, &__val,
                 __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(const volatile __cxx_atomic_base_impl<_Tp>* __a,
                      memory_order __order) {
  _Tp __ret;
  __atomic_load(&__a->__a_value, &__ret,
                __to_gcc_order(__order));
  return __ret;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(const __cxx_atomic_base_impl<_Tp>* __a, memory_order __order) {
  _Tp __ret;
  __atomic_load(&__a->__a_value, &__ret,
                __to_gcc_order(__order));
  return __ret;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(volatile __cxx_atomic_base_impl<_Tp>* __a,
                          _Tp __value, memory_order __order) {
  _Tp __ret;
  __atomic_exchange(&__a->__a_value, &__value, &__ret,
                    __to_gcc_order(__order));
  return __ret;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp>* __a, _Tp __value,
                          memory_order __order) {
  _Tp __ret;
  __atomic_exchange(&__a->__a_value, &__value, &__ret,
                    __to_gcc_order(__order));
  return __ret;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(
    volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value,
    memory_order __success, memory_order __failure) {
  return __atomic_compare_exchange(&__a->__a_value, __expected, &__value,
                                   false,
                                   __to_gcc_order(__success),
                                   __to_gcc_failure_order(__failure));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(
    __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, memory_order __success,
    memory_order __failure) {
  return __atomic_compare_exchange(&__a->__a_value, __expected, &__value,
                                   false,
                                   __to_gcc_order(__success),
                                   __to_gcc_failure_order(__failure));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(
    volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value,
    memory_order __success, memory_order __failure) {
  return __atomic_compare_exchange(&__a->__a_value, __expected, &__value,
                                   true,
                                   __to_gcc_order(__success),
                                   __to_gcc_failure_order(__failure));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(
    __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, memory_order __success,
    memory_order __failure) {
  return __atomic_compare_exchange(&__a->__a_value, __expected, &__value,
                                   true,
                                   __to_gcc_order(__success),
                                   __to_gcc_failure_order(__failure));
}

template <typename _Tp>
struct __skip_amt { enum {value = 1}; };

template <typename _Tp>
struct __skip_amt<_Tp*> { enum {value = sizeof(_Tp)}; };

// FIXME: Haven't figured out what the spec says about using arrays with
// atomic_fetch_add. Force a failure rather than creating bad behavior.
template <typename _Tp>
struct __skip_amt<_Tp[]> { };
template <typename _Tp, int n>
struct __skip_amt<_Tp[n]> { };

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(volatile __cxx_atomic_base_impl<_Tp>* __a,
                           _Td __delta, memory_order __order) {
  return __atomic_fetch_add(&__a->__a_value, __delta * __skip_amt<_Tp>::value,
                            __to_gcc_order(__order));
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp>* __a, _Td __delta,
                           memory_order __order) {
  return __atomic_fetch_add(&__a->__a_value, __delta * __skip_amt<_Tp>::value,
                            __to_gcc_order(__order));
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(volatile __cxx_atomic_base_impl<_Tp>* __a,
                           _Td __delta, memory_order __order) {
  return __atomic_fetch_sub(&__a->__a_value, __delta * __skip_amt<_Tp>::value,
                            __to_gcc_order(__order));
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp>* __a, _Td __delta,
                           memory_order __order) {
  return __atomic_fetch_sub(&__a->__a_value, __delta * __skip_amt<_Tp>::value,
                            __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(volatile __cxx_atomic_base_impl<_Tp>* __a,
                           _Tp __pattern, memory_order __order) {
  return __atomic_fetch_and(&__a->__a_value, __pattern,
                            __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp>* __a,
                           _Tp __pattern, memory_order __order) {
  return __atomic_fetch_and(&__a->__a_value, __pattern,
                            __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(volatile __cxx_atomic_base_impl<_Tp>* __a,
                          _Tp __pattern, memory_order __order) {
  return __atomic_fetch_or(&__a->__a_value, __pattern,
                           __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp>* __a, _Tp __pattern,
                          memory_order __order) {
  return __atomic_fetch_or(&__a->__a_value, __pattern,
                           __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(volatile __cxx_atomic_base_impl<_Tp>* __a,
                           _Tp __pattern, memory_order __order) {
  return __atomic_fetch_xor(&__a->__a_value, __pattern,
                            __to_gcc_order(__order));
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp>* __a, _Tp __pattern,
                           memory_order __order) {
  return __atomic_fetch_xor(&__a->__a_value, __pattern,
                            __to_gcc_order(__order));
}

#define __cxx_atomic_is_lock_free(__s) __atomic_is_lock_free(__s, 0)

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_HAS_C_ATOMIC_IMP)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 950 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <typename _Tp>
struct __cxx_atomic_base_impl {

  _LIBCPP_INLINE_VISIBILITY
#ifndef _LIBCPP_CXX03_LANG
    __cxx_atomic_base_impl() _NOEXCEPT = default;
#else
# 958 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    __cxx_atomic_base_impl() _NOEXCEPT : __a_value() {}
#endif // _LIBCPP_CXX03_LANG
# 960 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
  _LIBCPP_CONSTEXPR explicit __cxx_atomic_base_impl(_Tp value) _NOEXCEPT
    : __a_value(value) {}
  _LIBCPP_DISABLE_EXTENSION_WARNING _Atomic(_Tp) __a_value;
};

#define __cxx_atomic_is_lock_free(__s) __c11_atomic_is_lock_free(__s)

_LIBCPP_INLINE_VISIBILITY inline
void __cxx_atomic_thread_fence(memory_order __order) _NOEXCEPT {
    __c11_atomic_thread_fence(static_cast<__memory_order_underlying_t>(__order));
}

_LIBCPP_INLINE_VISIBILITY inline
void __cxx_atomic_signal_fence(memory_order __order) _NOEXCEPT {
    __c11_atomic_signal_fence(static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __val) _NOEXCEPT {
    __c11_atomic_init(&__a->__a_value, __val);
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp> * __a, _Tp __val) _NOEXCEPT {
    __c11_atomic_init(&__a->__a_value, __val);
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __val, memory_order __order) _NOEXCEPT {
    __c11_atomic_store(&__a->__a_value, __val, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp> * __a, _Tp __val, memory_order __order) _NOEXCEPT {
    __c11_atomic_store(&__a->__a_value, __val, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(__cxx_atomic_base_impl<_Tp> const volatile* __a, memory_order __order) _NOEXCEPT {
    using __ptr_type = typename remove_const<decltype(__a->__a_value)>::type*;
    return __c11_atomic_load(const_cast<__ptr_type>(&__a->__a_value), static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(__cxx_atomic_base_impl<_Tp> const* __a, memory_order __order) _NOEXCEPT {
    using __ptr_type = typename remove_const<decltype(__a->__a_value)>::type*;
    return __c11_atomic_load(const_cast<__ptr_type>(&__a->__a_value), static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __value, memory_order __order) _NOEXCEPT {
    return __c11_atomic_exchange(&__a->__a_value, __value, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp> * __a, _Tp __value, memory_order __order) _NOEXCEPT {
    return __c11_atomic_exchange(&__a->__a_value, __value, static_cast<__memory_order_underlying_t>(__order));
}

_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR memory_order __to_failure_order(memory_order __order) {
  // Avoid switch statement to make this a constexpr.
  return __order == memory_order_release ? memory_order_relaxed:
         (__order == memory_order_acq_rel ? memory_order_acquire:
             __order);
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT {
    return __c11_atomic_compare_exchange_strong(&__a->__a_value, __expected, __value, static_cast<__memory_order_underlying_t>(__success), static_cast<__memory_order_underlying_t>(__to_failure_order(__failure)));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_base_impl<_Tp> * __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT {
    return __c11_atomic_compare_exchange_strong(&__a->__a_value, __expected, __value, static_cast<__memory_order_underlying_t>(__success), static_cast<__memory_order_underlying_t>(__to_failure_order(__failure)));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT {
    return __c11_atomic_compare_exchange_weak(&__a->__a_value, __expected, __value, static_cast<__memory_order_underlying_t>(__success), static_cast<__memory_order_underlying_t>(__to_failure_order(__failure)));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_base_impl<_Tp> * __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT {
    return __c11_atomic_compare_exchange_weak(&__a->__a_value, __expected, __value,  static_cast<__memory_order_underlying_t>(__success), static_cast<__memory_order_underlying_t>(__to_failure_order(__failure)));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_add(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp> * __a, _Tp __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_add(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp*> volatile* __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_add(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp*> * __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_add(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_sub(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp> * __a, _Tp __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_sub(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp*> volatile* __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_sub(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp*> * __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_sub(&__a->__a_value, __delta, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_and(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_and(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_or(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_or(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}

template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_xor(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}
template<class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT {
    return __c11_atomic_fetch_xor(&__a->__a_value, __pattern, static_cast<__memory_order_underlying_t>(__order));
}

#endif // _LIBCPP_HAS_GCC_ATOMIC_IMP, _LIBCPP_HAS_C_ATOMIC_IMP
# 1129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp kill_dependency(_Tp __y) _NOEXCEPT
{
    return __y;
}

#if 0 /* disabled by -frewrite-includes */
#if defined(__CLANG_ATOMIC_BOOL_LOCK_FREE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# define ATOMIC_BOOL_LOCK_FREE      __CLANG_ATOMIC_BOOL_LOCK_FREE
# define ATOMIC_CHAR_LOCK_FREE      __CLANG_ATOMIC_CHAR_LOCK_FREE
#ifndef _LIBCPP_HAS_NO_CHAR8_T
# define ATOMIC_CHAR8_T_LOCK_FREE   __CLANG_ATOMIC_CHAR8_T_LOCK_FREE
#endif
# 1143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# define ATOMIC_CHAR16_T_LOCK_FREE  __CLANG_ATOMIC_CHAR16_T_LOCK_FREE
# define ATOMIC_CHAR32_T_LOCK_FREE  __CLANG_ATOMIC_CHAR32_T_LOCK_FREE
# define ATOMIC_WCHAR_T_LOCK_FREE   __CLANG_ATOMIC_WCHAR_T_LOCK_FREE
# define ATOMIC_SHORT_LOCK_FREE     __CLANG_ATOMIC_SHORT_LOCK_FREE
# define ATOMIC_INT_LOCK_FREE       __CLANG_ATOMIC_INT_LOCK_FREE
# define ATOMIC_LONG_LOCK_FREE      __CLANG_ATOMIC_LONG_LOCK_FREE
# define ATOMIC_LLONG_LOCK_FREE     __CLANG_ATOMIC_LLONG_LOCK_FREE
# define ATOMIC_POINTER_LOCK_FREE   __CLANG_ATOMIC_POINTER_LOCK_FREE
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GCC_ATOMIC_BOOL_LOCK_FREE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# define ATOMIC_BOOL_LOCK_FREE      __GCC_ATOMIC_BOOL_LOCK_FREE
# define ATOMIC_CHAR_LOCK_FREE      __GCC_ATOMIC_CHAR_LOCK_FREE
#ifndef _LIBCPP_HAS_NO_CHAR8_T
# define ATOMIC_CHAR8_T_LOCK_FREE   __GCC_ATOMIC_CHAR8_T_LOCK_FREE
#endif
# 1157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# define ATOMIC_CHAR16_T_LOCK_FREE  __GCC_ATOMIC_CHAR16_T_LOCK_FREE
# define ATOMIC_CHAR32_T_LOCK_FREE  __GCC_ATOMIC_CHAR32_T_LOCK_FREE
# define ATOMIC_WCHAR_T_LOCK_FREE   __GCC_ATOMIC_WCHAR_T_LOCK_FREE
# define ATOMIC_SHORT_LOCK_FREE     __GCC_ATOMIC_SHORT_LOCK_FREE
# define ATOMIC_INT_LOCK_FREE       __GCC_ATOMIC_INT_LOCK_FREE
# define ATOMIC_LONG_LOCK_FREE      __GCC_ATOMIC_LONG_LOCK_FREE
# define ATOMIC_LLONG_LOCK_FREE     __GCC_ATOMIC_LLONG_LOCK_FREE
# define ATOMIC_POINTER_LOCK_FREE   __GCC_ATOMIC_POINTER_LOCK_FREE
#endif
# 1166 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#ifdef _LIBCPP_ATOMIC_ONLY_USE_BUILTINS

template<typename _Tp>
struct __cxx_atomic_lock_impl {

  _LIBCPP_INLINE_VISIBILITY
  __cxx_atomic_lock_impl() _NOEXCEPT
    : __a_value(), __a_lock(0) {}
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR explicit
  __cxx_atomic_lock_impl(_Tp value) _NOEXCEPT
    : __a_value(value), __a_lock(0) {}

  _Tp __a_value;
  mutable __cxx_atomic_base_impl<_LIBCPP_ATOMIC_FLAG_TYPE> __a_lock;

  _LIBCPP_INLINE_VISIBILITY void __lock() const volatile {
    while(1 == __cxx_atomic_exchange(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(true), memory_order_acquire))
        /*spin*/;
  }
  _LIBCPP_INLINE_VISIBILITY void __lock() const {
    while(1 == __cxx_atomic_exchange(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(true), memory_order_acquire))
        /*spin*/;
  }
  _LIBCPP_INLINE_VISIBILITY void __unlock() const volatile {
    __cxx_atomic_store(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(false), memory_order_release);
  }
  _LIBCPP_INLINE_VISIBILITY void __unlock() const {
    __cxx_atomic_store(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(false), memory_order_release);
  }
  _LIBCPP_INLINE_VISIBILITY _Tp __read() const volatile {
    __lock();
    _Tp __old;
    __cxx_atomic_assign_volatile(__old, __a_value);
    __unlock();
    return __old;
  }
  _LIBCPP_INLINE_VISIBILITY _Tp __read() const {
    __lock();
    _Tp __old = __a_value;
    __unlock();
    return __old;
  }
};

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(volatile __cxx_atomic_lock_impl<_Tp>* __a,  _Tp __val) {
  __cxx_atomic_assign_volatile(__a->__a_value, __val);
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_init(__cxx_atomic_lock_impl<_Tp>* __a,  _Tp __val) {
  __a->__a_value = __val;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(volatile __cxx_atomic_lock_impl<_Tp>* __a,  _Tp __val, memory_order) {
  __a->__lock();
  __cxx_atomic_assign_volatile(__a->__a_value, __val);
  __a->__unlock();
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
void __cxx_atomic_store(__cxx_atomic_lock_impl<_Tp>* __a,  _Tp __val, memory_order) {
  __a->__lock();
  __a->__a_value = __val;
  __a->__unlock();
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(const volatile __cxx_atomic_lock_impl<_Tp>* __a, memory_order) {
  return __a->__read();
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_load(const __cxx_atomic_lock_impl<_Tp>* __a, memory_order) {
  return __a->__read();
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(volatile __cxx_atomic_lock_impl<_Tp>* __a, _Tp __value, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, __value);
  __a->__unlock();
  return __old;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_exchange(__cxx_atomic_lock_impl<_Tp>* __a, _Tp __value, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value = __value;
  __a->__unlock();
  return __old;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                                          _Tp* __expected, _Tp __value, memory_order, memory_order) {
  _Tp __temp;
  __a->__lock();
  __cxx_atomic_assign_volatile(__temp, __a->__a_value);
  bool __ret = (_VSTD::memcmp(&__temp, __expected, sizeof(_Tp)) == 0);
  if(__ret)
    __cxx_atomic_assign_volatile(__a->__a_value, __value);
  else
    __cxx_atomic_assign_volatile(*__expected, __a->__a_value);
  __a->__unlock();
  return __ret;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_lock_impl<_Tp>* __a,
                                          _Tp* __expected, _Tp __value, memory_order, memory_order) {
  __a->__lock();
  bool __ret = (_VSTD::memcmp(&__a->__a_value, __expected, sizeof(_Tp)) == 0);
  if(__ret)
    _VSTD::memcpy(&__a->__a_value, &__value, sizeof(_Tp));
  else
    _VSTD::memcpy(__expected, &__a->__a_value, sizeof(_Tp));
  __a->__unlock();
  return __ret;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                                        _Tp* __expected, _Tp __value, memory_order, memory_order) {
  _Tp __temp;
  __a->__lock();
  __cxx_atomic_assign_volatile(__temp, __a->__a_value);
  bool __ret = (_VSTD::memcmp(&__temp, __expected, sizeof(_Tp)) == 0);
  if(__ret)
    __cxx_atomic_assign_volatile(__a->__a_value, __value);
  else
    __cxx_atomic_assign_volatile(*__expected, __a->__a_value);
  __a->__unlock();
  return __ret;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_lock_impl<_Tp>* __a,
                                        _Tp* __expected, _Tp __value, memory_order, memory_order) {
  __a->__lock();
  bool __ret = (_VSTD::memcmp(&__a->__a_value, __expected, sizeof(_Tp)) == 0);
  if(__ret)
    _VSTD::memcpy(&__a->__a_value, &__value, sizeof(_Tp));
  else
    _VSTD::memcpy(__expected, &__a->__a_value, sizeof(_Tp));
  __a->__unlock();
  return __ret;
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                           _Td __delta, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old + __delta));
  __a->__unlock();
  return __old;
}
template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_add(__cxx_atomic_lock_impl<_Tp>* __a,
                           _Td __delta, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value += __delta;
  __a->__unlock();
  return __old;
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_add(volatile __cxx_atomic_lock_impl<_Tp*>* __a,
                           ptrdiff_t __delta, memory_order) {
  __a->__lock();
  _Tp* __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, __old + __delta);
  __a->__unlock();
  return __old;
}
template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp* __cxx_atomic_fetch_add(__cxx_atomic_lock_impl<_Tp*>* __a,
                           ptrdiff_t __delta, memory_order) {
  __a->__lock();
  _Tp* __old = __a->__a_value;
  __a->__a_value += __delta;
  __a->__unlock();
  return __old;
}

template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                           _Td __delta, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old - __delta));
  __a->__unlock();
  return __old;
}
template <typename _Tp, typename _Td>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_sub(__cxx_atomic_lock_impl<_Tp>* __a,
                           _Td __delta, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value -= __delta;
  __a->__unlock();
  return __old;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                           _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old & __pattern));
  __a->__unlock();
  return __old;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_and(__cxx_atomic_lock_impl<_Tp>* __a,
                           _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value &= __pattern;
  __a->__unlock();
  return __old;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                          _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old | __pattern));
  __a->__unlock();
  return __old;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_or(__cxx_atomic_lock_impl<_Tp>* __a,
                          _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value |= __pattern;
  __a->__unlock();
  return __old;
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(volatile __cxx_atomic_lock_impl<_Tp>* __a,
                           _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old;
  __cxx_atomic_assign_volatile(__old, __a->__a_value);
  __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old ^ __pattern));
  __a->__unlock();
  return __old;
}
template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __cxx_atomic_fetch_xor(__cxx_atomic_lock_impl<_Tp>* __a,
                           _Tp __pattern, memory_order) {
  __a->__lock();
  _Tp __old = __a->__a_value;
  __a->__a_value ^= __pattern;
  __a->__unlock();
  return __old;
}

#ifdef __cpp_lib_atomic_is_always_lock_free

template<typename _Tp> struct __cxx_is_always_lock_free {
    enum { __value = __atomic_always_lock_free(sizeof(_Tp), 0) }; };

#else
# 1464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template<typename _Tp> struct __cxx_is_always_lock_free { enum { __value = false }; };
// Implementations must match the C ATOMIC_*_LOCK_FREE macro values.
template<> struct __cxx_is_always_lock_free<bool> { enum { __value = 2 == ATOMIC_BOOL_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<signed char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<unsigned char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
#ifndef _LIBCPP_HAS_NO_CHAR8_T
template<> struct __cxx_is_always_lock_free<char8_t> { enum { __value = 2 == ATOMIC_CHAR8_T_LOCK_FREE }; };
#endif
# 1474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
template<> struct __cxx_is_always_lock_free<char16_t> { enum { __value = 2 == ATOMIC_CHAR16_T_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<char32_t> { enum { __value = 2 == ATOMIC_CHAR32_T_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<wchar_t> { enum { __value = 2 == ATOMIC_WCHAR_T_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<unsigned short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<int> { enum { __value = 2 == ATOMIC_INT_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<unsigned int> { enum { __value = 2 == ATOMIC_INT_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<long> { enum { __value = 2 == ATOMIC_LONG_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<unsigned long> { enum { __value = 2 == ATOMIC_LONG_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<long long> { enum { __value = 2 == ATOMIC_LLONG_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<unsigned long long> { enum { __value = 2 == ATOMIC_LLONG_LOCK_FREE }; };
template<typename _Tp> struct __cxx_is_always_lock_free<_Tp*> { enum { __value = 2 == ATOMIC_POINTER_LOCK_FREE }; };
template<> struct __cxx_is_always_lock_free<std::nullptr_t> { enum { __value = 2 == ATOMIC_POINTER_LOCK_FREE }; };

#endif //__cpp_lib_atomic_is_always_lock_free
# 1489 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <typename _Tp,
          typename _Base = typename conditional<__cxx_is_always_lock_free<_Tp>::__value,
                                                __cxx_atomic_base_impl<_Tp>,
                                                __cxx_atomic_lock_impl<_Tp> >::type>
#else
# 1495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
template <typename _Tp,
          typename _Base = __cxx_atomic_base_impl<_Tp> >
#endif //_LIBCPP_ATOMIC_ONLY_USE_BUILTINS
# 1498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
struct __cxx_atomic_impl : public _Base {

#if 0 /* disabled by -frewrite-includes */
#if _GNUC_VER >= 501
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    static_assert(is_trivially_copyable<_Tp>::value,
      "std::atomic<Tp> requires that 'Tp' be a trivially copyable type");
#endif
# 1504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

  _LIBCPP_INLINE_VISIBILITY __cxx_atomic_impl() _NOEXCEPT _LIBCPP_DEFAULT
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR explicit __cxx_atomic_impl(_Tp value) _NOEXCEPT
    : _Base(value) {}
};

#if 0 /* disabled by -frewrite-includes */
#if defined(__linux__) || (defined(__FreeBSD__) && defined(__mips__))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    using __cxx_contention_t = int32_t;
#else
# 1513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    using __cxx_contention_t = int64_t;
#endif
# 1515 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

using __cxx_atomic_contention_t = __cxx_atomic_impl<__cxx_contention_t>;

#ifndef _LIBCPP_HAS_NO_PLATFORM_WAIT

_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(void const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(void const volatile*, __cxx_contention_t);

_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_contention_t const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_contention_t const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile*);
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(__cxx_atomic_contention_t const volatile*, __cxx_contention_t);

template <class _Atp, class _Fn>
struct __libcpp_atomic_wait_backoff_impl {
    _Atp* __a;
    _Fn __test_fn;
    _LIBCPP_AVAILABILITY_SYNC
    _LIBCPP_INLINE_VISIBILITY bool operator()(chrono::nanoseconds __elapsed) const
    {
        if(__elapsed > chrono::microseconds(64))
        {
            auto const __monitor = __libcpp_atomic_monitor(__a);
            if(__test_fn())
                return true;
            __libcpp_atomic_wait(__a, __monitor);
        }
        else if(__elapsed > chrono::microseconds(4))
            __libcpp_thread_yield();
        else
            {} // poll
        return false;
    }
};

template <class _Atp, class _Fn>
_LIBCPP_AVAILABILITY_SYNC
_LIBCPP_INLINE_VISIBILITY bool __cxx_atomic_wait(_Atp* __a, _Fn && __test_fn)
{
    __libcpp_atomic_wait_backoff_impl<_Atp, typename decay<_Fn>::type> __backoff_fn = {__a, __test_fn};
    return __libcpp_thread_poll_with_backoff(__test_fn, __backoff_fn);
}

#else // _LIBCPP_HAS_NO_PLATFORM_WAIT
# 1561 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY void __cxx_atomic_notify_all(__cxx_atomic_impl<_Tp> const volatile*) { }
template <class _Tp>
_LIBCPP_INLINE_VISIBILITY void __cxx_atomic_notify_one(__cxx_atomic_impl<_Tp> const volatile*) { }
template <class _Atp, class _Fn>
_LIBCPP_INLINE_VISIBILITY bool __cxx_atomic_wait(_Atp*, _Fn && __test_fn)
{
    return __libcpp_thread_poll_with_backoff(__test_fn, __libcpp_timed_backoff_policy());
}

#endif // _LIBCPP_HAS_NO_PLATFORM_WAIT
# 1573 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

template <class _Atp, class _Tp>
struct __cxx_atomic_wait_test_fn_impl {
    _Atp* __a;
    _Tp __val;
    memory_order __order;
    _LIBCPP_INLINE_VISIBILITY bool operator()() const
    {
        return !__cxx_nonatomic_compare_equal(__cxx_atomic_load(__a, __order), __val);
    }
};

template <class _Atp, class _Tp>
_LIBCPP_AVAILABILITY_SYNC
_LIBCPP_INLINE_VISIBILITY bool __cxx_atomic_wait(_Atp* __a, _Tp const __val, memory_order __order)
{
    __cxx_atomic_wait_test_fn_impl<_Atp, _Tp> __test_fn = {__a, __val, __order};
    return __cxx_atomic_wait(__a, __test_fn);
}

// general atomic<T>

template <class _Tp, bool = is_integral<_Tp>::value && !is_same<_Tp, bool>::value>
struct __atomic_base  // false
{
    mutable __cxx_atomic_impl<_Tp> __a_;

#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_lib_atomic_is_always_lock_free)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
  static _LIBCPP_CONSTEXPR bool is_always_lock_free = __atomic_always_lock_free(sizeof(__a_), 0);
#endif
# 1603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

    _LIBCPP_INLINE_VISIBILITY
    bool is_lock_free() const volatile _NOEXCEPT
        {return __cxx_atomic_is_lock_free(sizeof(_Tp));}
    _LIBCPP_INLINE_VISIBILITY
    bool is_lock_free() const _NOEXCEPT
        {return static_cast<__atomic_base const volatile*>(this)->is_lock_free();}
    _LIBCPP_INLINE_VISIBILITY
    void store(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
      _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m)
        {__cxx_atomic_store(&__a_, __d, __m);}
    _LIBCPP_INLINE_VISIBILITY
    void store(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT
      _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m)
        {__cxx_atomic_store(&__a_, __d, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp load(memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT
      _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
        {return __cxx_atomic_load(&__a_, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp load(memory_order __m = memory_order_seq_cst) const _NOEXCEPT
      _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
        {return __cxx_atomic_load(&__a_, __m);}
    _LIBCPP_INLINE_VISIBILITY
    operator _Tp() const volatile _NOEXCEPT {return load();}
    _LIBCPP_INLINE_VISIBILITY
    operator _Tp() const _NOEXCEPT          {return load();}
    _LIBCPP_INLINE_VISIBILITY
    _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_exchange(&__a_, __d, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_exchange(&__a_, __d, __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_weak(_Tp& __e, _Tp __d,
                               memory_order __s, memory_order __f) volatile _NOEXCEPT
      _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
        {return __cxx_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_weak(_Tp& __e, _Tp __d,
                               memory_order __s, memory_order __f) _NOEXCEPT
      _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
        {return __cxx_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_strong(_Tp& __e, _Tp __d,
                                 memory_order __s, memory_order __f) volatile _NOEXCEPT
      _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
        {return __cxx_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_strong(_Tp& __e, _Tp __d,
                                 memory_order __s, memory_order __f) _NOEXCEPT
      _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
        {return __cxx_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_weak(_Tp& __e, _Tp __d,
                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_weak(_Tp& __e, _Tp __d,
                               memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_strong(_Tp& __e, _Tp __d,
                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool compare_exchange_strong(_Tp& __e, _Tp __d,
                                 memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);}

    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void wait(_Tp __v, memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT
        {__cxx_atomic_wait(&__a_, __v, __m);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void wait(_Tp __v, memory_order __m = memory_order_seq_cst) const _NOEXCEPT
        {__cxx_atomic_wait(&__a_, __v, __m);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void notify_one() volatile _NOEXCEPT
        {__cxx_atomic_notify_one(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void notify_one() _NOEXCEPT
        {__cxx_atomic_notify_one(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void notify_all() volatile _NOEXCEPT
        {__cxx_atomic_notify_all(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY void notify_all() _NOEXCEPT
        {__cxx_atomic_notify_all(&__a_);}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY constexpr
    __atomic_base() noexcept(is_nothrow_default_constructible_v<_Tp>) : __a_(_Tp()) {}
#else
# 1690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY
    __atomic_base() _NOEXCEPT _LIBCPP_DEFAULT
#endif
# 1693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {}

#ifndef _LIBCPP_CXX03_LANG
    __atomic_base(const __atomic_base&) = delete;
#else
# 1700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
private:
    _LIBCPP_INLINE_VISIBILITY
    __atomic_base(const __atomic_base&);
#endif
# 1704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
};

#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_lib_atomic_is_always_lock_free)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
template <class _Tp, bool __b>
_LIBCPP_CONSTEXPR bool __atomic_base<_Tp, __b>::is_always_lock_free;
#endif
# 1710 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

// atomic<Integral>

template <class _Tp>
struct __atomic_base<_Tp, true>
    : public __atomic_base<_Tp, false>
{
    typedef __atomic_base<_Tp, false> __base;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    __atomic_base() _NOEXCEPT _LIBCPP_DEFAULT

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __base(__d) {}

    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_fetch_add(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_add(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_fetch_sub(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_sub(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_fetch_and(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_and(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_fetch_or(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_or(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_fetch_xor(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_xor(&this->__a_, __op, __m);}

    _LIBCPP_INLINE_VISIBILITY
    _Tp operator++(int) volatile _NOEXCEPT      {return fetch_add(_Tp(1));}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator++(int) _NOEXCEPT               {return fetch_add(_Tp(1));}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator--(int) volatile _NOEXCEPT      {return fetch_sub(_Tp(1));}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator--(int) _NOEXCEPT               {return fetch_sub(_Tp(1));}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator++() volatile _NOEXCEPT         {return fetch_add(_Tp(1)) + _Tp(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator++() _NOEXCEPT                  {return fetch_add(_Tp(1)) + _Tp(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator--() volatile _NOEXCEPT         {return fetch_sub(_Tp(1)) - _Tp(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator--() _NOEXCEPT                  {return fetch_sub(_Tp(1)) - _Tp(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator+=(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator+=(_Tp __op) _NOEXCEPT          {return fetch_add(__op) + __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator-=(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator-=(_Tp __op) _NOEXCEPT          {return fetch_sub(__op) - __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator&=(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) & __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator&=(_Tp __op) _NOEXCEPT          {return fetch_and(__op) & __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator|=(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) | __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator|=(_Tp __op) _NOEXCEPT          {return fetch_or(__op) | __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator^=(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) ^ __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator^=(_Tp __op) _NOEXCEPT          {return fetch_xor(__op) ^ __op;}
};

// atomic<T>

template <class _Tp>
struct atomic
    : public __atomic_base<_Tp>
{
    typedef __atomic_base<_Tp> __base;
    typedef _Tp value_type;
    typedef value_type difference_type;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1805 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY
    atomic() = default;
#else
# 1808 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY
    atomic() _NOEXCEPT _LIBCPP_DEFAULT
#endif
# 1811 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}

    _LIBCPP_INLINE_VISIBILITY
    _Tp operator=(_Tp __d) volatile _NOEXCEPT
        {__base::store(__d); return __d;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp operator=(_Tp __d) _NOEXCEPT
        {__base::store(__d); return __d;}

    atomic& operator=(const atomic&) = delete;
    atomic& operator=(const atomic&) volatile = delete;
};

// atomic<T*>

template <class _Tp>
struct atomic<_Tp*>
    : public __atomic_base<_Tp*>
{
    typedef __atomic_base<_Tp*> __base;
    typedef _Tp* value_type;
    typedef ptrdiff_t difference_type;

    _LIBCPP_INLINE_VISIBILITY
    atomic() _NOEXCEPT _LIBCPP_DEFAULT

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR atomic(_Tp* __d) _NOEXCEPT : __base(__d) {}

    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator=(_Tp* __d) volatile _NOEXCEPT
        {__base::store(__d); return __d;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator=(_Tp* __d) _NOEXCEPT
        {__base::store(__d); return __d;}

    _LIBCPP_INLINE_VISIBILITY
    _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst)
                                                                        volatile _NOEXCEPT
        {return __cxx_atomic_fetch_add(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_add(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst)
                                                                        volatile _NOEXCEPT
        {return __cxx_atomic_fetch_sub(&this->__a_, __op, __m);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_fetch_sub(&this->__a_, __op, __m);}

    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator++(int) volatile _NOEXCEPT            {return fetch_add(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator++(int) _NOEXCEPT                     {return fetch_add(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator--(int) volatile _NOEXCEPT            {return fetch_sub(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator--(int) _NOEXCEPT                     {return fetch_sub(1);}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator++() volatile _NOEXCEPT               {return fetch_add(1) + 1;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator++() _NOEXCEPT                        {return fetch_add(1) + 1;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator--() volatile _NOEXCEPT               {return fetch_sub(1) - 1;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator--() _NOEXCEPT                        {return fetch_sub(1) - 1;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator+=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator+=(ptrdiff_t __op) _NOEXCEPT          {return fetch_add(__op) + __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator-=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;}
    _LIBCPP_INLINE_VISIBILITY
    _Tp* operator-=(ptrdiff_t __op) _NOEXCEPT          {return fetch_sub(__op) - __op;}

    atomic& operator=(const atomic&) = delete;
    atomic& operator=(const atomic&) volatile = delete;
};

// atomic_is_lock_free

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
{
    return __o->is_lock_free();
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
{
    return __o->is_lock_free();
}

// atomic_init

template <class _Tp>
_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_INLINE_VISIBILITY
void
atomic_init(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    __cxx_atomic_init(&__o->__a_, __d);
}

template <class _Tp>
_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_INLINE_VISIBILITY
void
atomic_init(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    __cxx_atomic_init(&__o->__a_, __d);
}

// atomic_store

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
void
atomic_store(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    __o->store(__d);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
void
atomic_store(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    __o->store(__d);
}

// atomic_store_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
void
atomic_store_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m)
{
    __o->store(__d, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
void
atomic_store_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m)
{
    __o->store(__d, __m);
}

// atomic_load

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_load(const volatile atomic<_Tp>* __o) _NOEXCEPT
{
    return __o->load();
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_load(const atomic<_Tp>* __o) _NOEXCEPT
{
    return __o->load();
}

// atomic_load_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
{
    return __o->load(__m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
{
    return __o->load(__m);
}

// atomic_exchange

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_exchange(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->exchange(__d);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_exchange(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->exchange(__d);
}

// atomic_exchange_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_exchange_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT
{
    return __o->exchange(__d, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp
atomic_exchange_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT
{
    return __o->exchange(__d, __m);
}

// atomic_compare_exchange_weak

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->compare_exchange_weak(*__e, __d);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_weak(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->compare_exchange_weak(*__e, __d);
}

// atomic_compare_exchange_strong

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->compare_exchange_strong(*__e, __d);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_strong(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT
{
    return __o->compare_exchange_strong(*__e, __d);
}

// atomic_compare_exchange_weak_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_weak_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e,
                                      typename atomic<_Tp>::value_type __d,
                                      memory_order __s, memory_order __f) _NOEXCEPT
  _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
{
    return __o->compare_exchange_weak(*__e, __d, __s, __f);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_weak_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d,
                                      memory_order __s, memory_order __f) _NOEXCEPT
  _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
{
    return __o->compare_exchange_weak(*__e, __d, __s, __f);
}

// atomic_compare_exchange_strong_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o,
                                        typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d,
                                        memory_order __s, memory_order __f) _NOEXCEPT
  _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
{
    return __o->compare_exchange_strong(*__e, __d, __s, __f);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
bool
atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e,
                                        typename atomic<_Tp>::value_type __d,
                                        memory_order __s, memory_order __f) _NOEXCEPT
  _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f)
{
    return __o->compare_exchange_strong(*__e, __d, __s, __f);
}

// atomic_wait

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_wait(const volatile atomic<_Tp>* __o,
                 typename atomic<_Tp>::value_type __v) _NOEXCEPT
{
    return __o->wait(__v);
}

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_wait(const atomic<_Tp>* __o,
                 typename atomic<_Tp>::value_type __v) _NOEXCEPT
{
    return __o->wait(__v);
}

// atomic_wait_explicit

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_wait_explicit(const volatile atomic<_Tp>* __o,
                          typename atomic<_Tp>::value_type __v,
                          memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
{
    return __o->wait(__v, __m);
}

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_wait_explicit(const atomic<_Tp>* __o,
                          typename atomic<_Tp>::value_type __v,
                          memory_order __m) _NOEXCEPT
  _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m)
{
    return __o->wait(__v, __m);
}

// atomic_notify_one

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_notify_one(volatile atomic<_Tp>* __o) _NOEXCEPT
{
    __o->notify_one();
}
template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_notify_one(atomic<_Tp>* __o) _NOEXCEPT
{
    __o->notify_one();
}

// atomic_notify_one

template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_notify_all(volatile atomic<_Tp>* __o) _NOEXCEPT
{
    __o->notify_all();
}
template <class _Tp>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
void atomic_notify_all(atomic<_Tp>* __o) _NOEXCEPT
{
    __o->notify_all();
}

// atomic_fetch_add

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_add(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_add(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_add(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_add(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_add(volatile atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_add(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_add(atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_add(__op);
}

// atomic_fetch_add_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_add(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_add_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_add(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_add_explicit(volatile atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_add(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_add_explicit(atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_add(__op, __m);
}

// atomic_fetch_sub

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_sub(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_sub(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_sub(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_sub(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_sub(volatile atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_sub(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_sub(atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op) _NOEXCEPT
{
    return __o->fetch_sub(__op);
}

// atomic_fetch_sub_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_sub(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value && !is_const<_Tp>::value,
    _Tp
>::type
atomic_fetch_sub_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_sub(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_sub_explicit(volatile atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_sub(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp*
atomic_fetch_sub_explicit(atomic<_Tp*>* __o, typename atomic<_Tp*>::difference_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_sub(__op, __m);
}

// atomic_fetch_and

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_and(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_and(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_and(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_and(__op);
}

// atomic_fetch_and_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_and(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_and_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_and(__op, __m);
}

// atomic_fetch_or

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_or(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_or(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_or(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_or(__op);
}

// atomic_fetch_or_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_or(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_or_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_or(__op, __m);
}

// atomic_fetch_xor

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_xor(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_xor(__op);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_xor(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT
{
    return __o->fetch_xor(__op);
}

// atomic_fetch_xor_explicit

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_xor(__op, __m);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
    _Tp
>::type
atomic_fetch_xor_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT
{
    return __o->fetch_xor(__op, __m);
}

// flag type and operations

typedef struct atomic_flag
{
    __cxx_atomic_impl<_LIBCPP_ATOMIC_FLAG_TYPE> __a_;

    _LIBCPP_INLINE_VISIBILITY
    bool test(memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT
        {return _LIBCPP_ATOMIC_FLAG_TYPE(true) == __cxx_atomic_load(&__a_, __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool test(memory_order __m = memory_order_seq_cst) const _NOEXCEPT
        {return _LIBCPP_ATOMIC_FLAG_TYPE(true) == __cxx_atomic_load(&__a_, __m);}

    _LIBCPP_INLINE_VISIBILITY
    bool test_and_set(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {return __cxx_atomic_exchange(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(true), __m);}
    _LIBCPP_INLINE_VISIBILITY
    bool test_and_set(memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {return __cxx_atomic_exchange(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(true), __m);}
    _LIBCPP_INLINE_VISIBILITY
    void clear(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
        {__cxx_atomic_store(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(false), __m);}
    _LIBCPP_INLINE_VISIBILITY
    void clear(memory_order __m = memory_order_seq_cst) _NOEXCEPT
        {__cxx_atomic_store(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(false), __m);}

    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void wait(bool __v, memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT
        {__cxx_atomic_wait(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(__v), __m);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void wait(bool __v, memory_order __m = memory_order_seq_cst) const _NOEXCEPT
        {__cxx_atomic_wait(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(__v), __m);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void notify_one() volatile _NOEXCEPT
        {__cxx_atomic_notify_one(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void notify_one() _NOEXCEPT
        {__cxx_atomic_notify_one(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void notify_all() volatile _NOEXCEPT
        {__cxx_atomic_notify_all(&__a_);}
    _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY
    void notify_all() _NOEXCEPT
        {__cxx_atomic_notify_all(&__a_);}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2564 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY constexpr
    atomic_flag() _NOEXCEPT : __a_(false) {}
#else
# 2567 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    _LIBCPP_INLINE_VISIBILITY
    atomic_flag() _NOEXCEPT _LIBCPP_DEFAULT
#endif
# 2570 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {} // EXTENSION

#ifndef _LIBCPP_CXX03_LANG
    atomic_flag(const atomic_flag&) = delete;
    atomic_flag& operator=(const atomic_flag&) = delete;
    atomic_flag& operator=(const atomic_flag&) volatile = delete;
#else
# 2579 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
private:
    _LIBCPP_INLINE_VISIBILITY
    atomic_flag(const atomic_flag&);
    _LIBCPP_INLINE_VISIBILITY
    atomic_flag& operator=(const atomic_flag&);
    _LIBCPP_INLINE_VISIBILITY
    atomic_flag& operator=(const atomic_flag&) volatile;
#endif
# 2587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
} atomic_flag;


inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test(const volatile atomic_flag* __o) _NOEXCEPT
{
    return __o->test();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test(const atomic_flag* __o) _NOEXCEPT
{
    return __o->test();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_explicit(const volatile atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    return __o->test(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_explicit(const atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    return __o->test(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_and_set(volatile atomic_flag* __o) _NOEXCEPT
{
    return __o->test_and_set();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_and_set(atomic_flag* __o) _NOEXCEPT
{
    return __o->test_and_set();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    return __o->test_and_set(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    return __o->test_and_set(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_flag_clear(volatile atomic_flag* __o) _NOEXCEPT
{
    __o->clear();
}

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_flag_clear(atomic_flag* __o) _NOEXCEPT
{
    __o->clear();
}

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    __o->clear(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT
{
    __o->clear(__m);
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_wait(const volatile atomic_flag* __o, bool __v) _NOEXCEPT
{
    __o->wait(__v);
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_wait(const atomic_flag* __o, bool __v) _NOEXCEPT
{
    __o->wait(__v);
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_wait_explicit(const volatile atomic_flag* __o,
                          bool __v, memory_order __m) _NOEXCEPT
{
    __o->wait(__v, __m);
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_wait_explicit(const atomic_flag* __o,
                          bool __v, memory_order __m) _NOEXCEPT
{
    __o->wait(__v, __m);
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_notify_one(volatile atomic_flag* __o) _NOEXCEPT
{
    __o->notify_one();
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_notify_one(atomic_flag* __o) _NOEXCEPT
{
    __o->notify_one();
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_notify_all(volatile atomic_flag* __o) _NOEXCEPT
{
    __o->notify_all();
}

inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_SYNC
void
atomic_flag_notify_all(atomic_flag* __o) _NOEXCEPT
{
    __o->notify_all();
}

// fences

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_thread_fence(memory_order __m) _NOEXCEPT
{
    __cxx_atomic_thread_fence(__m);
}

inline _LIBCPP_INLINE_VISIBILITY
void
atomic_signal_fence(memory_order __m) _NOEXCEPT
{
    __cxx_atomic_signal_fence(__m);
}

// Atomics for standard typedef types

typedef atomic<bool>               atomic_bool;
typedef atomic<char>               atomic_char;
typedef atomic<signed char>        atomic_schar;
typedef atomic<unsigned char>      atomic_uchar;
typedef atomic<short>              atomic_short;
typedef atomic<unsigned short>     atomic_ushort;
typedef atomic<int>                atomic_int;
typedef atomic<unsigned int>       atomic_uint;
typedef atomic<long>               atomic_long;
typedef atomic<unsigned long>      atomic_ulong;
typedef atomic<long long>          atomic_llong;
typedef atomic<unsigned long long> atomic_ullong;
#ifndef _LIBCPP_HAS_NO_CHAR8_T
typedef atomic<char8_t>            atomic_char8_t;
#endif
# 2765 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
typedef atomic<char16_t>           atomic_char16_t;
typedef atomic<char32_t>           atomic_char32_t;
typedef atomic<wchar_t>            atomic_wchar_t;

typedef atomic<int_least8_t>   atomic_int_least8_t;
typedef atomic<uint_least8_t>  atomic_uint_least8_t;
typedef atomic<int_least16_t>  atomic_int_least16_t;
typedef atomic<uint_least16_t> atomic_uint_least16_t;
typedef atomic<int_least32_t>  atomic_int_least32_t;
typedef atomic<uint_least32_t> atomic_uint_least32_t;
typedef atomic<int_least64_t>  atomic_int_least64_t;
typedef atomic<uint_least64_t> atomic_uint_least64_t;

typedef atomic<int_fast8_t>   atomic_int_fast8_t;
typedef atomic<uint_fast8_t>  atomic_uint_fast8_t;
typedef atomic<int_fast16_t>  atomic_int_fast16_t;
typedef atomic<uint_fast16_t> atomic_uint_fast16_t;
typedef atomic<int_fast32_t>  atomic_int_fast32_t;
typedef atomic<uint_fast32_t> atomic_uint_fast32_t;
typedef atomic<int_fast64_t>  atomic_int_fast64_t;
typedef atomic<uint_fast64_t> atomic_uint_fast64_t;

typedef atomic< int8_t>  atomic_int8_t;
typedef atomic<uint8_t>  atomic_uint8_t;
typedef atomic< int16_t> atomic_int16_t;
typedef atomic<uint16_t> atomic_uint16_t;
typedef atomic< int32_t> atomic_int32_t;
typedef atomic<uint32_t> atomic_uint32_t;
typedef atomic< int64_t> atomic_int64_t;
typedef atomic<uint64_t> atomic_uint64_t;

typedef atomic<intptr_t>  atomic_intptr_t;
typedef atomic<uintptr_t> atomic_uintptr_t;
typedef atomic<size_t>    atomic_size_t;
typedef atomic<ptrdiff_t> atomic_ptrdiff_t;
typedef atomic<intmax_t>  atomic_intmax_t;
typedef atomic<uintmax_t> atomic_uintmax_t;

// atomic_*_lock_free : prefer the contention type most highly, then the largest lock-free type

#ifdef __cpp_lib_atomic_is_always_lock_free
# define _LIBCPP_CONTENTION_LOCK_FREE __atomic_always_lock_free(sizeof(__cxx_contention_t), 0)
#else
# 2808 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# define _LIBCPP_CONTENTION_LOCK_FREE false
#endif
# 2810 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

#if 0 /* disabled by -frewrite-includes */
#if ATOMIC_LLONG_LOCK_FREE == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2812 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, long long>::type          __libcpp_signed_lock_free;
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned long long>::type __libcpp_unsigned_lock_free;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif ATOMIC_INT_LOCK_FREE == 2
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 2815 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, int>::type                __libcpp_signed_lock_free;
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned int>::type       __libcpp_unsigned_lock_free;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif ATOMIC_SHORT_LOCK_FREE == 2
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 2818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, short>::type              __libcpp_signed_lock_free;
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned short>::type     __libcpp_unsigned_lock_free;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif ATOMIC_CHAR_LOCK_FREE == 2
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 2821 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, char>::type               __libcpp_signed_lock_free;
typedef conditional<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned char>::type      __libcpp_unsigned_lock_free;
#else
# 2824 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
    // No signed/unsigned lock-free types
#endif
# 2826 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3

typedef atomic<__libcpp_signed_lock_free> atomic_signed_lock_free;
typedef atomic<__libcpp_unsigned_lock_free> atomic_unsigned_lock_free;

#define ATOMIC_FLAG_INIT {false}
#define ATOMIC_VAR_INIT(__v) {__v}

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_ATOMIC
# 2836 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic" 3
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 2 3
#endif
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#   include <__memory/auto_ptr.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Alloc>
class __allocator_destructor
{
    typedef _LIBCPP_NODEBUG_TYPE allocator_traits<_Alloc> __alloc_traits;
public:
    typedef _LIBCPP_NODEBUG_TYPE typename __alloc_traits::pointer pointer;
    typedef _LIBCPP_NODEBUG_TYPE typename __alloc_traits::size_type size_type;
private:
    _Alloc& __alloc_;
    size_type __s_;
public:
    _LIBCPP_INLINE_VISIBILITY __allocator_destructor(_Alloc& __a, size_type __s)
             _NOEXCEPT
        : __alloc_(__a), __s_(__s) {}
    _LIBCPP_INLINE_VISIBILITY
    void operator()(pointer __p) _NOEXCEPT
        {__alloc_traits::deallocate(__alloc_, __p, __s_);}
};

// NOTE: Relaxed and acq/rel atomics (for increment and decrement respectively)
// should be sufficient for thread safety.
// See https://llvm.org/PR22803
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__) && __has_builtin(__atomic_add_fetch)          \
                       && defined(__ATOMIC_RELAXED)                  \
                       && defined(__ATOMIC_ACQ_REL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#   define _LIBCPP_HAS_BUILTIN_ATOMIC_SUPPORT
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#   define _LIBCPP_HAS_BUILTIN_ATOMIC_SUPPORT
#endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template <class _ValueType>
inline _LIBCPP_INLINE_VISIBILITY
_ValueType __libcpp_relaxed_load(_ValueType const* __value) {
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_THREADS) && \
    defined(__ATOMIC_RELAXED) &&        \
    (__has_builtin(__atomic_load_n) || defined(_LIBCPP_COMPILER_GCC))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __atomic_load_n(__value, __ATOMIC_RELAXED);
#else
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return *__value;
#endif
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template <class _ValueType>
inline _LIBCPP_INLINE_VISIBILITY
_ValueType __libcpp_acquire_load(_ValueType const* __value) {
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_THREADS) && \
    defined(__ATOMIC_ACQUIRE) &&        \
    (__has_builtin(__atomic_load_n) || defined(_LIBCPP_COMPILER_GCC))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __atomic_load_n(__value, __ATOMIC_ACQUIRE);
#else
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return *__value;
#endif
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _Tp
__libcpp_atomic_refcount_increment(_Tp& __t) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_BUILTIN_ATOMIC_SUPPORT) && !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __atomic_add_fetch(&__t, 1, __ATOMIC_RELAXED);
#else
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __t += 1;
#endif
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _Tp
__libcpp_atomic_refcount_decrement(_Tp& __t) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_BUILTIN_ATOMIC_SUPPORT) && !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __atomic_add_fetch(&__t, -1, __ATOMIC_ACQ_REL);
#else
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return __t -= 1;
#endif
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

class _LIBCPP_EXCEPTION_ABI bad_weak_ptr
    : public std::exception
{
public:
    bad_weak_ptr() _NOEXCEPT = default;
    bad_weak_ptr(const bad_weak_ptr&) _NOEXCEPT = default;
    virtual ~bad_weak_ptr() _NOEXCEPT;
    virtual const char* what() const  _NOEXCEPT;
};

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_bad_weak_ptr()
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw bad_weak_ptr();
#else
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _VSTD::abort();
#endif
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template<class _Tp> class _LIBCPP_TEMPLATE_VIS weak_ptr;

class _LIBCPP_TYPE_VIS __shared_count
{
    __shared_count(const __shared_count&);
    __shared_count& operator=(const __shared_count&);

protected:
    long __shared_owners_;
    virtual ~__shared_count();
private:
    virtual void __on_zero_shared() _NOEXCEPT = 0;

public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __shared_count(long __refs = 0) _NOEXCEPT
        : __shared_owners_(__refs) {}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_BUILDING_LIBRARY) && \
    defined(_LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    void __add_shared() _NOEXCEPT;
    bool __release_shared() _NOEXCEPT;
#else
# 170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    void __add_shared() _NOEXCEPT {
      __libcpp_atomic_refcount_increment(__shared_owners_);
    }
    _LIBCPP_INLINE_VISIBILITY
    bool __release_shared() _NOEXCEPT {
      if (__libcpp_atomic_refcount_decrement(__shared_owners_) == -1) {
        __on_zero_shared();
        return true;
      }
      return false;
    }
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    long use_count() const _NOEXCEPT {
        return __libcpp_relaxed_load(&__shared_owners_) + 1;
    }
};

class _LIBCPP_TYPE_VIS __shared_weak_count
    : private __shared_count
{
    long __shared_weak_owners_;

public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __shared_weak_count(long __refs = 0) _NOEXCEPT
        : __shared_count(__refs),
          __shared_weak_owners_(__refs) {}
protected:
    virtual ~__shared_weak_count();

public:
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_BUILDING_LIBRARY) && \
    defined(_LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    void __add_shared() _NOEXCEPT;
    void __add_weak() _NOEXCEPT;
    void __release_shared() _NOEXCEPT;
#else
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    void __add_shared() _NOEXCEPT {
      __shared_count::__add_shared();
    }
    _LIBCPP_INLINE_VISIBILITY
    void __add_weak() _NOEXCEPT {
      __libcpp_atomic_refcount_increment(__shared_weak_owners_);
    }
    _LIBCPP_INLINE_VISIBILITY
    void __release_shared() _NOEXCEPT {
      if (__shared_count::__release_shared())
        __release_weak();
    }
#endif
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    void __release_weak() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    long use_count() const _NOEXCEPT {return __shared_count::use_count();}
    __shared_weak_count* lock() _NOEXCEPT;

    virtual const void* __get_deleter(const type_info&) const _NOEXCEPT;
private:
    virtual void __on_zero_shared_weak() _NOEXCEPT = 0;
};

template <class _Tp, class _Dp, class _Alloc>
class __shared_ptr_pointer
    : public __shared_weak_count
{
    __compressed_pair<__compressed_pair<_Tp, _Dp>, _Alloc> __data_;
public:
    _LIBCPP_INLINE_VISIBILITY
    __shared_ptr_pointer(_Tp __p, _Dp __d, _Alloc __a)
        :  __data_(__compressed_pair<_Tp, _Dp>(__p, _VSTD::move(__d)), _VSTD::move(__a)) {}

#ifndef _LIBCPP_NO_RTTI
    virtual const void* __get_deleter(const type_info&) const _NOEXCEPT;
#endif
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

private:
    virtual void __on_zero_shared() _NOEXCEPT;
    virtual void __on_zero_shared_weak() _NOEXCEPT;
};

#ifndef _LIBCPP_NO_RTTI

template <class _Tp, class _Dp, class _Alloc>
const void*
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__get_deleter(const type_info& __t) const _NOEXCEPT
{
    return __t == typeid(_Dp) ? _VSTD::addressof(__data_.first().second()) : nullptr;
}

#endif // _LIBCPP_NO_RTTI
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template <class _Tp, class _Dp, class _Alloc>
void
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__on_zero_shared() _NOEXCEPT
{
    __data_.first().second()(__data_.first().first());
    __data_.first().second().~_Dp();
}

template <class _Tp, class _Dp, class _Alloc>
void
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__on_zero_shared_weak() _NOEXCEPT
{
    typedef typename __allocator_traits_rebind<_Alloc, __shared_ptr_pointer>::type _Al;
    typedef allocator_traits<_Al> _ATraits;
    typedef pointer_traits<typename _ATraits::pointer> _PTraits;

    _Al __a(__data_.second());
    __data_.second().~_Alloc();
    __a.deallocate(_PTraits::pointer_to(*this), 1);
}

template <class _Tp, class _Alloc>
struct __shared_ptr_emplace
    : __shared_weak_count
{
    template<class ..._Args>
    _LIBCPP_HIDE_FROM_ABI
    explicit __shared_ptr_emplace(_Alloc __a, _Args&& ...__args)
        : __storage_(_VSTD::move(__a))
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        using _TpAlloc = typename __allocator_traits_rebind<_Alloc, _Tp>::type;
        _TpAlloc __tmp(*__get_alloc());
        allocator_traits<_TpAlloc>::construct(__tmp, __get_elem(), _VSTD::forward<_Args>(__args)...);
#else
# 298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        ::new ((void*)__get_elem()) _Tp(_VSTD::forward<_Args>(__args)...);
#endif
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    }

    _LIBCPP_HIDE_FROM_ABI
    _Alloc* __get_alloc() _NOEXCEPT { return __storage_.__get_alloc(); }

    _LIBCPP_HIDE_FROM_ABI
    _Tp* __get_elem() _NOEXCEPT { return __storage_.__get_elem(); }

private:
    virtual void __on_zero_shared() _NOEXCEPT {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 311 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        using _TpAlloc = typename __allocator_traits_rebind<_Alloc, _Tp>::type;
        _TpAlloc __tmp(*__get_alloc());
        allocator_traits<_TpAlloc>::destroy(__tmp, __get_elem());
#else
# 315 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __get_elem()->~_Tp();
#endif
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    }

    virtual void __on_zero_shared_weak() _NOEXCEPT {
        using _ControlBlockAlloc = typename __allocator_traits_rebind<_Alloc, __shared_ptr_emplace>::type;
        using _ControlBlockPointer = typename allocator_traits<_ControlBlockAlloc>::pointer;
        _ControlBlockAlloc __tmp(*__get_alloc());
        __storage_.~_Storage();
        allocator_traits<_ControlBlockAlloc>::deallocate(__tmp,
            pointer_traits<_ControlBlockPointer>::pointer_to(*this), 1);
    }

    // This class implements the control block for non-array shared pointers created
    // through `std::allocate_shared` and `std::make_shared`.
    //
    // In previous versions of the library, we used a compressed pair to store
    // both the _Alloc and the _Tp. This implies using EBO, which is incompatible
    // with Allocator construction for _Tp. To allow implementing P0674 in C++20,
    // we now use a properly aligned char buffer while making sure that we maintain
    // the same layout that we had when we used a compressed pair.
    using _CompressedPair = __compressed_pair<_Alloc, _Tp>;
    struct _ALIGNAS_TYPE(_CompressedPair) _Storage {
        char __blob_[sizeof(_CompressedPair)];

        _LIBCPP_HIDE_FROM_ABI explicit _Storage(_Alloc&& __a) {
            ::new ((void*)__get_alloc()) _Alloc(_VSTD::move(__a));
        }
        _LIBCPP_HIDE_FROM_ABI ~_Storage() {
            __get_alloc()->~_Alloc();
        }
        _Alloc* __get_alloc() _NOEXCEPT {
            _CompressedPair *__as_pair = reinterpret_cast<_CompressedPair*>(__blob_);
            typename _CompressedPair::_Base1* __first = _CompressedPair::__get_first_base(__as_pair);
            _Alloc *__alloc = reinterpret_cast<_Alloc*>(__first);
            return __alloc;
        }
        _LIBCPP_NO_CFI _Tp* __get_elem() _NOEXCEPT {
            _CompressedPair *__as_pair = reinterpret_cast<_CompressedPair*>(__blob_);
            typename _CompressedPair::_Base2* __second = _CompressedPair::__get_second_base(__as_pair);
            _Tp *__elem = reinterpret_cast<_Tp*>(__second);
            return __elem;
        }
    };

    static_assert(_LIBCPP_ALIGNOF(_Storage) == _LIBCPP_ALIGNOF(_CompressedPair), "");
    static_assert(sizeof(_Storage) == sizeof(_CompressedPair), "");
    _Storage __storage_;
};

struct __shared_ptr_dummy_rebind_allocator_type;
template <>
class _LIBCPP_TEMPLATE_VIS allocator<__shared_ptr_dummy_rebind_allocator_type>
{
public:
    template <class _Other>
    struct rebind
    {
        typedef allocator<_Other> other;
    };
};

template<class _Tp> class _LIBCPP_TEMPLATE_VIS enable_shared_from_this;

template<class _Tp, class _Up>
struct __compatible_with
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 382 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    : is_convertible<remove_extent_t<_Tp>*, remove_extent_t<_Up>*> {};
#else
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    : is_convertible<_Tp*, _Up*> {};
#endif // _LIBCPP_STD_VER > 14
# 386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template <class _Ptr, class = void>
struct __is_deletable : false_type { };
template <class _Ptr>
struct __is_deletable<_Ptr, decltype(delete declval<_Ptr>())> : true_type { };

template <class _Ptr, class = void>
struct __is_array_deletable : false_type { };
template <class _Ptr>
struct __is_array_deletable<_Ptr, decltype(delete[] declval<_Ptr>())> : true_type { };

template <class _Dp, class _Pt,
    class = decltype(declval<_Dp>()(declval<_Pt>()))>
static true_type __well_formed_deleter_test(int);

template <class, class>
static false_type __well_formed_deleter_test(...);

template <class _Dp, class _Pt>
struct __well_formed_deleter : decltype(__well_formed_deleter_test<_Dp, _Pt>(0)) {};

template<class _Dp, class _Tp, class _Yp>
struct __shared_ptr_deleter_ctor_reqs
{
    static const bool value = __compatible_with<_Tp, _Yp>::value &&
                              is_move_constructible<_Dp>::value &&
                              __well_formed_deleter<_Dp, _Tp*>::value;
};

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#  define _LIBCPP_SHARED_PTR_TRIVIAL_ABI __attribute__((trivial_abi))
#else
# 418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#  define _LIBCPP_SHARED_PTR_TRIVIAL_ABI
#endif
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
class _LIBCPP_SHARED_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS shared_ptr
{
public:
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    typedef weak_ptr<_Tp> weak_type;
    typedef remove_extent_t<_Tp> element_type;
#else
# 429 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    typedef _Tp element_type;
#endif
# 431 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

private:
    element_type*      __ptr_;
    __shared_weak_count* __cntrl_;

    struct __nat {int __for_bool_;};
public:
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR shared_ptr() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR shared_ptr(nullptr_t) _NOEXCEPT;

    template<class _Yp, class = _EnableIf<
        _And<
            __compatible_with<_Yp, _Tp>
            // In C++03 we get errors when trying to do SFINAE with the
            // delete operator, so we always pretend that it's deletable.
            // The same happens on GCC.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_COMPILER_GCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
            , _If<is_array<_Tp>::value, __is_array_deletable<_Yp*>, __is_deletable<_Yp*> >
#endif
# 452 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        >::value
    > >
    explicit shared_ptr(_Yp* __p) : __ptr_(__p) {
        unique_ptr<_Yp> __hold(__p);
        typedef typename __shared_ptr_default_allocator<_Yp>::type _AllocT;
        typedef __shared_ptr_pointer<_Yp*, __shared_ptr_default_delete<_Tp, _Yp>, _AllocT > _CntrlBlk;
        __cntrl_ = new _CntrlBlk(__p, __shared_ptr_default_delete<_Tp, _Yp>(), _AllocT());
        __hold.release();
        __enable_weak_this(__p, __p);
    }

    template<class _Yp, class _Dp>
        shared_ptr(_Yp* __p, _Dp __d,
                   typename enable_if<__shared_ptr_deleter_ctor_reqs<_Dp, _Yp, element_type>::value, __nat>::type = __nat());
    template<class _Yp, class _Dp, class _Alloc>
        shared_ptr(_Yp* __p, _Dp __d, _Alloc __a,
                   typename enable_if<__shared_ptr_deleter_ctor_reqs<_Dp, _Yp, element_type>::value, __nat>::type = __nat());
    template <class _Dp> shared_ptr(nullptr_t __p, _Dp __d);
    template <class _Dp, class _Alloc> shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a);
    template<class _Yp> _LIBCPP_INLINE_VISIBILITY shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    shared_ptr(const shared_ptr& __r) _NOEXCEPT;
    template<class _Yp>
        _LIBCPP_INLINE_VISIBILITY
        shared_ptr(const shared_ptr<_Yp>& __r,
                   typename enable_if<__compatible_with<_Yp, element_type>::value, __nat>::type = __nat())
                       _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    shared_ptr(shared_ptr&& __r) _NOEXCEPT;
    template<class _Yp> _LIBCPP_INLINE_VISIBILITY  shared_ptr(shared_ptr<_Yp>&& __r,
                   typename enable_if<__compatible_with<_Yp, element_type>::value, __nat>::type = __nat())
                       _NOEXCEPT;
    template<class _Yp> explicit shared_ptr(const weak_ptr<_Yp>& __r,
                   typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type= __nat());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 487 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    template<class _Yp>
        shared_ptr(auto_ptr<_Yp>&& __r,
                   typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat());
#endif
# 491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    template <class _Yp, class _Dp>
        shared_ptr(unique_ptr<_Yp, _Dp>&&,
                   typename enable_if
                   <
                       !is_lvalue_reference<_Dp>::value &&
                       is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value,
                       __nat
                   >::type = __nat());
    template <class _Yp, class _Dp>
        shared_ptr(unique_ptr<_Yp, _Dp>&&,
                   typename enable_if
                   <
                       is_lvalue_reference<_Dp>::value &&
                       is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value,
                       __nat
                   >::type = __nat());

    ~shared_ptr();

    _LIBCPP_INLINE_VISIBILITY
    shared_ptr& operator=(const shared_ptr& __r) _NOEXCEPT;
    template<class _Yp>
        typename enable_if
        <
            __compatible_with<_Yp, element_type>::value,
            shared_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(const shared_ptr<_Yp>& __r) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    shared_ptr& operator=(shared_ptr&& __r) _NOEXCEPT;
    template<class _Yp>
        typename enable_if
        <
            __compatible_with<_Yp, element_type>::value,
            shared_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(shared_ptr<_Yp>&& __r);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    template<class _Yp>
        _LIBCPP_INLINE_VISIBILITY
        typename enable_if
        <
            !is_array<_Yp>::value &&
            is_convertible<_Yp*, element_type*>::value,
            shared_ptr
        >::type&
        operator=(auto_ptr<_Yp>&& __r);
#endif
# 541 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    template <class _Yp, class _Dp>
        typename enable_if
        <
            is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value,
            shared_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(unique_ptr<_Yp, _Dp>&& __r);

    _LIBCPP_INLINE_VISIBILITY
    void swap(shared_ptr& __r) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void reset() _NOEXCEPT;
    template<class _Yp>
        typename enable_if
        <
            __compatible_with<_Yp, element_type>::value,
            void
        >::type
        _LIBCPP_INLINE_VISIBILITY
        reset(_Yp* __p);
    template<class _Yp, class _Dp>
        typename enable_if
        <
            __compatible_with<_Yp, element_type>::value,
            void
        >::type
        _LIBCPP_INLINE_VISIBILITY
        reset(_Yp* __p, _Dp __d);
    template<class _Yp, class _Dp, class _Alloc>
        typename enable_if
        <
            __compatible_with<_Yp, element_type>::value,
            void
        >::type
        _LIBCPP_INLINE_VISIBILITY
        reset(_Yp* __p, _Dp __d, _Alloc __a);

    _LIBCPP_INLINE_VISIBILITY
    element_type* get() const _NOEXCEPT {return __ptr_;}
    _LIBCPP_INLINE_VISIBILITY
    typename add_lvalue_reference<element_type>::type operator*() const _NOEXCEPT
        {return *__ptr_;}
    _LIBCPP_INLINE_VISIBILITY
    element_type* operator->() const _NOEXCEPT
    {
        static_assert(!is_array<_Tp>::value,
                      "std::shared_ptr<T>::operator-> is only valid when T is not an array type.");
        return __ptr_;
    }
    _LIBCPP_INLINE_VISIBILITY
    long use_count() const _NOEXCEPT {return __cntrl_ ? __cntrl_->use_count() : 0;}
    _LIBCPP_INLINE_VISIBILITY
    bool unique() const _NOEXCEPT {return use_count() == 1;}
    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT {return get() != nullptr;}
    template <class _Up>
        _LIBCPP_INLINE_VISIBILITY
        bool owner_before(shared_ptr<_Up> const& __p) const _NOEXCEPT
        {return __cntrl_ < __p.__cntrl_;}
    template <class _Up>
        _LIBCPP_INLINE_VISIBILITY
        bool owner_before(weak_ptr<_Up> const& __p) const _NOEXCEPT
        {return __cntrl_ < __p.__cntrl_;}
    _LIBCPP_INLINE_VISIBILITY
    bool
    __owner_equivalent(const shared_ptr& __p) const
        {return __cntrl_ == __p.__cntrl_;}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    typename add_lvalue_reference<element_type>::type
    _LIBCPP_INLINE_VISIBILITY
    operator[](ptrdiff_t __i) const
    {
            static_assert(is_array<_Tp>::value,
                          "std::shared_ptr<T>::operator[] is only valid when T is an array type.");
            return __ptr_[__i];
    }
#endif
# 620 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

#ifndef _LIBCPP_NO_RTTI
    template <class _Dp>
        _LIBCPP_INLINE_VISIBILITY
        _Dp* __get_deleter() const _NOEXCEPT
            {return static_cast<_Dp*>(__cntrl_
                    ? const_cast<void *>(__cntrl_->__get_deleter(typeid(_Dp)))
                      : nullptr);}
#endif // _LIBCPP_NO_RTTI
# 629 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

    template<class _Yp, class _CntrlBlk>
    static shared_ptr<_Tp>
    __create_with_control_block(_Yp* __p, _CntrlBlk* __cntrl) _NOEXCEPT
    {
        shared_ptr<_Tp> __r;
        __r.__ptr_ = __p;
        __r.__cntrl_ = __cntrl;
        __r.__enable_weak_this(__r.__ptr_, __r.__ptr_);
        return __r;
    }

private:
    template <class _Yp, bool = is_function<_Yp>::value>
        struct __shared_ptr_default_allocator
        {
            typedef allocator<_Yp> type;
        };

    template <class _Yp>
        struct __shared_ptr_default_allocator<_Yp, true>
        {
            typedef allocator<__shared_ptr_dummy_rebind_allocator_type> type;
        };

    template <class _Yp, class _OrigPtr>
        _LIBCPP_INLINE_VISIBILITY
        typename enable_if<is_convertible<_OrigPtr*,
                                          const enable_shared_from_this<_Yp>*
        >::value,
            void>::type
        __enable_weak_this(const enable_shared_from_this<_Yp>* __e,
                           _OrigPtr* __ptr) _NOEXCEPT
        {
            typedef typename remove_cv<_Yp>::type _RawYp;
            if (__e && __e->__weak_this_.expired())
            {
                __e->__weak_this_ = shared_ptr<_RawYp>(*this,
                    const_cast<_RawYp*>(static_cast<const _Yp*>(__ptr)));
            }
        }

    _LIBCPP_INLINE_VISIBILITY void __enable_weak_this(...) _NOEXCEPT {}

    template <class, class _Yp>
        struct __shared_ptr_default_delete
            : default_delete<_Yp> {};

    template <class _Yp, class _Un, size_t _Sz>
        struct __shared_ptr_default_delete<_Yp[_Sz], _Un>
            : default_delete<_Yp[]> {};

    template <class _Yp, class _Un>
        struct __shared_ptr_default_delete<_Yp[], _Un>
            : default_delete<_Yp[]> {};

    template <class _Up> friend class _LIBCPP_TEMPLATE_VIS shared_ptr;
    template <class _Up> friend class _LIBCPP_TEMPLATE_VIS weak_ptr;
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _Tp>
shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>;
template<class _Tp, class _Dp>
shared_ptr(unique_ptr<_Tp, _Dp>) -> shared_ptr<_Tp>;
#endif
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
inline
_LIBCPP_CONSTEXPR
shared_ptr<_Tp>::shared_ptr() _NOEXCEPT
    : __ptr_(nullptr),
      __cntrl_(nullptr)
{
}

template<class _Tp>
inline
_LIBCPP_CONSTEXPR
shared_ptr<_Tp>::shared_ptr(nullptr_t) _NOEXCEPT
    : __ptr_(nullptr),
      __cntrl_(nullptr)
{
}

template<class _Tp>
template<class _Yp, class _Dp>
shared_ptr<_Tp>::shared_ptr(_Yp* __p, _Dp __d,
                            typename enable_if<__shared_ptr_deleter_ctor_reqs<_Dp, _Yp, element_type>::value, __nat>::type)
    : __ptr_(__p)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 724 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        typedef typename __shared_ptr_default_allocator<_Yp>::type _AllocT;
        typedef __shared_ptr_pointer<_Yp*, _Dp, _AllocT > _CntrlBlk;
#ifndef _LIBCPP_CXX03_LANG
        __cntrl_ = new _CntrlBlk(__p, _VSTD::move(__d), _AllocT());
#else
# 729 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __cntrl_ = new _CntrlBlk(__p, __d, _AllocT());
#endif // not _LIBCPP_CXX03_LANG
# 731 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __enable_weak_this(__p, __p);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __d(__p);
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 740 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template<class _Tp>
template<class _Dp>
shared_ptr<_Tp>::shared_ptr(nullptr_t __p, _Dp __d)
    : __ptr_(nullptr)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        typedef typename __shared_ptr_default_allocator<_Tp>::type _AllocT;
        typedef __shared_ptr_pointer<nullptr_t, _Dp, _AllocT > _CntrlBlk;
#ifndef _LIBCPP_CXX03_LANG
        __cntrl_ = new _CntrlBlk(__p, _VSTD::move(__d), _AllocT());
#else
# 756 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __cntrl_ = new _CntrlBlk(__p, __d, _AllocT());
#endif // not _LIBCPP_CXX03_LANG
# 758 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __d(__p);
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 766 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template<class _Tp>
template<class _Yp, class _Dp, class _Alloc>
shared_ptr<_Tp>::shared_ptr(_Yp* __p, _Dp __d, _Alloc __a,
                            typename enable_if<__shared_ptr_deleter_ctor_reqs<_Dp, _Yp, element_type>::value, __nat>::type)
    : __ptr_(__p)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 778 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        typedef __shared_ptr_pointer<_Yp*, _Dp, _Alloc> _CntrlBlk;
        typedef typename __allocator_traits_rebind<_Alloc, _CntrlBlk>::type _A2;
        typedef __allocator_destructor<_A2> _D2;
        _A2 __a2(__a);
        unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1));
        ::new ((void*)_VSTD::addressof(*__hold2.get()))
#ifndef _LIBCPP_CXX03_LANG
            _CntrlBlk(__p, _VSTD::move(__d), __a);
#else
# 787 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
            _CntrlBlk(__p, __d, __a);
#endif // not _LIBCPP_CXX03_LANG
# 789 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __cntrl_ = _VSTD::addressof(*__hold2.release());
        __enable_weak_this(__p, __p);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __d(__p);
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 799 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template<class _Tp>
template<class _Dp, class _Alloc>
shared_ptr<_Tp>::shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a)
    : __ptr_(nullptr)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 810 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        typedef __shared_ptr_pointer<nullptr_t, _Dp, _Alloc> _CntrlBlk;
        typedef typename __allocator_traits_rebind<_Alloc, _CntrlBlk>::type _A2;
        typedef __allocator_destructor<_A2> _D2;
        _A2 __a2(__a);
        unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1));
        ::new ((void*)_VSTD::addressof(*__hold2.get()))
#ifndef _LIBCPP_CXX03_LANG
            _CntrlBlk(__p, _VSTD::move(__d), __a);
#else
# 819 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
            _CntrlBlk(__p, __d, __a);
#endif // not _LIBCPP_CXX03_LANG
# 821 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
        __cntrl_ = _VSTD::addressof(*__hold2.release());
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __d(__p);
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
}

template<class _Tp>
template<class _Yp>
inline
shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, element_type *__p) _NOEXCEPT
    : __ptr_(__p),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_shared();
}

template<class _Tp>
inline
shared_ptr<_Tp>::shared_ptr(const shared_ptr& __r) _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_shared();
}

template<class _Tp>
template<class _Yp>
inline
shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r,
                            typename enable_if<__compatible_with<_Yp, element_type>::value, __nat>::type)
         _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_shared();
}

template<class _Tp>
inline
shared_ptr<_Tp>::shared_ptr(shared_ptr&& __r) _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    __r.__ptr_ = nullptr;
    __r.__cntrl_ = nullptr;
}

template<class _Tp>
template<class _Yp>
inline
shared_ptr<_Tp>::shared_ptr(shared_ptr<_Yp>&& __r,
                            typename enable_if<__compatible_with<_Yp, element_type>::value, __nat>::type)
         _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    __r.__ptr_ = nullptr;
    __r.__cntrl_ = nullptr;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 890 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
template<class _Tp>
template<class _Yp>
shared_ptr<_Tp>::shared_ptr(auto_ptr<_Yp>&& __r,
                            typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type)
    : __ptr_(__r.get())
{
    typedef __shared_ptr_pointer<_Yp*, default_delete<_Yp>, allocator<_Yp> > _CntrlBlk;
    __cntrl_ = new _CntrlBlk(__r.get(), default_delete<_Yp>(), allocator<_Yp>());
    __enable_weak_this(__r.get(), __r.get());
    __r.release();
}
#endif
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
template <class _Yp, class _Dp>
shared_ptr<_Tp>::shared_ptr(unique_ptr<_Yp, _Dp>&& __r,
                            typename enable_if
                            <
                                !is_lvalue_reference<_Dp>::value &&
                                is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value,
                                __nat
                            >::type)
    : __ptr_(__r.get())
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 915 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    if (__ptr_ == nullptr)
        __cntrl_ = nullptr;
    else
#endif
# 919 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    {
        typedef typename __shared_ptr_default_allocator<_Yp>::type _AllocT;
        typedef __shared_ptr_pointer<typename unique_ptr<_Yp, _Dp>::pointer, _Dp, _AllocT > _CntrlBlk;
        __cntrl_ = new _CntrlBlk(__r.get(), __r.get_deleter(), _AllocT());
        __enable_weak_this(__r.get(), __r.get());
    }
    __r.release();
}

template<class _Tp>
template <class _Yp, class _Dp>
shared_ptr<_Tp>::shared_ptr(unique_ptr<_Yp, _Dp>&& __r,
                            typename enable_if
                            <
                                is_lvalue_reference<_Dp>::value &&
                                is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value,
                                __nat
                            >::type)
    : __ptr_(__r.get())
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 940 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    if (__ptr_ == nullptr)
        __cntrl_ = nullptr;
    else
#endif
# 944 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    {
        typedef typename __shared_ptr_default_allocator<_Yp>::type _AllocT;
        typedef __shared_ptr_pointer<typename unique_ptr<_Yp, _Dp>::pointer,
                                     reference_wrapper<typename remove_reference<_Dp>::type>,
                                     _AllocT > _CntrlBlk;
        __cntrl_ = new _CntrlBlk(__r.get(), _VSTD::ref(__r.get_deleter()), _AllocT());
        __enable_weak_this(__r.get(), __r.get());
    }
    __r.release();
}

template<class _Tp>
shared_ptr<_Tp>::~shared_ptr()
{
    if (__cntrl_)
        __cntrl_->__release_shared();
}

template<class _Tp>
inline
shared_ptr<_Tp>&
shared_ptr<_Tp>::operator=(const shared_ptr& __r) _NOEXCEPT
{
    shared_ptr(__r).swap(*this);
    return *this;
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    __compatible_with<_Yp, typename shared_ptr<_Tp>::element_type>::value,
    shared_ptr<_Tp>&
>::type
shared_ptr<_Tp>::operator=(const shared_ptr<_Yp>& __r) _NOEXCEPT
{
    shared_ptr(__r).swap(*this);
    return *this;
}

template<class _Tp>
inline
shared_ptr<_Tp>&
shared_ptr<_Tp>::operator=(shared_ptr&& __r) _NOEXCEPT
{
    shared_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    __compatible_with<_Yp, typename shared_ptr<_Tp>::element_type>::value,
    shared_ptr<_Tp>&
>::type
shared_ptr<_Tp>::operator=(shared_ptr<_Yp>&& __r)
{
    shared_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1009 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    !is_array<_Yp>::value &&
    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
    shared_ptr<_Tp>
>::type&
shared_ptr<_Tp>::operator=(auto_ptr<_Yp>&& __r)
{
    shared_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}
#endif
# 1024 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
template <class _Yp, class _Dp>
inline
typename enable_if
<
    is_convertible<typename unique_ptr<_Yp, _Dp>::pointer,
                   typename shared_ptr<_Tp>::element_type*>::value,
    shared_ptr<_Tp>&
>::type
shared_ptr<_Tp>::operator=(unique_ptr<_Yp, _Dp>&& __r)
{
    shared_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}

template<class _Tp>
inline
void
shared_ptr<_Tp>::swap(shared_ptr& __r) _NOEXCEPT
{
    _VSTD::swap(__ptr_, __r.__ptr_);
    _VSTD::swap(__cntrl_, __r.__cntrl_);
}

template<class _Tp>
inline
void
shared_ptr<_Tp>::reset() _NOEXCEPT
{
    shared_ptr().swap(*this);
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    __compatible_with<_Yp, typename shared_ptr<_Tp>::element_type>::value,
    void
>::type
shared_ptr<_Tp>::reset(_Yp* __p)
{
    shared_ptr(__p).swap(*this);
}

template<class _Tp>
template<class _Yp, class _Dp>
inline
typename enable_if
<
    __compatible_with<_Yp, typename shared_ptr<_Tp>::element_type>::value,
    void
>::type
shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d)
{
    shared_ptr(__p, __d).swap(*this);
}

template<class _Tp>
template<class _Yp, class _Dp, class _Alloc>
inline
typename enable_if
<
    __compatible_with<_Yp, typename shared_ptr<_Tp>::element_type>::value,
    void
>::type
shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d, _Alloc __a)
{
    shared_ptr(__p, __d, __a).swap(*this);
}

//
// std::allocate_shared and std::make_shared
//
template<class _Tp, class _Alloc, class ..._Args, class = _EnableIf<!is_array<_Tp>::value> >
_LIBCPP_HIDE_FROM_ABI
shared_ptr<_Tp> allocate_shared(const _Alloc& __a, _Args&& ...__args)
{
    using _ControlBlock = __shared_ptr_emplace<_Tp, _Alloc>;
    using _ControlBlockAllocator = typename __allocator_traits_rebind<_Alloc, _ControlBlock>::type;
    __allocation_guard<_ControlBlockAllocator> __guard(__a, 1);
    ::new ((void*)_VSTD::addressof(*__guard.__get())) _ControlBlock(__a, _VSTD::forward<_Args>(__args)...);
    auto __control_block = __guard.__release_ptr();
    return shared_ptr<_Tp>::__create_with_control_block((*__control_block).__get_elem(), _VSTD::addressof(*__control_block));
}

template<class _Tp, class ..._Args, class = _EnableIf<!is_array<_Tp>::value> >
_LIBCPP_HIDE_FROM_ABI
shared_ptr<_Tp> make_shared(_Args&& ...__args)
{
    return _VSTD::allocate_shared<_Tp>(allocator<_Tp>(), _VSTD::forward<_Args>(__args)...);
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
    return __x.get() == __y.get();
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
    return !(__x == __y);
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    typedef typename common_type<_Tp*, _Up*>::type _Vp;
    return less<_Vp>()(__x.get(), __y.get());
#else
# 1143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    return less<>()(__x.get(), __y.get());
#endif
# 1145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
    return __y < __x;
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
    return !(__y < __x);
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT
{
    return !(__x < __y);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return !__x;
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return !__x;
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return static_cast<bool>(__x);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return static_cast<bool>(__x);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return less<_Tp*>()(__x.get(), nullptr);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return less<_Tp*>()(nullptr, __x.get());
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return nullptr < __x;
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return __x < nullptr;
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return !(nullptr < __x);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return !(__x < nullptr);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT
{
    return !(__x < nullptr);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT
{
    return !(nullptr < __x);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(shared_ptr<_Tp>& __x, shared_ptr<_Tp>& __y) _NOEXCEPT
{
    __x.swap(__y);
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
shared_ptr<_Tp>
static_pointer_cast(const shared_ptr<_Up>& __r) _NOEXCEPT
{
    return shared_ptr<_Tp>(__r,
                           static_cast<
                               typename shared_ptr<_Tp>::element_type*>(__r.get()));
}

template<class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
shared_ptr<_Tp>
dynamic_pointer_cast(const shared_ptr<_Up>& __r) _NOEXCEPT
{
    typedef typename shared_ptr<_Tp>::element_type _ET;
    _ET* __p = dynamic_cast<_ET*>(__r.get());
    return __p ? shared_ptr<_Tp>(__r, __p) : shared_ptr<_Tp>();
}

template<class _Tp, class _Up>
shared_ptr<_Tp>
const_pointer_cast(const shared_ptr<_Up>& __r) _NOEXCEPT
{
    typedef typename shared_ptr<_Tp>::element_type _RTp;
    return shared_ptr<_Tp>(__r, const_cast<_RTp*>(__r.get()));
}

template<class _Tp, class _Up>
shared_ptr<_Tp>
reinterpret_pointer_cast(const shared_ptr<_Up>& __r) _NOEXCEPT
{
    return shared_ptr<_Tp>(__r,
                           reinterpret_cast<
                               typename shared_ptr<_Tp>::element_type*>(__r.get()));
}

#ifndef _LIBCPP_NO_RTTI

template<class _Dp, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_Dp*
get_deleter(const shared_ptr<_Tp>& __p) _NOEXCEPT
{
    return __p.template __get_deleter<_Dp>();
}

#endif // _LIBCPP_NO_RTTI
# 1324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
class _LIBCPP_SHARED_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS weak_ptr
{
public:
    typedef _Tp element_type;
private:
    element_type*        __ptr_;
    __shared_weak_count* __cntrl_;

public:
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR weak_ptr() _NOEXCEPT;
    template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(shared_ptr<_Yp> const& __r,
                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0)
                        _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    weak_ptr(weak_ptr const& __r) _NOEXCEPT;
    template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr<_Yp> const& __r,
                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0)
                         _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    weak_ptr(weak_ptr&& __r) _NOEXCEPT;
    template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr<_Yp>&& __r,
                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0)
                         _NOEXCEPT;
    ~weak_ptr();

    _LIBCPP_INLINE_VISIBILITY
    weak_ptr& operator=(weak_ptr const& __r) _NOEXCEPT;
    template<class _Yp>
        typename enable_if
        <
            is_convertible<_Yp*, element_type*>::value,
            weak_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(weak_ptr<_Yp> const& __r) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    weak_ptr& operator=(weak_ptr&& __r) _NOEXCEPT;
    template<class _Yp>
        typename enable_if
        <
            is_convertible<_Yp*, element_type*>::value,
            weak_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(weak_ptr<_Yp>&& __r) _NOEXCEPT;

    template<class _Yp>
        typename enable_if
        <
            is_convertible<_Yp*, element_type*>::value,
            weak_ptr&
        >::type
        _LIBCPP_INLINE_VISIBILITY
        operator=(shared_ptr<_Yp> const& __r) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    void swap(weak_ptr& __r) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void reset() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    long use_count() const _NOEXCEPT
        {return __cntrl_ ? __cntrl_->use_count() : 0;}
    _LIBCPP_INLINE_VISIBILITY
    bool expired() const _NOEXCEPT
        {return __cntrl_ == nullptr || __cntrl_->use_count() == 0;}
    shared_ptr<_Tp> lock() const _NOEXCEPT;
    template<class _Up>
        _LIBCPP_INLINE_VISIBILITY
        bool owner_before(const shared_ptr<_Up>& __r) const _NOEXCEPT
        {return __cntrl_ < __r.__cntrl_;}
    template<class _Up>
        _LIBCPP_INLINE_VISIBILITY
        bool owner_before(const weak_ptr<_Up>& __r) const _NOEXCEPT
        {return __cntrl_ < __r.__cntrl_;}

    template <class _Up> friend class _LIBCPP_TEMPLATE_VIS weak_ptr;
    template <class _Up> friend class _LIBCPP_TEMPLATE_VIS shared_ptr;
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _Tp>
weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>;
#endif
# 1413 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
inline
_LIBCPP_CONSTEXPR
weak_ptr<_Tp>::weak_ptr() _NOEXCEPT
    : __ptr_(nullptr),
      __cntrl_(nullptr)
{
}

template<class _Tp>
inline
weak_ptr<_Tp>::weak_ptr(weak_ptr const& __r) _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_weak();
}

template<class _Tp>
template<class _Yp>
inline
weak_ptr<_Tp>::weak_ptr(shared_ptr<_Yp> const& __r,
                        typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type)
                         _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_weak();
}

template<class _Tp>
template<class _Yp>
inline
weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp> const& __r,
                        typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type)
         _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    if (__cntrl_)
        __cntrl_->__add_weak();
}

template<class _Tp>
inline
weak_ptr<_Tp>::weak_ptr(weak_ptr&& __r) _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    __r.__ptr_ = nullptr;
    __r.__cntrl_ = nullptr;
}

template<class _Tp>
template<class _Yp>
inline
weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp>&& __r,
                        typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type)
         _NOEXCEPT
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_)
{
    __r.__ptr_ = nullptr;
    __r.__cntrl_ = nullptr;
}

template<class _Tp>
weak_ptr<_Tp>::~weak_ptr()
{
    if (__cntrl_)
        __cntrl_->__release_weak();
}

template<class _Tp>
inline
weak_ptr<_Tp>&
weak_ptr<_Tp>::operator=(weak_ptr const& __r) _NOEXCEPT
{
    weak_ptr(__r).swap(*this);
    return *this;
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    is_convertible<_Yp*, _Tp*>::value,
    weak_ptr<_Tp>&
>::type
weak_ptr<_Tp>::operator=(weak_ptr<_Yp> const& __r) _NOEXCEPT
{
    weak_ptr(__r).swap(*this);
    return *this;
}

template<class _Tp>
inline
weak_ptr<_Tp>&
weak_ptr<_Tp>::operator=(weak_ptr&& __r) _NOEXCEPT
{
    weak_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    is_convertible<_Yp*, _Tp*>::value,
    weak_ptr<_Tp>&
>::type
weak_ptr<_Tp>::operator=(weak_ptr<_Yp>&& __r) _NOEXCEPT
{
    weak_ptr(_VSTD::move(__r)).swap(*this);
    return *this;
}

template<class _Tp>
template<class _Yp>
inline
typename enable_if
<
    is_convertible<_Yp*, _Tp*>::value,
    weak_ptr<_Tp>&
>::type
weak_ptr<_Tp>::operator=(shared_ptr<_Yp> const& __r) _NOEXCEPT
{
    weak_ptr(__r).swap(*this);
    return *this;
}

template<class _Tp>
inline
void
weak_ptr<_Tp>::swap(weak_ptr& __r) _NOEXCEPT
{
    _VSTD::swap(__ptr_, __r.__ptr_);
    _VSTD::swap(__cntrl_, __r.__cntrl_);
}

template<class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(weak_ptr<_Tp>& __x, weak_ptr<_Tp>& __y) _NOEXCEPT
{
    __x.swap(__y);
}

template<class _Tp>
inline
void
weak_ptr<_Tp>::reset() _NOEXCEPT
{
    weak_ptr().swap(*this);
}

template<class _Tp>
template<class _Yp>
shared_ptr<_Tp>::shared_ptr(const weak_ptr<_Yp>& __r,
                            typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type)
    : __ptr_(__r.__ptr_),
      __cntrl_(__r.__cntrl_ ? __r.__cntrl_->lock() : __r.__cntrl_)
{
    if (__cntrl_ == nullptr)
        __throw_bad_weak_ptr();
}

template<class _Tp>
shared_ptr<_Tp>
weak_ptr<_Tp>::lock() const _NOEXCEPT
{
    shared_ptr<_Tp> __r;
    __r.__cntrl_ = __cntrl_ ? __cntrl_->lock() : __cntrl_;
    if (__r.__cntrl_)
        __r.__ptr_ = __ptr_;
    return __r;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1597 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
template <class _Tp = void> struct owner_less;
#else
# 1599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
template <class _Tp> struct owner_less;
#endif
# 1601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3


_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS owner_less<shared_ptr<_Tp> >
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1607 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    : binary_function<shared_ptr<_Tp>, shared_ptr<_Tp>, bool>
#endif
# 1609 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1612 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> second_argument_type;
#endif
# 1616 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(shared_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(shared_ptr<_Tp> const& __x,   weak_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(  weak_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS owner_less<weak_ptr<_Tp> >
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1631 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    : binary_function<weak_ptr<_Tp>, weak_ptr<_Tp>, bool>
#endif
# 1633 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1636 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef weak_ptr<_Tp> first_argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef weak_ptr<_Tp> second_argument_type;
#endif
# 1640 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(  weak_ptr<_Tp> const& __x,   weak_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(shared_ptr<_Tp> const& __x,   weak_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(  weak_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1652 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
template <>
struct _LIBCPP_TEMPLATE_VIS owner_less<void>
{
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()( shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()( shared_ptr<_Tp> const& __x,   weak_ptr<_Up> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(   weak_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    template <class _Tp, class _Up>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(   weak_ptr<_Tp> const& __x,   weak_ptr<_Up> const& __y) const _NOEXCEPT
        {return __x.owner_before(__y);}
    typedef void is_transparent;
};
#endif
# 1674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

template<class _Tp>
class _LIBCPP_TEMPLATE_VIS enable_shared_from_this
{
    mutable weak_ptr<_Tp> __weak_this_;
protected:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    enable_shared_from_this() _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY
    enable_shared_from_this(enable_shared_from_this const&) _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY
    enable_shared_from_this& operator=(enable_shared_from_this const&) _NOEXCEPT
        {return *this;}
    _LIBCPP_INLINE_VISIBILITY
    ~enable_shared_from_this() {}
public:
    _LIBCPP_INLINE_VISIBILITY
    shared_ptr<_Tp> shared_from_this()
        {return shared_ptr<_Tp>(__weak_this_);}
    _LIBCPP_INLINE_VISIBILITY
    shared_ptr<_Tp const> shared_from_this() const
        {return shared_ptr<const _Tp>(__weak_this_);}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_INLINE_VISIBILITY
    weak_ptr<_Tp> weak_from_this() _NOEXCEPT
       { return __weak_this_; }

    _LIBCPP_INLINE_VISIBILITY
    weak_ptr<const _Tp> weak_from_this() const _NOEXCEPT
        { return __weak_this_; }
#endif // _LIBCPP_STD_VER > 14
# 1706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

    template <class _Up> friend class shared_ptr;
};

template <class _Tp> struct _LIBCPP_TEMPLATE_VIS hash;

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS hash<shared_ptr<_Tp> >
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t          result_type;
#endif
# 1719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const shared_ptr<_Tp>& __ptr) const _NOEXCEPT
    {
        return hash<typename shared_ptr<_Tp>::element_type*>()(__ptr.get());
    }
};

template<class _CharT, class _Traits, class _Yp>
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p);


#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

class _LIBCPP_TYPE_VIS __sp_mut
{
    void* __lx;
public:
    void lock() _NOEXCEPT;
    void unlock() _NOEXCEPT;

private:
    _LIBCPP_CONSTEXPR __sp_mut(void*) _NOEXCEPT;
    __sp_mut(const __sp_mut&);
    __sp_mut& operator=(const __sp_mut&);

    friend _LIBCPP_FUNC_VIS __sp_mut& __get_sp_mut(const void*);
};

_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
__sp_mut& __get_sp_mut(const void*);

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
bool
atomic_is_lock_free(const shared_ptr<_Tp>*)
{
    return false;
}

template <class _Tp>
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
shared_ptr<_Tp>
atomic_load(const shared_ptr<_Tp>* __p)
{
    __sp_mut& __m = __get_sp_mut(__p);
    __m.lock();
    shared_ptr<_Tp> __q = *__p;
    __m.unlock();
    return __q;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
shared_ptr<_Tp>
atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order)
{
    return atomic_load(__p);
}

template <class _Tp>
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
void
atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
{
    __sp_mut& __m = __get_sp_mut(__p);
    __m.lock();
    __p->swap(__r);
    __m.unlock();
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
void
atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order)
{
    atomic_store(__p, __r);
}

template <class _Tp>
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
shared_ptr<_Tp>
atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
{
    __sp_mut& __m = __get_sp_mut(__p);
    __m.lock();
    __p->swap(__r);
    __m.unlock();
    return __r;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
shared_ptr<_Tp>
atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order)
{
    return atomic_exchange(__p, __r);
}

template <class _Tp>
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
bool
atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w)
{
    shared_ptr<_Tp> __temp;
    __sp_mut& __m = __get_sp_mut(__p);
    __m.lock();
    if (__p->__owner_equivalent(*__v))
    {
        _VSTD::swap(__temp, *__p);
        *__p = __w;
        __m.unlock();
        return true;
    }
    _VSTD::swap(__temp, *__v);
    *__v = *__p;
    __m.unlock();
    return false;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
bool
atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w)
{
    return atomic_compare_exchange_strong(__p, __v, __w);
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
bool
atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
                                        shared_ptr<_Tp> __w, memory_order, memory_order)
{
    return atomic_compare_exchange_strong(__p, __v, __w);
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
bool
atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
                                      shared_ptr<_Tp> __w, memory_order, memory_order)
{
    return atomic_compare_exchange_weak(__p, __v, __w);
}

#endif // !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
# 1874 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_SHARED_PTR_H
# 1880 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/shared_ptr.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory> // TODO: replace with <__memory/__builtin_new_allocator.h>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 1 3
// -*- C++ -*-
//===-------------------------- memory ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_MEMORY
#define _LIBCPP_MEMORY

/*
    memory synopsis

namespace std
{

struct allocator_arg_t { };
inline constexpr allocator_arg_t allocator_arg = allocator_arg_t();

template <class T, class Alloc> struct uses_allocator;

template <class Ptr>
struct pointer_traits
{
    typedef Ptr pointer;
    typedef <details> element_type;
    typedef <details> difference_type;

    template <class U> using rebind = <details>;

    static pointer pointer_to(<details>);
};

template <class T>
struct pointer_traits<T*>
{
    typedef T* pointer;
    typedef T element_type;
    typedef ptrdiff_t difference_type;

    template <class U> using rebind = U*;

    static pointer pointer_to(<details>) noexcept; // constexpr in C++20
};

template <class T> constexpr T* to_address(T* p) noexcept; // C++20
template <class Ptr> constexpr auto to_address(const Ptr& p) noexcept; // C++20

template <class Alloc>
struct allocator_traits
{
    typedef Alloc                        allocator_type;
    typedef typename allocator_type::value_type
                                         value_type;

    typedef Alloc::pointer | value_type* pointer;
    typedef Alloc::const_pointer
          | pointer_traits<pointer>::rebind<const value_type>
                                         const_pointer;
    typedef Alloc::void_pointer
          | pointer_traits<pointer>::rebind<void>
                                         void_pointer;
    typedef Alloc::const_void_pointer
          | pointer_traits<pointer>::rebind<const void>
                                         const_void_pointer;
    typedef Alloc::difference_type
          | pointer_traits<pointer>::difference_type
                                         difference_type;
    typedef Alloc::size_type
          | make_unsigned<difference_type>::type
                                         size_type;
    typedef Alloc::propagate_on_container_copy_assignment
          | false_type                   propagate_on_container_copy_assignment;
    typedef Alloc::propagate_on_container_move_assignment
          | false_type                   propagate_on_container_move_assignment;
    typedef Alloc::propagate_on_container_swap
          | false_type                   propagate_on_container_swap;
    typedef Alloc::is_always_equal
          | is_empty                     is_always_equal;

    template <class T> using rebind_alloc  = Alloc::rebind<T>::other | Alloc<T, Args...>;
    template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>;

    static pointer allocate(allocator_type& a, size_type n);                          // constexpr and [[nodiscard]] in C++20
    static pointer allocate(allocator_type& a, size_type n, const_void_pointer hint); // constexpr and [[nodiscard]] in C++20

    static void deallocate(allocator_type& a, pointer p, size_type n) noexcept; // constexpr in C++20

    template <class T, class... Args>
    static void construct(allocator_type& a, T* p, Args&&... args); // constexpr in C++20

    template <class T>
    static void destroy(allocator_type& a, T* p); // constexpr in C++20

    static size_type max_size(const allocator_type& a); // noexcept in C++14, constexpr in C++20
    static allocator_type select_on_container_copy_construction(const allocator_type& a); // constexpr in C++20
};

template <>
class allocator<void> // removed in C++20
{
public:
    typedef void*                                 pointer;
    typedef const void*                           const_pointer;
    typedef void                                  value_type;

    template <class _Up> struct rebind {typedef allocator<_Up> other;};
};

template <class T>
class allocator
{
public:
    typedef size_t    size_type;
    typedef ptrdiff_t difference_type;
    typedef T*        pointer;                           // deprecated in C++17, removed in C++20
    typedef const T*  const_pointer;                     // deprecated in C++17, removed in C++20
    typedef typename add_lvalue_reference<T>::type
                      reference;                         // deprecated in C++17, removed in C++20
    typedef typename add_lvalue_reference<const T>::type
                      const_reference;                   // deprecated in C++17, removed in C++20

    typedef T         value_type;

    template <class U> struct rebind {typedef allocator<U> other;}; // deprecated in C++17, removed in C++20

    typedef true_type propagate_on_container_move_assignment;
    typedef true_type is_always_equal;

    constexpr allocator() noexcept;                      // constexpr in C++20
    constexpr allocator(const allocator&) noexcept;      // constexpr in C++20
    template <class U>
      constexpr allocator(const allocator<U>&) noexcept; // constexpr in C++20
    ~allocator();                                        // constexpr in C++20
    pointer address(reference x) const noexcept;             // deprecated in C++17, removed in C++20
    const_pointer address(const_reference x) const noexcept; // deprecated in C++17, removed in C++20
    T* allocate(size_t n, const void* hint);          // deprecated in C++17, removed in C++20
    T* allocate(size_t n);                              // constexpr in C++20
    void deallocate(T* p, size_t n) noexcept;           // constexpr in C++20
    size_type max_size() const noexcept;              // deprecated in C++17, removed in C++20
    template<class U, class... Args>
        void construct(U* p, Args&&... args);         // deprecated in C++17, removed in C++20
    template <class U>
        void destroy(U* p);                           // deprecated in C++17, removed in C++20
};

template <class T, class U>
bool operator==(const allocator<T>&, const allocator<U>&) noexcept; // constexpr in C++20

template <class T, class U>
bool operator!=(const allocator<T>&, const allocator<U>&) noexcept; // constexpr in C++20

template <class OutputIterator, class T>
class raw_storage_iterator // deprecated in C++17, removed in C++20
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
public:
    typedef output_iterator_tag iterator_category;
    typedef void                value_type;
    typedef void                difference_type; // until C++20
    typedef ptrdiff_t           difference_type; // since C++20
    typedef void                pointer;
    typedef void                reference;

    explicit raw_storage_iterator(OutputIterator x);
    raw_storage_iterator& operator*();
    raw_storage_iterator& operator=(const T& element);
    raw_storage_iterator& operator++();
    raw_storage_iterator  operator++(int);
};

template <class T> pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept;
template <class T> void               return_temporary_buffer(T* p) noexcept;

template <class T> T* addressof(T& r) noexcept;
template <class T> T* addressof(const T&& r) noexcept = delete;

template <class InputIterator, class ForwardIterator>
ForwardIterator
uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result);

template <class InputIterator, class Size, class ForwardIterator>
ForwardIterator
uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result);

template <class ForwardIterator, class T>
void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x);

template <class ForwardIterator, class Size, class T>
ForwardIterator
uninitialized_fill_n(ForwardIterator first, Size n, const T& x);

template <class T, class ...Args>
constexpr T* construct_at(T* location, Args&& ...args); // since C++20

template <class T>
void destroy_at(T* location); // constexpr in C++20

template <class ForwardIterator>
void destroy(ForwardIterator first, ForwardIterator last); // constexpr in C++20

template <class ForwardIterator, class Size>
ForwardIterator destroy_n(ForwardIterator first, Size n); // constexpr in C++20

template <class InputIterator, class ForwardIterator>
 ForwardIterator uninitialized_move(InputIterator first, InputIterator last, ForwardIterator result);

template <class InputIterator, class Size, class ForwardIterator>
 pair<InputIterator,ForwardIterator> uninitialized_move_n(InputIterator first, Size n, ForwardIterator result);

template <class ForwardIterator>
 void uninitialized_value_construct(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Size>
 ForwardIterator uninitialized_value_construct_n(ForwardIterator first, Size n);

template <class ForwardIterator>
 void uninitialized_default_construct(ForwardIterator first, ForwardIterator last);

template <class ForwardIterator, class Size>
 ForwardIterator uninitialized_default_construct_n(ForwardIterator first, Size n);

template <class Y> struct auto_ptr_ref {};      // deprecated in C++11, removed in C++17

template<class X>
class auto_ptr                                  // deprecated in C++11, removed in C++17
{
public:
    typedef X element_type;

    explicit auto_ptr(X* p =0) throw();
    auto_ptr(auto_ptr&) throw();
    template<class Y> auto_ptr(auto_ptr<Y>&) throw();
    auto_ptr& operator=(auto_ptr&) throw();
    template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw();
    auto_ptr& operator=(auto_ptr_ref<X> r) throw();
    ~auto_ptr() throw();

    typename add_lvalue_reference<X>::type operator*() const throw();
    X* operator->() const throw();
    X* get() const throw();
    X* release() throw();
    void reset(X* p =0) throw();

    auto_ptr(auto_ptr_ref<X>) throw();
    template<class Y> operator auto_ptr_ref<Y>() throw();
    template<class Y> operator auto_ptr<Y>() throw();
};

template <class T>
struct default_delete
{
    constexpr default_delete() noexcept = default;
    template <class U> default_delete(const default_delete<U>&) noexcept;

    void operator()(T*) const noexcept;
};

template <class T>
struct default_delete<T[]>
{
    constexpr default_delete() noexcept = default;
    void operator()(T*) const noexcept;
    template <class U> void operator()(U*) const = delete;
};

template <class T, class D = default_delete<T>>
class unique_ptr
{
public:
    typedef see below pointer;
    typedef T element_type;
    typedef D deleter_type;

    // constructors
    constexpr unique_ptr() noexcept;
    explicit unique_ptr(pointer p) noexcept;
    unique_ptr(pointer p, see below d1) noexcept;
    unique_ptr(pointer p, see below d2) noexcept;
    unique_ptr(unique_ptr&& u) noexcept;
    unique_ptr(nullptr_t) noexcept : unique_ptr() { }
    template <class U, class E>
        unique_ptr(unique_ptr<U, E>&& u) noexcept;
    template <class U>
        unique_ptr(auto_ptr<U>&& u) noexcept;       // removed in C++17

    // destructor
    ~unique_ptr();

    // assignment
    unique_ptr& operator=(unique_ptr&& u) noexcept;
    template <class U, class E> unique_ptr& operator=(unique_ptr<U, E>&& u) noexcept;
    unique_ptr& operator=(nullptr_t) noexcept;

    // observers
    typename add_lvalue_reference<T>::type operator*() const;
    pointer operator->() const noexcept;
    pointer get() const noexcept;
    deleter_type& get_deleter() noexcept;
    const deleter_type& get_deleter() const noexcept;
    explicit operator bool() const noexcept;

    // modifiers
    pointer release() noexcept;
    void reset(pointer p = pointer()) noexcept;
    void swap(unique_ptr& u) noexcept;
};

template <class T, class D>
class unique_ptr<T[], D>
{
public:
    typedef implementation-defined pointer;
    typedef T element_type;
    typedef D deleter_type;

    // constructors
    constexpr unique_ptr() noexcept;
    explicit unique_ptr(pointer p) noexcept;
    unique_ptr(pointer p, see below d) noexcept;
    unique_ptr(pointer p, see below d) noexcept;
    unique_ptr(unique_ptr&& u) noexcept;
    unique_ptr(nullptr_t) noexcept : unique_ptr() { }

    // destructor
    ~unique_ptr();

    // assignment
    unique_ptr& operator=(unique_ptr&& u) noexcept;
    unique_ptr& operator=(nullptr_t) noexcept;

    // observers
    T& operator[](size_t i) const;
    pointer get() const noexcept;
    deleter_type& get_deleter() noexcept;
    const deleter_type& get_deleter() const noexcept;
    explicit operator bool() const noexcept;

    // modifiers
    pointer release() noexcept;
    void reset(pointer p = pointer()) noexcept;
    void reset(nullptr_t) noexcept;
  template <class U> void reset(U) = delete;
    void swap(unique_ptr& u) noexcept;
};

template <class T, class D>
    void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept;

template <class T1, class D1, class T2, class D2>
    bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
    bool operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
    bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
    bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
    bool operator>(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
    bool operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);

template <class T, class D>
    bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D>
    bool operator==(nullptr_t, const unique_ptr<T, D>& y) noexcept;
template <class T, class D>
    bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D>
    bool operator!=(nullptr_t, const unique_ptr<T, D>& y) noexcept;

template <class T, class D>
    bool operator<(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
    bool operator<(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D>
    bool operator<=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
    bool operator<=(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D>
    bool operator>(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
    bool operator>(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D>
    bool operator>=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
    bool operator>=(nullptr_t, const unique_ptr<T, D>& y);

class bad_weak_ptr
    : public std::exception
{
    bad_weak_ptr() noexcept;
};

template<class T, class... Args> unique_ptr<T> make_unique(Args&&... args);     // C++14
template<class T>                unique_ptr<T> make_unique(size_t n);           // C++14
template<class T, class... Args> unspecified   make_unique(Args&&...) = delete; // C++14, T == U[N]

template<class E, class T, class Y, class D>
    basic_ostream<E, T>& operator<< (basic_ostream<E, T>& os, unique_ptr<Y, D> const& p);

template<class T>
class shared_ptr
{
public:
    typedef T element_type;
    typedef weak_ptr<T> weak_type; // C++17

    // constructors:
    constexpr shared_ptr() noexcept;
    template<class Y> explicit shared_ptr(Y* p);
    template<class Y, class D> shared_ptr(Y* p, D d);
    template<class Y, class D, class A> shared_ptr(Y* p, D d, A a);
    template <class D> shared_ptr(nullptr_t p, D d);
    template <class D, class A> shared_ptr(nullptr_t p, D d, A a);
    template<class Y> shared_ptr(const shared_ptr<Y>& r, T *p) noexcept;
    shared_ptr(const shared_ptr& r) noexcept;
    template<class Y> shared_ptr(const shared_ptr<Y>& r) noexcept;
    shared_ptr(shared_ptr&& r) noexcept;
    template<class Y> shared_ptr(shared_ptr<Y>&& r) noexcept;
    template<class Y> explicit shared_ptr(const weak_ptr<Y>& r);
    template<class Y> shared_ptr(auto_ptr<Y>&& r);          // removed in C++17
    template <class Y, class D> shared_ptr(unique_ptr<Y, D>&& r);
    shared_ptr(nullptr_t) : shared_ptr() { }

    // destructor:
    ~shared_ptr();

    // assignment:
    shared_ptr& operator=(const shared_ptr& r) noexcept;
    template<class Y> shared_ptr& operator=(const shared_ptr<Y>& r) noexcept;
    shared_ptr& operator=(shared_ptr&& r) noexcept;
    template<class Y> shared_ptr& operator=(shared_ptr<Y>&& r);
    template<class Y> shared_ptr& operator=(auto_ptr<Y>&& r); // removed in C++17
    template <class Y, class D> shared_ptr& operator=(unique_ptr<Y, D>&& r);

    // modifiers:
    void swap(shared_ptr& r) noexcept;
    void reset() noexcept;
    template<class Y> void reset(Y* p);
    template<class Y, class D> void reset(Y* p, D d);
    template<class Y, class D, class A> void reset(Y* p, D d, A a);

    // observers:
    T* get() const noexcept;
    T& operator*() const noexcept;
    T* operator->() const noexcept;
    long use_count() const noexcept;
    bool unique() const noexcept;
    explicit operator bool() const noexcept;
    template<class U> bool owner_before(shared_ptr<U> const& b) const noexcept;
    template<class U> bool owner_before(weak_ptr<U> const& b) const noexcept;
};

template<class T>
shared_ptr(weak_ptr<T>) -> shared_ptr<T>;
template<class T, class D>
shared_ptr(unique_ptr<T, D>) -> shared_ptr<T>;

// shared_ptr comparisons:
template<class T, class U>
    bool operator==(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;
template<class T, class U>
    bool operator!=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;
template<class T, class U>
    bool operator<(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;
template<class T, class U>
    bool operator>(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;
template<class T, class U>
    bool operator<=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;
template<class T, class U>
    bool operator>=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept;

template <class T>
    bool operator==(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
    bool operator==(nullptr_t, const shared_ptr<T>& y) noexcept;
template <class T>
    bool operator!=(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
    bool operator!=(nullptr_t, const shared_ptr<T>& y) noexcept;
template <class T>
    bool operator<(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
bool operator<(nullptr_t, const shared_ptr<T>& y) noexcept;
template <class T>
    bool operator<=(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
    bool operator<=(nullptr_t, const shared_ptr<T>& y) noexcept;
template <class T>
    bool operator>(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
    bool operator>(nullptr_t, const shared_ptr<T>& y) noexcept;
template <class T>
    bool operator>=(const shared_ptr<T>& x, nullptr_t) noexcept;
template <class T>
    bool operator>=(nullptr_t, const shared_ptr<T>& y) noexcept;

// shared_ptr specialized algorithms:
template<class T> void swap(shared_ptr<T>& a, shared_ptr<T>& b) noexcept;

// shared_ptr casts:
template<class T, class U>
    shared_ptr<T> static_pointer_cast(shared_ptr<U> const& r) noexcept;
template<class T, class U>
    shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const& r) noexcept;
template<class T, class U>
    shared_ptr<T> const_pointer_cast(shared_ptr<U> const& r) noexcept;

// shared_ptr I/O:
template<class E, class T, class Y>
    basic_ostream<E, T>& operator<< (basic_ostream<E, T>& os, shared_ptr<Y> const& p);

// shared_ptr get_deleter:
template<class D, class T> D* get_deleter(shared_ptr<T> const& p) noexcept;

template<class T, class... Args>
    shared_ptr<T> make_shared(Args&&... args);
template<class T, class A, class... Args>
    shared_ptr<T> allocate_shared(const A& a, Args&&... args);

template<class T>
class weak_ptr
{
public:
    typedef T element_type;

    // constructors
    constexpr weak_ptr() noexcept;
    template<class Y> weak_ptr(shared_ptr<Y> const& r) noexcept;
    weak_ptr(weak_ptr const& r) noexcept;
    template<class Y> weak_ptr(weak_ptr<Y> const& r) noexcept;
    weak_ptr(weak_ptr&& r) noexcept;                      // C++14
    template<class Y> weak_ptr(weak_ptr<Y>&& r) noexcept; // C++14

    // destructor
    ~weak_ptr();

    // assignment
    weak_ptr& operator=(weak_ptr const& r) noexcept;
    template<class Y> weak_ptr& operator=(weak_ptr<Y> const& r) noexcept;
    template<class Y> weak_ptr& operator=(shared_ptr<Y> const& r) noexcept;
    weak_ptr& operator=(weak_ptr&& r) noexcept;                      // C++14
    template<class Y> weak_ptr& operator=(weak_ptr<Y>&& r) noexcept; // C++14

    // modifiers
    void swap(weak_ptr& r) noexcept;
    void reset() noexcept;

    // observers
    long use_count() const noexcept;
    bool expired() const noexcept;
    shared_ptr<T> lock() const noexcept;
    template<class U> bool owner_before(shared_ptr<U> const& b) const noexcept;
    template<class U> bool owner_before(weak_ptr<U> const& b) const noexcept;
};

template<class T>
weak_ptr(shared_ptr<T>) -> weak_ptr<T>;

// weak_ptr specialized algorithms:
template<class T> void swap(weak_ptr<T>& a, weak_ptr<T>& b) noexcept;

// class owner_less:
template<class T> struct owner_less;

template<class T>
struct owner_less<shared_ptr<T> >
    : binary_function<shared_ptr<T>, shared_ptr<T>, bool>
{
    typedef bool result_type;
    bool operator()(shared_ptr<T> const&, shared_ptr<T> const&) const noexcept;
    bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const noexcept;
    bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const noexcept;
};

template<class T>
struct owner_less<weak_ptr<T> >
    : binary_function<weak_ptr<T>, weak_ptr<T>, bool>
{
    typedef bool result_type;
    bool operator()(weak_ptr<T> const&, weak_ptr<T> const&) const noexcept;
    bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const noexcept;
    bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const noexcept;
};

template <>  // Added in C++14
struct owner_less<void>
{
    template <class _Tp, class _Up>
    bool operator()( shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const noexcept;
    template <class _Tp, class _Up>
    bool operator()( shared_ptr<_Tp> const& __x,   weak_ptr<_Up> const& __y) const noexcept;
    template <class _Tp, class _Up>
    bool operator()(   weak_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const noexcept;
    template <class _Tp, class _Up>
    bool operator()(   weak_ptr<_Tp> const& __x,   weak_ptr<_Up> const& __y) const noexcept;

    typedef void is_transparent;
};

template<class T>
class enable_shared_from_this
{
protected:
    constexpr enable_shared_from_this() noexcept;
    enable_shared_from_this(enable_shared_from_this const&) noexcept;
    enable_shared_from_this& operator=(enable_shared_from_this const&) noexcept;
    ~enable_shared_from_this();
public:
    shared_ptr<T> shared_from_this();
    shared_ptr<T const> shared_from_this() const;
};

template<class T>
    bool atomic_is_lock_free(const shared_ptr<T>* p);
template<class T>
    shared_ptr<T> atomic_load(const shared_ptr<T>* p);
template<class T>
    shared_ptr<T> atomic_load_explicit(const shared_ptr<T>* p, memory_order mo);
template<class T>
    void atomic_store(shared_ptr<T>* p, shared_ptr<T> r);
template<class T>
    void atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo);
template<class T>
    shared_ptr<T> atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r);
template<class T>
    shared_ptr<T>
    atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo);
template<class T>
    bool
    atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w);
template<class T>
    bool
    atomic_compare_exchange_strong( shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w);
template<class T>
    bool
    atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
                                          shared_ptr<T> w, memory_order success,
                                          memory_order failure);
template<class T>
    bool
    atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
                                            shared_ptr<T> w, memory_order success,
                                            memory_order failure);
// Hash support
template <class T> struct hash;
template <class T, class D> struct hash<unique_ptr<T, D> >;
template <class T> struct hash<shared_ptr<T> >;

template <class T, class Alloc>
  inline constexpr bool uses_allocator_v = uses_allocator<T, Alloc>::value;

// Pointer safety
enum class pointer_safety { relaxed, preferred, strict }; // since C++11
void declare_reachable(void *p);                          // since C++11
template <class T> T *undeclare_reachable(T *p);          // since C++11
void declare_no_pointers(char *p, size_t n);              // since C++11
void undeclare_no_pointers(char *p, size_t n);            // since C++11
pointer_safety get_pointer_safety() noexcept;             // since C++11

void* align(size_t alignment, size_t size, void*& ptr, size_t& space);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocation_guard.h>
#endif /* expanded by -frewrite-includes */
# 673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator.h>
#endif /* expanded by -frewrite-includes */
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_arg_t.h>
#endif /* expanded by -frewrite-includes */
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/allocator_traits.h>
#endif /* expanded by -frewrite-includes */
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/compressed_pair.h>
#endif /* expanded by -frewrite-includes */
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/construct_at.h>
#endif /* expanded by -frewrite-includes */
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 679 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_safety.h>
#endif /* expanded by -frewrite-includes */
# 679 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_POINTER_SAFETY_H
#define _LIBCPP___MEMORY_POINTER_SAFETY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3

enum class pointer_safety : unsigned char {
  relaxed,
  preferred,
  strict
};

inline _LIBCPP_INLINE_VISIBILITY
pointer_safety get_pointer_safety() _NOEXCEPT {
  return pointer_safety::relaxed;
}

_LIBCPP_FUNC_VIS void declare_reachable(void* __p);
_LIBCPP_FUNC_VIS void declare_no_pointers(char* __p, size_t __n);
_LIBCPP_FUNC_VIS void undeclare_no_pointers(char* __p, size_t __n);
_LIBCPP_FUNC_VIS void* __undeclare_reachable(void* __p);

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_Tp*
undeclare_reachable(_Tp* __p)
{
    return static_cast<_Tp*>(__undeclare_reachable(__p));
}

#endif // !C++03
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_POINTER_SAFETY_H
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/pointer_safety.h" 3
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/raw_storage_iterator.h>
#endif /* expanded by -frewrite-includes */
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_RAW_STORAGE_ITERATOR_H
#define _LIBCPP___MEMORY_RAW_STORAGE_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 1 3
// -*- C++ -*-
//===-------------------------- iterator ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_ITERATOR
#define _LIBCPP_ITERATOR

/*
    iterator synopsis

#include <concepts>

namespace std
{
template<class> struct incrementable_traits;       // since C++20
template<class T>
  using iter_difference_t = see below;             // since C++20

template<class> struct indirectly_readable_traits; // since C++20
template<class T>
  using iter_value_t = see below;                  // since C++20

template<class Iterator>
struct iterator_traits;

template<class T>
  requires is_object_v<T>                    // since C++20
struct iterator_traits<T*>;

template<dereferenceable T>
  using iter_reference_t = decltype(*declval<T&>());

namespace ranges::inline unspecified {
    inline constexpr unspecified iter_move = unspecified; // since C++20, nodiscard as an extension
}}

template<dereferenceable T>
  requires ...
using iter_rvalue_reference_t = decltype(ranges::iter_move(declval<T&>())); // since C++20

// [iterator.concepts], iterator concepts
// [iterator.concept.readable], concept indirectly_readable
template<class In>
  concept indirectly_readable = see below;                      // since C++20

template<indirectly_readable T>
  using iter_common_reference_t =
    common_reference_t<iter_reference_t<T>, iter_value_t<T>&>;  // since C++20

// [iterator.concept.writable], concept indirectly_writable
template<class Out, class T>
  concept indirectly_writable = see below;                // since C++20

// [iterator.concept.winc], concept weakly_incrementable
template<class I>
  concept weakly_incrementable = see below;                // since C++20

// [iterator.concept.inc], concept incrementable
template<class I>
  concept incrementable = see below;                       // since C++20

// [iterator.concept.iterator], concept input_or_output_iterator
  template<class I>
    concept input_or_output_iterator = see below;          // since C++20

// [iterator.concept.sentinel], concept sentinel_for
template<class S, class I>
  concept sentinel_for = see below;                        // since C++20

// [iterator.concept.sizedsentinel], concept sized_sentinel_for
template<class S, class I>
  inline constexpr bool disable_sized_sentinel_for = false;

template<class S, class I>
  concept sized_sentinel_for = see below;

// [iterator.concept.input], concept input_iterator
template<class I>
  concept input_iterator = see below;                      // since C++20

// [iterator.concept.output], concept output_iterator
template<class I, class T>
  concept output_iterator = see below;                     // since C++20

// [iterator.concept.forward], concept forward_iterator
template<class I>
  concept forward_iterator = see below;                    // since C++20

// [iterator.concept.bidir], concept bidirectional_iterator
template<class I>
  concept bidirectional_iterator = see below;              // since C++20

// [iterator.concept.random.access], concept random_access_iterator
template<class I>
  concept random_access_iterator = see below;              // since C++20

// [indirectcallable]
// [indirectcallable.indirectinvocable]
template<class F, class I>
  concept indirectly_unary_invocable = see below;          // since C++20

template<class F, class I>
  concept indirectly_regular_unary_invocable = see below;  // since C++20

template<class F, class I>
  concept indirect_unary_predicate = see below;            // since C++20

template<class F, class I1, class I2>
  concept indirect_binary_predicate = see below;           // since C++20

template<class F, class I1, class I2 = I1>
  concept indirect_equivalence_relation = see below;       // since C++20

template<class F, class I1, class I2 = I1>
  concept indirect_strict_weak_order = see below;          // since C++20

template<class F, class... Is>
  using indirect_result_t = see below;                     // since C++20

// [projected], projected
template<indirectly_readable I, indirectly_regular_unary_invocable<I> Proj>
  struct projected;                                        // since C++20

template<weakly_incrementable I, indirectly_regular_unary_invocable<I> Proj>
  struct incrementable_traits<projected<I, Proj>>;         // since C++20

// [alg.req.ind.move], concept indirectly_movable
template<class In, class Out>
  concept indirectly_movable = see below;                  // since C++20

template<class In, class Out>
  concept indirectly_movable_storable = see below;         // since C++20

// [alg.req.ind.swap], concept indirectly_swappable
template<class I1, class I2 = I1>
  concept indirectly_swappable = see below;                // since C++20

template<input_or_output_iterator I, sentinel_for<I> S>
  requires (!same_as<I, S> && copyable<I>)
class common_iterator;                                     // since C++20

template<class Category, class T, class Distance = ptrdiff_t,
         class Pointer = T*, class Reference = T&>
struct iterator                                            // deprecated in C++17
{
    typedef T         value_type;
    typedef Distance  difference_type;
    typedef Pointer   pointer;
    typedef Reference reference;
    typedef Category  iterator_category;
};

struct input_iterator_tag  {};
struct output_iterator_tag {};
struct forward_iterator_tag       : public input_iterator_tag         {};
struct bidirectional_iterator_tag : public forward_iterator_tag       {};
struct random_access_iterator_tag : public bidirectional_iterator_tag {};

// 27.4.3, iterator operations
template <class InputIterator, class Distance>  // constexpr in C++17
  constexpr void advance(InputIterator& i, Distance n);

template <class InputIterator>  // constexpr in C++17
  constexpr typename iterator_traits<InputIterator>::difference_type
    distance(InputIterator first, InputIterator last);

template <class InputIterator>  // constexpr in C++17
  constexpr InputIterator next(InputIterator x,
typename iterator_traits<InputIterator>::difference_type n = 1);

template <class BidirectionalIterator>  // constexpr in C++17
  constexpr BidirectionalIterator prev(BidirectionalIterator x,
    typename iterator_traits<BidirectionalIterator>::difference_type n = 1);

// [range.iter.ops], range iterator operations
namespace ranges {
  // [range.iter.op.advance], ranges::advance
  template<input_or_output_iterator I>
    constexpr void advance(I& i, iter_difference_t<I> n);                          // since C++20
  template<input_or_output_iterator I, sentinel_for<I> S>
    constexpr void advance(I& i, S bound);                                         // since C++20
  template<input_or_output_iterator I, sentinel_for<I> S>
    constexpr iter_difference_t<I> advance(I& i, iter_difference_t<I> n, S bound); // since C++20
}

template <class Iterator>
class reverse_iterator
    : public iterator<typename iterator_traits<Iterator>::iterator_category, // until C++17
                      typename iterator_traits<Iterator>::value_type,
                      typename iterator_traits<Iterator>::difference_type,
                      typename iterator_traits<Iterator>::pointer,
                      typename iterator_traits<Iterator>::reference>
{
protected:
    Iterator current;
public:
    typedef Iterator                                            iterator_type;
    typedef typename iterator_traits<Iterator>::difference_type difference_type;
    typedef typename iterator_traits<Iterator>::reference       reference;
    typedef typename iterator_traits<Iterator>::pointer         pointer;

    constexpr reverse_iterator();
    constexpr explicit reverse_iterator(Iterator x);
    template <class U> constexpr reverse_iterator(const reverse_iterator<U>& u);
    template <class U> constexpr reverse_iterator& operator=(const reverse_iterator<U>& u);
    constexpr Iterator base() const;
    constexpr reference operator*() const;
    constexpr pointer   operator->() const;
    constexpr reverse_iterator& operator++();
    constexpr reverse_iterator  operator++(int);
    constexpr reverse_iterator& operator--();
    constexpr reverse_iterator  operator--(int);
    constexpr reverse_iterator  operator+ (difference_type n) const;
    constexpr reverse_iterator& operator+=(difference_type n);
    constexpr reverse_iterator  operator- (difference_type n) const;
    constexpr reverse_iterator& operator-=(difference_type n);
    constexpr reference         operator[](difference_type n) const;
};

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator==(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator<(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator!=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator>(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator>=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool                          // constexpr in C++17
operator<=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr auto
operator-(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y)
-> decltype(__y.base() - __x.base());   // constexpr in C++17

template <class Iterator>
constexpr reverse_iterator<Iterator>
operator+(typename reverse_iterator<Iterator>::difference_type n,
          const reverse_iterator<Iterator>& x);   // constexpr in C++17

template <class Iterator>
constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i); // C++14, constexpr in C++17

template <class Container>
class back_insert_iterator
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
protected:
    Container* container;
public:
    typedef Container                   container_type;
    typedef void                        value_type;
    typedef void                        difference_type; // until C++20
    typedef ptrdiff_t                   difference_type; // since C++20
    typedef void                        reference;
    typedef void                        pointer;

    explicit back_insert_iterator(Container& x);  // constexpr in C++20
    back_insert_iterator& operator=(const typename Container::value_type& value);  // constexpr in C++20
    back_insert_iterator& operator*();  // constexpr in C++20
    back_insert_iterator& operator++();  // constexpr in C++20
    back_insert_iterator  operator++(int);  // constexpr in C++20
};

template <class Container> back_insert_iterator<Container> back_inserter(Container& x);  // constexpr in C++20

template <class Container>
class front_insert_iterator
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
protected:
    Container* container;
public:
    typedef Container                    container_type;
    typedef void                         value_type;
    typedef void                         difference_type; // until C++20
    typedef ptrdiff_t                    difference_type; // since C++20
    typedef void                         reference;
    typedef void                         pointer;

    explicit front_insert_iterator(Container& x);  // constexpr in C++20
    front_insert_iterator& operator=(const typename Container::value_type& value);  // constexpr in C++20
    front_insert_iterator& operator*();  // constexpr in C++20
    front_insert_iterator& operator++();  // constexpr in C++20
    front_insert_iterator  operator++(int);  // constexpr in C++20
};

template <class Container> front_insert_iterator<Container> front_inserter(Container& x);  // constexpr in C++20

template <class Container>
class insert_iterator
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
protected:
    Container* container;
    typename Container::iterator iter;
public:
    typedef Container              container_type;
    typedef void                   value_type;
    typedef void                   difference_type; // until C++20
    typedef ptrdiff_t              difference_type; // since C++20
    typedef void                   reference;
    typedef void                   pointer;

    insert_iterator(Container& x, typename Container::iterator i);  // constexpr in C++20
    insert_iterator& operator=(const typename Container::value_type& value);  // constexpr in C++20
    insert_iterator& operator*();  // constexpr in C++20
    insert_iterator& operator++();  // constexpr in C++20
    insert_iterator& operator++(int);  // constexpr in C++20
};

template <class Container, class Iterator>
insert_iterator<Container> inserter(Container& x, Iterator i);  // constexpr in C++20

template <class Iterator>
class move_iterator {
public:
    typedef Iterator                                              iterator_type;
    typedef typename iterator_traits<Iterator>::difference_type   difference_type;
    typedef Iterator                                              pointer;
    typedef typename iterator_traits<Iterator>::value_type        value_type;
    typedef typename iterator_traits<Iterator>::iterator_category iterator_category;
    typedef value_type&&                                          reference;

    constexpr move_iterator();  // all the constexprs are in C++17
    constexpr explicit move_iterator(Iterator i);
    template <class U>
      constexpr move_iterator(const move_iterator<U>& u);
    template <class U>
      constexpr move_iterator& operator=(const move_iterator<U>& u);
    constexpr iterator_type base() const;
    constexpr reference operator*() const;
    constexpr pointer operator->() const;
    constexpr move_iterator& operator++();
    constexpr move_iterator operator++(int);
    constexpr move_iterator& operator--();
    constexpr move_iterator operator--(int);
    constexpr move_iterator operator+(difference_type n) const;
    constexpr move_iterator& operator+=(difference_type n);
    constexpr move_iterator operator-(difference_type n) const;
    constexpr move_iterator& operator-=(difference_type n);
    constexpr unspecified operator[](difference_type n) const;
private:
    Iterator current; // exposition only
};

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator==(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator!=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator<(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator<=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator>(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr bool   // constexpr in C++17
operator>=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);

template <class Iterator1, class Iterator2>
constexpr auto   // constexpr in C++17
operator-(const move_iterator<Iterator1>& x,
          const move_iterator<Iterator2>& y) -> decltype(x.base() - y.base());

template <class Iterator>
constexpr move_iterator<Iterator> operator+(   // constexpr in C++17
            typename move_iterator<Iterator>::difference_type n,
            const move_iterator<Iterator>& x);

template <class Iterator>   // constexpr in C++17
constexpr  move_iterator<Iterator> make_move_iterator(const Iterator& i);

// [default.sentinel], default sentinel
struct default_sentinel_t;
inline constexpr default_sentinel_t default_sentinel{};

// [iterators.counted], counted iterators
template<input_or_output_iterator I> class counted_iterator;

template<input_iterator I>
  requires see below
  struct iterator_traits<counted_iterator<I>>;

template <class T, class charT = char, class traits = char_traits<charT>, class Distance = ptrdiff_t>
class istream_iterator
    : public iterator<input_iterator_tag, T, Distance, const T*, const T&> // until C++17
{
public:
    typedef input_iterator_tag           iterator_category;
    typedef T                            value_type;
    typedef Distance                     difference_type;
    typedef const T*                     pointer;
    typedef const T&                     reference;

    typedef charT                        char_type;
    typedef traits                       traits_type;
    typedef basic_istream<charT, traits> istream_type;

    constexpr istream_iterator();
    istream_iterator(istream_type& s);
    istream_iterator(const istream_iterator& x);
    ~istream_iterator();

    const T& operator*() const;
    const T* operator->() const;
    istream_iterator& operator++();
    istream_iterator  operator++(int);
};

template <class T, class charT, class traits, class Distance>
bool operator==(const istream_iterator<T,charT,traits,Distance>& x,
                const istream_iterator<T,charT,traits,Distance>& y);
template <class T, class charT, class traits, class Distance>
bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,
                const istream_iterator<T,charT,traits,Distance>& y);

template <class T, class charT = char, class traits = char_traits<charT> >
class ostream_iterator
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
public:
    typedef output_iterator_tag         iterator_category;
    typedef void                        value_type;
    typedef void                        difference_type; // until C++20
    typedef ptrdiff_t                   difference_type; // since C++20
    typedef void                        pointer;
    typedef void                        reference;

    typedef charT char_type;
    typedef traits traits_type;
    typedef basic_ostream<charT,traits> ostream_type;

    ostream_iterator(ostream_type& s);
    ostream_iterator(ostream_type& s, const charT* delimiter);
    ostream_iterator(const ostream_iterator& x);
    ~ostream_iterator();
    ostream_iterator& operator=(const T& value);

    ostream_iterator& operator*();
    ostream_iterator& operator++();
    ostream_iterator& operator++(int);
};

template<class charT, class traits = char_traits<charT> >
class istreambuf_iterator
    : public iterator<input_iterator_tag, charT, traits::off_type, unspecified, charT> // until C++17
{
public:
    typedef input_iterator_tag              iterator_category;
    typedef charT                           value_type;
    typedef traits::off_type                difference_type;
    typedef unspecified                     pointer;
    typedef charT                           reference;

    typedef charT                           char_type;
    typedef traits                          traits_type;
    typedef traits::int_type                int_type;
    typedef basic_streambuf<charT, traits>  streambuf_type;
    typedef basic_istream<charT, traits>    istream_type;

    istreambuf_iterator() noexcept;
    istreambuf_iterator(istream_type& s) noexcept;
    istreambuf_iterator(streambuf_type* s) noexcept;
    istreambuf_iterator(a-private-type) noexcept;

    charT                operator*() const;
    pointer operator->() const;
    istreambuf_iterator& operator++();
    a-private-type       operator++(int);

    bool equal(const istreambuf_iterator& b) const;
};

template <class charT, class traits>
bool operator==(const istreambuf_iterator<charT,traits>& a,
                const istreambuf_iterator<charT,traits>& b);
template <class charT, class traits>
bool operator!=(const istreambuf_iterator<charT,traits>& a,
                const istreambuf_iterator<charT,traits>& b);

template <class charT, class traits = char_traits<charT> >
class ostreambuf_iterator
    : public iterator<output_iterator_tag, void, void, void, void> // until C++17
{
public:
    typedef output_iterator_tag            iterator_category;
    typedef void                           value_type;
    typedef void                           difference_type; // until C++20
    typedef ptrdiff_t                      difference_type; // since C++20
    typedef void                           pointer;
    typedef void                           reference;

    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef basic_streambuf<charT, traits> streambuf_type;
    typedef basic_ostream<charT, traits>   ostream_type;

    ostreambuf_iterator(ostream_type& s) noexcept;
    ostreambuf_iterator(streambuf_type* s) noexcept;
    ostreambuf_iterator& operator=(charT c);
    ostreambuf_iterator& operator*();
    ostreambuf_iterator& operator++();
    ostreambuf_iterator& operator++(int);
    bool failed() const noexcept;
};

template <class C> constexpr auto begin(C& c) -> decltype(c.begin());
template <class C> constexpr auto begin(const C& c) -> decltype(c.begin());
template <class C> constexpr auto end(C& c) -> decltype(c.end());
template <class C> constexpr auto end(const C& c) -> decltype(c.end());
template <class T, size_t N> constexpr T* begin(T (&array)[N]);
template <class T, size_t N> constexpr T* end(T (&array)[N]);

template <class C> auto constexpr cbegin(const C& c) -> decltype(std::begin(c));        // C++14
template <class C> auto constexpr cend(const C& c) -> decltype(std::end(c));            // C++14
template <class C> auto constexpr rbegin(C& c) -> decltype(c.rbegin());                 // C++14
template <class C> auto constexpr rbegin(const C& c) -> decltype(c.rbegin());           // C++14
template <class C> auto constexpr rend(C& c) -> decltype(c.rend());                     // C++14
template <class C> constexpr auto rend(const C& c) -> decltype(c.rend());               // C++14
template <class E> reverse_iterator<const E*> constexpr rbegin(initializer_list<E> il); // C++14
template <class E> reverse_iterator<const E*> constexpr rend(initializer_list<E> il);   // C++14
template <class T, size_t N> reverse_iterator<T*> constexpr rbegin(T (&array)[N]);      // C++14
template <class T, size_t N> reverse_iterator<T*> constexpr rend(T (&array)[N]);        // C++14
template <class C> constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));      // C++14
template <class C> constexpr auto crend(const C& c) -> decltype(std::rend(c));          // C++14

// 24.8, container access:
template <class C> constexpr auto size(const C& c) -> decltype(c.size());         // C++17
template <class T, size_t N> constexpr size_t size(const T (&array)[N]) noexcept; // C++17

template <class C> constexpr auto ssize(const C& c)
    -> common_type_t<ptrdiff_t, make_signed_t<decltype(c.size())>>;                    // C++20
template <class T, ptrdiff_t> constexpr ptrdiff_t ssize(const T (&array)[N]) noexcept; // C++20

template <class C> constexpr auto empty(const C& c) -> decltype(c.empty());       // C++17
template <class T, size_t N> constexpr bool empty(const T (&array)[N]) noexcept;  // C++17
template <class E> constexpr bool empty(initializer_list<E> il) noexcept;         // C++17
template <class C> constexpr auto data(C& c) -> decltype(c.data());               // C++17
template <class C> constexpr auto data(const C& c) -> decltype(c.data());         // C++17
template <class T, size_t N> constexpr T* data(T (&array)[N]) noexcept;           // C++17
template <class E> constexpr const E* data(initializer_list<E> il) noexcept;      // C++17

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 576 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 579 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/access.h>
#endif /* expanded by -frewrite-includes */
# 579 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ACCESS_H
#define _LIBCPP___ITERATOR_ACCESS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp, size_t _Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp*
begin(_Tp (&__array)[_Np])
{
    return __array;
}

template <class _Tp, size_t _Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp*
end(_Tp (&__array)[_Np])
{
    return __array + _Np;
}

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
begin(_Cp& __c) -> decltype(__c.begin())
{
    return __c.begin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
begin(const _Cp& __c) -> decltype(__c.begin())
{
    return __c.begin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
end(_Cp& __c) -> decltype(__c.end())
{
    return __c.end();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
end(const _Cp& __c) -> decltype(__c.end())
{
    return __c.end();
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
auto cbegin(const _Cp& __c) -> decltype(_VSTD::begin(__c))
{
    return _VSTD::begin(__c);
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
auto cend(const _Cp& __c) -> decltype(_VSTD::end(__c))
{
    return _VSTD::end(__c);
}

#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3


#else  // defined(_LIBCPP_CXX03_LANG)
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY
typename _Cp::iterator
begin(_Cp& __c)
{
    return __c.begin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY
typename _Cp::const_iterator
begin(const _Cp& __c)
{
    return __c.begin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY
typename _Cp::iterator
end(_Cp& __c)
{
    return __c.end();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY
typename _Cp::const_iterator
end(const _Cp& __c)
{
    return __c.end();
}

#endif // !defined(_LIBCPP_CXX03_LANG)
# 129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ACCESS_H
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/access.h" 3
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/advance.h>
#endif /* expanded by -frewrite-includes */
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ADVANCE_H
#define _LIBCPP___ITERATOR_ADVANCE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__function_like.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_FUNCTION_LIKE_H
#define _LIBCPP___ITERATOR_FUNCTION_LIKE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3

namespace ranges {
// Per [range.iter.ops.general] and [algorithms.requirements], functions in namespace std::ranges
// can't be found by ADL and inhibit ADL when found by unqualified lookup. The easiest way to
// facilitate this is to use function objects.
//
// Since these are still standard library functions, we use `__function_like` to eliminate most of
// the properties that function objects get by default (e.g. semiregularity, addressability), to
// limit the surface area of the unintended public interface, so as to curb the effect of Hyrum's
// law.
struct __function_like {
  __function_like() = delete;
  __function_like(__function_like const&) = delete;
  __function_like& operator=(__function_like const&) = delete;

  void operator&() const = delete;

  struct __tag { };

protected:
  constexpr explicit __function_like(__tag) noexcept {}
  ~__function_like() = default;
};
} // namespace ranges

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_FUNCTION_LIKE_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__function_like.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_CONCEPTS_H
#define _LIBCPP___ITERATOR_CONCEPTS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_move.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ITER_MOVE_H
#define _LIBCPP___ITERATOR_ITER_MOVE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts> // __class_or_enum
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3

namespace ranges::__iter_move {
void iter_move();

template<class _Ip>
concept __unqualified_iter_move = requires(_Ip&& __i) {
    iter_move(_VSTD::forward<_Ip>(__i));
};

// [iterator.cust.move]/1
// The name ranges::iter_move denotes a customization point object.
// The expression ranges::iter_move(E) for a subexpression E is
// expression-equivalent to:
struct __fn {
  // [iterator.cust.move]/1.1
  // iter_move(E), if E has class or enumeration type and iter_move(E) is a
  // well-formed expression when treated as an unevaluated operand, [...]
  template<class _Ip>
    requires __class_or_enum<remove_cvref_t<_Ip>> && __unqualified_iter_move<_Ip>
  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const
    noexcept(noexcept(iter_move(_VSTD::forward<_Ip>(__i))))
  {
    return iter_move(_VSTD::forward<_Ip>(__i));
  }

  // [iterator.cust.move]/1.2
  // Otherwise, if the expression *E is well-formed:
  //  1.2.1 if *E is an lvalue, std::move(*E);
  //  1.2.2 otherwise, *E.
  template<class _Ip>
    requires (!(__class_or_enum<remove_cvref_t<_Ip>> && __unqualified_iter_move<_Ip>)) &&
    requires(_Ip&& __i) { *_VSTD::forward<_Ip>(__i); }
  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const
    noexcept(noexcept(*_VSTD::forward<_Ip>(__i)))
  {
    if constexpr (is_lvalue_reference_v<decltype(*_VSTD::forward<_Ip>(__i))>) {
      return _VSTD::move(*_VSTD::forward<_Ip>(__i));
    } else {
      return *_VSTD::forward<_Ip>(__i);
    }
  }

  // [iterator.cust.move]/1.3
  // Otherwise, ranges::iter_move(E) is ill-formed.
};
} // namespace ranges::__iter_move

namespace ranges::inline __cpo {
  inline constexpr auto iter_move = __iter_move::__fn{};
}

template<__dereferenceable _Tp>
requires requires(_Tp& __t) { { ranges::iter_move(__t) } -> __referenceable; }
using iter_rvalue_reference_t = decltype(ranges::iter_move(declval<_Tp&>()));

#endif // !_LIBCPP_HAS_NO_RANGES
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ITER_MOVE_H
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_move.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
#endif
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3

// clang-format off

// [iterator.concept.readable]
template<class _In>
concept __indirectly_readable_impl =
  requires(const _In __i) {
    typename iter_value_t<_In>;
    typename iter_reference_t<_In>;
    typename iter_rvalue_reference_t<_In>;
    { *__i } -> same_as<iter_reference_t<_In>>;
    { ranges::iter_move(__i) } -> same_as<iter_rvalue_reference_t<_In>>;
  } &&
  common_reference_with<iter_reference_t<_In>&&, iter_value_t<_In>&> &&
  common_reference_with<iter_reference_t<_In>&&, iter_rvalue_reference_t<_In>&&> &&
  common_reference_with<iter_rvalue_reference_t<_In>&&, const iter_value_t<_In>&>;

template<class _In>
concept indirectly_readable = __indirectly_readable_impl<remove_cvref_t<_In>>;

template<indirectly_readable _Tp>
using iter_common_reference_t = common_reference_t<iter_reference_t<_Tp>, iter_value_t<_Tp>&>;

// [iterator.concept.writable]
template<class _Out, class _Tp>
concept indirectly_writable =
  requires(_Out&& __o, _Tp&& __t) {
    *__o = _VSTD::forward<_Tp>(__t);                        // not required to be equality-preserving
    *_VSTD::forward<_Out>(__o) = _VSTD::forward<_Tp>(__t);  // not required to be equality-preserving
    const_cast<const iter_reference_t<_Out>&&>(*__o) = _VSTD::forward<_Tp>(__t);                       // not required to be equality-preserving
    const_cast<const iter_reference_t<_Out>&&>(*_VSTD::forward<_Out>(__o)) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving
  };

// [iterator.concept.winc]
template<class _Tp>
concept __integer_like = integral<_Tp> && !same_as<_Tp, bool>;

template<class _Tp>
concept __signed_integer_like = signed_integral<_Tp>;

template<class _Ip>
concept weakly_incrementable =
  movable<_Ip> &&
  requires(_Ip __i) {
    typename iter_difference_t<_Ip>;
    requires __signed_integer_like<iter_difference_t<_Ip>>;
    { ++__i } -> same_as<_Ip&>;   // not required to be equality-preserving
    __i++;                        // not required to be equality-preserving
  };

// [iterator.concept.inc]
template<class _Ip>
concept incrementable =
  regular<_Ip> &&
  weakly_incrementable<_Ip> &&
  requires(_Ip __i) {
    { __i++ } -> same_as<_Ip>;
  };

// [iterator.concept.iterator]
template<class _Ip>
concept input_or_output_iterator =
  requires(_Ip __i) {
    { *__i } -> __referenceable;
  } &&
  weakly_incrementable<_Ip>;

// [iterator.concept.sentinel]
template<class _Sp, class _Ip>
concept sentinel_for =
  semiregular<_Sp> &&
  input_or_output_iterator<_Ip> &&
  __weakly_equality_comparable_with<_Sp, _Ip>;

template<class, class>
inline constexpr bool disable_sized_sentinel_for = false;

template<class _Sp, class _Ip>
concept sized_sentinel_for =
  sentinel_for<_Sp, _Ip> &&
  !disable_sized_sentinel_for<remove_cv_t<_Sp>, remove_cv_t<_Ip>> &&
  requires(const _Ip& __i, const _Sp& __s) {
    { __s - __i } -> same_as<iter_difference_t<_Ip>>;
    { __i - __s } -> same_as<iter_difference_t<_Ip>>;
  };

// [iterator.concept.input]
template<class _Ip>
concept input_iterator =
  input_or_output_iterator<_Ip> &&
  indirectly_readable<_Ip> &&
  requires { typename _ITER_CONCEPT<_Ip>; } &&
  derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>;

// [iterator.concept.output]
template<class _Ip, class _Tp>
concept output_iterator =
  input_or_output_iterator<_Ip> &&
  indirectly_writable<_Ip, _Tp> &&
  requires (_Ip __it, _Tp&& __t) {
    *__it++ = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving
  };

// [iterator.concept.forward]
template<class _Ip>
concept forward_iterator =
  input_iterator<_Ip> &&
  derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> &&
  incrementable<_Ip> &&
  sentinel_for<_Ip, _Ip>;

// [iterator.concept.bidir]
template<class _Ip>
concept bidirectional_iterator =
  forward_iterator<_Ip> &&
  derived_from<_ITER_CONCEPT<_Ip>, bidirectional_iterator_tag> &&
  requires(_Ip __i) {
    { --__i } -> same_as<_Ip&>;
    { __i-- } -> same_as<_Ip>;
  };

template<class _Ip>
concept random_access_iterator =
  bidirectional_iterator<_Ip> &&
  derived_from<_ITER_CONCEPT<_Ip>, random_access_iterator_tag> &&
  totally_ordered<_Ip> &&
  sized_sentinel_for<_Ip, _Ip> &&
  requires(_Ip __i, const _Ip __j, const iter_difference_t<_Ip> __n) {
    { __i += __n } -> same_as<_Ip&>;
    { __j +  __n } -> same_as<_Ip>;
    { __n +  __j } -> same_as<_Ip>;
    { __i -= __n } -> same_as<_Ip&>;
    { __j -  __n } -> same_as<_Ip>;
    {  __j[__n]  } -> same_as<iter_reference_t<_Ip>>;
  };

template<class _Ip>
concept contiguous_iterator =
  random_access_iterator<_Ip> &&
  derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> &&
  is_lvalue_reference_v<iter_reference_t<_Ip>> &&
  same_as<iter_value_t<_Ip>, remove_cvref_t<iter_reference_t<_Ip>>> &&
  (is_pointer_v<_Ip> || requires { sizeof(__pointer_traits_element_type<_Ip>); }) &&
  requires(const _Ip& __i) {
    { _VSTD::to_address(__i) } -> same_as<add_pointer_t<iter_reference_t<_Ip>>>;
  };

template<class _Ip>
concept __has_arrow = input_iterator<_Ip> && (is_pointer_v<_Ip> || requires(_Ip __i) { __i.operator->(); });

// [indirectcallable.indirectinvocable]
template<class _Fp, class _It>
concept indirectly_unary_invocable =
  indirectly_readable<_It> &&
  copy_constructible<_Fp> &&
  invocable<_Fp&, iter_value_t<_It>&> &&
  invocable<_Fp&, iter_reference_t<_It>> &&
  invocable<_Fp&, iter_common_reference_t<_It>> &&
  common_reference_with<
    invoke_result_t<_Fp&, iter_value_t<_It>&>,
    invoke_result_t<_Fp&, iter_reference_t<_It>>>;

template<class _Fp, class _It>
concept indirectly_regular_unary_invocable =
  indirectly_readable<_It> &&
  copy_constructible<_Fp> &&
  regular_invocable<_Fp&, iter_value_t<_It>&> &&
  regular_invocable<_Fp&, iter_reference_t<_It>> &&
  regular_invocable<_Fp&, iter_common_reference_t<_It>> &&
  common_reference_with<
    invoke_result_t<_Fp&, iter_value_t<_It>&>,
    invoke_result_t<_Fp&, iter_reference_t<_It>>>;

template<class _Fp, class _It>
concept indirect_unary_predicate =
  indirectly_readable<_It> &&
  copy_constructible<_Fp> &&
  predicate<_Fp&, iter_value_t<_It>&> &&
  predicate<_Fp&, iter_reference_t<_It>> &&
  predicate<_Fp&, iter_common_reference_t<_It>>;

template<class _Fp, class _It1, class _It2>
concept indirect_binary_predicate =
  indirectly_readable<_It1> && indirectly_readable<_It2> &&
  copy_constructible<_Fp> &&
  predicate<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> &&
  predicate<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> &&
  predicate<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> &&
  predicate<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> &&
  predicate<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>;

template<class _Fp, class _It1, class _It2 = _It1>
concept indirect_equivalence_relation =
  indirectly_readable<_It1> && indirectly_readable<_It2> &&
  copy_constructible<_Fp> &&
  equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> &&
  equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> &&
  equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> &&
  equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> &&
  equivalence_relation<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>;

template<class _Fp, class _It1, class _It2 = _It1>
concept indirect_strict_weak_order =
  indirectly_readable<_It1> && indirectly_readable<_It2> &&
  copy_constructible<_Fp> &&
  strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> &&
  strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> &&
  strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> &&
  strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> &&
  strict_weak_order<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>;

template<class _Fp, class... _Its>
  requires (indirectly_readable<_Its> && ...) && invocable<_Fp, iter_reference_t<_Its>...>
using indirect_result_t = invoke_result_t<_Fp, iter_reference_t<_Its>...>;

template<class _In, class _Out>
concept indirectly_movable =
  indirectly_readable<_In> &&
  indirectly_writable<_Out, iter_rvalue_reference_t<_In>>;

template<class _In, class _Out>
concept indirectly_movable_storable =
  indirectly_movable<_In, _Out> &&
  indirectly_writable<_Out, iter_value_t<_In>> &&
  movable<iter_value_t<_In>> &&
  constructible_from<iter_value_t<_In>, iter_rvalue_reference_t<_In>> &&
  assignable_from<iter_value_t<_In>&, iter_rvalue_reference_t<_In>>;

// Note: indirectly_swappable is located in iter_swap.h to prevent a dependency cycle
// (both iter_swap and indirectly_swappable require indirectly_readable).

// clang-format on

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_CONCEPTS_H
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/concepts.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
#endif
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIter>
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14
void __advance(_InputIter& __i, typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) {
  for (; __n > 0; --__n)
    ++__i;
}

template <class _BiDirIter>
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14
void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) {
  if (__n >= 0)
    for (; __n > 0; --__n)
      ++__i;
  else
    for (; __n < 0; ++__n)
      --__i;
}

template <class _RandIter>
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14
void __advance(_RandIter& __i, typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) {
  __i += __n;
}

template <
    class _InputIter, class _Distance,
    class _IntegralDistance = decltype(_VSTD::__convert_to_integral(declval<_Distance>())),
    class = _EnableIf<is_integral<_IntegralDistance>::value> >
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX14
void advance(_InputIter& __i, _Distance __orig_n) {
  typedef typename iterator_traits<_InputIter>::difference_type _Difference;
  _Difference __n = static_cast<_Difference>(_VSTD::__convert_to_integral(__orig_n));
  _LIBCPP_ASSERT(__n >= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value,
                 "Attempt to advance(it, n) with negative n on a non-bidirectional iterator");
  _VSTD::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category());
}

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3

namespace ranges {
// [range.iter.op.advance]
struct __advance_fn final : private __function_like {
private:
  template <class _Tp>
  _LIBCPP_HIDE_FROM_ABI
  static constexpr _Tp __magnitude_geq(_Tp __a, _Tp __b) noexcept {
    return __a < 0 ? (__a <= __b) : (__a >= __b);
  }

  template <class _Ip>
  _LIBCPP_HIDE_FROM_ABI
  static constexpr void __advance_forward(_Ip& __i, iter_difference_t<_Ip> __n) {
    while (__n > 0) {
      --__n;
      ++__i;
    }
  }

  template <class _Ip>
  _LIBCPP_HIDE_FROM_ABI
  static constexpr void __advance_backward(_Ip& __i, iter_difference_t<_Ip> __n) {
    while (__n < 0) {
      ++__n;
      --__i;
    }
  }

public:
  constexpr explicit __advance_fn(__tag __x) noexcept : __function_like(__x) {}

  // Preconditions: If `I` does not model `bidirectional_iterator`, `n` is not negative.
  template <input_or_output_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr void operator()(_Ip& __i, iter_difference_t<_Ip> __n) const {
    _LIBCPP_ASSERT(__n >= 0 || bidirectional_iterator<_Ip>,
                   "If `n < 0`, then `bidirectional_iterator<I>` must be true.");

    // If `I` models `random_access_iterator`, equivalent to `i += n`.
    if constexpr (random_access_iterator<_Ip>) {
      __i += __n;
      return;
    } else if constexpr (bidirectional_iterator<_Ip>) {
      // Otherwise, if `n` is non-negative, increments `i` by `n`.
      __advance_forward(__i, __n);
      // Otherwise, decrements `i` by `-n`.
      __advance_backward(__i, __n);
      return;
    } else {
      // Otherwise, if `n` is non-negative, increments `i` by `n`.
      __advance_forward(__i, __n);
      return;
    }
  }

  // Preconditions: Either `assignable_from<I&, S> || sized_sentinel_for<S, I>` is modeled, or [i, bound) denotes a range.
  template <input_or_output_iterator _Ip, sentinel_for<_Ip> _Sp>
  _LIBCPP_HIDE_FROM_ABI
  constexpr void operator()(_Ip& __i, _Sp __bound) const {
    // If `I` and `S` model `assignable_from<I&, S>`, equivalent to `i = std::move(bound)`.
    if constexpr (assignable_from<_Ip&, _Sp>) {
      __i = _VSTD::move(__bound);
    }
    // Otherwise, if `S` and `I` model `sized_sentinel_for<S, I>`, equivalent to `ranges::advance(i, bound - i)`.
    else if constexpr (sized_sentinel_for<_Sp, _Ip>) {
      (*this)(__i, __bound - __i);
    }
    // Otherwise, while `bool(i != bound)` is true, increments `i`.
    else {
      while (__i != __bound) {
        ++__i;
      }
    }
  }

  // Preconditions:
  //   * If `n > 0`, [i, bound) denotes a range.
  //   * If `n == 0`, [i, bound) or [bound, i) denotes a range.
  //   * If `n < 0`, [bound, i) denotes a range, `I` models `bidirectional_iterator`, and `I` and `S` model `same_as<I, S>`.
  // Returns: `n - M`, where `M` is the difference between the the ending and starting position.
  template <input_or_output_iterator _Ip, sentinel_for<_Ip> _Sp>
  _LIBCPP_HIDE_FROM_ABI
  constexpr iter_difference_t<_Ip> operator()(_Ip& __i, iter_difference_t<_Ip> __n, _Sp __bound) const {
    _LIBCPP_ASSERT((__n >= 0) || (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>),
                   "If `n < 0`, then `bidirectional_iterator<I> && same_as<I, S>` must be true.");
    // If `S` and `I` model `sized_sentinel_for<S, I>`:
    if constexpr (sized_sentinel_for<_Sp, _Ip>) {
      // If |n| >= |bound - i|, equivalent to `ranges::advance(i, bound)`.
      if (const auto __M = __bound - __i; __magnitude_geq(__n, __M)) {
        (*this)(__i, __bound);
        return __n - __M;
      }

      // Otherwise, equivalent to `ranges::advance(i, n)`.
      (*this)(__i, __n);
      return 0;
    } else {
      // Otherwise, if `n` is non-negative, while `bool(i != bound)` is true, increments `i` but at
      // most `n` times.
      while (__i != __bound && __n > 0) {
        ++__i;
        --__n;
      }

      // Otherwise, while `bool(i != bound)` is true, decrements `i` but at most `-n` times.
      if constexpr (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>) {
        while (__i != __bound && __n < 0) {
          --__i;
          ++__n;
        }
      }
      return __n;
    }

    _LIBCPP_UNREACHABLE();
  }
};

inline constexpr auto advance = __advance_fn(__function_like::__tag());
} // namespace ranges

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ADVANCE_H
# 201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/advance.h" 3
# 581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/back_insert_iterator.h>
#endif /* expanded by -frewrite-includes */
# 581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H
#define _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ITERATOR_H
#define _LIBCPP___ITERATOR_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _Category, class _Tp, class _Distance = ptrdiff_t,
         class _Pointer = _Tp*, class _Reference = _Tp&>
struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator
{
    typedef _Tp        value_type;
    typedef _Distance  difference_type;
    typedef _Pointer   pointer;
    typedef _Reference reference;
    typedef _Category  iterator_category;
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ITERATOR_H
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Container>
class _LIBCPP_TEMPLATE_VIS back_insert_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
protected:
    _Container* container;
public:
    typedef output_iterator_tag iterator_category;
    typedef void value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
    typedef ptrdiff_t difference_type;
#else
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
    typedef void difference_type;
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
    typedef void pointer;
    typedef void reference;
    typedef _Container container_type;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit back_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator=(const typename _Container::value_type& __value_)
        {container->push_back(__value_); return *this;}
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator=(typename _Container::value_type&& __value_)
        {container->push_back(_VSTD::move(__value_)); return *this;}
#endif // _LIBCPP_CXX03_LANG
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator*()     {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator& operator++()    {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 back_insert_iterator  operator++(int) {return *this;}
};

template <class _Container>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
back_insert_iterator<_Container>
back_inserter(_Container& __x)
{
    return back_insert_iterator<_Container>(__x);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/back_insert_iterator.h" 3
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/common_iterator.h>
#endif /* expanded by -frewrite-includes */
# 582 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_COMMON_ITERATOR_H
#define _LIBCPP___ITERATOR_COMMON_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_move.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_swap.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP___ITERATOR_ITER_SWAP_H
#define _LIBCPP___ITERATOR_ITER_SWAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__ranges/access.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 1 3
// -*- C++ -*-
//===------------------------ __ranges/access.h ---------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP___RANGES_ACCESS_H
#define _LIBCPP___RANGES_ACCESS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__ranges/enable_borrowed_range.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 1 3
// -*- C++ -*-
//===------------------ __ranges/enable_borrowed_range.h ------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___RANGES_ENABLE_BORROWED_RANGE_H
#define _LIBCPP___RANGES_ENABLE_BORROWED_RANGE_H

// These customization variables are used in <span> and <string_view>. The
// separate header is used to avoid including the entire <ranges> header in
// <span> and <string_view>.

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3

namespace ranges
{

// [range.range], ranges

template <class>
inline constexpr bool enable_borrowed_range = false;

} // namespace ranges

#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_RANGES)
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___RANGES_ENABLE_BORROWED_RANGE_H
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_borrowed_range.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/__decay_copy.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___TYPE_TRAITS_DECAY_COPY_H
#define _LIBCPP___TYPE_TRAITS_DECAY_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY typename decay<_Tp>::type __decay_copy(_Tp&& __t)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
    noexcept(is_nothrow_convertible_v<_Tp, remove_reference_t<_Tp> >)
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
{
  return _VSTD::forward<_Tp>(__t);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___TYPE_TRAITS_DECAY_COPY_H
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__utility/__decay_copy.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3

// clang-format off

namespace ranges {
  template <class _Tp>
  concept __can_borrow =
      is_lvalue_reference_v<_Tp> || enable_borrowed_range<remove_cvref_t<_Tp> >;

  template<class _Tp>
  concept __is_complete = requires { sizeof(_Tp); };
} // namespace ranges

// [range.access.begin]
namespace ranges::__begin {
  template <class _Tp>
  concept __member_begin =
    __can_borrow<_Tp> &&
    requires(_Tp&& __t) {
      { _VSTD::__decay_copy(__t.begin()) } -> input_or_output_iterator;
    };

  void begin(auto&) = delete;
  void begin(const auto&) = delete;

  template <class _Tp>
  concept __unqualified_begin =
    !__member_begin<_Tp> &&
    __can_borrow<_Tp> &&
    __class_or_enum<remove_cvref_t<_Tp> > &&
    requires(_Tp && __t) {
      { _VSTD::__decay_copy(begin(__t)) } -> input_or_output_iterator;
    };

  struct __fn {
    template <class _Tp>
    requires is_array_v<remove_cv_t<_Tp>>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp& __t) const noexcept {
      constexpr bool __complete = __is_complete<iter_value_t<_Tp> >;
      if constexpr (__complete) { // used to disable cryptic diagnostic
        return __t + 0;
      }
      else {
        static_assert(__complete, "`std::ranges::begin` is SFINAE-unfriendly on arrays of an incomplete type.");
      }
    }

    template <class _Tp>
    requires __member_begin<_Tp>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(_VSTD::__decay_copy(__t.begin())))
    {
      return __t.begin();
    }

    template <class _Tp>
    requires __unqualified_begin<_Tp>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(_VSTD::__decay_copy(begin(__t))))
    {
      return begin(__t);
    }

    void operator()(auto&&) const = delete;
  };
} // namespace ranges::__begin

namespace ranges {
  inline namespace __cpo {
    inline constexpr auto begin = __begin::__fn{};
  } // namespace __cpo

  template <class _Tp>
  using iterator_t = decltype(ranges::begin(declval<_Tp&>()));
} // namespace ranges

// [range.access.end]
namespace ranges::__end {
  template <class _Tp>
  concept __member_end =
    __can_borrow<_Tp> &&
    requires(_Tp&& __t) {
      typename iterator_t<_Tp>;
      { _VSTD::__decay_copy(_VSTD::forward<_Tp>(__t).end()) } -> sentinel_for<iterator_t<_Tp> >;
    };

  void end(auto&) = delete;
  void end(const auto&) = delete;

  template <class _Tp>
  concept __unqualified_end =
    !__member_end<_Tp> &&
    __can_borrow<_Tp> &&
    __class_or_enum<remove_cvref_t<_Tp> > &&
    requires(_Tp && __t) {
      typename iterator_t<_Tp>;
      { _VSTD::__decay_copy(end(_VSTD::forward<_Tp>(__t))) } -> sentinel_for<iterator_t<_Tp> >;
    };

  class __fn {
  public:
    template <class _Tp, size_t _Np>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp (&__t)[_Np]) const noexcept {
      constexpr bool __complete = __is_complete<remove_cv_t<_Tp> >;
      if constexpr (__complete) { // used to disable cryptic diagnostic
        return __t + _Np;
      }
      else {
        static_assert(__complete, "`std::ranges::end` is SFINAE-unfriendly on arrays of an incomplete type.");
      }
    }

    template <class _Tp>
    requires __member_end<_Tp>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(_VSTD::__decay_copy(__t.end())))
    {
      return _VSTD::forward<_Tp>(__t).end();
    }

    template <class _Tp>
    requires __unqualified_end<_Tp>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(_VSTD::__decay_copy(end(__t))))
    {
      return end(__t);
    }

    void operator()(auto&&) const = delete;
  };
} // namespace ranges::__end

namespace ranges::inline __cpo {
  inline constexpr auto end = __end::__fn{};
} // namespace ranges::__cpo

namespace ranges::__cbegin {
  struct __fn {
    template <class _Tp>
    requires invocable<decltype(ranges::begin), _Tp const&>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp& __t) const
    noexcept(noexcept(ranges::begin(_VSTD::as_const(__t))))
    {
      return ranges::begin(_VSTD::as_const(__t));
    }

    template <class _Tp>
    requires is_rvalue_reference_v<_Tp> && invocable<decltype(ranges::begin), _Tp const&&>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(ranges::begin(static_cast<_Tp const&&>(__t))))
    {
      return ranges::begin(static_cast<_Tp const&&>(__t));
    }
  };
} // namespace ranges::__cbegin

namespace ranges::inline __cpo {
  inline constexpr auto cbegin = __cbegin::__fn{};
} // namespace ranges::__cpo

namespace ranges::__cend {
  struct __fn {
    template <class _Tp>
    requires invocable<decltype(ranges::end), _Tp const&>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp& __t) const
    noexcept(noexcept(ranges::end(_VSTD::as_const(__t))))
    {
      return ranges::end(_VSTD::as_const(__t));
    }

    template <class _Tp>
    requires is_rvalue_reference_v<_Tp> && invocable<decltype(ranges::end), _Tp const&&>
    [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t) const
    noexcept(noexcept(ranges::end(static_cast<_Tp const&&>(__t))))
    {
      return ranges::end(static_cast<_Tp const&&>(__t));
    }
  };
} // namespace ranges::__cend

namespace ranges::inline __cpo {
  inline constexpr auto cend = __cend::__fn{};
} // namespace ranges::__cpo

// clang-format off

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___RANGES_ACCESS_H
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/access.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3

namespace ranges {
namespace __iter_swap {
  template<class _I1, class _I2>
  void iter_swap(_I1, _I2) = delete;

  template<class _T1, class _T2>
  concept __unqualified_iter_swap = requires(_T1&& __x, _T2&& __y) {
    iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y));
  };

  template<class _T1, class _T2>
  concept __readable_swappable =
    indirectly_readable<_T1> && indirectly_readable<_T2> &&
    swappable_with<iter_reference_t<_T1>, iter_reference_t<_T2>>;

  struct __fn {
    template <class _T1, class _T2>
      requires __unqualified_iter_swap<_T1, _T2>
    _LIBCPP_HIDE_FROM_ABI
    constexpr void operator()(_T1&& __x, _T2&& __y) const
      noexcept(noexcept(iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y))))
    {
      (void)iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y));
    }

    template <class _T1, class _T2>
      requires (!__unqualified_iter_swap<_T1, _T2>) &&
               __readable_swappable<_T1, _T2>
    _LIBCPP_HIDE_FROM_ABI
    constexpr void operator()(_T1&& __x, _T2&& __y) const
      noexcept(noexcept(ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y))))
    {
      ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y));
    }

    template <class _T1, class _T2>
      requires (!__unqualified_iter_swap<_T1, _T2> &&
                !__readable_swappable<_T1, _T2>) &&
               indirectly_movable_storable<_T1, _T2> &&
               indirectly_movable_storable<_T2, _T1>
    _LIBCPP_HIDE_FROM_ABI
    constexpr void operator()(_T1&& __x, _T2&& __y) const
      noexcept(noexcept(iter_value_t<_T2>(ranges::iter_move(__y))) &&
               noexcept(*__y = ranges::iter_move(__x)) &&
               noexcept(*_VSTD::forward<_T1>(__x) = declval<iter_value_t<_T2>>()))
    {
      iter_value_t<_T2> __old(ranges::iter_move(__y));
      *__y = ranges::iter_move(__x);
      *_VSTD::forward<_T1>(__x) = _VSTD::move(__old);
    }
  };
} // end namespace __iter_swap

inline namespace __cpo {
  inline constexpr auto iter_swap = __iter_swap::__fn{};
} // namespace __cpo

} // namespace ranges

template<class _I1, class _I2 = _I1>
concept indirectly_swappable =
  indirectly_readable<_I1> && indirectly_readable<_I2> &&
  requires(const _I1 __i1, const _I2 __i2) {
    ranges::iter_swap(__i1, __i1);
    ranges::iter_swap(__i2, __i2);
    ranges::iter_swap(__i1, __i2);
    ranges::iter_swap(__i2, __i1);
  };

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ITER_SWAP_H
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/iter_swap.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <variant>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 1 3
// -*- C++ -*-
//===------------------------------ variant -------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_VARIANT
#define _LIBCPP_VARIANT

/*
   variant synopsis

namespace std {

  // 20.7.2, class template variant
  template <class... Types>
  class variant {
  public:

    // 20.7.2.1, constructors
    constexpr variant() noexcept(see below);
    variant(const variant&);                // constexpr in C++20
    variant(variant&&) noexcept(see below); // constexpr in C++20

    template <class T> constexpr variant(T&&) noexcept(see below);

    template <class T, class... Args>
    constexpr explicit variant(in_place_type_t<T>, Args&&...);

    template <class T, class U, class... Args>
    constexpr explicit variant(
        in_place_type_t<T>, initializer_list<U>, Args&&...);

    template <size_t I, class... Args>
    constexpr explicit variant(in_place_index_t<I>, Args&&...);

    template <size_t I, class U, class... Args>
    constexpr explicit variant(
        in_place_index_t<I>, initializer_list<U>, Args&&...);

    // 20.7.2.2, destructor
    ~variant();

    // 20.7.2.3, assignment
    variant& operator=(const variant&);                // constexpr in C++20
    variant& operator=(variant&&) noexcept(see below); // constexpr in C++20

    template <class T> variant& operator=(T&&) noexcept(see below);

    // 20.7.2.4, modifiers
    template <class T, class... Args>
    T& emplace(Args&&...);

    template <class T, class U, class... Args>
    T& emplace(initializer_list<U>, Args&&...);

    template <size_t I, class... Args>
    variant_alternative_t<I, variant>& emplace(Args&&...);

    template <size_t I, class U, class...  Args>
    variant_alternative_t<I, variant>& emplace(initializer_list<U>, Args&&...);

    // 20.7.2.5, value status
    constexpr bool valueless_by_exception() const noexcept;
    constexpr size_t index() const noexcept;

    // 20.7.2.6, swap
    void swap(variant&) noexcept(see below);
  };

  // 20.7.3, variant helper classes
  template <class T> struct variant_size; // undefined

  template <class T>
  inline constexpr size_t variant_size_v = variant_size<T>::value;

  template <class T> struct variant_size<const T>;
  template <class T> struct variant_size<volatile T>;
  template <class T> struct variant_size<const volatile T>;

  template <class... Types>
  struct variant_size<variant<Types...>>;

  template <size_t I, class T> struct variant_alternative; // undefined

  template <size_t I, class T>
  using variant_alternative_t = typename variant_alternative<I, T>::type;

  template <size_t I, class T> struct variant_alternative<I, const T>;
  template <size_t I, class T> struct variant_alternative<I, volatile T>;
  template <size_t I, class T> struct variant_alternative<I, const volatile T>;

  template <size_t I, class... Types>
  struct variant_alternative<I, variant<Types...>>;

  inline constexpr size_t variant_npos = -1;

  // 20.7.4, value access
  template <class T, class... Types>
  constexpr bool holds_alternative(const variant<Types...>&) noexcept;

  template <size_t I, class... Types>
  constexpr variant_alternative_t<I, variant<Types...>>&
  get(variant<Types...>&);

  template <size_t I, class... Types>
  constexpr variant_alternative_t<I, variant<Types...>>&&
  get(variant<Types...>&&);

  template <size_t I, class... Types>
  constexpr variant_alternative_t<I, variant<Types...>> const&
  get(const variant<Types...>&);

  template <size_t I, class... Types>
  constexpr variant_alternative_t<I, variant<Types...>> const&&
  get(const variant<Types...>&&);

  template <class T, class...  Types>
  constexpr T& get(variant<Types...>&);

  template <class T, class... Types>
  constexpr T&& get(variant<Types...>&&);

  template <class T, class... Types>
  constexpr const T& get(const variant<Types...>&);

  template <class T, class... Types>
  constexpr const T&& get(const variant<Types...>&&);

  template <size_t I, class... Types>
  constexpr add_pointer_t<variant_alternative_t<I, variant<Types...>>>
  get_if(variant<Types...>*) noexcept;

  template <size_t I, class... Types>
  constexpr add_pointer_t<const variant_alternative_t<I, variant<Types...>>>
  get_if(const variant<Types...>*) noexcept;

  template <class T, class... Types>
  constexpr add_pointer_t<T>
  get_if(variant<Types...>*) noexcept;

  template <class T, class... Types>
  constexpr add_pointer_t<const T>
  get_if(const variant<Types...>*) noexcept;

  // 20.7.5, relational operators
  template <class... Types>
  constexpr bool operator==(const variant<Types...>&, const variant<Types...>&);

  template <class... Types>
  constexpr bool operator!=(const variant<Types...>&, const variant<Types...>&);

  template <class... Types>
  constexpr bool operator<(const variant<Types...>&, const variant<Types...>&);

  template <class... Types>
  constexpr bool operator>(const variant<Types...>&, const variant<Types...>&);

  template <class... Types>
  constexpr bool operator<=(const variant<Types...>&, const variant<Types...>&);

  template <class... Types>
  constexpr bool operator>=(const variant<Types...>&, const variant<Types...>&);

  // 20.7.6, visitation
  template <class Visitor, class... Variants>
  constexpr see below visit(Visitor&&, Variants&&...);

  template <class R, class Visitor, class... Variants>
  constexpr R visit(Visitor&&, Variants&&...); // since C++20

  // 20.7.7, class monostate
  struct monostate;

  // 20.7.8, monostate relational operators
  constexpr bool operator<(monostate, monostate) noexcept;
  constexpr bool operator>(monostate, monostate) noexcept;
  constexpr bool operator<=(monostate, monostate) noexcept;
  constexpr bool operator>=(monostate, monostate) noexcept;
  constexpr bool operator==(monostate, monostate) noexcept;
  constexpr bool operator!=(monostate, monostate) noexcept;

  // 20.7.9, specialized algorithms
  template <class... Types>
  void swap(variant<Types...>&, variant<Types...>&) noexcept(see below);

  // 20.7.10, class bad_variant_access
  class bad_variant_access;

  // 20.7.11, hash support
  template <class T> struct hash;
  template <class... Types> struct hash<variant<Types...>>;
  template <> struct hash<monostate>;

} // namespace std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/hash.h>
#endif /* expanded by -frewrite-includes */
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <__tuple>
#endif /* expanded by -frewrite-includes */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <__variant/monostate.h>
#endif /* expanded by -frewrite-includes */
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___VARIANT_MONOSTATE_H
#define _LIBCPP___VARIANT_MONOSTATE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/hash.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3

struct _LIBCPP_TEMPLATE_VIS monostate {};

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator<(monostate, monostate) noexcept { return false; }

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator>(monostate, monostate) noexcept { return false; }

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator<=(monostate, monostate) noexcept { return true; }

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator>=(monostate, monostate) noexcept { return true; }

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator==(monostate, monostate) noexcept { return true; }

inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator!=(monostate, monostate) noexcept { return false; }

template <>
struct _LIBCPP_TEMPLATE_VIS hash<monostate> {
  using argument_type = monostate;
  using result_type = size_t;

  inline _LIBCPP_INLINE_VISIBILITY
  result_type operator()(const argument_type&) const _NOEXCEPT {
    return 66740831; // return a fundamentally attractive random value.
  }
};

#endif // _LIBCPP_STD_VER > 14
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___VARIANT_MONOSTATE_H
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__variant/monostate.h" 3
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple>
#endif /* expanded by -frewrite-includes */
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
#endif
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 2 3

namespace std { // explicitly not using versioning namespace

class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS bad_variant_access : public exception {
public:
  virtual const char* what() const _NOEXCEPT;
};

} // namespace std

_LIBCPP_BEGIN_NAMESPACE_STD

// TODO: GCC 5 lies about its support for C++17 (it says it supports it but it
//       really doesn't). That breaks variant, which uses some C++17 features.
//       Remove this once we drop support for GCC 5.
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 && !(defined(_LIBCPP_COMPILER_GCC) && _GNUC_VER_NEW < 6000)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

// Light N-dimensional array of function pointers. Used in place of std::array to avoid
// adding a dependency.
template<class _Tp, size_t _Size>
struct __farray {
  static_assert(_Size > 0, "N-dimensional array should never be empty in std::visit");
  _Tp __buf_[_Size] = {};

  _LIBCPP_INLINE_VISIBILITY constexpr
  const _Tp &operator[](size_t __n) const noexcept {
      return __buf_[__n];
  }
};

_LIBCPP_NORETURN
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
void __throw_bad_variant_access() {
#ifndef _LIBCPP_NO_EXCEPTIONS
        throw bad_variant_access();
#else
# 261 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
        _VSTD::abort();
#endif
# 263 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
}

template <class... _Types>
class _LIBCPP_TEMPLATE_VIS variant;

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_size;

template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t variant_size_v = variant_size<_Tp>::value;

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_size<const _Tp> : variant_size<_Tp> {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_size<volatile _Tp> : variant_size<_Tp> {};

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_size<const volatile _Tp>
    : variant_size<_Tp> {};

template <class... _Types>
struct _LIBCPP_TEMPLATE_VIS variant_size<variant<_Types...>>
    : integral_constant<size_t, sizeof...(_Types)> {};

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_alternative;

template <size_t _Ip, class _Tp>
using variant_alternative_t = typename variant_alternative<_Ip, _Tp>::type;

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_alternative<_Ip, const _Tp>
    : add_const<variant_alternative_t<_Ip, _Tp>> {};

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_alternative<_Ip, volatile _Tp>
    : add_volatile<variant_alternative_t<_Ip, _Tp>> {};

template <size_t _Ip, class _Tp>
struct _LIBCPP_TEMPLATE_VIS variant_alternative<_Ip, const volatile _Tp>
    : add_cv<variant_alternative_t<_Ip, _Tp>> {};

template <size_t _Ip, class... _Types>
struct _LIBCPP_TEMPLATE_VIS variant_alternative<_Ip, variant<_Types...>> {
  static_assert(_Ip < sizeof...(_Types), "Index out of bounds in std::variant_alternative<>");
  using type = __type_pack_element<_Ip, _Types...>;
};

_LIBCPP_INLINE_VAR constexpr size_t variant_npos = static_cast<size_t>(-1);

constexpr int __choose_index_type(unsigned int __num_elem) {
  if (__num_elem < numeric_limits<unsigned char>::max())
    return 0;
  if (__num_elem < numeric_limits<unsigned short>::max())
    return 1;
  return 2;
}

template <size_t _NumAlts>
using __variant_index_t =
#ifndef _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION
  unsigned int;
#else
# 327 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
  std::tuple_element_t<
      __choose_index_type(_NumAlts),
      std::tuple<unsigned char, unsigned short, unsigned int>
  >;
#endif
# 332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

template <class _IndexType>
constexpr _IndexType __variant_npos = static_cast<_IndexType>(-1);

template <class... _Types>
class _LIBCPP_TEMPLATE_VIS variant;

template <class... _Types>
_LIBCPP_INLINE_VISIBILITY constexpr variant<_Types...>&
__as_variant(variant<_Types...>& __vs) noexcept {
  return __vs;
}

template <class... _Types>
_LIBCPP_INLINE_VISIBILITY constexpr const variant<_Types...>&
__as_variant(const variant<_Types...>& __vs) noexcept {
  return __vs;
}

template <class... _Types>
_LIBCPP_INLINE_VISIBILITY constexpr variant<_Types...>&&
__as_variant(variant<_Types...>&& __vs) noexcept {
  return _VSTD::move(__vs);
}

template <class... _Types>
_LIBCPP_INLINE_VISIBILITY constexpr const variant<_Types...>&&
__as_variant(const variant<_Types...>&& __vs) noexcept {
  return _VSTD::move(__vs);
}

namespace __find_detail {

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr size_t __find_index() {
  constexpr bool __matches[] = {is_same_v<_Tp, _Types>...};
  size_t __result = __not_found;
  for (size_t __i = 0; __i < sizeof...(_Types); ++__i) {
    if (__matches[__i]) {
      if (__result != __not_found) {
        return __ambiguous;
      }
      __result = __i;
    }
  }
  return __result;
}

template <size_t _Index>
struct __find_unambiguous_index_sfinae_impl
    : integral_constant<size_t, _Index> {};

template <>
struct __find_unambiguous_index_sfinae_impl<__not_found> {};

template <>
struct __find_unambiguous_index_sfinae_impl<__ambiguous> {};

template <class _Tp, class... _Types>
struct __find_unambiguous_index_sfinae
    : __find_unambiguous_index_sfinae_impl<__find_index<_Tp, _Types...>()> {};

} // namespace __find_detail

namespace __variant_detail {

struct __valueless_t {};

enum class _Trait { _TriviallyAvailable, _Available, _Unavailable };

template <typename _Tp,
          template <typename> class _IsTriviallyAvailable,
          template <typename> class _IsAvailable>
constexpr _Trait __trait =
    _IsTriviallyAvailable<_Tp>::value
        ? _Trait::_TriviallyAvailable
        : _IsAvailable<_Tp>::value ? _Trait::_Available : _Trait::_Unavailable;

inline _LIBCPP_INLINE_VISIBILITY
constexpr _Trait __common_trait(initializer_list<_Trait> __traits) {
  _Trait __result = _Trait::_TriviallyAvailable;
  for (_Trait __t : __traits) {
    if (static_cast<int>(__t) > static_cast<int>(__result)) {
      __result = __t;
    }
  }
  return __result;
}

template <typename... _Types>
struct __traits {
  static constexpr _Trait __copy_constructible_trait =
      __common_trait({__trait<_Types,
                              is_trivially_copy_constructible,
                              is_copy_constructible>...});

  static constexpr _Trait __move_constructible_trait =
      __common_trait({__trait<_Types,
                              is_trivially_move_constructible,
                              is_move_constructible>...});

  static constexpr _Trait __copy_assignable_trait = __common_trait(
      {__copy_constructible_trait,
       __trait<_Types, is_trivially_copy_assignable, is_copy_assignable>...});

  static constexpr _Trait __move_assignable_trait = __common_trait(
      {__move_constructible_trait,
       __trait<_Types, is_trivially_move_assignable, is_move_assignable>...});

  static constexpr _Trait __destructible_trait = __common_trait(
      {__trait<_Types, is_trivially_destructible, is_destructible>...});
};

namespace __access {

struct __union {
  template <class _Vp>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto&& __get_alt(_Vp&& __v, in_place_index_t<0>) {
    return _VSTD::forward<_Vp>(__v).__head;
  }

  template <class _Vp, size_t _Ip>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto&& __get_alt(_Vp&& __v, in_place_index_t<_Ip>) {
    return __get_alt(_VSTD::forward<_Vp>(__v).__tail, in_place_index<_Ip - 1>);
  }
};

struct __base {
  template <size_t _Ip, class _Vp>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto&& __get_alt(_Vp&& __v) {
    return __union::__get_alt(_VSTD::forward<_Vp>(__v).__data,
                              in_place_index<_Ip>);
  }
};

struct __variant {
  template <size_t _Ip, class _Vp>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto&& __get_alt(_Vp&& __v) {
    return __base::__get_alt<_Ip>(_VSTD::forward<_Vp>(__v).__impl);
  }
};

} // namespace __access

namespace __visitation {

struct __base {
  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto)
  __visit_alt_at(size_t __index, _Visitor&& __visitor, _Vs&&... __vs) {
    constexpr auto __fdiagonal =
        __make_fdiagonal<_Visitor&&,
                         decltype(_VSTD::forward<_Vs>(__vs).__as_base())...>();
    return __fdiagonal[__index](_VSTD::forward<_Visitor>(__visitor),
                                _VSTD::forward<_Vs>(__vs).__as_base()...);
  }

  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto) __visit_alt(_Visitor&& __visitor,
                                              _Vs&&... __vs) {
    constexpr auto __fmatrix =
        __make_fmatrix<_Visitor&&,
                       decltype(_VSTD::forward<_Vs>(__vs).__as_base())...>();
    return __at(__fmatrix, __vs.index()...)(
        _VSTD::forward<_Visitor>(__visitor),
        _VSTD::forward<_Vs>(__vs).__as_base()...);
  }

private:
  template <class _Tp>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr const _Tp& __at(const _Tp& __elem) { return __elem; }

  template <class _Tp, size_t _Np, typename... _Indices>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto&& __at(const __farray<_Tp, _Np>& __elems,
                               size_t __index, _Indices... __indices) {
    return __at(__elems[__index], __indices...);
  }

  template <class _Fp, class... _Fs>
  static constexpr void __std_visit_visitor_return_type_check() {
    static_assert(
        __all<is_same_v<_Fp, _Fs>...>::value,
        "`std::visit` requires the visitor to have a single return type.");
  }

  template <class... _Fs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_farray(_Fs&&... __fs) {
    __std_visit_visitor_return_type_check<__uncvref_t<_Fs>...>();
    using __result = __farray<common_type_t<__uncvref_t<_Fs>...>, sizeof...(_Fs)>;
    return __result{{_VSTD::forward<_Fs>(__fs)...}};
  }

  template <size_t... _Is>
  struct __dispatcher {
    template <class _Fp, class... _Vs>
    inline _LIBCPP_INLINE_VISIBILITY
    static constexpr decltype(auto) __dispatch(_Fp __f, _Vs... __vs) {
        return _VSTD::__invoke_constexpr(
            static_cast<_Fp>(__f),
            __access::__base::__get_alt<_Is>(static_cast<_Vs>(__vs))...);
    }
  };

  template <class _Fp, class... _Vs, size_t... _Is>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_dispatch(index_sequence<_Is...>) {
    return __dispatcher<_Is...>::template __dispatch<_Fp, _Vs...>;
  }

  template <size_t _Ip, class _Fp, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fdiagonal_impl() {
    return __make_dispatch<_Fp, _Vs...>(
        index_sequence<(__identity<_Vs>{}, _Ip)...>{});
  }

  template <class _Fp, class... _Vs, size_t... _Is>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fdiagonal_impl(index_sequence<_Is...>) {
    return __base::__make_farray(__make_fdiagonal_impl<_Is, _Fp, _Vs...>()...);
  }

  template <class _Fp, class _Vp, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fdiagonal() {
    constexpr size_t _Np = __uncvref_t<_Vp>::__size();
    static_assert(__all<(_Np == __uncvref_t<_Vs>::__size())...>::value);
    return __make_fdiagonal_impl<_Fp, _Vp, _Vs...>(make_index_sequence<_Np>{});
  }

  template <class _Fp, class... _Vs, size_t... _Is>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fmatrix_impl(index_sequence<_Is...> __is) {
    return __make_dispatch<_Fp, _Vs...>(__is);
  }

  template <class _Fp, class... _Vs, size_t... _Is, size_t... _Js, class... _Ls>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fmatrix_impl(index_sequence<_Is...>,
                                            index_sequence<_Js...>,
                                            _Ls... __ls) {
    return __base::__make_farray(__make_fmatrix_impl<_Fp, _Vs...>(
        index_sequence<_Is..., _Js>{}, __ls...)...);
  }

  template <class _Fp, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_fmatrix() {
    return __make_fmatrix_impl<_Fp, _Vs...>(
        index_sequence<>{}, make_index_sequence<__uncvref_t<_Vs>::__size()>{}...);
  }
};

struct __variant {
  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto)
  __visit_alt_at(size_t __index, _Visitor&& __visitor, _Vs&&... __vs) {
    return __base::__visit_alt_at(__index,
                                  _VSTD::forward<_Visitor>(__visitor),
                                  _VSTD::forward<_Vs>(__vs).__impl...);
  }

  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto) __visit_alt(_Visitor&& __visitor,
                                              _Vs&&... __vs) {
    return __base::__visit_alt(
        _VSTD::forward<_Visitor>(__visitor),
        _VSTD::__as_variant(_VSTD::forward<_Vs>(__vs)).__impl...);
  }

  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto)
  __visit_value_at(size_t __index, _Visitor&& __visitor, _Vs&&... __vs) {
    return __visit_alt_at(
        __index,
        __make_value_visitor(_VSTD::forward<_Visitor>(__visitor)),
        _VSTD::forward<_Vs>(__vs)...);
  }

  template <class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr decltype(auto) __visit_value(_Visitor&& __visitor,
                                                _Vs&&... __vs) {
    return __visit_alt(
        __make_value_visitor(_VSTD::forward<_Visitor>(__visitor)),
        _VSTD::forward<_Vs>(__vs)...);
  }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 634 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
  template <class _Rp, class _Visitor, class... _Vs>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr _Rp __visit_value(_Visitor&& __visitor,
                                     _Vs&&... __vs) {
    return __visit_alt(
        __make_value_visitor<_Rp>(_VSTD::forward<_Visitor>(__visitor)),
        _VSTD::forward<_Vs>(__vs)...);
  }
#endif
# 643 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

private:
  template <class _Visitor, class... _Values>
  static constexpr void __std_visit_exhaustive_visitor_check() {
    static_assert(is_invocable_v<_Visitor, _Values...>,
                  "`std::visit` requires the visitor to be exhaustive.");
  }

  template <class _Visitor>
  struct __value_visitor {
    template <class... _Alts>
    inline _LIBCPP_INLINE_VISIBILITY
    constexpr decltype(auto) operator()(_Alts&&... __alts) const {
      __std_visit_exhaustive_visitor_check<
          _Visitor,
          decltype((_VSTD::forward<_Alts>(__alts).__value))...>();
      return _VSTD::__invoke_constexpr(_VSTD::forward<_Visitor>(__visitor),
                                _VSTD::forward<_Alts>(__alts).__value...);
    }
    _Visitor&& __visitor;
  };

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
  template <class _Rp, class _Visitor>
  struct __value_visitor_return_type {
    template <class... _Alts>
    inline _LIBCPP_INLINE_VISIBILITY
    constexpr _Rp operator()(_Alts&&... __alts) const {
      __std_visit_exhaustive_visitor_check<
          _Visitor,
          decltype((_VSTD::forward<_Alts>(__alts).__value))...>();
      if constexpr (is_void_v<_Rp>) {
        _VSTD::__invoke_constexpr(_VSTD::forward<_Visitor>(__visitor),
                                  _VSTD::forward<_Alts>(__alts).__value...);
      }
      else {
        return _VSTD::__invoke_constexpr(_VSTD::forward<_Visitor>(__visitor),
                                         _VSTD::forward<_Alts>(__alts).__value...);
      }
    }

    _Visitor&& __visitor;
  };
#endif
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

  template <class _Visitor>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_value_visitor(_Visitor&& __visitor) {
    return __value_visitor<_Visitor>{_VSTD::forward<_Visitor>(__visitor)};
  }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
  template <class _Rp, class _Visitor>
  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr auto __make_value_visitor(_Visitor&& __visitor) {
    return __value_visitor_return_type<_Rp, _Visitor>{_VSTD::forward<_Visitor>(__visitor)};
  }
#endif
# 701 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
};

} // namespace __visitation

template <size_t _Index, class _Tp>
struct _LIBCPP_TEMPLATE_VIS __alt {
  using __value_type = _Tp;

  template <class... _Args>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr __alt(in_place_t, _Args&&... __args)
      : __value(_VSTD::forward<_Args>(__args)...) {}

  __value_type __value;
};

template <_Trait _DestructibleTrait, size_t _Index, class... _Types>
union _LIBCPP_TEMPLATE_VIS __union;

template <_Trait _DestructibleTrait, size_t _Index>
union _LIBCPP_TEMPLATE_VIS __union<_DestructibleTrait, _Index> {};

#define _LIBCPP_VARIANT_UNION(destructible_trait, destructor)                  \
  template <size_t _Index, class _Tp, class... _Types>                         \
  union _LIBCPP_TEMPLATE_VIS __union<destructible_trait,                      \
                                      _Index,                                  \
                                      _Tp,                                     \
                                      _Types...> {                             \
  public:                                                                      \
    inline _LIBCPP_INLINE_VISIBILITY                                           \
    explicit constexpr __union(__valueless_t) noexcept : __dummy{} {}          \
                                                                               \
    template <class... _Args>                                                  \
    inline _LIBCPP_INLINE_VISIBILITY                                           \
    explicit constexpr __union(in_place_index_t<0>, _Args&&... __args)         \
        : __head(in_place, _VSTD::forward<_Args>(__args)...) {}                \
                                                                               \
    template <size_t _Ip, class... _Args>                                      \
    inline _LIBCPP_INLINE_VISIBILITY                                           \
    explicit constexpr __union(in_place_index_t<_Ip>, _Args&&... __args)       \
        : __tail(in_place_index<_Ip - 1>, _VSTD::forward<_Args>(__args)...) {} \
                                                                               \
    __union(const __union&) = default;                                         \
    __union(__union&&) = default;                                              \
                                                                               \
    destructor                                                                 \
                                                                               \
    __union& operator=(const __union&) = default;                              \
    __union& operator=(__union&&) = default;                                   \
                                                                               \
  private:                                                                     \
    char __dummy;                                                              \
    __alt<_Index, _Tp> __head;                                                 \
    __union<destructible_trait, _Index + 1, _Types...> __tail;                 \
                                                                               \
    friend struct __access::__union;                                           \
  }

_LIBCPP_VARIANT_UNION(_Trait::_TriviallyAvailable, ~__union() = default;);
_LIBCPP_VARIANT_UNION(_Trait::_Available, ~__union() {});
_LIBCPP_VARIANT_UNION(_Trait::_Unavailable, ~__union() = delete;);

#undef _LIBCPP_VARIANT_UNION

template <_Trait _DestructibleTrait, class... _Types>
class _LIBCPP_TEMPLATE_VIS __base {
public:
  using __index_t = __variant_index_t<sizeof...(_Types)>;

  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr __base(__valueless_t tag) noexcept
      : __data(tag), __index(__variant_npos<__index_t>) {}

  template <size_t _Ip, class... _Args>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr __base(in_place_index_t<_Ip>, _Args&&... __args)
      :
        __data(in_place_index<_Ip>, _VSTD::forward<_Args>(__args)...),
        __index(_Ip) {}

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr bool valueless_by_exception() const noexcept {
    return index() == variant_npos;
  }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr size_t index() const noexcept {
    return __index == __variant_npos<__index_t> ? variant_npos : __index;
  }

protected:
  inline _LIBCPP_INLINE_VISIBILITY
  constexpr auto&& __as_base() & { return *this; }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr auto&& __as_base() && { return _VSTD::move(*this); }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr auto&& __as_base() const & { return *this; }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr auto&& __as_base() const && { return _VSTD::move(*this); }

  inline _LIBCPP_INLINE_VISIBILITY
  static constexpr size_t __size() { return sizeof...(_Types); }

  __union<_DestructibleTrait, 0, _Types...> __data;
  __index_t __index;

  friend struct __access::__base;
  friend struct __visitation::__base;
};

template <class _Traits, _Trait = _Traits::__destructible_trait>
class _LIBCPP_TEMPLATE_VIS __dtor;

#define _LIBCPP_VARIANT_DESTRUCTOR(destructible_trait, destructor, destroy)    \
  template <class... _Types>                                                   \
  class _LIBCPP_TEMPLATE_VIS __dtor<__traits<_Types...>,                       \
                                    destructible_trait>                        \
      : public __base<destructible_trait, _Types...> {                         \
    using __base_type = __base<destructible_trait, _Types...>;                 \
    using __index_t = typename __base_type::__index_t;                         \
                                                                               \
  public:                                                                      \
    using __base_type::__base_type;                                            \
    using __base_type::operator=;                                              \
                                                                               \
    __dtor(const __dtor&) = default;                                           \
    __dtor(__dtor&&) = default;                                                \
    destructor                                                                 \
    __dtor& operator=(const __dtor&) = default;                                \
    __dtor& operator=(__dtor&&) = default;                                     \
                                                                               \
  protected:                                                                   \
    inline _LIBCPP_INLINE_VISIBILITY                                           \
    destroy                                                                    \
  }

_LIBCPP_VARIANT_DESTRUCTOR(
    _Trait::_TriviallyAvailable,
    ~__dtor() = default;,
    void __destroy() noexcept { this->__index = __variant_npos<__index_t>; });

_LIBCPP_VARIANT_DESTRUCTOR(
    _Trait::_Available,
    ~__dtor() { __destroy(); },
    void __destroy() noexcept {
      if (!this->valueless_by_exception()) {
        __visitation::__base::__visit_alt(
            [](auto& __alt) noexcept {
              using __alt_type = __uncvref_t<decltype(__alt)>;
              __alt.~__alt_type();
            },
            *this);
      }
      this->__index = __variant_npos<__index_t>;
    });

_LIBCPP_VARIANT_DESTRUCTOR(
    _Trait::_Unavailable,
    ~__dtor() = delete;,
    void __destroy() noexcept = delete;);

#undef _LIBCPP_VARIANT_DESTRUCTOR

template <class _Traits>
class _LIBCPP_TEMPLATE_VIS __ctor : public __dtor<_Traits> {
  using __base_type = __dtor<_Traits>;

public:
  using __base_type::__base_type;
  using __base_type::operator=;

protected:
  template <size_t _Ip, class _Tp, class... _Args>
  inline _LIBCPP_INLINE_VISIBILITY
  static _Tp& __construct_alt(__alt<_Ip, _Tp>& __a, _Args&&... __args) {
    ::new ((void*)_VSTD::addressof(__a))
        __alt<_Ip, _Tp>(in_place, _VSTD::forward<_Args>(__args)...);
    return __a.__value;
  }

  template <class _Rhs>
  inline _LIBCPP_INLINE_VISIBILITY
  static void __generic_construct(__ctor& __lhs, _Rhs&& __rhs) {
    __lhs.__destroy();
    if (!__rhs.valueless_by_exception()) {
      __visitation::__base::__visit_alt_at(
          __rhs.index(),
          [](auto& __lhs_alt, auto&& __rhs_alt) {
            __construct_alt(
                __lhs_alt,
                _VSTD::forward<decltype(__rhs_alt)>(__rhs_alt).__value);
          },
          __lhs, _VSTD::forward<_Rhs>(__rhs));
      __lhs.__index = __rhs.index();
    }
  }
};

template <class _Traits, _Trait = _Traits::__move_constructible_trait>
class _LIBCPP_TEMPLATE_VIS __move_constructor;

#define _LIBCPP_VARIANT_MOVE_CONSTRUCTOR(move_constructible_trait,             \
                                         move_constructor)                     \
  template <class... _Types>                                                   \
  class _LIBCPP_TEMPLATE_VIS __move_constructor<__traits<_Types...>,           \
                                                move_constructible_trait>      \
      : public __ctor<__traits<_Types...>> {                                   \
    using __base_type = __ctor<__traits<_Types...>>;                           \
                                                                               \
  public:                                                                      \
    using __base_type::__base_type;                                            \
    using __base_type::operator=;                                              \
                                                                               \
    __move_constructor(const __move_constructor&) = default;                   \
    move_constructor                                                           \
    ~__move_constructor() = default;                                           \
    __move_constructor& operator=(const __move_constructor&) = default;        \
    __move_constructor& operator=(__move_constructor&&) = default;             \
  }

_LIBCPP_VARIANT_MOVE_CONSTRUCTOR(
    _Trait::_TriviallyAvailable,
    __move_constructor(__move_constructor&& __that) = default;);

_LIBCPP_VARIANT_MOVE_CONSTRUCTOR(
    _Trait::_Available,
    __move_constructor(__move_constructor&& __that) noexcept(
        __all<is_nothrow_move_constructible_v<_Types>...>::value)
        : __move_constructor(__valueless_t{}) {
      this->__generic_construct(*this, _VSTD::move(__that));
    });

_LIBCPP_VARIANT_MOVE_CONSTRUCTOR(
    _Trait::_Unavailable,
    __move_constructor(__move_constructor&&) = delete;);

#undef _LIBCPP_VARIANT_MOVE_CONSTRUCTOR

template <class _Traits, _Trait = _Traits::__copy_constructible_trait>
class _LIBCPP_TEMPLATE_VIS __copy_constructor;

#define _LIBCPP_VARIANT_COPY_CONSTRUCTOR(copy_constructible_trait,             \
                                         copy_constructor)                     \
  template <class... _Types>                                                   \
  class _LIBCPP_TEMPLATE_VIS __copy_constructor<__traits<_Types...>,          \
                                                 copy_constructible_trait>     \
      : public __move_constructor<__traits<_Types...>> {                       \
    using __base_type = __move_constructor<__traits<_Types...>>;               \
                                                                               \
  public:                                                                      \
    using __base_type::__base_type;                                            \
    using __base_type::operator=;                                              \
                                                                               \
    copy_constructor                                                           \
    __copy_constructor(__copy_constructor&&) = default;                        \
    ~__copy_constructor() = default;                                           \
    __copy_constructor& operator=(const __copy_constructor&) = default;        \
    __copy_constructor& operator=(__copy_constructor&&) = default;             \
  }

_LIBCPP_VARIANT_COPY_CONSTRUCTOR(
    _Trait::_TriviallyAvailable,
    __copy_constructor(const __copy_constructor& __that) = default;);

_LIBCPP_VARIANT_COPY_CONSTRUCTOR(
    _Trait::_Available,
    __copy_constructor(const __copy_constructor& __that)
        : __copy_constructor(__valueless_t{}) {
      this->__generic_construct(*this, __that);
    });

_LIBCPP_VARIANT_COPY_CONSTRUCTOR(
    _Trait::_Unavailable,
    __copy_constructor(const __copy_constructor&) = delete;);

#undef _LIBCPP_VARIANT_COPY_CONSTRUCTOR

template <class _Traits>
class _LIBCPP_TEMPLATE_VIS __assignment : public __copy_constructor<_Traits> {
  using __base_type = __copy_constructor<_Traits>;

public:
  using __base_type::__base_type;
  using __base_type::operator=;

  template <size_t _Ip, class... _Args>
  inline _LIBCPP_INLINE_VISIBILITY
  auto& __emplace(_Args&&... __args) {
    this->__destroy();
    auto& __res = this->__construct_alt(__access::__base::__get_alt<_Ip>(*this),
                          _VSTD::forward<_Args>(__args)...);
    this->__index = _Ip;
    return __res;
  }

protected:
  template <size_t _Ip, class _Tp, class _Arg>
  inline _LIBCPP_INLINE_VISIBILITY
  void __assign_alt(__alt<_Ip, _Tp>& __a, _Arg&& __arg) {
    if (this->index() == _Ip) {
      __a.__value = _VSTD::forward<_Arg>(__arg);
    } else {
      struct {
        void operator()(true_type) const {
          __this->__emplace<_Ip>(_VSTD::forward<_Arg>(__arg));
        }
        void operator()(false_type) const {
          __this->__emplace<_Ip>(_Tp(_VSTD::forward<_Arg>(__arg)));
        }
        __assignment* __this;
        _Arg&& __arg;
      } __impl{this, _VSTD::forward<_Arg>(__arg)};
      __impl(bool_constant<is_nothrow_constructible_v<_Tp, _Arg> ||
                           !is_nothrow_move_constructible_v<_Tp>>{});
    }
  }

  template <class _That>
  inline _LIBCPP_INLINE_VISIBILITY
  void __generic_assign(_That&& __that) {
    if (this->valueless_by_exception() && __that.valueless_by_exception()) {
      // do nothing.
    } else if (__that.valueless_by_exception()) {
      this->__destroy();
    } else {
      __visitation::__base::__visit_alt_at(
          __that.index(),
          [this](auto& __this_alt, auto&& __that_alt) {
            this->__assign_alt(
                __this_alt,
                _VSTD::forward<decltype(__that_alt)>(__that_alt).__value);
          },
          *this, _VSTD::forward<_That>(__that));
    }
  }
};

template <class _Traits, _Trait = _Traits::__move_assignable_trait>
class _LIBCPP_TEMPLATE_VIS __move_assignment;

#define _LIBCPP_VARIANT_MOVE_ASSIGNMENT(move_assignable_trait,                 \
                                        move_assignment)                       \
  template <class... _Types>                                                   \
  class _LIBCPP_TEMPLATE_VIS __move_assignment<__traits<_Types...>,           \
                                                move_assignable_trait>         \
      : public __assignment<__traits<_Types...>> {                             \
    using __base_type = __assignment<__traits<_Types...>>;                     \
                                                                               \
  public:                                                                      \
    using __base_type::__base_type;                                            \
    using __base_type::operator=;                                              \
                                                                               \
    __move_assignment(const __move_assignment&) = default;                     \
    __move_assignment(__move_assignment&&) = default;                          \
    ~__move_assignment() = default;                                            \
    __move_assignment& operator=(const __move_assignment&) = default;          \
    move_assignment                                                            \
  }

_LIBCPP_VARIANT_MOVE_ASSIGNMENT(
    _Trait::_TriviallyAvailable,
    __move_assignment& operator=(__move_assignment&& __that) = default;);

_LIBCPP_VARIANT_MOVE_ASSIGNMENT(
    _Trait::_Available,
    __move_assignment& operator=(__move_assignment&& __that) noexcept(
        __all<(is_nothrow_move_constructible_v<_Types> &&
               is_nothrow_move_assignable_v<_Types>)...>::value) {
      this->__generic_assign(_VSTD::move(__that));
      return *this;
    });

_LIBCPP_VARIANT_MOVE_ASSIGNMENT(
    _Trait::_Unavailable,
    __move_assignment& operator=(__move_assignment&&) = delete;);

#undef _LIBCPP_VARIANT_MOVE_ASSIGNMENT

template <class _Traits, _Trait = _Traits::__copy_assignable_trait>
class _LIBCPP_TEMPLATE_VIS __copy_assignment;

#define _LIBCPP_VARIANT_COPY_ASSIGNMENT(copy_assignable_trait,                 \
                                        copy_assignment)                       \
  template <class... _Types>                                                   \
  class _LIBCPP_TEMPLATE_VIS __copy_assignment<__traits<_Types...>,           \
                                                copy_assignable_trait>         \
      : public __move_assignment<__traits<_Types...>> {                        \
    using __base_type = __move_assignment<__traits<_Types...>>;                \
                                                                               \
  public:                                                                      \
    using __base_type::__base_type;                                            \
    using __base_type::operator=;                                              \
                                                                               \
    __copy_assignment(const __copy_assignment&) = default;                     \
    __copy_assignment(__copy_assignment&&) = default;                          \
    ~__copy_assignment() = default;                                            \
    copy_assignment                                                            \
    __copy_assignment& operator=(__copy_assignment&&) = default;               \
  }

_LIBCPP_VARIANT_COPY_ASSIGNMENT(
    _Trait::_TriviallyAvailable,
    __copy_assignment& operator=(const __copy_assignment& __that) = default;);

_LIBCPP_VARIANT_COPY_ASSIGNMENT(
    _Trait::_Available,
    __copy_assignment& operator=(const __copy_assignment& __that) {
      this->__generic_assign(__that);
      return *this;
    });

_LIBCPP_VARIANT_COPY_ASSIGNMENT(
    _Trait::_Unavailable,
    __copy_assignment& operator=(const __copy_assignment&) = delete;);

#undef _LIBCPP_VARIANT_COPY_ASSIGNMENT

template <class... _Types>
class _LIBCPP_TEMPLATE_VIS __impl
    : public __copy_assignment<__traits<_Types...>> {
  using __base_type = __copy_assignment<__traits<_Types...>>;

public:
  using __base_type::__base_type;
  using __base_type::operator=;

  template <size_t _Ip, class _Arg>
  inline _LIBCPP_INLINE_VISIBILITY
  void __assign(_Arg&& __arg) {
    this->__assign_alt(__access::__base::__get_alt<_Ip>(*this),
                       _VSTD::forward<_Arg>(__arg));
  }

  inline _LIBCPP_INLINE_VISIBILITY
  void __swap(__impl& __that)  {
    if (this->valueless_by_exception() && __that.valueless_by_exception()) {
      // do nothing.
    } else if (this->index() == __that.index()) {
      __visitation::__base::__visit_alt_at(
          this->index(),
          [](auto& __this_alt, auto& __that_alt) {
            using _VSTD::swap;
            swap(__this_alt.__value, __that_alt.__value);
          },
          *this,
          __that);
    } else {
      __impl* __lhs = this;
      __impl* __rhs = _VSTD::addressof(__that);
      if (__lhs->__move_nothrow() && !__rhs->__move_nothrow()) {
        _VSTD::swap(__lhs, __rhs);
      }
      __impl __tmp(_VSTD::move(*__rhs));
#ifndef _LIBCPP_NO_EXCEPTIONS
      if constexpr (__all<is_nothrow_move_constructible_v<_Types>...>::value) {
        this->__generic_construct(*__rhs, _VSTD::move(*__lhs));
      } else {
        // EXTENSION: When the move construction of `__lhs` into `__rhs` throws
        // and `__tmp` is nothrow move constructible then we move `__tmp` back
        // into `__rhs` and provide the strong exception safety guarantee.
        try {
          this->__generic_construct(*__rhs, _VSTD::move(*__lhs));
        } catch (...) {
          if (__tmp.__move_nothrow()) {
            this->__generic_construct(*__rhs, _VSTD::move(__tmp));
          }
          throw;
        }
      }
#else
# 1174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
      // this isn't consolidated with the `if constexpr` branch above due to
      // `throw` being ill-formed with exceptions disabled even when discarded.
      this->__generic_construct(*__rhs, _VSTD::move(*__lhs));
#endif
# 1178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
      this->__generic_construct(*__lhs, _VSTD::move(__tmp));
    }
  }

private:
  inline _LIBCPP_INLINE_VISIBILITY
  bool __move_nothrow() const {
    constexpr bool __results[] = {is_nothrow_move_constructible_v<_Types>...};
    return this->valueless_by_exception() || __results[this->index()];
  }
};

struct __no_narrowing_check {
  template <class _Dest, class _Source>
  using _Apply = __identity<_Dest>;
};

struct __narrowing_check {
  template <class _Dest>
  static auto __test_impl(_Dest (&&)[1]) -> __identity<_Dest>;
  template <class _Dest, class _Source>
  using _Apply _LIBCPP_NODEBUG_TYPE = decltype(__test_impl<_Dest>({declval<_Source>()}));
};

template <class _Dest, class _Source>
using __check_for_narrowing _LIBCPP_NODEBUG_TYPE =
  typename _If<
#ifdef _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT
    false &&
#endif
# 1208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
    is_arithmetic<_Dest>::value,
    __narrowing_check,
    __no_narrowing_check
  >::template _Apply<_Dest, _Source>;

template <class _Tp, size_t _Idx>
struct __overload {
  template <class _Up>
  auto operator()(_Tp, _Up&&) const -> __check_for_narrowing<_Tp, _Up>;
};

template <class _Tp, size_t>
struct __overload_bool  {
  template <class _Up, class _Ap = __uncvref_t<_Up>>
  auto operator()(bool, _Up&&) const
      -> enable_if_t<is_same_v<_Ap, bool>, __identity<_Tp>>;
};

template <size_t _Idx>
struct __overload<bool, _Idx> : __overload_bool<bool, _Idx> {};
template <size_t _Idx>
struct __overload<bool const, _Idx> : __overload_bool<bool const, _Idx> {};
template <size_t _Idx>
struct __overload<bool volatile, _Idx> : __overload_bool<bool volatile, _Idx> {};
template <size_t _Idx>
struct __overload<bool const volatile, _Idx> : __overload_bool<bool const volatile, _Idx> {};

template <class ..._Bases>
struct __all_overloads : _Bases... {
  void operator()() const;
  using _Bases::operator()...;
};

template <class IdxSeq>
struct __make_overloads_imp;

template <size_t ..._Idx>
struct __make_overloads_imp<__tuple_indices<_Idx...> > {
  template <class ..._Types>
  using _Apply _LIBCPP_NODEBUG_TYPE = __all_overloads<__overload<_Types, _Idx>...>;
};

template <class ..._Types>
using _MakeOverloads _LIBCPP_NODEBUG_TYPE = typename __make_overloads_imp<
    __make_indices_imp<sizeof...(_Types), 0> >::template _Apply<_Types...>;

template <class _Tp, class... _Types>
using __best_match_t =
    typename invoke_result_t<_MakeOverloads<_Types...>, _Tp, _Tp>::type;

} // __variant_detail

template <class... _Types>
class _LIBCPP_TEMPLATE_VIS variant
    : private __sfinae_ctor_base<
          __all<is_copy_constructible_v<_Types>...>::value,
          __all<is_move_constructible_v<_Types>...>::value>,
      private __sfinae_assign_base<
          __all<(is_copy_constructible_v<_Types> &&
                 is_copy_assignable_v<_Types>)...>::value,
          __all<(is_move_constructible_v<_Types> &&
                 is_move_assignable_v<_Types>)...>::value> {
  static_assert(0 < sizeof...(_Types),
                "variant must consist of at least one alternative.");

  static_assert(__all<!is_array_v<_Types>...>::value,
                "variant can not have an array type as an alternative.");

  static_assert(__all<!is_reference_v<_Types>...>::value,
                "variant can not have a reference type as an alternative.");

  static_assert(__all<!is_void_v<_Types>...>::value,
                "variant can not have a void type as an alternative.");

  using __first_type = variant_alternative_t<0, variant>;

public:
  template <bool _Dummy = true,
            enable_if_t<__dependent_type<is_default_constructible<__first_type>,
                                         _Dummy>::value,
                        int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  constexpr variant() noexcept(is_nothrow_default_constructible_v<__first_type>)
      : __impl(in_place_index<0>) {}

  variant(const variant&) = default;
  variant(variant&&) = default;

  template <
      class _Arg,
      enable_if_t<!is_same_v<__uncvref_t<_Arg>, variant>, int> = 0,
      enable_if_t<!__is_inplace_type<__uncvref_t<_Arg>>::value, int> = 0,
      enable_if_t<!__is_inplace_index<__uncvref_t<_Arg>>::value, int> = 0,
      class _Tp = __variant_detail::__best_match_t<_Arg, _Types...>,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_constructible_v<_Tp, _Arg>, int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  constexpr variant(_Arg&& __arg) noexcept(
      is_nothrow_constructible_v<_Tp, _Arg>)
      : __impl(in_place_index<_Ip>, _VSTD::forward<_Arg>(__arg)) {}

  template <size_t _Ip, class... _Args,
            class = enable_if_t<(_Ip < sizeof...(_Types)), int>,
            class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
            enable_if_t<is_constructible_v<_Tp, _Args...>, int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr variant(
      in_place_index_t<_Ip>,
      _Args&&... __args) noexcept(is_nothrow_constructible_v<_Tp, _Args...>)
      : __impl(in_place_index<_Ip>, _VSTD::forward<_Args>(__args)...) {}

  template <
      size_t _Ip,
      class _Up,
      class... _Args,
      enable_if_t<(_Ip < sizeof...(_Types)), int> = 0,
      class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
      enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>,
                  int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr variant(
      in_place_index_t<_Ip>,
      initializer_list<_Up> __il,
      _Args&&... __args) noexcept(
      is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>)
      : __impl(in_place_index<_Ip>, __il, _VSTD::forward<_Args>(__args)...) {}

  template <
      class _Tp,
      class... _Args,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_constructible_v<_Tp, _Args...>, int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr variant(in_place_type_t<_Tp>, _Args&&... __args) noexcept(
      is_nothrow_constructible_v<_Tp, _Args...>)
      : __impl(in_place_index<_Ip>, _VSTD::forward<_Args>(__args)...) {}

  template <
      class _Tp,
      class _Up,
      class... _Args,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>,
                  int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  explicit constexpr variant(
      in_place_type_t<_Tp>,
      initializer_list<_Up> __il,
      _Args&&... __args) noexcept(
      is_nothrow_constructible_v<_Tp, initializer_list< _Up>&, _Args...>)
      : __impl(in_place_index<_Ip>, __il, _VSTD::forward<_Args>(__args)...) {}

  ~variant() = default;

  variant& operator=(const variant&) = default;
  variant& operator=(variant&&) = default;

  template <
      class _Arg,
      enable_if_t<!is_same_v<__uncvref_t<_Arg>, variant>, int> = 0,
      class _Tp = __variant_detail::__best_match_t<_Arg, _Types...>,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_assignable_v<_Tp&, _Arg> && is_constructible_v<_Tp, _Arg>,
                  int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  variant& operator=(_Arg&& __arg) noexcept(
      is_nothrow_assignable_v<_Tp&, _Arg> &&
      is_nothrow_constructible_v<_Tp, _Arg>) {
    __impl.template __assign<_Ip>(_VSTD::forward<_Arg>(__arg));
    return *this;
  }

  template <
      size_t _Ip,
      class... _Args,
      enable_if_t<(_Ip < sizeof...(_Types)), int> = 0,
      class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
      enable_if_t<is_constructible_v<_Tp, _Args...>, int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  _Tp& emplace(_Args&&... __args) {
    return __impl.template __emplace<_Ip>(_VSTD::forward<_Args>(__args)...);
  }

  template <
      size_t _Ip,
      class _Up,
      class... _Args,
      enable_if_t<(_Ip < sizeof...(_Types)), int> = 0,
      class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
      enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>,
                  int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) {
    return __impl.template __emplace<_Ip>(__il, _VSTD::forward<_Args>(__args)...);
  }

  template <
      class _Tp,
      class... _Args,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_constructible_v<_Tp, _Args...>, int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  _Tp& emplace(_Args&&... __args) {
    return __impl.template __emplace<_Ip>(_VSTD::forward<_Args>(__args)...);
  }

  template <
      class _Tp,
      class _Up,
      class... _Args,
      size_t _Ip =
          __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value,
      enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>,
                  int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) {
    return __impl.template __emplace<_Ip>(__il, _VSTD::forward<_Args>(__args)...);
  }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr bool valueless_by_exception() const noexcept {
    return __impl.valueless_by_exception();
  }

  inline _LIBCPP_INLINE_VISIBILITY
  constexpr size_t index() const noexcept { return __impl.index(); }

  template <
      bool _Dummy = true,
      enable_if_t<
          __all<(
              __dependent_type<is_move_constructible<_Types>, _Dummy>::value &&
              __dependent_type<is_swappable<_Types>, _Dummy>::value)...>::value,
          int> = 0>
  inline _LIBCPP_INLINE_VISIBILITY
  void swap(variant& __that) noexcept(
      __all<(is_nothrow_move_constructible_v<_Types> &&
             is_nothrow_swappable_v<_Types>)...>::value) {
    __impl.__swap(__that.__impl);
  }

private:
  __variant_detail::__impl<_Types...> __impl;

  friend struct __variant_detail::__access::__variant;
  friend struct __variant_detail::__visitation::__variant;
};

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool __holds_alternative(const variant<_Types...>& __v) noexcept {
  return __v.index() == _Ip;
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool holds_alternative(const variant<_Types...>& __v) noexcept {
  return __holds_alternative<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <size_t _Ip, class _Vp>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr auto&& __generic_get(_Vp&& __v) {
  using __variant_detail::__access::__variant;
  if (!__holds_alternative<_Ip>(__v)) {
    __throw_bad_variant_access();
  }
  return __variant::__get_alt<_Ip>(_VSTD::forward<_Vp>(__v)).__value;
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr variant_alternative_t<_Ip, variant<_Types...>>& get(
    variant<_Types...>& __v) {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get<_Ip>(__v);
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get(
    variant<_Types...>&& __v) {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get<_Ip>(_VSTD::move(__v));
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get(
    const variant<_Types...>& __v) {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get<_Ip>(__v);
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get(
    const variant<_Types...>&& __v) {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get<_Ip>(_VSTD::move(__v));
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr _Tp& get(variant<_Types...>& __v) {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr _Tp&& get(variant<_Types...>&& __v) {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(
      _VSTD::move(__v));
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const _Tp& get(const variant<_Types...>& __v) {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
constexpr const _Tp&& get(const variant<_Types...>&& __v) {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(
      _VSTD::move(__v));
}

template <size_t _Ip, class _Vp>
inline _LIBCPP_INLINE_VISIBILITY
constexpr auto* __generic_get_if(_Vp* __v) noexcept {
  using __variant_detail::__access::__variant;
  return __v && __holds_alternative<_Ip>(*__v)
             ? _VSTD::addressof(__variant::__get_alt<_Ip>(*__v).__value)
             : nullptr;
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr add_pointer_t<variant_alternative_t<_Ip, variant<_Types...>>>
get_if(variant<_Types...>* __v) noexcept {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get_if<_Ip>(__v);
}

template <size_t _Ip, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr add_pointer_t<const variant_alternative_t<_Ip, variant<_Types...>>>
get_if(const variant<_Types...>* __v) noexcept {
  static_assert(_Ip < sizeof...(_Types));
  static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
  return __generic_get_if<_Ip>(__v);
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr add_pointer_t<_Tp>
get_if(variant<_Types...>* __v) noexcept {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get_if<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr add_pointer_t<const _Tp>
get_if(const variant<_Types...>* __v) noexcept {
  static_assert(!is_void_v<_Tp>);
  return _VSTD::get_if<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <class _Operator>
struct __convert_to_bool {
  template <class _T1, class _T2>
  _LIBCPP_INLINE_VISIBILITY constexpr bool operator()(_T1 && __t1, _T2&& __t2) const {
    static_assert(is_convertible<decltype(_Operator{}(_VSTD::forward<_T1>(__t1), _VSTD::forward<_T2>(__t2))), bool>::value,
        "the relational operator does not return a type which is implicitly convertible to bool");
    return _Operator{}(_VSTD::forward<_T1>(__t1), _VSTD::forward<_T2>(__t2));
  }
};

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator==(const variant<_Types...>& __lhs,
                          const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__lhs.index() != __rhs.index()) return false;
  if (__lhs.valueless_by_exception()) return true;
  return __variant::__visit_value_at(__lhs.index(), __convert_to_bool<equal_to<>>{}, __lhs, __rhs);
}

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator!=(const variant<_Types...>& __lhs,
                          const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__lhs.index() != __rhs.index()) return true;
  if (__lhs.valueless_by_exception()) return false;
  return __variant::__visit_value_at(
      __lhs.index(), __convert_to_bool<not_equal_to<>>{}, __lhs, __rhs);
}

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator<(const variant<_Types...>& __lhs,
                         const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__rhs.valueless_by_exception()) return false;
  if (__lhs.valueless_by_exception()) return true;
  if (__lhs.index() < __rhs.index()) return true;
  if (__lhs.index() > __rhs.index()) return false;
  return __variant::__visit_value_at(__lhs.index(), __convert_to_bool<less<>>{}, __lhs, __rhs);
}

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator>(const variant<_Types...>& __lhs,
                         const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__lhs.valueless_by_exception()) return false;
  if (__rhs.valueless_by_exception()) return true;
  if (__lhs.index() > __rhs.index()) return true;
  if (__lhs.index() < __rhs.index()) return false;
  return __variant::__visit_value_at(__lhs.index(), __convert_to_bool<greater<>>{}, __lhs, __rhs);
}

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator<=(const variant<_Types...>& __lhs,
                          const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__lhs.valueless_by_exception()) return true;
  if (__rhs.valueless_by_exception()) return false;
  if (__lhs.index() < __rhs.index()) return true;
  if (__lhs.index() > __rhs.index()) return false;
  return __variant::__visit_value_at(
      __lhs.index(), __convert_to_bool<less_equal<>>{}, __lhs, __rhs);
}

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr bool operator>=(const variant<_Types...>& __lhs,
                          const variant<_Types...>& __rhs) {
  using __variant_detail::__visitation::__variant;
  if (__rhs.valueless_by_exception()) return true;
  if (__lhs.valueless_by_exception()) return false;
  if (__lhs.index() > __rhs.index()) return true;
  if (__lhs.index() < __rhs.index()) return false;
  return __variant::__visit_value_at(
      __lhs.index(), __convert_to_bool<greater_equal<>>{}, __lhs, __rhs);
}

template <class... _Vs>
inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr void
    __throw_if_valueless(_Vs&&... __vs) {
  const bool __valueless =
      (... || _VSTD::__as_variant(__vs).valueless_by_exception());
  if (__valueless) {
    __throw_bad_variant_access();
  }
}

template <
    class _Visitor, class... _Vs,
    typename = void_t<decltype(_VSTD::__as_variant(declval<_Vs>()))...> >
inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr
    decltype(auto) visit(_Visitor&& __visitor, _Vs&&... __vs) {
  using __variant_detail::__visitation::__variant;
  _VSTD::__throw_if_valueless(_VSTD::forward<_Vs>(__vs)...);
  return __variant::__visit_value(_VSTD::forward<_Visitor>(__visitor),
                                  _VSTD::forward<_Vs>(__vs)...);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
template <
    class _Rp, class _Visitor, class... _Vs,
    typename = void_t<decltype(_VSTD::__as_variant(declval<_Vs>()))...> >
inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Rp
    visit(_Visitor&& __visitor, _Vs&&... __vs) {
  using __variant_detail::__visitation::__variant;
  _VSTD::__throw_if_valueless(_VSTD::forward<_Vs>(__vs)...);
  return __variant::__visit_value<_Rp>(_VSTD::forward<_Visitor>(__visitor),
                                       _VSTD::forward<_Vs>(__vs)...);
}
#endif
# 1718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

template <class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
auto swap(variant<_Types...>& __lhs,
          variant<_Types...>& __rhs) noexcept(noexcept(__lhs.swap(__rhs)))
    -> decltype(__lhs.swap(__rhs)) {
  __lhs.swap(__rhs);
}

template <class... _Types>
struct _LIBCPP_TEMPLATE_VIS hash<
    __enable_hash_helper<variant<_Types...>, remove_const_t<_Types>...>> {
  using argument_type = variant<_Types...>;
  using result_type = size_t;

  inline _LIBCPP_INLINE_VISIBILITY
  result_type operator()(const argument_type& __v) const {
    using __variant_detail::__visitation::__variant;
    size_t __res =
        __v.valueless_by_exception()
               ? 299792458 // Random value chosen by the universe upon creation
               : __variant::__visit_alt(
                     [](const auto& __alt) {
                       using __alt_type = __uncvref_t<decltype(__alt)>;
                       using __value_type = remove_const_t<
                         typename __alt_type::__value_type>;
                       return hash<__value_type>{}(__alt.__value);
                     },
                     __v);
    return __hash_combine(__res, hash<size_t>{}(__v.index()));
  }
};

// __unchecked_get is the same as std::get, except, it is UB to use it with the wrong
// type whereas std::get will throw or returning nullptr. This makes it faster than
// std::get.
template <size_t _Ip, class _Vp>
inline _LIBCPP_INLINE_VISIBILITY
constexpr auto&& __unchecked_get(_Vp&& __v) noexcept {
  using __variant_detail::__access::__variant;
  return __variant::__get_alt<_Ip>(_VSTD::forward<_Vp>(__v)).__value;
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr auto&& __unchecked_get(const variant<_Types...>& __v) noexcept {
  return __unchecked_get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

template <class _Tp, class... _Types>
inline _LIBCPP_INLINE_VISIBILITY
constexpr auto&& __unchecked_get(variant<_Types...>& __v) noexcept {
  return __unchecked_get<__find_exactly_one_t<_Tp, _Types...>::value>(__v);
}

#endif // _LIBCPP_STD_VER > 14
# 1774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_VARIANT
# 1780 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/variant" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
#endif
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3

template<input_or_output_iterator _Iter, sentinel_for<_Iter> _Sent>
  requires (!same_as<_Iter, _Sent> && copyable<_Iter>)
class common_iterator {
  class __proxy {
    friend common_iterator;

    iter_value_t<_Iter> __value;
    // We can move __x because the only caller verifies that __x is not a reference.
    constexpr __proxy(iter_reference_t<_Iter>&& __x)
      : __value(_VSTD::move(__x)) {}

  public:
    const iter_value_t<_Iter>* operator->() const {
      return _VSTD::addressof(__value);
    }
  };

  class __postfix_proxy {
    friend common_iterator;

    iter_value_t<_Iter> __value;
    constexpr __postfix_proxy(iter_reference_t<_Iter>&& __x)
      : __value(_VSTD::forward<iter_reference_t<_Iter>>(__x)) {}

  public:
    constexpr static bool __valid_for_iter =
      constructible_from<iter_value_t<_Iter>, iter_reference_t<_Iter>> &&
      move_constructible<iter_value_t<_Iter>>;

    const iter_value_t<_Iter>& operator*() const {
      return __value;
    }
  };

public:
  variant<_Iter, _Sent> __hold_;

  common_iterator() requires default_initializable<_Iter> = default;

  constexpr common_iterator(_Iter __i) : __hold_(in_place_type<_Iter>, _VSTD::move(__i)) {}
  constexpr common_iterator(_Sent __s) : __hold_(in_place_type<_Sent>, _VSTD::move(__s)) {}

  template<class _I2, class _S2>
    requires convertible_to<const _I2&, _Iter> && convertible_to<const _S2&, _Sent>
  constexpr common_iterator(const common_iterator<_I2, _S2>& __other)
    : __hold_([&]() -> variant<_Iter, _Sent> {
      _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Constructed from valueless iterator.");
      if (__other.__hold_.index() == 0)
        return variant<_Iter, _Sent>{in_place_index<0>, _VSTD::__unchecked_get<0>(__other.__hold_)};
      return variant<_Iter, _Sent>{in_place_index<1>, _VSTD::__unchecked_get<1>(__other.__hold_)};
    }()) {}

  template<class _I2, class _S2>
    requires convertible_to<const _I2&, _Iter> && convertible_to<const _S2&, _Sent> &&
             assignable_from<_Iter&, const _I2&> && assignable_from<_Sent&, const _S2&>
  common_iterator& operator=(const common_iterator<_I2, _S2>& __other) {
    _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Assigned from valueless iterator.");

    auto __idx = __hold_.index();
    auto __other_idx = __other.__hold_.index();

    // If they're the same index, just assign.
    if (__idx == 0 && __other_idx == 0)
      _VSTD::__unchecked_get<0>(__hold_) = _VSTD::__unchecked_get<0>(__other.__hold_);
    else if (__idx == 1 && __other_idx == 1)
      _VSTD::__unchecked_get<1>(__hold_) = _VSTD::__unchecked_get<1>(__other.__hold_);

    // Otherwise replace with the oposite element.
    else if (__other_idx == 1)
      __hold_.template emplace<1>(_VSTD::__unchecked_get<1>(__other.__hold_));
    else if (__other_idx == 0)
      __hold_.template emplace<0>(_VSTD::__unchecked_get<0>(__other.__hold_));

    return *this;
  }

  decltype(auto) operator*()
  {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__hold_),
                   "Cannot dereference sentinel. Common iterator not holding an iterator.");
    return *_VSTD::__unchecked_get<_Iter>(__hold_);
  }

  decltype(auto) operator*() const
    requires __dereferenceable<const _Iter>
  {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__hold_),
                   "Cannot dereference sentinel. Common iterator not holding an iterator.");
    return *_VSTD::__unchecked_get<_Iter>(__hold_);
  }

  template<class _I2 = _Iter>
  decltype(auto) operator->() const
    requires indirectly_readable<const _I2> &&
    (requires(const _I2& __i) { __i.operator->(); } ||
     is_reference_v<iter_reference_t<_I2>> ||
     constructible_from<iter_value_t<_I2>, iter_reference_t<_I2>>)
  {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__hold_),
                   "Cannot dereference sentinel. Common iterator not holding an iterator.");

    if constexpr (is_pointer_v<_Iter> || requires(const _Iter& __i) { __i.operator->(); })    {
      return _VSTD::__unchecked_get<_Iter>(__hold_);
    } else if constexpr (is_reference_v<iter_reference_t<_Iter>>) {
      auto&& __tmp = *_VSTD::__unchecked_get<_Iter>(__hold_);
      return _VSTD::addressof(__tmp);
    } else {
      return __proxy(*_VSTD::__unchecked_get<_Iter>(__hold_));
    }
  }

  common_iterator& operator++() {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__hold_),
                   "Cannot increment sentinel. Common iterator not holding an iterator.");
    ++_VSTD::__unchecked_get<_Iter>(__hold_); return *this;
  }

  decltype(auto) operator++(int) {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__hold_),
                   "Cannot increment sentinel. Common iterator not holding an iterator.");

    if constexpr (forward_iterator<_Iter>) {
      auto __tmp = *this;
      ++*this;
      return __tmp;
    } else if constexpr (requires (_Iter& __i) { { *__i++ } -> __referenceable; } ||
                         !__postfix_proxy::__valid_for_iter) {
      return _VSTD::__unchecked_get<_Iter>(__hold_)++;
    } else {
      __postfix_proxy __p(**this);
      ++*this;
      return __p;
    }
  }

  template<class _I2, sentinel_for<_Iter> _S2>
    requires sentinel_for<_Sent, _I2>
  friend bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) {
    _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception() &&
                   !__y.__hold_.valueless_by_exception(),
                   "One or both common_iterators are valueless. (Cannot compare valueless iterators.)");

    auto __x_index = __x.__hold_.index();
    auto __y_index = __y.__hold_.index();

    if (__x_index == __y_index)
      return true;

    if (__x_index == 0)
      return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_);

    return _VSTD::__unchecked_get<_Sent>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_);
  }

  template<class _I2, sentinel_for<_Iter> _S2>
    requires sentinel_for<_Sent, _I2> && equality_comparable_with<_Iter, _I2>
  friend bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) {
    _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception() &&
                   !__y.__hold_.valueless_by_exception(),
                   "One or both common_iterators are valueless. (Cannot compare valueless iterators.)");

    auto __x_index = __x.__hold_.index();
    auto __y_index = __y.__hold_.index();

    if (__x_index == 1 && __y_index == 1)
      return true;

    if (__x_index == 0 && __y_index == 0)
      return  _VSTD::__unchecked_get<_Iter>(__x.__hold_) ==  _VSTD::__unchecked_get<_I2>(__y.__hold_);

    if (__x_index == 0)
      return  _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_);

    return _VSTD::__unchecked_get<_Sent>(__x.__hold_) ==  _VSTD::__unchecked_get<_I2>(__y.__hold_);
  }

  template<sized_sentinel_for<_Iter> _I2, sized_sentinel_for<_Iter> _S2>
    requires sized_sentinel_for<_Sent, _I2>
  friend iter_difference_t<_I2> operator-(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) {
    _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception() &&
                   !__y.__hold_.valueless_by_exception(),
                   "One or both common_iterators are valueless. (Cannot subtract valueless iterators.)");

    auto __x_index = __x.__hold_.index();
    auto __y_index = __y.__hold_.index();

    if (__x_index == 1 && __y_index == 1)
      return 0;

    if (__x_index == 0 && __y_index == 0)
      return  _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_);

    if (__x_index == 0)
      return  _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_S2>(__y.__hold_);

    return _VSTD::__unchecked_get<_Sent>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_);
  }

  friend iter_rvalue_reference_t<_Iter> iter_move(const common_iterator& __i)
    noexcept(noexcept(ranges::iter_move(declval<const _Iter&>())))
      requires input_iterator<_Iter>
  {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__i.__hold_),
                   "Cannot iter_move a sentinel. Common iterator not holding an iterator.");
    return ranges::iter_move( _VSTD::__unchecked_get<_Iter>(__i.__hold_));
  }

  template<indirectly_swappable<_Iter> _I2, class _S2>
  friend void iter_swap(const common_iterator& __x, const common_iterator<_I2, _S2>& __y)
      noexcept(noexcept(ranges::iter_swap(declval<const _Iter&>(), declval<const _I2&>())))
  {
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__x.__hold_),
                   "Cannot swap __y with a sentinel. Common iterator (__x) not holding an iterator.");
    _LIBCPP_ASSERT(holds_alternative<_Iter>(__y.__hold_),
                   "Cannot swap __x with a sentinel. Common iterator (__y) not holding an iterator.");
    return ranges::iter_swap( _VSTD::__unchecked_get<_Iter>(__x.__hold_),  _VSTD::__unchecked_get<_Iter>(__y.__hold_));
  }
};

template<class _Iter, class _Sent>
struct incrementable_traits<common_iterator<_Iter, _Sent>> {
  using difference_type = iter_difference_t<_Iter>;
};

template<class _Iter>
concept __denotes_forward_iter =
  requires { typename iterator_traits<_Iter>::iterator_category; } &&
  derived_from<typename iterator_traits<_Iter>::iterator_category, forward_iterator_tag>;

template<class _Iter, class _Sent>
concept __common_iter_has_ptr_op = requires(const common_iterator<_Iter, _Sent>& __a) {
  __a.operator->();
};

template<class, class>
struct __arrow_type_or_void {
    using type = void;
};

template<class _Iter, class _Sent>
  requires __common_iter_has_ptr_op<_Iter, _Sent>
struct __arrow_type_or_void<_Iter, _Sent> {
    using type = decltype(declval<const common_iterator<_Iter, _Sent>>().operator->());
};

template<class _Iter, class _Sent>
struct iterator_traits<common_iterator<_Iter, _Sent>> {
  using iterator_concept = _If<forward_iterator<_Iter>,
                               forward_iterator_tag,
                               input_iterator_tag>;
  using iterator_category = _If<__denotes_forward_iter<_Iter>,
                                forward_iterator_tag,
                                input_iterator_tag>;
  using pointer = typename __arrow_type_or_void<_Iter, _Sent>::type;
  using value_type = iter_value_t<_Iter>;
  using difference_type = iter_difference_t<_Iter>;
  using reference = iter_reference_t<_Iter>;
};


#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_COMMON_ITERATOR_H
# 302 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/common_iterator.h" 3
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/counted_iterator.h>
#endif /* expanded by -frewrite-includes */
# 584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP___ITERATOR_COUNTED_ITERATOR_H
#define _LIBCPP___ITERATOR_COUNTED_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/default_sentinel.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H
#define _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3

struct default_sentinel_t { };
inline constexpr default_sentinel_t default_sentinel{};

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/default_sentinel.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_move.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_swap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
#endif
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3

template<class>
struct __counted_iterator_concept {};

template<class _Iter>
  requires requires { typename _Iter::iterator_concept; }
struct __counted_iterator_concept<_Iter> {
  using iterator_concept = typename _Iter::iterator_concept;
};

template<class>
struct __counted_iterator_category {};

template<class _Iter>
  requires requires { typename _Iter::iterator_category; }
struct __counted_iterator_category<_Iter> {
  using iterator_category = typename _Iter::iterator_category;
};

template<class>
struct __counted_iterator_value_type {};

template<indirectly_readable _Iter>
struct __counted_iterator_value_type<_Iter> {
  using value_type = iter_value_t<_Iter>;
};

template<input_or_output_iterator _Iter>
class counted_iterator
  : public __counted_iterator_concept<_Iter>
  , public __counted_iterator_category<_Iter>
  , public __counted_iterator_value_type<_Iter>
{
public:
  [[no_unique_address]] _Iter __current_ = _Iter();
  iter_difference_t<_Iter> __count_ = 0;

  using iterator_type = _Iter;
  using difference_type = iter_difference_t<_Iter>;

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator() requires default_initializable<_Iter> = default;

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator(_Iter __iter, iter_difference_t<_Iter> __n)
   : __current_(_VSTD::move(__iter)), __count_(__n) {
    _LIBCPP_ASSERT(__n >= 0, "__n must not be negative.");
  }

  template<class _I2>
    requires convertible_to<const _I2&, _Iter>
  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator(const counted_iterator<_I2>& __other)
   : __current_(__other.__current_), __count_(__other.__count_) {}

  template<class _I2>
    requires assignable_from<_Iter&, const _I2&>
  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator& operator=(const counted_iterator<_I2>& __other) {
    __current_ = __other.__current_;
    __count_ = __other.__count_;
    return *this;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr const _Iter& base() const& { return __current_; }

  _LIBCPP_HIDE_FROM_ABI
  constexpr _Iter base() && { return _VSTD::move(__current_); }

  _LIBCPP_HIDE_FROM_ABI
  constexpr iter_difference_t<_Iter> count() const noexcept { return __count_; }

  _LIBCPP_HIDE_FROM_ABI
  constexpr decltype(auto) operator*() {
    _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end.");
    return *__current_;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr decltype(auto) operator*() const
    requires __dereferenceable<const _Iter>
  {
    _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end.");
    return *__current_;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr auto operator->() const noexcept
    requires contiguous_iterator<_Iter>
  {
    return _VSTD::to_address(__current_);
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator& operator++() {
    _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end.");
    ++__current_;
    --__count_;
    return *this;
  }

  _LIBCPP_HIDE_FROM_ABI
  decltype(auto) operator++(int) {
    _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end.");
    --__count_;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try { return __current_++; }
    catch(...) { ++__count_; throw; }
#else
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
    return __current_++;
#endif // _LIBCPP_NO_EXCEPTIONS
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator operator++(int)
    requires forward_iterator<_Iter>
  {
    _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end.");
    counted_iterator __tmp = *this;
    ++*this;
    return __tmp;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator& operator--()
    requires bidirectional_iterator<_Iter>
  {
    --__current_;
    ++__count_;
    return *this;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator operator--(int)
    requires bidirectional_iterator<_Iter>
  {
    counted_iterator __tmp = *this;
    --*this;
    return __tmp;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator operator+(iter_difference_t<_Iter> __n) const
    requires random_access_iterator<_Iter>
  {
    return counted_iterator(__current_ + __n, __count_ - __n);
  }

  _LIBCPP_HIDE_FROM_ABI
  friend constexpr counted_iterator operator+(
    iter_difference_t<_Iter> __n, const counted_iterator& __x)
    requires random_access_iterator<_Iter>
  {
    return __x + __n;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator& operator+=(iter_difference_t<_Iter> __n)
    requires random_access_iterator<_Iter>
  {
    _LIBCPP_ASSERT(__n <= __count_, "Cannot advance iterator past end.");
    __current_ += __n;
    __count_ -= __n;
    return *this;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator operator-(iter_difference_t<_Iter> __n) const
    requires random_access_iterator<_Iter>
  {
    return counted_iterator(__current_ - __n, __count_ + __n);
  }

  template<common_with<_Iter> _I2>
  _LIBCPP_HIDE_FROM_ABI
  friend constexpr iter_difference_t<_I2> operator-(
    const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs)
  {
    return __rhs.__count_ - __lhs.__count_;
  }

  _LIBCPP_HIDE_FROM_ABI
  friend constexpr iter_difference_t<_Iter> operator-(
    const counted_iterator& __lhs, default_sentinel_t)
  {
    return -__lhs.__count_;
  }

  _LIBCPP_HIDE_FROM_ABI
  friend constexpr iter_difference_t<_Iter> operator-(
    default_sentinel_t, const counted_iterator& __rhs)
  {
    return __rhs.__count_;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr counted_iterator& operator-=(iter_difference_t<_Iter> __n)
    requires random_access_iterator<_Iter>
  {
    _LIBCPP_ASSERT(-__n <= __count_, "Attempt to subtract too large of a size: "
                                     "counted_iterator would be decremented before the "
                                     "first element of its range.");
    __current_ -= __n;
    __count_ += __n;
    return *this;
  }

  _LIBCPP_HIDE_FROM_ABI
  constexpr decltype(auto) operator[](iter_difference_t<_Iter> __n) const
    requires random_access_iterator<_Iter>
  {
    _LIBCPP_ASSERT(__n < __count_, "Subscript argument must be less than size.");
    return __current_[__n];
  }

  template<common_with<_Iter> _I2>
  _LIBCPP_HIDE_FROM_ABI
  friend constexpr bool operator==(
    const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs)
  {
    return __lhs.__count_ == __rhs.__count_;
  }

  _LIBCPP_HIDE_FROM_ABI
  friend constexpr bool operator==(
    const counted_iterator& __lhs, default_sentinel_t)
  {
    return __lhs.__count_ == 0;
  }

  template<common_with<_Iter> _I2>
  friend constexpr strong_ordering operator<=>(
    const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs)
  {
    return __rhs.__count_ <=> __lhs.__count_;
  }

  _LIBCPP_HIDE_FROM_ABI
  friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const counted_iterator& __i)
    noexcept(noexcept(ranges::iter_move(__i.__current_)))
      requires input_iterator<_Iter>
  {
    _LIBCPP_ASSERT(__i.__count_ > 0, "Iterator must not be past end of range.");
    return ranges::iter_move(__i.__current_);
  }

  template<indirectly_swappable<_Iter> _I2>
  _LIBCPP_HIDE_FROM_ABI
  friend constexpr void iter_swap(const counted_iterator& __x, const counted_iterator<_I2>& __y)
    noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_)))
  {
    _LIBCPP_ASSERT(__x.__count_ > 0 && __y.__count_ > 0,
                   "Iterators must not be past end of range.");
    return ranges::iter_swap(__x.__current_, __y.__current_);
  }
};

template<input_iterator _Iter>
  requires same_as<_ITER_TRAITS<_Iter>, iterator_traits<_Iter>>
struct iterator_traits<counted_iterator<_Iter>> : iterator_traits<_Iter> {
  using pointer = conditional_t<contiguous_iterator<_Iter>,
                                add_pointer_t<iter_reference_t<_Iter>>, void>;
};

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_COUNTED_ITERATOR_H
# 307 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/counted_iterator.h" 3
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/data.h>
#endif /* expanded by -frewrite-includes */
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_DATA_H
#define _LIBCPP___ITERATOR_DATA_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3

template <class _Cont> constexpr
_LIBCPP_INLINE_VISIBILITY
auto data(_Cont& __c)
_NOEXCEPT_(noexcept(__c.data()))
-> decltype        (__c.data())
{ return            __c.data(); }

template <class _Cont> constexpr
_LIBCPP_INLINE_VISIBILITY
auto data(const _Cont& __c)
_NOEXCEPT_(noexcept(__c.data()))
-> decltype        (__c.data())
{ return            __c.data(); }

template <class _Tp, size_t _Sz>
_LIBCPP_INLINE_VISIBILITY
constexpr _Tp* data(_Tp (&__array)[_Sz]) noexcept { return __array; }

template <class _Ep>
_LIBCPP_INLINE_VISIBILITY
constexpr const _Ep* data(initializer_list<_Ep> __il) noexcept { return __il.begin(); }

#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_DATA_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/data.h" 3
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/default_sentinel.h>
#endif /* expanded by -frewrite-includes */
# 586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/distance.h>
#endif /* expanded by -frewrite-includes */
# 587 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_DISTANCE_H
#define _LIBCPP___ITERATOR_DISTANCE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
typename iterator_traits<_InputIter>::difference_type
__distance(_InputIter __first, _InputIter __last, input_iterator_tag)
{
    typename iterator_traits<_InputIter>::difference_type __r(0);
    for (; __first != __last; ++__first)
        ++__r;
    return __r;
}

template <class _RandIter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
typename iterator_traits<_RandIter>::difference_type
__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag)
{
    return __last - __first;
}

template <class _InputIter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
typename iterator_traits<_InputIter>::difference_type
distance(_InputIter __first, _InputIter __last)
{
    return _VSTD::__distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_DISTANCE_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/distance.h" 3
# 588 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/empty.h>
#endif /* expanded by -frewrite-includes */
# 588 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_EMPTY_H
#define _LIBCPP___ITERATOR_EMPTY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3

template <class _Cont>
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
constexpr auto empty(const _Cont& __c)
_NOEXCEPT_(noexcept(__c.empty()))
-> decltype        (__c.empty())
{ return            __c.empty(); }

template <class _Tp, size_t _Sz>
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
constexpr bool empty(const _Tp (&)[_Sz]) noexcept { return false; }

template <class _Ep>
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
constexpr bool empty(initializer_list<_Ep> __il) noexcept { return __il.size() == 0; }

#endif // _LIBCPP_STD_VER > 14
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_EMPTY_H
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/empty.h" 3
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/erase_if_container.h>
#endif /* expanded by -frewrite-includes */
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H
#define _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Container, class _Predicate>
_LIBCPP_HIDE_FROM_ABI
typename _Container::size_type
__libcpp_erase_if_container(_Container& __c, _Predicate& __pred) {
  typename _Container::size_type __old_size = __c.size();

  const typename _Container::iterator __last = __c.end();
  for (typename _Container::iterator __iter = __c.begin(); __iter != __last;) {
    if (__pred(*__iter))
      __iter = __c.erase(__iter);
    else
      ++__iter;
  }

  return __old_size - __c.size();
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/erase_if_container.h" 3
# 590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/front_insert_iterator.h>
#endif /* expanded by -frewrite-includes */
# 590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H
#define _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Container>
class _LIBCPP_TEMPLATE_VIS front_insert_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
protected:
    _Container* container;
public:
    typedef output_iterator_tag iterator_category;
    typedef void value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
    typedef ptrdiff_t difference_type;
#else
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
    typedef void difference_type;
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
    typedef void pointer;
    typedef void reference;
    typedef _Container container_type;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit front_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 front_insert_iterator& operator=(const typename _Container::value_type& __value_)
        {container->push_front(__value_); return *this;}
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 front_insert_iterator& operator=(typename _Container::value_type&& __value_)
        {container->push_front(_VSTD::move(__value_)); return *this;}
#endif // _LIBCPP_CXX03_LANG
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 front_insert_iterator& operator*()     {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 front_insert_iterator& operator++()    {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 front_insert_iterator  operator++(int) {return *this;}
};

template <class _Container>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
front_insert_iterator<_Container>
front_inserter(_Container& __x)
{
    return front_insert_iterator<_Container>(__x);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/front_insert_iterator.h" 3
# 591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/insert_iterator.h>
#endif /* expanded by -frewrite-includes */
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_INSERT_ITERATOR_H
#define _LIBCPP___ITERATOR_INSERT_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Container>
class _LIBCPP_TEMPLATE_VIS insert_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
protected:
    _Container* container;
    typename _Container::iterator iter; // FIXME: `ranges::iterator_t<Container>` in C++20 mode
public:
    typedef output_iterator_tag iterator_category;
    typedef void value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
    typedef ptrdiff_t difference_type;
#else
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
    typedef void difference_type;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
    typedef void pointer;
    typedef void reference;
    typedef _Container container_type;

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator(_Container& __x, typename _Container::iterator __i)
        : container(_VSTD::addressof(__x)), iter(__i) {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator& operator=(const typename _Container::value_type& __value_)
        {iter = container->insert(iter, __value_); ++iter; return *this;}
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator& operator=(typename _Container::value_type&& __value_)
        {iter = container->insert(iter, _VSTD::move(__value_)); ++iter; return *this;}
#endif // _LIBCPP_CXX03_LANG
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator& operator*()        {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator& operator++()       {return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 insert_iterator& operator++(int)    {return *this;}
};

template <class _Container>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
insert_iterator<_Container>
inserter(_Container& __x, typename _Container::iterator __i)
{
    return insert_iterator<_Container>(__x, __i);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_INSERT_ITERATOR_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/insert_iterator.h" 3
# 593 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/istreambuf_iterator.h>
#endif /* expanded by -frewrite-includes */
# 593 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H
#define _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd> // for forward declaration of basic_streambuf
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template<class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS istreambuf_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
    : public iterator<input_iterator_tag, _CharT,
                      typename _Traits::off_type, _CharT*,
                      _CharT>
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
public:
    typedef input_iterator_tag              iterator_category;
    typedef _CharT                          value_type;
    typedef typename _Traits::off_type      difference_type;
    typedef _CharT*                         pointer;
    typedef _CharT                          reference;
    typedef _CharT                          char_type;
    typedef _Traits                         traits_type;
    typedef typename _Traits::int_type      int_type;
    typedef basic_streambuf<_CharT,_Traits> streambuf_type;
    typedef basic_istream<_CharT,_Traits>   istream_type;
private:
    mutable streambuf_type* __sbuf_;

    class __proxy
    {
        char_type __keep_;
        streambuf_type* __sbuf_;
        _LIBCPP_INLINE_VISIBILITY __proxy(char_type __c, streambuf_type* __s)
            : __keep_(__c), __sbuf_(__s) {}
        friend class istreambuf_iterator;
    public:
        _LIBCPP_INLINE_VISIBILITY char_type operator*() const {return __keep_;}
    };

    _LIBCPP_INLINE_VISIBILITY
    bool __test_for_eof() const
    {
        if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof()))
            __sbuf_ = nullptr;
        return __sbuf_ == nullptr;
    }
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(nullptr) {}
    _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT
        : __sbuf_(__s.rdbuf()) {}
    _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT
        : __sbuf_(__s) {}
    _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(const __proxy& __p) _NOEXCEPT
        : __sbuf_(__p.__sbuf_) {}

    _LIBCPP_INLINE_VISIBILITY char_type  operator*() const
        {return static_cast<char_type>(__sbuf_->sgetc());}
    _LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++()
        {
            __sbuf_->sbumpc();
            return *this;
        }
    _LIBCPP_INLINE_VISIBILITY __proxy              operator++(int)
        {
            return __proxy(__sbuf_->sbumpc(), __sbuf_);
        }

    _LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const
        {return __test_for_eof() == __b.__test_for_eof();}
};

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
bool operator==(const istreambuf_iterator<_CharT,_Traits>& __a,
                const istreambuf_iterator<_CharT,_Traits>& __b)
                {return __a.equal(__b);}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a,
                const istreambuf_iterator<_CharT,_Traits>& __b)
                {return !__a.equal(__b);}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istreambuf_iterator.h" 3
# 594 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/istream_iterator.h>
#endif /* expanded by -frewrite-includes */
# 594 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H
#define _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd> // for forward declarations of char_traits and basic_istream
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp, class _CharT = char,
          class _Traits = char_traits<_CharT>, class _Distance = ptrdiff_t>
class _LIBCPP_TEMPLATE_VIS istream_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
    : public iterator<input_iterator_tag, _Tp, _Distance, const _Tp*, const _Tp&>
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
public:
    typedef input_iterator_tag iterator_category;
    typedef _Tp value_type;
    typedef _Distance difference_type;
    typedef const _Tp* pointer;
    typedef const _Tp& reference;
    typedef _CharT char_type;
    typedef _Traits traits_type;
    typedef basic_istream<_CharT,_Traits> istream_type;
private:
    istream_type* __in_stream_;
    _Tp __value_;
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istream_iterator() : __in_stream_(nullptr), __value_() {}
    _LIBCPP_INLINE_VISIBILITY istream_iterator(istream_type& __s) : __in_stream_(_VSTD::addressof(__s))
        {
            if (!(*__in_stream_ >> __value_))
                __in_stream_ = nullptr;
        }

    _LIBCPP_INLINE_VISIBILITY const _Tp& operator*() const {return __value_;}
    _LIBCPP_INLINE_VISIBILITY const _Tp* operator->() const {return _VSTD::addressof((operator*()));}
    _LIBCPP_INLINE_VISIBILITY istream_iterator& operator++()
        {
            if (!(*__in_stream_ >> __value_))
                __in_stream_ = nullptr;
            return *this;
        }
    _LIBCPP_INLINE_VISIBILITY istream_iterator  operator++(int)
        {istream_iterator __t(*this); ++(*this); return __t;}

    template <class _Up, class _CharU, class _TraitsU, class _DistanceU>
    friend _LIBCPP_INLINE_VISIBILITY
    bool
    operator==(const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __x,
               const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __y);

    template <class _Up, class _CharU, class _TraitsU, class _DistanceU>
    friend _LIBCPP_INLINE_VISIBILITY
    bool
    operator==(const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __x,
               const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __y);
};

template <class _Tp, class _CharT, class _Traits, class _Distance>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x,
           const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y)
{
    return __x.__in_stream_ == __y.__in_stream_;
}

template <class _Tp, class _CharT, class _Traits, class _Distance>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x,
           const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y)
{
    return !(__x == __y);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/istream_iterator.h" 3
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 597 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_move.h>
#endif /* expanded by -frewrite-includes */
# 597 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iter_swap.h>
#endif /* expanded by -frewrite-includes */
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/move_iterator.h>
#endif /* expanded by -frewrite-includes */
# 599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_MOVE_ITERATOR_H
#define _LIBCPP___ITERATOR_MOVE_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Iter>
class _LIBCPP_TEMPLATE_VIS move_iterator
{
private:
    _Iter __i;
public:
    typedef _Iter                                            iterator_type;
    typedef typename iterator_traits<iterator_type>::value_type value_type;
    typedef typename iterator_traits<iterator_type>::difference_type difference_type;
    typedef iterator_type pointer;
    typedef _If<__is_cpp17_random_access_iterator<_Iter>::value,
        random_access_iterator_tag,
        typename iterator_traits<_Iter>::iterator_category>  iterator_category;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
    typedef input_iterator_tag                               iterator_concept;
#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3

#ifndef _LIBCPP_CXX03_LANG
    typedef typename iterator_traits<iterator_type>::reference __reference;
    typedef typename conditional<
            is_reference<__reference>::value,
            typename remove_reference<__reference>::type&&,
            __reference
        >::type reference;
#else
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
    typedef typename iterator_traits<iterator_type>::reference reference;
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator() : __i() {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    explicit move_iterator(_Iter __x) : __i(__x) {}

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value && is_convertible<_Up const&, _Iter>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator(const move_iterator<_Up>& __u) : __i(__u.base()) {}

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value &&
        is_convertible<_Up const&, _Iter>::value &&
        is_assignable<_Iter&, _Up const&>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator& operator=(const move_iterator<_Up>& __u) {
        __i = __u.base();
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 _Iter base() const {return __i;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reference operator*() const { return static_cast<reference>(*__i); }
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    pointer  operator->() const { return __i;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator& operator++() {++__i; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator  operator++(int) {move_iterator __tmp(*this); ++__i; return __tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator& operator--() {--__i; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator  operator--(int) {move_iterator __tmp(*this); --__i; return __tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator  operator+ (difference_type __n) const {return move_iterator(__i + __n);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator& operator+=(difference_type __n) {__i += __n; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator  operator- (difference_type __n) const {return move_iterator(__i - __n);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    move_iterator& operator-=(difference_type __n) {__i -= __n; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reference operator[](difference_type __n) const { return static_cast<reference>(__i[__n]); }
};

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() == __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() < __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() != __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() > __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() >= __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() <= __y.base();
}

#ifndef _LIBCPP_CXX03_LANG
template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
-> decltype(__x.base() - __y.base())
{
    return __x.base() - __y.base();
}
#else
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY
typename move_iterator<_Iter1>::difference_type
operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
{
    return __x.base() - __y.base();
}
#endif
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3

template <class _Iter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
move_iterator<_Iter>
operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x)
{
    return move_iterator<_Iter>(__x.base() + __n);
}

template <class _Iter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
move_iterator<_Iter>
make_move_iterator(_Iter __i)
{
    return move_iterator<_Iter>(__i);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_MOVE_ITERATOR_H
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/move_iterator.h" 3
# 600 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/next.h>
#endif /* expanded by -frewrite-includes */
# 600 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_NEXT_H
#define _LIBCPP___ITERATOR_NEXT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__function_like.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/advance.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
#endif
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    typename enable_if<__is_cpp17_input_iterator<_InputIter>::value, _InputIter>::type
    next(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) {
  _LIBCPP_ASSERT(__n >= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value,
                 "Attempt to next(it, n) with negative n on a non-bidirectional iterator");

  _VSTD::advance(__x, __n);
  return __x;
}

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3

namespace ranges {
struct __next_fn final : private __function_like {
  _LIBCPP_HIDE_FROM_ABI
  constexpr explicit __next_fn(__tag __x) noexcept : __function_like(__x) {}

  template <input_or_output_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x) const {
    ++__x;
    return __x;
  }

  template <input_or_output_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const {
    ranges::advance(__x, __n);
    return __x;
  }

  template <input_or_output_iterator _Ip, sentinel_for<_Ip> _Sp>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x, _Sp __bound) const {
    ranges::advance(__x, __bound);
    return __x;
  }

  template <input_or_output_iterator _Ip, sentinel_for<_Ip> _Sp>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n, _Sp __bound) const {
    ranges::advance(__x, __n, __bound);
    return __x;
  }
};

inline constexpr auto next = __next_fn(__function_like::__tag());
} // namespace ranges

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_PRIMITIVES_H
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/next.h" 3
# 601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/ostreambuf_iterator.h>
#endif /* expanded by -frewrite-includes */
# 601 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H
#define _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd> // for forward declaration of basic_streambuf
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
public:
    typedef output_iterator_tag                 iterator_category;
    typedef void                                value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
    typedef ptrdiff_t                           difference_type;
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
    typedef void                                difference_type;
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
    typedef void                                pointer;
    typedef void                                reference;
    typedef _CharT                              char_type;
    typedef _Traits                             traits_type;
    typedef basic_streambuf<_CharT, _Traits>    streambuf_type;
    typedef basic_ostream<_CharT, _Traits>      ostream_type;

private:
    streambuf_type* __sbuf_;
public:
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(ostream_type& __s) _NOEXCEPT
        : __sbuf_(__s.rdbuf()) {}
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(streambuf_type* __s) _NOEXCEPT
        : __sbuf_(__s) {}
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator=(_CharT __c)
        {
            if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof()))
                __sbuf_ = nullptr;
            return *this;
        }
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator*()     {return *this;}
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++()    {return *this;}
    _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;}
    _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == nullptr;}

    template <class _Ch, class _Tr>
    friend
    _LIBCPP_HIDDEN
    ostreambuf_iterator<_Ch, _Tr>
    __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s,
                     const _Ch* __ob, const _Ch* __op, const _Ch* __oe,
                     ios_base& __iob, _Ch __fl);
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostreambuf_iterator.h" 3
# 602 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/ostream_iterator.h>
#endif /* expanded by -frewrite-includes */
# 602 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H
#define _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd> // for forward declarations of char_traits and basic_ostream
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Tp, class _CharT = char, class _Traits = char_traits<_CharT> >
class _LIBCPP_TEMPLATE_VIS ostream_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
public:
    typedef output_iterator_tag             iterator_category;
    typedef void                            value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
    typedef ptrdiff_t                       difference_type;
#else
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
    typedef void                            difference_type;
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
    typedef void                            pointer;
    typedef void                            reference;
    typedef _CharT                          char_type;
    typedef _Traits                         traits_type;
    typedef basic_ostream<_CharT, _Traits>  ostream_type;

private:
    ostream_type* __out_stream_;
    const char_type* __delim_;
public:
    _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s) _NOEXCEPT
        : __out_stream_(_VSTD::addressof(__s)), __delim_(nullptr) {}
    _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s, const _CharT* __delimiter) _NOEXCEPT
        : __out_stream_(_VSTD::addressof(__s)), __delim_(__delimiter) {}
    _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator=(const _Tp& __value_)
        {
            *__out_stream_ << __value_;
            if (__delim_)
                *__out_stream_ << __delim_;
            return *this;
        }

    _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator*()     {return *this;}
    _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++()    {return *this;}
    _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++(int) {return *this;}
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/ostream_iterator.h" 3
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/prev.h>
#endif /* expanded by -frewrite-includes */
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_PREV_H
#define _LIBCPP___ITERATOR_PREV_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__function_like.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/advance.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
#endif
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    typename enable_if<__is_cpp17_input_iterator<_InputIter>::value, _InputIter>::type
    prev(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) {
  _LIBCPP_ASSERT(__n <= 0 || __is_cpp17_bidirectional_iterator<_InputIter>::value,
                 "Attempt to prev(it, n) with a positive n on a non-bidirectional iterator");
  _VSTD::advance(__x, -__n);
  return __x;
}

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3

namespace ranges {
struct __prev_fn final : private __function_like {
  _LIBCPP_HIDE_FROM_ABI
  constexpr explicit __prev_fn(__tag __x) noexcept : __function_like(__x) {}

  template <bidirectional_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x) const {
    --__x;
    return __x;
  }

  template <bidirectional_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const {
    ranges::advance(__x, -__n);
    return __x;
  }

  template <bidirectional_iterator _Ip>
  _LIBCPP_HIDE_FROM_ABI
  constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n, _Ip __bound) const {
    ranges::advance(__x, -__n, __bound);
    return __x;
  }
};

inline constexpr auto prev = __prev_fn(__function_like::__tag());
} // namespace ranges

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_PREV_H
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/prev.h" 3
# 604 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/projected.h>
#endif /* expanded by -frewrite-includes */
# 604 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP___ITERATOR_PROJECTED_H
#define _LIBCPP___ITERATOR_PROJECTED_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/concepts.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/incrementable_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3

template<indirectly_readable _It, indirectly_regular_unary_invocable<_It> _Proj>
struct projected {
  using value_type = remove_cvref_t<indirect_result_t<_Proj&, _It>>;
  indirect_result_t<_Proj&, _It> operator*() const; // not defined
};

template<weakly_incrementable _It, class _Proj>
struct incrementable_traits<projected<_It, _Proj>> {
  using difference_type = iter_difference_t<_It>;
};

#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_PROJECTED_H
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/projected.h" 3
# 605 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/readable_traits.h>
#endif /* expanded by -frewrite-includes */
# 605 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/reverse_access.h>
#endif /* expanded by -frewrite-includes */
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_REVERSE_ACCESS_H
#define _LIBCPP___ITERATOR_REVERSE_ACCESS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/reverse_iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_REVERSE_ITERATOR_H
#define _LIBCPP___ITERATOR_REVERSE_ITERATOR_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp, class = void>
struct __is_stashing_iterator : false_type {};

template <class _Tp>
struct __is_stashing_iterator<_Tp, typename __void_t<typename _Tp::__stashing_iterator_tag>::type>
  : true_type {};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _Iter>
class _LIBCPP_TEMPLATE_VIS reverse_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
    : public iterator<typename iterator_traits<_Iter>::iterator_category,
                      typename iterator_traits<_Iter>::value_type,
                      typename iterator_traits<_Iter>::difference_type,
                      typename iterator_traits<_Iter>::pointer,
                      typename iterator_traits<_Iter>::reference>
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
private:
#ifndef _LIBCPP_ABI_NO_ITERATOR_BASES
    _Iter __t; // no longer used as of LWG #2360, not removed due to ABI break
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

    static_assert(!__is_stashing_iterator<_Iter>::value,
      "The specified iterator type cannot be used with reverse_iterator; "
      "Using stashing iterators with reverse_iterator causes undefined behavior");

protected:
    _Iter current;
public:
    typedef _Iter                                            iterator_type;
    typedef typename iterator_traits<_Iter>::difference_type difference_type;
    typedef typename iterator_traits<_Iter>::reference       reference;
    typedef typename iterator_traits<_Iter>::pointer         pointer;
    typedef _If<__is_cpp17_random_access_iterator<_Iter>::value,
        random_access_iterator_tag,
        typename iterator_traits<_Iter>::iterator_category>  iterator_category;
    typedef typename iterator_traits<_Iter>::value_type      value_type;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
    typedef _If<__is_cpp17_random_access_iterator<_Iter>::value,
        random_access_iterator_tag,
        bidirectional_iterator_tag>                          iterator_concept;
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

#ifndef _LIBCPP_ABI_NO_ITERATOR_BASES
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator() : __t(), current() {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    explicit reverse_iterator(_Iter __x) : __t(__x), current(__x) {}

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value && is_convertible<_Up const&, _Iter>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator(const reverse_iterator<_Up>& __u)
        : __t(__u.base()), current(__u.base())
    { }

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value &&
        is_convertible<_Up const&, _Iter>::value &&
        is_assignable<_Up const&, _Iter>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator=(const reverse_iterator<_Up>& __u) {
        __t = current = __u.base();
        return *this;
    }
#else
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator() : current() {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    explicit reverse_iterator(_Iter __x) : current(__x) {}

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value && is_convertible<_Up const&, _Iter>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator(const reverse_iterator<_Up>& __u)
        : current(__u.base())
    { }

    template <class _Up, class = _EnableIf<
        !is_same<_Up, _Iter>::value &&
        is_convertible<_Up const&, _Iter>::value &&
        is_assignable<_Up const&, _Iter>::value
    > >
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator=(const reverse_iterator<_Up>& __u) {
        current = __u.base();
        return *this;
    }
#endif
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    _Iter base() const {return current;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reference operator*() const {_Iter __tmp = current; return *--__tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    pointer  operator->() const {return _VSTD::addressof(operator*());}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator++() {--current; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator  operator++(int) {reverse_iterator __tmp(*this); --current; return __tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator--() {++current; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator  operator--(int) {reverse_iterator __tmp(*this); ++current; return __tmp;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator  operator+ (difference_type __n) const {return reverse_iterator(current - __n);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator+=(difference_type __n) {current -= __n; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator  operator- (difference_type __n) const {return reverse_iterator(current + __n);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reverse_iterator& operator-=(difference_type __n) {current += __n; return *this;}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
    reference         operator[](difference_type __n) const {return *(*this + __n);}
};

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator==(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() == __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator<(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() > __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() != __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() < __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() <= __y.base();
}

template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
bool
operator<=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __x.base() >= __y.base();
}

#ifndef _LIBCPP_CXX03_LANG
template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto
operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
-> decltype(__y.base() - __x.base())
{
    return __y.base() - __x.base();
}
#else
# 209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
template <class _Iter1, class _Iter2>
inline _LIBCPP_INLINE_VISIBILITY
typename reverse_iterator<_Iter1>::difference_type
operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
{
    return __y.base() - __x.base();
}
#endif
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

template <class _Iter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<_Iter>
operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x)
{
    return reverse_iterator<_Iter>(__x.base() - __n);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
template <class _Iter>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<_Iter> make_reverse_iterator(_Iter __i)
{
    return reverse_iterator<_Iter>(__i);
}
#endif
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_REVERSE_ITERATOR_H
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_iterator.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_CXX03_LANG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

template <class _Tp, size_t _Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np])
{
    return reverse_iterator<_Tp*>(__array + _Np);
}

template <class _Tp, size_t _Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np])
{
    return reverse_iterator<_Tp*>(__array);
}

template <class _Ep>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il)
{
    return reverse_iterator<const _Ep*>(__il.end());
}

template <class _Ep>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il)
{
    return reverse_iterator<const _Ep*>(__il.begin());
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto rbegin(_Cp& __c) -> decltype(__c.rbegin())
{
    return __c.rbegin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto rbegin(const _Cp& __c) -> decltype(__c.rbegin())
{
    return __c.rbegin();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto rend(_Cp& __c) -> decltype(__c.rend())
{
    return __c.rend();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto rend(const _Cp& __c) -> decltype(__c.rend())
{
    return __c.rend();
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto crbegin(const _Cp& __c) -> decltype(_VSTD::rbegin(__c))
{
    return _VSTD::rbegin(__c);
}

template <class _Cp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
auto crend(const _Cp& __c) -> decltype(_VSTD::rend(__c))
{
    return _VSTD::rend(__c);
}

#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

#endif // !defined(_LIBCPP_CXX03_LANG)
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_REVERSE_ACCESS_H
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/reverse_access.h" 3
# 607 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/reverse_iterator.h>
#endif /* expanded by -frewrite-includes */
# 607 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 608 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/size.h>
#endif /* expanded by -frewrite-includes */
# 608 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ITERATOR_SIZE_H
#define _LIBCPP___ITERATOR_SIZE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3

template <class _Cont>
_LIBCPP_INLINE_VISIBILITY
constexpr auto size(const _Cont& __c)
_NOEXCEPT_(noexcept(__c.size()))
-> decltype        (__c.size())
{ return            __c.size(); }

template <class _Tp, size_t _Sz>
_LIBCPP_INLINE_VISIBILITY
constexpr size_t size(const _Tp (&)[_Sz]) noexcept { return _Sz; }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
template <class _Cont>
_LIBCPP_INLINE_VISIBILITY
constexpr auto ssize(const _Cont& __c)
_NOEXCEPT_(noexcept(static_cast<common_type_t<ptrdiff_t, make_signed_t<decltype(__c.size())>>>(__c.size())))
->                              common_type_t<ptrdiff_t, make_signed_t<decltype(__c.size())>>
{ return            static_cast<common_type_t<ptrdiff_t, make_signed_t<decltype(__c.size())>>>(__c.size()); }

template <class _Tp, ptrdiff_t _Sz>
_LIBCPP_INLINE_VISIBILITY
constexpr ptrdiff_t ssize(const _Tp (&)[_Sz]) noexcept { return _Sz; }
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3

#endif // _LIBCPP_STD_VER > 14
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ITERATOR_SIZE_H
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__iterator/size.h" 3
# 609 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/wrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 609 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 610 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 610 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 612 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 612 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 614 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts> // Mandated by the Standard.
#endif /* expanded by -frewrite-includes */
# 614 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 615 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 615 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 616 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 616 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 617 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 617 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 618 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 618 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 622 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
#endif
# 623 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3

#endif // _LIBCPP_ITERATOR
# 625 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iterator" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _OutputIterator, class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 raw_storage_iterator
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    : public iterator<output_iterator_tag, void, void, void, void>
#endif
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
{
_LIBCPP_SUPPRESS_DEPRECATED_POP
private:
    _OutputIterator __x_;
public:
    typedef output_iterator_tag iterator_category;
    typedef void                value_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    typedef ptrdiff_t           difference_type;
#else
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    typedef void                difference_type;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    typedef void                pointer;
    typedef void                reference;

    _LIBCPP_INLINE_VISIBILITY explicit raw_storage_iterator(_OutputIterator __x) : __x_(__x) {}
    _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator*() {return *this;}
    _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator=(const _Tp& __element)
        {::new ((void*)_VSTD::addressof(*__x_)) _Tp(__element); return *this;}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator=(_Tp&& __element)
        {::new ((void*)_VSTD::addressof(*__x_)) _Tp(_VSTD::move(__element)); return *this;}
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator++() {++__x_; return *this;}
    _LIBCPP_INLINE_VISIBILITY raw_storage_iterator  operator++(int)
        {raw_storage_iterator __t(*this); ++__x_; return __t;}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
    _LIBCPP_INLINE_VISIBILITY _OutputIterator base() const { return __x_; }
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
};

#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR)
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_RAW_STORAGE_ITERATOR_H
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/raw_storage_iterator.h" 3
# 682 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/shared_ptr.h>
#endif /* expanded by -frewrite-includes */
# 682 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/temporary_buffer.h>
#endif /* expanded by -frewrite-includes */
# 683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_TEMPORARY_BUFFER_H
#define _LIBCPP___MEMORY_TEMPORARY_BUFFER_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility> // pair
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
_LIBCPP_NODISCARD_EXT _LIBCPP_NO_CFI
pair<_Tp*, ptrdiff_t>
get_temporary_buffer(ptrdiff_t __n) _NOEXCEPT
{
    pair<_Tp*, ptrdiff_t> __r(0, 0);
    const ptrdiff_t __m = (~ptrdiff_t(0) ^
                           ptrdiff_t(ptrdiff_t(1) << (sizeof(ptrdiff_t) * __CHAR_BIT__ - 1)))
                           / sizeof(_Tp);
    if (__n > __m)
        __n = __m;
    while (__n > 0)
    {
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
    if (__is_overaligned_for_new(_LIBCPP_ALIGNOF(_Tp)))
        {
            align_val_t __al =
                align_val_t(alignment_of<_Tp>::value);
            __r.first = static_cast<_Tp*>(::operator new(
                __n * sizeof(_Tp), __al, nothrow));
        } else {
            __r.first = static_cast<_Tp*>(::operator new(
                __n * sizeof(_Tp), nothrow));
        }
#else
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
    if (__is_overaligned_for_new(_LIBCPP_ALIGNOF(_Tp)))
        {
            // Since aligned operator new is unavailable, return an empty
            // buffer rather than one with invalid alignment.
            return __r;
        }

        __r.first = static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), nothrow));
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3

        if (__r.first)
        {
            __r.second = __n;
            break;
        }
        __n /= 2;
    }
    return __r;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
void return_temporary_buffer(_Tp* __p) _NOEXCEPT
{
  _VSTD::__libcpp_deallocate_unsized((void*)__p, _LIBCPP_ALIGNOF(_Tp));
}

struct __return_temporary_buffer
{
    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __p) const {_VSTD::return_temporary_buffer(__p);}
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_TEMPORARY_BUFFER_H
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/temporary_buffer.h" 3
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/uninitialized_algorithms.h>
#endif /* expanded by -frewrite-includes */
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MEMORY_UNINITIALIZED_ALGORITHMS_H
#define _LIBCPP___MEMORY_UNINITIALIZED_ALGORITHMS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/addressof.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/construct_at.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _ForwardIterator>
_ForwardIterator
uninitialized_copy(_InputIterator __f, _InputIterator __l, _ForwardIterator __r)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
#ifndef _LIBCPP_NO_EXCEPTIONS
    _ForwardIterator __s = __r;
    try
    {
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
        for (; __f != __l; ++__f, (void) ++__r)
            ::new ((void*)_VSTD::addressof(*__r)) value_type(*__f);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        for (; __s != __r; ++__s)
            __s->~value_type();
        throw;
    }
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    return __r;
}

template <class _InputIterator, class _Size, class _ForwardIterator>
_ForwardIterator
uninitialized_copy_n(_InputIterator __f, _Size __n, _ForwardIterator __r)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
#ifndef _LIBCPP_NO_EXCEPTIONS
    _ForwardIterator __s = __r;
    try
    {
#endif
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
        for (; __n > 0; ++__f, (void) ++__r, (void) --__n)
            ::new ((void*)_VSTD::addressof(*__r)) value_type(*__f);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        for (; __s != __r; ++__s)
            __s->~value_type();
        throw;
    }
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    return __r;
}

template <class _ForwardIterator, class _Tp>
void
uninitialized_fill(_ForwardIterator __f, _ForwardIterator __l, const _Tp& __x)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
#ifndef _LIBCPP_NO_EXCEPTIONS
    _ForwardIterator __s = __f;
    try
    {
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
        for (; __f != __l; ++__f)
            ::new ((void*)_VSTD::addressof(*__f)) value_type(__x);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        for (; __s != __f; ++__s)
            __s->~value_type();
        throw;
    }
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}

template <class _ForwardIterator, class _Size, class _Tp>
_ForwardIterator
uninitialized_fill_n(_ForwardIterator __f, _Size __n, const _Tp& __x)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
#ifndef _LIBCPP_NO_EXCEPTIONS
    _ForwardIterator __s = __f;
    try
    {
#endif
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
        for (; __n > 0; ++__f, (void) --__n)
            ::new ((void*)_VSTD::addressof(*__f)) value_type(__x);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        for (; __s != __f; ++__s)
            __s->~value_type();
        throw;
    }
#endif
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    return __f;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void destroy(_ForwardIterator __first, _ForwardIterator __last) {
    for (; __first != __last; ++__first)
        _VSTD::destroy_at(_VSTD::addressof(*__first));
}

template <class _ForwardIterator, class _Size>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator destroy_n(_ForwardIterator __first, _Size __n) {
    for (; __n > 0; (void)++__first, --__n)
        _VSTD::destroy_at(_VSTD::addressof(*__first));
    return __first;
}

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY
void uninitialized_default_construct(_ForwardIterator __first, _ForwardIterator __last) {
    using _Vt = typename iterator_traits<_ForwardIterator>::value_type;
    auto __idx = __first;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __idx != __last; ++__idx)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt;
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first, __idx);
        throw;
    }
#endif
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}

template <class _ForwardIterator, class _Size>
inline _LIBCPP_INLINE_VISIBILITY
_ForwardIterator uninitialized_default_construct_n(_ForwardIterator __first, _Size __n) {
    using _Vt = typename iterator_traits<_ForwardIterator>::value_type;
    auto __idx = __first;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 166 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __n > 0; (void)++__idx, --__n)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt;
    return __idx;
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first, __idx);
        throw;
    }
#endif
# 175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}


template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY
void uninitialized_value_construct(_ForwardIterator __first, _ForwardIterator __last) {
    using _Vt = typename iterator_traits<_ForwardIterator>::value_type;
    auto __idx = __first;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __idx != __last; ++__idx)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt();
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first, __idx);
        throw;
    }
#endif
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}

template <class _ForwardIterator, class _Size>
inline _LIBCPP_INLINE_VISIBILITY
_ForwardIterator uninitialized_value_construct_n(_ForwardIterator __first, _Size __n) {
    using _Vt = typename iterator_traits<_ForwardIterator>::value_type;
    auto __idx = __first;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __n > 0; (void)++__idx, --__n)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt();
    return __idx;
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first, __idx);
        throw;
    }
#endif
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}


template <class _InputIt, class _ForwardIt>
inline _LIBCPP_INLINE_VISIBILITY
_ForwardIt uninitialized_move(_InputIt __first, _InputIt __last, _ForwardIt __first_res) {
    using _Vt = typename iterator_traits<_ForwardIt>::value_type;
    auto __idx = __first_res;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __first != __last; (void)++__idx, ++__first)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt(_VSTD::move(*__first));
    return __idx;
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first_res, __idx);
        throw;
    }
#endif
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}

template <class _InputIt, class _Size, class _ForwardIt>
inline _LIBCPP_INLINE_VISIBILITY
pair<_InputIt, _ForwardIt>
uninitialized_move_n(_InputIt __first, _Size __n, _ForwardIt __first_res) {
    using _Vt = typename iterator_traits<_ForwardIt>::value_type;
    auto __idx = __first_res;
#ifndef _LIBCPP_NO_EXCEPTIONS
    try {
#endif
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
    for (; __n > 0; ++__idx, (void)++__first, --__n)
        ::new ((void*)_VSTD::addressof(*__idx)) _Vt(_VSTD::move(*__first));
    return {__first, __idx};
#ifndef _LIBCPP_NO_EXCEPTIONS
    } catch (...) {
        _VSTD::destroy(__first_res, __idx);
        throw;
    }
#endif
# 253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
}

#endif // _LIBCPP_STD_VER > 14
# 256 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MEMORY_UNINITIALIZED_ALGORITHMS_H
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__memory/uninitialized_algorithms.h" 3
# 685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/unique_ptr.h>
#endif /* expanded by -frewrite-includes */
# 685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/uses_allocator.h>
#endif /* expanded by -frewrite-includes */
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple>
#endif /* expanded by -frewrite-includes */
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#   include <__memory/auto_ptr.h>
#endif /* expanded by -frewrite-includes */
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#endif
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#endif
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 710 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Alloc, class _Ptr>
_LIBCPP_INLINE_VISIBILITY
void __construct_forward_with_exception_guarantees(_Alloc& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __begin2) {
    static_assert(__is_cpp17_move_insertable<_Alloc>::value,
        "The specified type does not meet the requirements of Cpp17MoveInsertable");
    typedef allocator_traits<_Alloc> _Traits;
    for (; __begin1 != __end1; ++__begin1, (void)++__begin2) {
        _Traits::construct(__a, _VSTD::__to_address(__begin2),
#ifdef _LIBCPP_NO_EXCEPTIONS
            _VSTD::move(*__begin1)
#else
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
            _VSTD::move_if_noexcept(*__begin1)
#endif
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
        );
    }
}

template <class _Alloc, class _Tp, typename enable_if<
    (__is_default_allocator<_Alloc>::value || !__has_construct<_Alloc, _Tp*, _Tp>::value) &&
    is_trivially_move_constructible<_Tp>::value
>::type>
_LIBCPP_INLINE_VISIBILITY
void __construct_forward_with_exception_guarantees(_Alloc&, _Tp* __begin1, _Tp* __end1, _Tp*& __begin2) {
    ptrdiff_t _Np = __end1 - __begin1;
    if (_Np > 0) {
        _VSTD::memcpy(__begin2, __begin1, _Np * sizeof(_Tp));
        __begin2 += _Np;
    }
}

template <class _Alloc, class _Iter, class _Ptr>
_LIBCPP_INLINE_VISIBILITY
void __construct_range_forward(_Alloc& __a, _Iter __begin1, _Iter __end1, _Ptr& __begin2) {
    typedef allocator_traits<_Alloc> _Traits;
    for (; __begin1 != __end1; ++__begin1, (void) ++__begin2) {
        _Traits::construct(__a, _VSTD::__to_address(__begin2), *__begin1);
    }
}

template <class _Alloc, class _Source, class _Dest,
          class _RawSource = typename remove_const<_Source>::type,
          class _RawDest = typename remove_const<_Dest>::type,
          class =
    typename enable_if<
        is_trivially_copy_constructible<_Dest>::value &&
        is_same<_RawSource, _RawDest>::value &&
        (__is_default_allocator<_Alloc>::value || !__has_construct<_Alloc, _Dest*, _Source&>::value)
    >::type>
_LIBCPP_INLINE_VISIBILITY
void __construct_range_forward(_Alloc&, _Source* __begin1, _Source* __end1, _Dest*& __begin2) {
    ptrdiff_t _Np = __end1 - __begin1;
    if (_Np > 0) {
        _VSTD::memcpy(const_cast<_RawDest*>(__begin2), __begin1, _Np * sizeof(_Dest));
        __begin2 += _Np;
    }
}

template <class _Alloc, class _Ptr>
_LIBCPP_INLINE_VISIBILITY
void __construct_backward_with_exception_guarantees(_Alloc& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __end2) {
    static_assert(__is_cpp17_move_insertable<_Alloc>::value,
        "The specified type does not meet the requirements of Cpp17MoveInsertable");
    typedef allocator_traits<_Alloc> _Traits;
    while (__end1 != __begin1) {
        _Traits::construct(__a, _VSTD::__to_address(__end2 - 1),
#ifdef _LIBCPP_NO_EXCEPTIONS
            _VSTD::move(*--__end1)
#else
# 783 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
            _VSTD::move_if_noexcept(*--__end1)
#endif
# 785 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
        );
        --__end2;
    }
}

template <class _Alloc, class _Tp, class = typename enable_if<
    (__is_default_allocator<_Alloc>::value || !__has_construct<_Alloc, _Tp*, _Tp>::value) &&
    is_trivially_move_constructible<_Tp>::value
>::type>
_LIBCPP_INLINE_VISIBILITY
void __construct_backward_with_exception_guarantees(_Alloc&, _Tp* __begin1, _Tp* __end1, _Tp*& __end2) {
    ptrdiff_t _Np = __end1 - __begin1;
    __end2 -= _Np;
    if (_Np > 0)
        _VSTD::memcpy(static_cast<void*>(__end2), static_cast<void const*>(__begin1), _Np * sizeof(_Tp));
}

struct __destruct_n
{
private:
    size_t __size_;

    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void __process(_Tp* __p, false_type) _NOEXCEPT
        {for (size_t __i = 0; __i < __size_; ++__i, ++__p) __p->~_Tp();}

    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void __process(_Tp*, true_type) _NOEXCEPT
        {}

    _LIBCPP_INLINE_VISIBILITY void __incr(false_type) _NOEXCEPT
        {++__size_;}
    _LIBCPP_INLINE_VISIBILITY void __incr(true_type) _NOEXCEPT
        {}

    _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, false_type) _NOEXCEPT
        {__size_ = __s;}
    _LIBCPP_INLINE_VISIBILITY void __set(size_t, true_type) _NOEXCEPT
        {}
public:
    _LIBCPP_INLINE_VISIBILITY explicit __destruct_n(size_t __s) _NOEXCEPT
        : __size_(__s) {}

    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void __incr() _NOEXCEPT
        {__incr(integral_constant<bool, is_trivially_destructible<_Tp>::value>());}

    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void __set(size_t __s, _Tp*) _NOEXCEPT
        {__set(__s, integral_constant<bool, is_trivially_destructible<_Tp>::value>());}

    template <class _Tp>
    _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __p) _NOEXCEPT
        {__process(__p, integral_constant<bool, is_trivially_destructible<_Tp>::value>());}
};

_LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space);

// --- Helper for container swap --
template <typename _Alloc>
_LIBCPP_INLINE_VISIBILITY
void __swap_allocator(_Alloc & __a1, _Alloc & __a2, true_type)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 848 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
    _NOEXCEPT
#else
# 850 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
    _NOEXCEPT_(__is_nothrow_swappable<_Alloc>::value)
#endif
# 852 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
{
    using _VSTD::swap;
    swap(__a1, __a2);
}

template <typename _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
void __swap_allocator(_Alloc &, _Alloc &, false_type) _NOEXCEPT {}

template <typename _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
void __swap_allocator(_Alloc & __a1, _Alloc & __a2)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 865 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
    _NOEXCEPT
#else
# 867 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
    _NOEXCEPT_(__is_nothrow_swappable<_Alloc>::value)
#endif
# 869 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
{
    _VSTD::__swap_allocator(__a1, __a2,
      integral_constant<bool, allocator_traits<_Alloc>::propagate_on_container_swap::value>());
}

template <typename _Alloc, typename _Traits=allocator_traits<_Alloc> >
struct __noexcept_move_assign_container : public integral_constant<bool,
    _Traits::propagate_on_container_move_assignment::value
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 878 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
        || _Traits::is_always_equal::value
#else
# 880 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
        && is_nothrow_move_assignable<_Alloc>::value
#endif
# 882 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
    > {};


template <class _Tp, class _Alloc>
struct __temp_value {
    typedef allocator_traits<_Alloc> _Traits;

    typename aligned_storage<sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)>::type __v;
    _Alloc &__a;

    _Tp *__addr() { return reinterpret_cast<_Tp *>(addressof(__v)); }
    _Tp &   get() { return *__addr(); }

    template<class... _Args>
    _LIBCPP_NO_CFI
    __temp_value(_Alloc &__alloc, _Args&& ... __args) : __a(__alloc) {
      _Traits::construct(__a, reinterpret_cast<_Tp*>(addressof(__v)),
                         _VSTD::forward<_Args>(__args)...);
    }

    ~__temp_value() { _Traits::destroy(__a, __addr()); }
    };

template<typename _Alloc, typename = void, typename = void>
struct __is_allocator : false_type {};

template<typename _Alloc>
struct __is_allocator<_Alloc,
       typename __void_t<typename _Alloc::value_type>::type,
       typename __void_t<decltype(declval<_Alloc&>().allocate(size_t(0)))>::type
     >
   : true_type {};

// __builtin_new_allocator -- A non-templated helper for allocating and
// deallocating memory using __builtin_operator_new and
// __builtin_operator_delete. It should be used in preference to
// `std::allocator<T>` to avoid additional instantiations.
struct __builtin_new_allocator {
  struct __builtin_new_deleter {
    typedef void* pointer_type;

    _LIBCPP_CONSTEXPR explicit __builtin_new_deleter(size_t __size, size_t __align)
        : __size_(__size), __align_(__align) {}

    void operator()(void* p) const _NOEXCEPT {
        _VSTD::__libcpp_deallocate(p, __size_, __align_);
    }

   private:
    size_t __size_;
    size_t __align_;
  };

  typedef unique_ptr<void, __builtin_new_deleter> __holder_t;

  static __holder_t __allocate_bytes(size_t __s, size_t __align) {
      return __holder_t(_VSTD::__libcpp_allocate(__s, __align),
                     __builtin_new_deleter(__s, __align));
  }

  static void __deallocate_bytes(void* __p, size_t __s,
                                 size_t __align) _NOEXCEPT {
      _VSTD::__libcpp_deallocate(__p, __s, __align);
  }

  template <class _Tp>
  _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE
  static __holder_t __allocate_type(size_t __n) {
      return __allocate_bytes(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));
  }

  template <class _Tp>
  _LIBCPP_NODEBUG _LIBCPP_ALWAYS_INLINE
  static void __deallocate_type(void* __p, size_t __n) _NOEXCEPT {
      __deallocate_bytes(__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp));
  }
};


_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 966 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#if 0 /* expanded by -frewrite-includes */
#   include <__pstl_memory>
#endif /* expanded by -frewrite-includes */
# 966 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 967 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
#endif
# 968 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3

#endif // _LIBCPP_MEMORY
# 970 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/memory" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#endif
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

// bad_function_call

class _LIBCPP_EXCEPTION_ABI bad_function_call
    : public exception
{
#ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION
public:
    virtual ~bad_function_call() _NOEXCEPT;

    virtual const char* what() const _NOEXCEPT;
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_bad_function_call()
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw bad_function_call();
#else
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
    _VSTD::abort();
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) && __has_attribute(deprecated)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#   define _LIBCPP_DEPRECATED_CXX03_FUNCTION \
        __attribute__((deprecated("Using std::function in C++03 is not supported anymore. Please upgrade to C++11 or later, or use a different type")))
#else
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
#   define _LIBCPP_DEPRECATED_CXX03_FUNCTION /* nothing */
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Fp> class _LIBCPP_DEPRECATED_CXX03_FUNCTION _LIBCPP_TEMPLATE_VIS function; // undefined

namespace __function
{

template<class _Rp>
struct __maybe_derive_from_unary_function
{
};

template<class _Rp, class _A1>
struct __maybe_derive_from_unary_function<_Rp(_A1)>
    : public unary_function<_A1, _Rp>
{
};

template<class _Rp>
struct __maybe_derive_from_binary_function
{
};

template<class _Rp, class _A1, class _A2>
struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)>
    : public binary_function<_A1, _A2, _Rp>
{
};

template <class _Fp>
_LIBCPP_INLINE_VISIBILITY
bool __not_null(_Fp const&) { return true; }

template <class _Fp>
_LIBCPP_INLINE_VISIBILITY
bool __not_null(_Fp* __ptr) { return __ptr; }

template <class _Ret, class _Class>
_LIBCPP_INLINE_VISIBILITY
bool __not_null(_Ret _Class::*__ptr) { return __ptr; }

template <class _Fp>
_LIBCPP_INLINE_VISIBILITY
bool __not_null(function<_Fp> const& __f) { return !!__f; }

#ifdef _LIBCPP_HAS_EXTENSION_BLOCKS
template <class _Rp, class ..._Args>
_LIBCPP_INLINE_VISIBILITY
bool __not_null(_Rp (^__p)(_Args...)) { return __p; }
#endif
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

} // namespace __function

#ifndef _LIBCPP_CXX03_LANG

namespace __function {

// __alloc_func holds a functor and an allocator.

template <class _Fp, class _Ap, class _FB> class __alloc_func;
template <class _Fp, class _FB>
class __default_alloc_func;

template <class _Fp, class _Ap, class _Rp, class... _ArgTypes>
class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)>
{
    __compressed_pair<_Fp, _Ap> __f_;

  public:
    typedef _LIBCPP_NODEBUG_TYPE _Fp _Target;
    typedef _LIBCPP_NODEBUG_TYPE _Ap _Alloc;

    _LIBCPP_INLINE_VISIBILITY
    const _Target& __target() const { return __f_.first(); }

    // WIN32 APIs may define __allocator, so use __get_allocator instead.
    _LIBCPP_INLINE_VISIBILITY
    const _Alloc& __get_allocator() const { return __f_.second(); }

    _LIBCPP_INLINE_VISIBILITY
    explicit __alloc_func(_Target&& __f)
        : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
               _VSTD::forward_as_tuple())
    {
    }

    _LIBCPP_INLINE_VISIBILITY
    explicit __alloc_func(const _Target& __f, const _Alloc& __a)
        : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
               _VSTD::forward_as_tuple(__a))
    {
    }

    _LIBCPP_INLINE_VISIBILITY
    explicit __alloc_func(const _Target& __f, _Alloc&& __a)
        : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
               _VSTD::forward_as_tuple(_VSTD::move(__a)))
    {
    }

    _LIBCPP_INLINE_VISIBILITY
    explicit __alloc_func(_Target&& __f, _Alloc&& __a)
        : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
               _VSTD::forward_as_tuple(_VSTD::move(__a)))
    {
    }

    _LIBCPP_INLINE_VISIBILITY
    _Rp operator()(_ArgTypes&&... __arg)
    {
        typedef __invoke_void_return_wrapper<_Rp> _Invoker;
        return _Invoker::__call(__f_.first(),
                                _VSTD::forward<_ArgTypes>(__arg)...);
    }

    _LIBCPP_INLINE_VISIBILITY
    __alloc_func* __clone() const
    {
        typedef allocator_traits<_Alloc> __alloc_traits;
        typedef
            typename __rebind_alloc_helper<__alloc_traits, __alloc_func>::type
                _AA;
        _AA __a(__f_.second());
        typedef __allocator_destructor<_AA> _Dp;
        unique_ptr<__alloc_func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
        ::new ((void*)__hold.get()) __alloc_func(__f_.first(), _Alloc(__a));
        return __hold.release();
    }

    _LIBCPP_INLINE_VISIBILITY
    void destroy() _NOEXCEPT { __f_.~__compressed_pair<_Target, _Alloc>(); }

    static void __destroy_and_delete(__alloc_func* __f) {
      typedef allocator_traits<_Alloc> __alloc_traits;
      typedef typename __rebind_alloc_helper<__alloc_traits, __alloc_func>::type
          _FunAlloc;
      _FunAlloc __a(__f->__get_allocator());
      __f->destroy();
      __a.deallocate(__f, 1);
    }
};

template <class _Fp, class _Rp, class... _ArgTypes>
class __default_alloc_func<_Fp, _Rp(_ArgTypes...)> {
  _Fp __f_;

public:
  typedef _LIBCPP_NODEBUG_TYPE _Fp _Target;

  _LIBCPP_INLINE_VISIBILITY
  const _Target& __target() const { return __f_; }

  _LIBCPP_INLINE_VISIBILITY
  explicit __default_alloc_func(_Target&& __f) : __f_(_VSTD::move(__f)) {}

  _LIBCPP_INLINE_VISIBILITY
  explicit __default_alloc_func(const _Target& __f) : __f_(__f) {}

  _LIBCPP_INLINE_VISIBILITY
  _Rp operator()(_ArgTypes&&... __arg) {
    typedef __invoke_void_return_wrapper<_Rp> _Invoker;
    return _Invoker::__call(__f_, _VSTD::forward<_ArgTypes>(__arg)...);
  }

  _LIBCPP_INLINE_VISIBILITY
  __default_alloc_func* __clone() const {
      __builtin_new_allocator::__holder_t __hold =
        __builtin_new_allocator::__allocate_type<__default_alloc_func>(1);
    __default_alloc_func* __res =
        ::new ((void*)__hold.get()) __default_alloc_func(__f_);
    (void)__hold.release();
    return __res;
  }

  _LIBCPP_INLINE_VISIBILITY
  void destroy() _NOEXCEPT { __f_.~_Target(); }

  static void __destroy_and_delete(__default_alloc_func* __f) {
    __f->destroy();
      __builtin_new_allocator::__deallocate_type<__default_alloc_func>(__f, 1);
  }
};

// __base provides an abstract interface for copyable functors.

template<class _Fp> class _LIBCPP_TEMPLATE_VIS __base;

template<class _Rp, class ..._ArgTypes>
class __base<_Rp(_ArgTypes...)>
{
    __base(const __base&);
    __base& operator=(const __base&);
public:
    _LIBCPP_INLINE_VISIBILITY __base() {}
    _LIBCPP_INLINE_VISIBILITY virtual ~__base() {}
    virtual __base* __clone() const = 0;
    virtual void __clone(__base*) const = 0;
    virtual void destroy() _NOEXCEPT = 0;
    virtual void destroy_deallocate() _NOEXCEPT = 0;
    virtual _Rp operator()(_ArgTypes&& ...) = 0;
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const _NOEXCEPT = 0;
    virtual const std::type_info& target_type() const _NOEXCEPT = 0;
#endif // _LIBCPP_NO_RTTI
# 264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

// __func implements __base for a given functor type.

template<class _FD, class _Alloc, class _FB> class __func;

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
class __func<_Fp, _Alloc, _Rp(_ArgTypes...)>
    : public  __base<_Rp(_ArgTypes...)>
{
    __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> __f_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __func(_Fp&& __f)
        : __f_(_VSTD::move(__f)) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit __func(const _Fp& __f, const _Alloc& __a)
        : __f_(__f, __a) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit __func(const _Fp& __f, _Alloc&& __a)
        : __f_(__f, _VSTD::move(__a)) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit __func(_Fp&& __f, _Alloc&& __a)
        : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}

    virtual __base<_Rp(_ArgTypes...)>* __clone() const;
    virtual void __clone(__base<_Rp(_ArgTypes...)>*) const;
    virtual void destroy() _NOEXCEPT;
    virtual void destroy_deallocate() _NOEXCEPT;
    virtual _Rp operator()(_ArgTypes&&... __arg);
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const _NOEXCEPT;
    virtual const std::type_info& target_type() const _NOEXCEPT;
#endif // _LIBCPP_NO_RTTI
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
__base<_Rp(_ArgTypes...)>*
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.__get_allocator());
    typedef __allocator_destructor<_Ap> _Dp;
    unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
    ::new ((void*)__hold.get()) __func(__f_.__target(), _Alloc(__a));
    return __hold.release();
}

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
void
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const
{
    ::new ((void*)__p) __func(__f_.__target(), __f_.__get_allocator());
}

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
void
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT
{
    __f_.destroy();
}

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
void
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.__get_allocator());
    __f_.destroy();
    __a.deallocate(this, 1);
}

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
_Rp
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg)
{
    return __f_(_VSTD::forward<_ArgTypes>(__arg)...);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
const void*
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT
{
    if (__ti == typeid(_Fp))
        return &__f_.__target();
    return nullptr;
}

template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
const std::type_info&
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT
{
    return typeid(_Fp);
}

#endif // _LIBCPP_NO_RTTI
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

// __value_func creates a value-type from a __func.

template <class _Fp> class __value_func;

template <class _Rp, class... _ArgTypes> class __value_func<_Rp(_ArgTypes...)>
{
    typename aligned_storage<3 * sizeof(void*)>::type __buf_;

    typedef __base<_Rp(_ArgTypes...)> __func;
    __func* __f_;

    _LIBCPP_NO_CFI static __func* __as_base(void* p)
    {
        return reinterpret_cast<__func*>(p);
    }

  public:
    _LIBCPP_INLINE_VISIBILITY
    __value_func() _NOEXCEPT : __f_(nullptr) {}

    template <class _Fp, class _Alloc>
    _LIBCPP_INLINE_VISIBILITY __value_func(_Fp&& __f, const _Alloc& __a)
        : __f_(nullptr)
    {
        typedef allocator_traits<_Alloc> __alloc_traits;
        typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun;
        typedef typename __rebind_alloc_helper<__alloc_traits, _Fun>::type
            _FunAlloc;

        if (__function::__not_null(__f))
        {
            _FunAlloc __af(__a);
            if (sizeof(_Fun) <= sizeof(__buf_) &&
                is_nothrow_copy_constructible<_Fp>::value &&
                is_nothrow_copy_constructible<_FunAlloc>::value)
            {
                __f_ =
                    ::new ((void*)&__buf_) _Fun(_VSTD::move(__f), _Alloc(__af));
            }
            else
            {
                typedef __allocator_destructor<_FunAlloc> _Dp;
                unique_ptr<__func, _Dp> __hold(__af.allocate(1), _Dp(__af, 1));
                ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f), _Alloc(__a));
                __f_ = __hold.release();
            }
        }
    }

    template <class _Fp,
        class = typename enable_if<!is_same<typename decay<_Fp>::type, __value_func>::value>::type>
    _LIBCPP_INLINE_VISIBILITY explicit __value_func(_Fp&& __f)
        : __value_func(_VSTD::forward<_Fp>(__f), allocator<_Fp>()) {}

    _LIBCPP_INLINE_VISIBILITY
    __value_func(const __value_func& __f)
    {
        if (__f.__f_ == nullptr)
            __f_ = nullptr;
        else if ((void*)__f.__f_ == &__f.__buf_)
        {
            __f_ = __as_base(&__buf_);
            __f.__f_->__clone(__f_);
        }
        else
            __f_ = __f.__f_->__clone();
    }

    _LIBCPP_INLINE_VISIBILITY
    __value_func(__value_func&& __f) _NOEXCEPT
    {
        if (__f.__f_ == nullptr)
            __f_ = nullptr;
        else if ((void*)__f.__f_ == &__f.__buf_)
        {
            __f_ = __as_base(&__buf_);
            __f.__f_->__clone(__f_);
        }
        else
        {
            __f_ = __f.__f_;
            __f.__f_ = nullptr;
        }
    }

    _LIBCPP_INLINE_VISIBILITY
    ~__value_func()
    {
        if ((void*)__f_ == &__buf_)
            __f_->destroy();
        else if (__f_)
            __f_->destroy_deallocate();
    }

    _LIBCPP_INLINE_VISIBILITY
    __value_func& operator=(__value_func&& __f)
    {
        *this = nullptr;
        if (__f.__f_ == nullptr)
            __f_ = nullptr;
        else if ((void*)__f.__f_ == &__f.__buf_)
        {
            __f_ = __as_base(&__buf_);
            __f.__f_->__clone(__f_);
        }
        else
        {
            __f_ = __f.__f_;
            __f.__f_ = nullptr;
        }
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __value_func& operator=(nullptr_t)
    {
        __func* __f = __f_;
        __f_ = nullptr;
        if ((void*)__f == &__buf_)
            __f->destroy();
        else if (__f)
            __f->destroy_deallocate();
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    _Rp operator()(_ArgTypes&&... __args) const
    {
        if (__f_ == nullptr)
            __throw_bad_function_call();
        return (*__f_)(_VSTD::forward<_ArgTypes>(__args)...);
    }

    _LIBCPP_INLINE_VISIBILITY
    void swap(__value_func& __f) _NOEXCEPT
    {
        if (&__f == this)
            return;
        if ((void*)__f_ == &__buf_ && (void*)__f.__f_ == &__f.__buf_)
        {
            typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
            __func* __t = __as_base(&__tempbuf);
            __f_->__clone(__t);
            __f_->destroy();
            __f_ = nullptr;
            __f.__f_->__clone(__as_base(&__buf_));
            __f.__f_->destroy();
            __f.__f_ = nullptr;
            __f_ = __as_base(&__buf_);
            __t->__clone(__as_base(&__f.__buf_));
            __t->destroy();
            __f.__f_ = __as_base(&__f.__buf_);
        }
        else if ((void*)__f_ == &__buf_)
        {
            __f_->__clone(__as_base(&__f.__buf_));
            __f_->destroy();
            __f_ = __f.__f_;
            __f.__f_ = __as_base(&__f.__buf_);
        }
        else if ((void*)__f.__f_ == &__f.__buf_)
        {
            __f.__f_->__clone(__as_base(&__buf_));
            __f.__f_->destroy();
            __f.__f_ = __f_;
            __f_ = __as_base(&__buf_);
        }
        else
            _VSTD::swap(__f_, __f.__f_);
    }

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT { return __f_ != nullptr; }

#ifndef _LIBCPP_NO_RTTI
    _LIBCPP_INLINE_VISIBILITY
    const std::type_info& target_type() const _NOEXCEPT
    {
        if (__f_ == nullptr)
            return typeid(void);
        return __f_->target_type();
    }

    template <typename _Tp>
    _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT
    {
        if (__f_ == nullptr)
            return nullptr;
        return (const _Tp*)__f_->target(typeid(_Tp));
    }
#endif // _LIBCPP_NO_RTTI
# 559 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

// Storage for a functor object, to be used with __policy to manage copy and
// destruction.
union __policy_storage
{
    mutable char __small[sizeof(void*) * 2];
    void* __large;
};

// True if _Fun can safely be held in __policy_storage.__small.
template <typename _Fun>
struct __use_small_storage
    : public integral_constant<
          bool, sizeof(_Fun) <= sizeof(__policy_storage) &&
                    _LIBCPP_ALIGNOF(_Fun) <= _LIBCPP_ALIGNOF(__policy_storage) &&
                    is_trivially_copy_constructible<_Fun>::value &&
                    is_trivially_destructible<_Fun>::value> {};

// Policy contains information about how to copy, destroy, and move the
// underlying functor. You can think of it as a vtable of sorts.
struct __policy
{
    // Used to copy or destroy __large values. null for trivial objects.
    void* (*const __clone)(const void*);
    void (*const __destroy)(void*);

    // True if this is the null policy (no value).
    const bool __is_null;

    // The target type. May be null if RTTI is disabled.
    const std::type_info* const __type_info;

    // Returns a pointer to a static policy object suitable for the functor
    // type.
    template <typename _Fun>
    _LIBCPP_INLINE_VISIBILITY static const __policy* __create()
    {
        return __choose_policy<_Fun>(__use_small_storage<_Fun>());
    }

    _LIBCPP_INLINE_VISIBILITY
    static const __policy* __create_empty()
    {
        static const _LIBCPP_CONSTEXPR __policy __policy_ = {nullptr, nullptr,
                                                             true,
#ifndef _LIBCPP_NO_RTTI
                                                             &typeid(void)
#else
# 608 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
                                                             nullptr
#endif
# 610 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
        };
        return &__policy_;
    }

  private:
    template <typename _Fun> static void* __large_clone(const void* __s)
    {
        const _Fun* __f = static_cast<const _Fun*>(__s);
        return __f->__clone();
    }

    template <typename _Fun>
    static void __large_destroy(void* __s) {
      _Fun::__destroy_and_delete(static_cast<_Fun*>(__s));
    }

    template <typename _Fun>
    _LIBCPP_INLINE_VISIBILITY static const __policy*
    __choose_policy(/* is_small = */ false_type) {
      static const _LIBCPP_CONSTEXPR __policy __policy_ = {
          &__large_clone<_Fun>, &__large_destroy<_Fun>, false,
#ifndef _LIBCPP_NO_RTTI
          &typeid(typename _Fun::_Target)
#else
# 634 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
          nullptr
#endif
# 636 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
      };
        return &__policy_;
    }

    template <typename _Fun>
    _LIBCPP_INLINE_VISIBILITY static const __policy*
        __choose_policy(/* is_small = */ true_type)
    {
        static const _LIBCPP_CONSTEXPR __policy __policy_ = {
            nullptr, nullptr, false,
#ifndef _LIBCPP_NO_RTTI
            &typeid(typename _Fun::_Target)
#else
# 649 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
            nullptr
#endif
# 651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
        };
        return &__policy_;
    }
};

// Used to choose between perfect forwarding or pass-by-value. Pass-by-value is
// faster for types that can be passed in registers.
template <typename _Tp>
using __fast_forward =
    typename conditional<is_scalar<_Tp>::value, _Tp, _Tp&&>::type;

// __policy_invoker calls an instance of __alloc_func held in __policy_storage.

template <class _Fp> struct __policy_invoker;

template <class _Rp, class... _ArgTypes>
struct __policy_invoker<_Rp(_ArgTypes...)>
{
    typedef _Rp (*__Call)(const __policy_storage*,
                          __fast_forward<_ArgTypes>...);

    __Call __call_;

    // Creates an invoker that throws bad_function_call.
    _LIBCPP_INLINE_VISIBILITY
    __policy_invoker() : __call_(&__call_empty) {}

    // Creates an invoker that calls the given instance of __func.
    template <typename _Fun>
    _LIBCPP_INLINE_VISIBILITY static __policy_invoker __create()
    {
        return __policy_invoker(&__call_impl<_Fun>);
    }

  private:
    _LIBCPP_INLINE_VISIBILITY
    explicit __policy_invoker(__Call __c) : __call_(__c) {}

    static _Rp __call_empty(const __policy_storage*,
                            __fast_forward<_ArgTypes>...)
    {
        __throw_bad_function_call();
    }

    template <typename _Fun>
    static _Rp __call_impl(const __policy_storage* __buf,
                           __fast_forward<_ArgTypes>... __args)
    {
        _Fun* __f = reinterpret_cast<_Fun*>(__use_small_storage<_Fun>::value
                                                ? &__buf->__small
                                                : __buf->__large);
        return (*__f)(_VSTD::forward<_ArgTypes>(__args)...);
    }
};

// __policy_func uses a __policy and __policy_invoker to create a type-erased,
// copyable functor.

template <class _Fp> class __policy_func;

template <class _Rp, class... _ArgTypes> class __policy_func<_Rp(_ArgTypes...)>
{
    // Inline storage for small objects.
    __policy_storage __buf_;

    // Calls the value stored in __buf_. This could technically be part of
    // policy, but storing it here eliminates a level of indirection inside
    // operator().
    typedef __function::__policy_invoker<_Rp(_ArgTypes...)> __invoker;
    __invoker __invoker_;

    // The policy that describes how to move / copy / destroy __buf_. Never
    // null, even if the function is empty.
    const __policy* __policy_;

  public:
    _LIBCPP_INLINE_VISIBILITY
    __policy_func() : __policy_(__policy::__create_empty()) {}

    template <class _Fp, class _Alloc>
    _LIBCPP_INLINE_VISIBILITY __policy_func(_Fp&& __f, const _Alloc& __a)
        : __policy_(__policy::__create_empty())
    {
        typedef __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun;
        typedef allocator_traits<_Alloc> __alloc_traits;
        typedef typename __rebind_alloc_helper<__alloc_traits, _Fun>::type
            _FunAlloc;

        if (__function::__not_null(__f))
        {
            __invoker_ = __invoker::template __create<_Fun>();
            __policy_ = __policy::__create<_Fun>();

            _FunAlloc __af(__a);
            if (__use_small_storage<_Fun>())
            {
                ::new ((void*)&__buf_.__small)
                    _Fun(_VSTD::move(__f), _Alloc(__af));
            }
            else
            {
                typedef __allocator_destructor<_FunAlloc> _Dp;
                unique_ptr<_Fun, _Dp> __hold(__af.allocate(1), _Dp(__af, 1));
                ::new ((void*)__hold.get())
                    _Fun(_VSTD::move(__f), _Alloc(__af));
                __buf_.__large = __hold.release();
            }
        }
    }

    template <class _Fp, class = typename enable_if<!is_same<typename decay<_Fp>::type, __policy_func>::value>::type>
    _LIBCPP_INLINE_VISIBILITY explicit __policy_func(_Fp&& __f)
        : __policy_(__policy::__create_empty()) {
      typedef __default_alloc_func<_Fp, _Rp(_ArgTypes...)> _Fun;

      if (__function::__not_null(__f)) {
        __invoker_ = __invoker::template __create<_Fun>();
        __policy_ = __policy::__create<_Fun>();
        if (__use_small_storage<_Fun>()) {
          ::new ((void*)&__buf_.__small) _Fun(_VSTD::move(__f));
        } else {
          __builtin_new_allocator::__holder_t __hold =
              __builtin_new_allocator::__allocate_type<_Fun>(1);
          __buf_.__large = ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f));
          (void)__hold.release();
        }
      }
    }

    _LIBCPP_INLINE_VISIBILITY
    __policy_func(const __policy_func& __f)
        : __buf_(__f.__buf_), __invoker_(__f.__invoker_),
          __policy_(__f.__policy_)
    {
        if (__policy_->__clone)
            __buf_.__large = __policy_->__clone(__f.__buf_.__large);
    }

    _LIBCPP_INLINE_VISIBILITY
    __policy_func(__policy_func&& __f)
        : __buf_(__f.__buf_), __invoker_(__f.__invoker_),
          __policy_(__f.__policy_)
    {
        if (__policy_->__destroy)
        {
            __f.__policy_ = __policy::__create_empty();
            __f.__invoker_ = __invoker();
        }
    }

    _LIBCPP_INLINE_VISIBILITY
    ~__policy_func()
    {
        if (__policy_->__destroy)
            __policy_->__destroy(__buf_.__large);
    }

    _LIBCPP_INLINE_VISIBILITY
    __policy_func& operator=(__policy_func&& __f)
    {
        *this = nullptr;
        __buf_ = __f.__buf_;
        __invoker_ = __f.__invoker_;
        __policy_ = __f.__policy_;
        __f.__policy_ = __policy::__create_empty();
        __f.__invoker_ = __invoker();
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __policy_func& operator=(nullptr_t)
    {
        const __policy* __p = __policy_;
        __policy_ = __policy::__create_empty();
        __invoker_ = __invoker();
        if (__p->__destroy)
            __p->__destroy(__buf_.__large);
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    _Rp operator()(_ArgTypes&&... __args) const
    {
        return __invoker_.__call_(_VSTD::addressof(__buf_),
                                  _VSTD::forward<_ArgTypes>(__args)...);
    }

    _LIBCPP_INLINE_VISIBILITY
    void swap(__policy_func& __f)
    {
        _VSTD::swap(__invoker_, __f.__invoker_);
        _VSTD::swap(__policy_, __f.__policy_);
        _VSTD::swap(__buf_, __f.__buf_);
    }

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT
    {
        return !__policy_->__is_null;
    }

#ifndef _LIBCPP_NO_RTTI
    _LIBCPP_INLINE_VISIBILITY
    const std::type_info& target_type() const _NOEXCEPT
    {
        return *__policy_->__type_info;
    }

    template <typename _Tp>
    _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT
    {
        if (__policy_->__is_null || typeid(_Tp) != *__policy_->__type_info)
            return nullptr;
        if (__policy_->__clone) // Out of line storage.
            return reinterpret_cast<const _Tp*>(__buf_.__large);
        else
            return reinterpret_cast<const _Tp*>(&__buf_.__small);
    }
#endif // _LIBCPP_NO_RTTI
# 870 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) && !defined(_LIBCPP_HAS_OBJC_ARC)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 873 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

extern "C" void *_Block_copy(const void *);
extern "C" void _Block_release(const void *);

template<class _Rp1, class ..._ArgTypes1, class _Alloc, class _Rp, class ..._ArgTypes>
class __func<_Rp1(^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)>
    : public  __base<_Rp(_ArgTypes...)>
{
    typedef _Rp1(^__block_type)(_ArgTypes1...);
    __block_type __f_;

public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __func(__block_type const& __f)
        : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr))
    { }

    // [TODO] add && to save on a retain

    _LIBCPP_INLINE_VISIBILITY
    explicit __func(__block_type __f, const _Alloc& /* unused */)
        : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr))
    { }

    virtual __base<_Rp(_ArgTypes...)>* __clone() const {
        _LIBCPP_ASSERT(false,
            "Block pointers are just pointers, so they should always fit into "
            "std::function's small buffer optimization. This function should "
            "never be invoked.");
        return nullptr;
    }

    virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const {
        ::new ((void*)__p) __func(__f_);
    }

    virtual void destroy() _NOEXCEPT {
        if (__f_)
            _Block_release(__f_);
        __f_ = 0;
    }

    virtual void destroy_deallocate() _NOEXCEPT {
        _LIBCPP_ASSERT(false,
            "Block pointers are just pointers, so they should always fit into "
            "std::function's small buffer optimization. This function should "
            "never be invoked.");
    }

    virtual _Rp operator()(_ArgTypes&& ... __arg) {
        return _VSTD::__invoke(__f_, _VSTD::forward<_ArgTypes>(__arg)...);
    }

#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(type_info const& __ti) const _NOEXCEPT {
        if (__ti == typeid(__func::__block_type))
            return &__f_;
        return (const void*)nullptr;
    }

    virtual const std::type_info& target_type() const _NOEXCEPT {
        return typeid(__func::__block_type);
    }
#endif // _LIBCPP_NO_RTTI
# 937 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

#endif // _LIBCPP_HAS_EXTENSION_BLOCKS && !_LIBCPP_HAS_OBJC_ARC
# 940 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

}  // __function

template<class _Rp, class ..._ArgTypes>
class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 946 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
    : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>,
      public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)>
#endif
# 949 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
{
#ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION
    typedef __function::__value_func<_Rp(_ArgTypes...)> __func;
#else
# 953 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
    typedef __function::__policy_func<_Rp(_ArgTypes...)> __func;
#endif
# 955 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

    __func __f_;

    template <class _Fp, bool = _And<
        _IsNotSame<__uncvref_t<_Fp>, function>,
        __invokable<_Fp, _ArgTypes...>
    >::value>
    struct __callable;
    template <class _Fp>
        struct __callable<_Fp, true>
        {
            static const bool value = is_void<_Rp>::value ||
                __is_core_convertible<typename __invoke_of<_Fp, _ArgTypes...>::type,
                                      _Rp>::value;
        };
    template <class _Fp>
        struct __callable<_Fp, false>
        {
            static const bool value = false;
        };

  template <class _Fp>
  using _EnableIfLValueCallable = typename enable_if<__callable<_Fp&>::value>::type;
public:
    typedef _Rp result_type;

    // construct/copy/destroy:
    _LIBCPP_INLINE_VISIBILITY
    function() _NOEXCEPT { }
    _LIBCPP_INLINE_VISIBILITY
    function(nullptr_t) _NOEXCEPT {}
    function(const function&);
    function(function&&) _NOEXCEPT;
    template<class _Fp, class = _EnableIfLValueCallable<_Fp>>
    function(_Fp);

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 992 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT {}
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, const function&);
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, function&&);
    template<class _Fp, class _Alloc, class = _EnableIfLValueCallable<_Fp>>
      function(allocator_arg_t, const _Alloc& __a, _Fp __f);
#endif
# 1005 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

    function& operator=(const function&);
    function& operator=(function&&) _NOEXCEPT;
    function& operator=(nullptr_t) _NOEXCEPT;
    template<class _Fp, class = _EnableIfLValueCallable<typename decay<_Fp>::type>>
    function& operator=(_Fp&&);

    ~function();

    // function modifiers:
    void swap(function&) _NOEXCEPT;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1018 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
    template<class _Fp, class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      void assign(_Fp&& __f, const _Alloc& __a)
        {function(allocator_arg, __a, _VSTD::forward<_Fp>(__f)).swap(*this);}
#endif
# 1023 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

    // function capacity:
    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT {
      return static_cast<bool>(__f_);
    }

    // deleted overloads close possible hole in the type system
    template<class _R2, class... _ArgTypes2>
      bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete;
    template<class _R2, class... _ArgTypes2>
      bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete;
public:
    // function invocation:
    _Rp operator()(_ArgTypes...) const;

#ifndef _LIBCPP_NO_RTTI
    // function target access:
    const std::type_info& target_type() const _NOEXCEPT;
    template <typename _Tp> _Tp* target() _NOEXCEPT;
    template <typename _Tp> const _Tp* target() const _NOEXCEPT;
#endif // _LIBCPP_NO_RTTI
# 1045 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _Rp, class ..._Ap>
function(_Rp(*)(_Ap...)) -> function<_Rp(_Ap...)>;

template<class _Fp>
struct __strip_signature;

template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...)> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) volatile> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const volatile> { using type = _Rp(_Ap...); };

template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) &> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const &> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) volatile &> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const volatile &> { using type = _Rp(_Ap...); };

template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) volatile noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const volatile noexcept> { using type = _Rp(_Ap...); };

template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) & noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const & noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) volatile & noexcept> { using type = _Rp(_Ap...); };
template<class _Rp, class _Gp, class ..._Ap>
struct __strip_signature<_Rp (_Gp::*) (_Ap...) const volatile & noexcept> { using type = _Rp(_Ap...); };

template<class _Fp, class _Stripped = typename __strip_signature<decltype(&_Fp::operator())>::type>
function(_Fp) -> function<_Stripped>;
#endif // !_LIBCPP_HAS_NO_DEDUCTION_GUIDES
# 1093 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>::function(const function& __f) : __f_(__f.__f_) {}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1098 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
template<class _Rp, class ..._ArgTypes>
template <class _Alloc>
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
                                     const function& __f) : __f_(__f.__f_) {}
#endif
# 1103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template <class _Rp, class... _ArgTypes>
function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT
    : __f_(_VSTD::move(__f.__f_)) {}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
template<class _Rp, class ..._ArgTypes>
template <class _Alloc>
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
                                      function&& __f)
    : __f_(_VSTD::move(__f.__f_)) {}
#endif
# 1115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template <class _Rp, class... _ArgTypes>
template <class _Fp, class>
function<_Rp(_ArgTypes...)>::function(_Fp __f) : __f_(_VSTD::move(__f)) {}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
template <class _Rp, class... _ArgTypes>
template <class _Fp, class _Alloc, class>
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a,
                                      _Fp __f)
    : __f_(_VSTD::move(__f), __a) {}
#endif
# 1127 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(const function& __f)
{
    function(__f).swap(*this);
    return *this;
}

template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT
{
    __f_ = _VSTD::move(__f.__f_);
    return *this;
}

template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT
{
    __f_ = nullptr;
    return *this;
}

template<class _Rp, class ..._ArgTypes>
template <class _Fp, class>
function<_Rp(_ArgTypes...)>&
function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f)
{
    function(_VSTD::forward<_Fp>(__f)).swap(*this);
    return *this;
}

template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>::~function() {}

template<class _Rp, class ..._ArgTypes>
void
function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT
{
    __f_.swap(__f.__f_);
}

template<class _Rp, class ..._ArgTypes>
_Rp
function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const
{
    return __f_(_VSTD::forward<_ArgTypes>(__arg)...);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Rp, class ..._ArgTypes>
const std::type_info&
function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT
{
    return __f_.target_type();
}

template<class _Rp, class ..._ArgTypes>
template <typename _Tp>
_Tp*
function<_Rp(_ArgTypes...)>::target() _NOEXCEPT
{
    return (_Tp*)(__f_.template target<_Tp>());
}

template<class _Rp, class ..._ArgTypes>
template <typename _Tp>
const _Tp*
function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT
{
    return __f_.template target<_Tp>();
}

#endif // _LIBCPP_NO_RTTI
# 1204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template <class _Rp, class... _ArgTypes>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return !__f;}

template <class _Rp, class... _ArgTypes>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return !__f;}

template <class _Rp, class... _ArgTypes>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;}

template <class _Rp, class... _ArgTypes>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;}

template <class _Rp, class... _ArgTypes>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT
{return __x.swap(__y);}

#else // _LIBCPP_CXX03_LANG
# 1232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

namespace __function {

template<class _Fp> class __base;

template<class _Rp>
class __base<_Rp()>
{
    __base(const __base&);
    __base& operator=(const __base&);
public:
    __base() {}
    virtual ~__base() {}
    virtual __base* __clone() const = 0;
    virtual void __clone(__base*) const = 0;
    virtual void destroy() = 0;
    virtual void destroy_deallocate() = 0;
    virtual _Rp operator()() = 0;
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const = 0;
    virtual const std::type_info& target_type() const = 0;
#endif // _LIBCPP_NO_RTTI
# 1254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0>
class __base<_Rp(_A0)>
{
    __base(const __base&);
    __base& operator=(const __base&);
public:
    __base() {}
    virtual ~__base() {}
    virtual __base* __clone() const = 0;
    virtual void __clone(__base*) const = 0;
    virtual void destroy() = 0;
    virtual void destroy_deallocate() = 0;
    virtual _Rp operator()(_A0) = 0;
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const = 0;
    virtual const std::type_info& target_type() const = 0;
#endif // _LIBCPP_NO_RTTI
# 1273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0, class _A1>
class __base<_Rp(_A0, _A1)>
{
    __base(const __base&);
    __base& operator=(const __base&);
public:
    __base() {}
    virtual ~__base() {}
    virtual __base* __clone() const = 0;
    virtual void __clone(__base*) const = 0;
    virtual void destroy() = 0;
    virtual void destroy_deallocate() = 0;
    virtual _Rp operator()(_A0, _A1) = 0;
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const = 0;
    virtual const std::type_info& target_type() const = 0;
#endif // _LIBCPP_NO_RTTI
# 1292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0, class _A1, class _A2>
class __base<_Rp(_A0, _A1, _A2)>
{
    __base(const __base&);
    __base& operator=(const __base&);
public:
    __base() {}
    virtual ~__base() {}
    virtual __base* __clone() const = 0;
    virtual void __clone(__base*) const = 0;
    virtual void destroy() = 0;
    virtual void destroy_deallocate() = 0;
    virtual _Rp operator()(_A0, _A1, _A2) = 0;
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const = 0;
    virtual const std::type_info& target_type() const = 0;
#endif // _LIBCPP_NO_RTTI
# 1311 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _FD, class _Alloc, class _FB> class __func;

template<class _Fp, class _Alloc, class _Rp>
class __func<_Fp, _Alloc, _Rp()>
    : public  __base<_Rp()>
{
    __compressed_pair<_Fp, _Alloc> __f_;
public:
    explicit __func(_Fp __f) : __f_(_VSTD::move(__f), __default_init_tag()) {}
    explicit __func(_Fp __f, _Alloc __a) : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}
    virtual __base<_Rp()>* __clone() const;
    virtual void __clone(__base<_Rp()>*) const;
    virtual void destroy();
    virtual void destroy_deallocate();
    virtual _Rp operator()();
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const;
    virtual const std::type_info& target_type() const;
#endif // _LIBCPP_NO_RTTI
# 1332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Fp, class _Alloc, class _Rp>
__base<_Rp()>*
__func<_Fp, _Alloc, _Rp()>::__clone() const
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    typedef __allocator_destructor<_Ap> _Dp;
    unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
    ::new ((void*)__hold.get()) __func(__f_.first(), _Alloc(__a));
    return __hold.release();
}

template<class _Fp, class _Alloc, class _Rp>
void
__func<_Fp, _Alloc, _Rp()>::__clone(__base<_Rp()>* __p) const
{
    ::new ((void*)__p) __func(__f_.first(), __f_.second());
}

template<class _Fp, class _Alloc, class _Rp>
void
__func<_Fp, _Alloc, _Rp()>::destroy()
{
    __f_.~__compressed_pair<_Fp, _Alloc>();
}

template<class _Fp, class _Alloc, class _Rp>
void
__func<_Fp, _Alloc, _Rp()>::destroy_deallocate()
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    __f_.~__compressed_pair<_Fp, _Alloc>();
    __a.deallocate(this, 1);
}

template<class _Fp, class _Alloc, class _Rp>
_Rp
__func<_Fp, _Alloc, _Rp()>::operator()()
{
    typedef __invoke_void_return_wrapper<_Rp> _Invoker;
    return _Invoker::__call(__f_.first());
}

#ifndef _LIBCPP_NO_RTTI

template<class _Fp, class _Alloc, class _Rp>
const void*
__func<_Fp, _Alloc, _Rp()>::target(const type_info& __ti) const
{
    if (__ti == typeid(_Fp))
        return &__f_.first();
    return (const void*)0;
}

template<class _Fp, class _Alloc, class _Rp>
const std::type_info&
__func<_Fp, _Alloc, _Rp()>::target_type() const
{
    return typeid(_Fp);
}

#endif // _LIBCPP_NO_RTTI
# 1399 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Fp, class _Alloc, class _Rp, class _A0>
class __func<_Fp, _Alloc, _Rp(_A0)>
    : public  __base<_Rp(_A0)>
{
    __compressed_pair<_Fp, _Alloc> __f_;
public:
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f), __default_init_tag()) {}
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a)
        : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}
    virtual __base<_Rp(_A0)>* __clone() const;
    virtual void __clone(__base<_Rp(_A0)>*) const;
    virtual void destroy();
    virtual void destroy_deallocate();
    virtual _Rp operator()(_A0);
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const;
    virtual const std::type_info& target_type() const;
#endif // _LIBCPP_NO_RTTI
# 1418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Fp, class _Alloc, class _Rp, class _A0>
__base<_Rp(_A0)>*
__func<_Fp, _Alloc, _Rp(_A0)>::__clone() const
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    typedef __allocator_destructor<_Ap> _Dp;
    unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
    ::new ((void*)__hold.get()) __func(__f_.first(), _Alloc(__a));
    return __hold.release();
}

template<class _Fp, class _Alloc, class _Rp, class _A0>
void
__func<_Fp, _Alloc, _Rp(_A0)>::__clone(__base<_Rp(_A0)>* __p) const
{
    ::new ((void*)__p) __func(__f_.first(), __f_.second());
}

template<class _Fp, class _Alloc, class _Rp, class _A0>
void
__func<_Fp, _Alloc, _Rp(_A0)>::destroy()
{
    __f_.~__compressed_pair<_Fp, _Alloc>();
}

template<class _Fp, class _Alloc, class _Rp, class _A0>
void
__func<_Fp, _Alloc, _Rp(_A0)>::destroy_deallocate()
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    __f_.~__compressed_pair<_Fp, _Alloc>();
    __a.deallocate(this, 1);
}

template<class _Fp, class _Alloc, class _Rp, class _A0>
_Rp
__func<_Fp, _Alloc, _Rp(_A0)>::operator()(_A0 __a0)
{
    typedef __invoke_void_return_wrapper<_Rp> _Invoker;
    return _Invoker::__call(__f_.first(), __a0);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Fp, class _Alloc, class _Rp, class _A0>
const void*
__func<_Fp, _Alloc, _Rp(_A0)>::target(const type_info& __ti) const
{
    if (__ti == typeid(_Fp))
        return &__f_.first();
    return (const void*)0;
}

template<class _Fp, class _Alloc, class _Rp, class _A0>
const std::type_info&
__func<_Fp, _Alloc, _Rp(_A0)>::target_type() const
{
    return typeid(_Fp);
}

#endif // _LIBCPP_NO_RTTI
# 1485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
class __func<_Fp, _Alloc, _Rp(_A0, _A1)>
    : public  __base<_Rp(_A0, _A1)>
{
    __compressed_pair<_Fp, _Alloc> __f_;
public:
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f), __default_init_tag()) {}
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a)
        : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}
    virtual __base<_Rp(_A0, _A1)>* __clone() const;
    virtual void __clone(__base<_Rp(_A0, _A1)>*) const;
    virtual void destroy();
    virtual void destroy_deallocate();
    virtual _Rp operator()(_A0, _A1);
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const;
    virtual const std::type_info& target_type() const;
#endif // _LIBCPP_NO_RTTI
# 1504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
__base<_Rp(_A0, _A1)>*
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone() const
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    typedef __allocator_destructor<_Ap> _Dp;
    unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
    ::new ((void*)__hold.get()) __func(__f_.first(), _Alloc(__a));
    return __hold.release();
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone(__base<_Rp(_A0, _A1)>* __p) const
{
    ::new ((void*)__p) __func(__f_.first(), __f_.second());
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy()
{
    __f_.~__compressed_pair<_Fp, _Alloc>();
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy_deallocate()
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    __f_.~__compressed_pair<_Fp, _Alloc>();
    __a.deallocate(this, 1);
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
_Rp
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1)
{
    typedef __invoke_void_return_wrapper<_Rp> _Invoker;
    return _Invoker::__call(__f_.first(), __a0, __a1);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
const void*
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target(const type_info& __ti) const
{
    if (__ti == typeid(_Fp))
        return &__f_.first();
    return (const void*)0;
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1>
const std::type_info&
__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target_type() const
{
    return typeid(_Fp);
}

#endif // _LIBCPP_NO_RTTI
# 1571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
class __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>
    : public  __base<_Rp(_A0, _A1, _A2)>
{
    __compressed_pair<_Fp, _Alloc> __f_;
public:
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f), __default_init_tag()) {}
    _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a)
        : __f_(_VSTD::move(__f), _VSTD::move(__a)) {}
    virtual __base<_Rp(_A0, _A1, _A2)>* __clone() const;
    virtual void __clone(__base<_Rp(_A0, _A1, _A2)>*) const;
    virtual void destroy();
    virtual void destroy_deallocate();
    virtual _Rp operator()(_A0, _A1, _A2);
#ifndef _LIBCPP_NO_RTTI
    virtual const void* target(const type_info&) const;
    virtual const std::type_info& target_type() const;
#endif // _LIBCPP_NO_RTTI
# 1590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
__base<_Rp(_A0, _A1, _A2)>*
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone() const
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    typedef __allocator_destructor<_Ap> _Dp;
    unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
    ::new ((void*)__hold.get()) __func(__f_.first(), _Alloc(__a));
    return __hold.release();
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone(__base<_Rp(_A0, _A1, _A2)>* __p) const
{
    ::new ((void*)__p) __func(__f_.first(), __f_.second());
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy()
{
    __f_.~__compressed_pair<_Fp, _Alloc>();
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
void
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy_deallocate()
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap;
    _Ap __a(__f_.second());
    __f_.~__compressed_pair<_Fp, _Alloc>();
    __a.deallocate(this, 1);
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
_Rp
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2)
{
    typedef __invoke_void_return_wrapper<_Rp> _Invoker;
    return _Invoker::__call(__f_.first(), __a0, __a1, __a2);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
const void*
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target(const type_info& __ti) const
{
    if (__ti == typeid(_Fp))
        return &__f_.first();
    return (const void*)0;
}

template<class _Fp, class _Alloc, class _Rp, class _A0, class _A1, class _A2>
const std::type_info&
__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target_type() const
{
    return typeid(_Fp);
}

#endif // _LIBCPP_NO_RTTI
# 1657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

}  // __function

template<class _Rp>
class _LIBCPP_TEMPLATE_VIS function<_Rp()>
{
    typedef __function::__base<_Rp()> __base;
    aligned_storage<3*sizeof(void*)>::type __buf_;
    __base* __f_;

public:
    typedef _Rp result_type;

    // 20.7.16.2.1, construct/copy/destroy:
    _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {}
    _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {}
    function(const function&);
    template<class _Fp>
      function(_Fp,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&) : __f_(0) {}
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {}
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, const function&);
    template<class _Fp, class _Alloc>
      function(allocator_arg_t, const _Alloc& __a, _Fp __f,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    function& operator=(const function&);
    function& operator=(nullptr_t);
    template<class _Fp>
      typename enable_if
      <
        !is_integral<_Fp>::value,
        function&
      >::type
      operator=(_Fp);

    ~function();

    // 20.7.16.2.2, function modifiers:
    void swap(function&);
    template<class _Fp, class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      void assign(_Fp __f, const _Alloc& __a)
        {function(allocator_arg, __a, __f).swap(*this);}

    // 20.7.16.2.3, function capacity:
    _LIBCPP_INLINE_VISIBILITY explicit operator bool() const {return __f_;}

private:
    // deleted overloads close possible hole in the type system
    template<class _R2>
      bool operator==(const function<_R2()>&) const;// = delete;
    template<class _R2>
      bool operator!=(const function<_R2()>&) const;// = delete;
public:
    // 20.7.16.2.4, function invocation:
    _Rp operator()() const;

#ifndef _LIBCPP_NO_RTTI
    // 20.7.16.2.5, function target access:
    const std::type_info& target_type() const;
    template <typename _Tp> _Tp* target();
    template <typename _Tp> const _Tp* target() const;
#endif // _LIBCPP_NO_RTTI
# 1728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp>
function<_Rp()>::function(const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp>
template<class _Alloc>
function<_Rp()>::function(allocator_arg_t, const _Alloc&, const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp>
template <class _Fp>
function<_Rp()>::function(_Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, allocator<_Fp>, _Rp()> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f);
        }
        else
        {
            typedef allocator<_FF> _Ap;
            _Ap __a;
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, allocator<_Fp>(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp>
template <class _Fp, class _Alloc>
function<_Rp()>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, _Alloc, _Rp()> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f, __a0);
        }
        else
        {
            typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap;
            _Ap __a(__a0);
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, _Alloc(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp>
function<_Rp()>&
function<_Rp()>::operator=(const function& __f)
{
    if (__f)
        function(__f).swap(*this);
    else
        *this = nullptr;
    return *this;
}

template<class _Rp>
function<_Rp()>&
function<_Rp()>::operator=(nullptr_t)
{
    __base* __t = __f_;
    __f_ = 0;
    if (__t == (__base*)&__buf_)
        __t->destroy();
    else if (__t)
        __t->destroy_deallocate();
    return *this;
}

template<class _Rp>
template <class _Fp>
typename enable_if
<
    !is_integral<_Fp>::value,
    function<_Rp()>&
>::type
function<_Rp()>::operator=(_Fp __f)
{
    function(_VSTD::move(__f)).swap(*this);
    return *this;
}

template<class _Rp>
function<_Rp()>::~function()
{
    if (__f_ == (__base*)&__buf_)
        __f_->destroy();
    else if (__f_)
        __f_->destroy_deallocate();
}

template<class _Rp>
void
function<_Rp()>::swap(function& __f)
{
    if (_VSTD::addressof(__f) == this)
      return;
    if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_)
    {
        typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
        __base* __t = (__base*)&__tempbuf;
        __f_->__clone(__t);
        __f_->destroy();
        __f_ = 0;
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = 0;
        __f_ = (__base*)&__buf_;
        __t->__clone((__base*)&__f.__buf_);
        __t->destroy();
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f_ == (__base*)&__buf_)
    {
        __f_->__clone((__base*)&__f.__buf_);
        __f_->destroy();
        __f_ = __f.__f_;
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f.__f_ == (__base*)&__f.__buf_)
    {
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = __f_;
        __f_ = (__base*)&__buf_;
    }
    else
        _VSTD::swap(__f_, __f.__f_);
}

template<class _Rp>
_Rp
function<_Rp()>::operator()() const
{
    if (__f_ == 0)
        __throw_bad_function_call();
    return (*__f_)();
}

#ifndef _LIBCPP_NO_RTTI

template<class _Rp>
const std::type_info&
function<_Rp()>::target_type() const
{
    if (__f_ == 0)
        return typeid(void);
    return __f_->target_type();
}

template<class _Rp>
template <typename _Tp>
_Tp*
function<_Rp()>::target()
{
    if (__f_ == 0)
        return (_Tp*)0;
    return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}

template<class _Rp>
template <typename _Tp>
const _Tp*
function<_Rp()>::target() const
{
    if (__f_ == 0)
        return (const _Tp*)0;
    return (const _Tp*)__f_->target(typeid(_Tp));
}

#endif // _LIBCPP_NO_RTTI
# 1938 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Rp, class _A0>
class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0)>
    : public unary_function<_A0, _Rp>
{
    typedef __function::__base<_Rp(_A0)> __base;
    aligned_storage<3*sizeof(void*)>::type __buf_;
    __base* __f_;

public:
    typedef _Rp result_type;

    // 20.7.16.2.1, construct/copy/destroy:
    _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {}
    _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {}
    function(const function&);
    template<class _Fp>
      function(_Fp,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&) : __f_(0) {}
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {}
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, const function&);
    template<class _Fp, class _Alloc>
      function(allocator_arg_t, const _Alloc& __a, _Fp __f,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    function& operator=(const function&);
    function& operator=(nullptr_t);
    template<class _Fp>
      typename enable_if
      <
        !is_integral<_Fp>::value,
        function&
      >::type
      operator=(_Fp);

    ~function();

    // 20.7.16.2.2, function modifiers:
    void swap(function&);
    template<class _Fp, class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      void assign(_Fp __f, const _Alloc& __a)
        {function(allocator_arg, __a, __f).swap(*this);}

    // 20.7.16.2.3, function capacity:
    _LIBCPP_INLINE_VISIBILITY explicit operator bool() const {return __f_;}

private:
    // deleted overloads close possible hole in the type system
    template<class _R2, class _B0>
      bool operator==(const function<_R2(_B0)>&) const;// = delete;
    template<class _R2, class _B0>
      bool operator!=(const function<_R2(_B0)>&) const;// = delete;
public:
    // 20.7.16.2.4, function invocation:
    _Rp operator()(_A0) const;

#ifndef _LIBCPP_NO_RTTI
    // 20.7.16.2.5, function target access:
    const std::type_info& target_type() const;
    template <typename _Tp> _Tp* target();
    template <typename _Tp> const _Tp* target() const;
#endif // _LIBCPP_NO_RTTI
# 2008 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0>
function<_Rp(_A0)>::function(const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0>
template<class _Alloc>
function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc&, const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0>
template <class _Fp>
function<_Rp(_A0)>::function(_Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f);
        }
        else
        {
            typedef allocator<_FF> _Ap;
            _Ap __a;
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, allocator<_Fp>(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0>
template <class _Fp, class _Alloc>
function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, _Alloc, _Rp(_A0)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f, __a0);
        }
        else
        {
            typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap;
            _Ap __a(__a0);
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, _Alloc(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0>
function<_Rp(_A0)>&
function<_Rp(_A0)>::operator=(const function& __f)
{
    if (__f)
        function(__f).swap(*this);
    else
        *this = nullptr;
    return *this;
}

template<class _Rp, class _A0>
function<_Rp(_A0)>&
function<_Rp(_A0)>::operator=(nullptr_t)
{
    __base* __t = __f_;
    __f_ = 0;
    if (__t == (__base*)&__buf_)
        __t->destroy();
    else if (__t)
        __t->destroy_deallocate();
    return *this;
}

template<class _Rp, class _A0>
template <class _Fp>
typename enable_if
<
    !is_integral<_Fp>::value,
    function<_Rp(_A0)>&
>::type
function<_Rp(_A0)>::operator=(_Fp __f)
{
    function(_VSTD::move(__f)).swap(*this);
    return *this;
}

template<class _Rp, class _A0>
function<_Rp(_A0)>::~function()
{
    if (__f_ == (__base*)&__buf_)
        __f_->destroy();
    else if (__f_)
        __f_->destroy_deallocate();
}

template<class _Rp, class _A0>
void
function<_Rp(_A0)>::swap(function& __f)
{
    if (_VSTD::addressof(__f) == this)
      return;
    if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_)
    {
        typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
        __base* __t = (__base*)&__tempbuf;
        __f_->__clone(__t);
        __f_->destroy();
        __f_ = 0;
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = 0;
        __f_ = (__base*)&__buf_;
        __t->__clone((__base*)&__f.__buf_);
        __t->destroy();
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f_ == (__base*)&__buf_)
    {
        __f_->__clone((__base*)&__f.__buf_);
        __f_->destroy();
        __f_ = __f.__f_;
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f.__f_ == (__base*)&__f.__buf_)
    {
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = __f_;
        __f_ = (__base*)&__buf_;
    }
    else
        _VSTD::swap(__f_, __f.__f_);
}

template<class _Rp, class _A0>
_Rp
function<_Rp(_A0)>::operator()(_A0 __a0) const
{
    if (__f_ == 0)
        __throw_bad_function_call();
    return (*__f_)(__a0);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Rp, class _A0>
const std::type_info&
function<_Rp(_A0)>::target_type() const
{
    if (__f_ == 0)
        return typeid(void);
    return __f_->target_type();
}

template<class _Rp, class _A0>
template <typename _Tp>
_Tp*
function<_Rp(_A0)>::target()
{
    if (__f_ == 0)
        return (_Tp*)0;
    return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}

template<class _Rp, class _A0>
template <typename _Tp>
const _Tp*
function<_Rp(_A0)>::target() const
{
    if (__f_ == 0)
        return (const _Tp*)0;
    return (const _Tp*)__f_->target(typeid(_Tp));
}

#endif // _LIBCPP_NO_RTTI
# 2218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Rp, class _A0, class _A1>
class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1)>
    : public binary_function<_A0, _A1, _Rp>
{
    typedef __function::__base<_Rp(_A0, _A1)> __base;
    aligned_storage<3*sizeof(void*)>::type __buf_;
    __base* __f_;

public:
    typedef _Rp result_type;

    // 20.7.16.2.1, construct/copy/destroy:
    _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {}
    _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {}
    function(const function&);
    template<class _Fp>
      function(_Fp,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&) : __f_(0) {}
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {}
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, const function&);
    template<class _Fp, class _Alloc>
      function(allocator_arg_t, const _Alloc& __a, _Fp __f,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    function& operator=(const function&);
    function& operator=(nullptr_t);
    template<class _Fp>
      typename enable_if
      <
        !is_integral<_Fp>::value,
        function&
      >::type
      operator=(_Fp);

    ~function();

    // 20.7.16.2.2, function modifiers:
    void swap(function&);
    template<class _Fp, class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      void assign(_Fp __f, const _Alloc& __a)
        {function(allocator_arg, __a, __f).swap(*this);}

    // 20.7.16.2.3, function capacity:
    _LIBCPP_INLINE_VISIBILITY explicit operator bool() const {return __f_;}

private:
    // deleted overloads close possible hole in the type system
    template<class _R2, class _B0, class _B1>
      bool operator==(const function<_R2(_B0, _B1)>&) const;// = delete;
    template<class _R2, class _B0, class _B1>
      bool operator!=(const function<_R2(_B0, _B1)>&) const;// = delete;
public:
    // 20.7.16.2.4, function invocation:
    _Rp operator()(_A0, _A1) const;

#ifndef _LIBCPP_NO_RTTI
    // 20.7.16.2.5, function target access:
    const std::type_info& target_type() const;
    template <typename _Tp> _Tp* target();
    template <typename _Tp> const _Tp* target() const;
#endif // _LIBCPP_NO_RTTI
# 2288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0, class _A1>
function<_Rp(_A0, _A1)>::function(const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0, class _A1>
template<class _Alloc>
function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc&, const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0, class _A1>
template <class _Fp>
function<_Rp(_A0, _A1)>::function(_Fp __f,
                                 typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f);
        }
        else
        {
            typedef allocator<_FF> _Ap;
            _Ap __a;
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, allocator<_Fp>(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0, class _A1>
template <class _Fp, class _Alloc>
function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f,
                                 typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f, __a0);
        }
        else
        {
            typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap;
            _Ap __a(__a0);
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, _Alloc(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0, class _A1>
function<_Rp(_A0, _A1)>&
function<_Rp(_A0, _A1)>::operator=(const function& __f)
{
    if (__f)
        function(__f).swap(*this);
    else
        *this = nullptr;
    return *this;
}

template<class _Rp, class _A0, class _A1>
function<_Rp(_A0, _A1)>&
function<_Rp(_A0, _A1)>::operator=(nullptr_t)
{
    __base* __t = __f_;
    __f_ = 0;
    if (__t == (__base*)&__buf_)
        __t->destroy();
    else if (__t)
        __t->destroy_deallocate();
    return *this;
}

template<class _Rp, class _A0, class _A1>
template <class _Fp>
typename enable_if
<
    !is_integral<_Fp>::value,
    function<_Rp(_A0, _A1)>&
>::type
function<_Rp(_A0, _A1)>::operator=(_Fp __f)
{
    function(_VSTD::move(__f)).swap(*this);
    return *this;
}

template<class _Rp, class _A0, class _A1>
function<_Rp(_A0, _A1)>::~function()
{
    if (__f_ == (__base*)&__buf_)
        __f_->destroy();
    else if (__f_)
        __f_->destroy_deallocate();
}

template<class _Rp, class _A0, class _A1>
void
function<_Rp(_A0, _A1)>::swap(function& __f)
{
    if (_VSTD::addressof(__f) == this)
      return;
    if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_)
    {
        typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
        __base* __t = (__base*)&__tempbuf;
        __f_->__clone(__t);
        __f_->destroy();
        __f_ = 0;
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = 0;
        __f_ = (__base*)&__buf_;
        __t->__clone((__base*)&__f.__buf_);
        __t->destroy();
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f_ == (__base*)&__buf_)
    {
        __f_->__clone((__base*)&__f.__buf_);
        __f_->destroy();
        __f_ = __f.__f_;
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f.__f_ == (__base*)&__f.__buf_)
    {
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = __f_;
        __f_ = (__base*)&__buf_;
    }
    else
        _VSTD::swap(__f_, __f.__f_);
}

template<class _Rp, class _A0, class _A1>
_Rp
function<_Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1) const
{
    if (__f_ == 0)
        __throw_bad_function_call();
    return (*__f_)(__a0, __a1);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Rp, class _A0, class _A1>
const std::type_info&
function<_Rp(_A0, _A1)>::target_type() const
{
    if (__f_ == 0)
        return typeid(void);
    return __f_->target_type();
}

template<class _Rp, class _A0, class _A1>
template <typename _Tp>
_Tp*
function<_Rp(_A0, _A1)>::target()
{
    if (__f_ == 0)
        return (_Tp*)0;
    return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}

template<class _Rp, class _A0, class _A1>
template <typename _Tp>
const _Tp*
function<_Rp(_A0, _A1)>::target() const
{
    if (__f_ == 0)
        return (const _Tp*)0;
    return (const _Tp*)__f_->target(typeid(_Tp));
}

#endif // _LIBCPP_NO_RTTI
# 2498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template<class _Rp, class _A0, class _A1, class _A2>
class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1, _A2)>
{
    typedef __function::__base<_Rp(_A0, _A1, _A2)> __base;
    aligned_storage<3*sizeof(void*)>::type __buf_;
    __base* __f_;

public:
    typedef _Rp result_type;

    // 20.7.16.2.1, construct/copy/destroy:
    _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {}
    _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {}
    function(const function&);
    template<class _Fp>
      function(_Fp,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&) : __f_(0) {}
    template<class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {}
    template<class _Alloc>
      function(allocator_arg_t, const _Alloc&, const function&);
    template<class _Fp, class _Alloc>
      function(allocator_arg_t, const _Alloc& __a, _Fp __f,
               typename enable_if<!is_integral<_Fp>::value>::type* = 0);

    function& operator=(const function&);
    function& operator=(nullptr_t);
    template<class _Fp>
      typename enable_if
      <
        !is_integral<_Fp>::value,
        function&
      >::type
      operator=(_Fp);

    ~function();

    // 20.7.16.2.2, function modifiers:
    void swap(function&);
    template<class _Fp, class _Alloc>
      _LIBCPP_INLINE_VISIBILITY
      void assign(_Fp __f, const _Alloc& __a)
        {function(allocator_arg, __a, __f).swap(*this);}

    // 20.7.16.2.3, function capacity:
    _LIBCPP_INLINE_VISIBILITY explicit operator bool() const {return __f_;}

private:
    // deleted overloads close possible hole in the type system
    template<class _R2, class _B0, class _B1, class _B2>
      bool operator==(const function<_R2(_B0, _B1, _B2)>&) const;// = delete;
    template<class _R2, class _B0, class _B1, class _B2>
      bool operator!=(const function<_R2(_B0, _B1, _B2)>&) const;// = delete;
public:
    // 20.7.16.2.4, function invocation:
    _Rp operator()(_A0, _A1, _A2) const;

#ifndef _LIBCPP_NO_RTTI
    // 20.7.16.2.5, function target access:
    const std::type_info& target_type() const;
    template <typename _Tp> _Tp* target();
    template <typename _Tp> const _Tp* target() const;
#endif // _LIBCPP_NO_RTTI
# 2567 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
};

template<class _Rp, class _A0, class _A1, class _A2>
function<_Rp(_A0, _A1, _A2)>::function(const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0, class _A1, class _A2>
template<class _Alloc>
function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc&,
                                      const function& __f)
{
    if (__f.__f_ == 0)
        __f_ = 0;
    else if (__f.__f_ == (const __base*)&__f.__buf_)
    {
        __f_ = (__base*)&__buf_;
        __f.__f_->__clone(__f_);
    }
    else
        __f_ = __f.__f_->__clone();
}

template<class _Rp, class _A0, class _A1, class _A2>
template <class _Fp>
function<_Rp(_A0, _A1, _A2)>::function(_Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1, _A2)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f);
        }
        else
        {
            typedef allocator<_FF> _Ap;
            _Ap __a;
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, allocator<_Fp>(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0, class _A1, class _A2>
template <class _Fp, class _Alloc>
function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f,
                                     typename enable_if<!is_integral<_Fp>::value>::type*)
    : __f_(0)
{
    typedef allocator_traits<_Alloc> __alloc_traits;
    if (__function::__not_null(__f))
    {
        typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)> _FF;
        if (sizeof(_FF) <= sizeof(__buf_))
        {
            __f_ = (__base*)&__buf_;
            ::new ((void*)__f_) _FF(__f, __a0);
        }
        else
        {
            typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap;
            _Ap __a(__a0);
            typedef __allocator_destructor<_Ap> _Dp;
            unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
            ::new ((void*)__hold.get()) _FF(__f, _Alloc(__a));
            __f_ = __hold.release();
        }
    }
}

template<class _Rp, class _A0, class _A1, class _A2>
function<_Rp(_A0, _A1, _A2)>&
function<_Rp(_A0, _A1, _A2)>::operator=(const function& __f)
{
    if (__f)
        function(__f).swap(*this);
    else
        *this = nullptr;
    return *this;
}

template<class _Rp, class _A0, class _A1, class _A2>
function<_Rp(_A0, _A1, _A2)>&
function<_Rp(_A0, _A1, _A2)>::operator=(nullptr_t)
{
    __base* __t = __f_;
    __f_ = 0;
    if (__t == (__base*)&__buf_)
        __t->destroy();
    else if (__t)
        __t->destroy_deallocate();
    return *this;
}

template<class _Rp, class _A0, class _A1, class _A2>
template <class _Fp>
typename enable_if
<
    !is_integral<_Fp>::value,
    function<_Rp(_A0, _A1, _A2)>&
>::type
function<_Rp(_A0, _A1, _A2)>::operator=(_Fp __f)
{
    function(_VSTD::move(__f)).swap(*this);
    return *this;
}

template<class _Rp, class _A0, class _A1, class _A2>
function<_Rp(_A0, _A1, _A2)>::~function()
{
    if (__f_ == (__base*)&__buf_)
        __f_->destroy();
    else if (__f_)
        __f_->destroy_deallocate();
}

template<class _Rp, class _A0, class _A1, class _A2>
void
function<_Rp(_A0, _A1, _A2)>::swap(function& __f)
{
    if (_VSTD::addressof(__f) == this)
      return;
    if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_)
    {
        typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
        __base* __t = (__base*)&__tempbuf;
        __f_->__clone(__t);
        __f_->destroy();
        __f_ = 0;
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = 0;
        __f_ = (__base*)&__buf_;
        __t->__clone((__base*)&__f.__buf_);
        __t->destroy();
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f_ == (__base*)&__buf_)
    {
        __f_->__clone((__base*)&__f.__buf_);
        __f_->destroy();
        __f_ = __f.__f_;
        __f.__f_ = (__base*)&__f.__buf_;
    }
    else if (__f.__f_ == (__base*)&__f.__buf_)
    {
        __f.__f_->__clone((__base*)&__buf_);
        __f.__f_->destroy();
        __f.__f_ = __f_;
        __f_ = (__base*)&__buf_;
    }
    else
        _VSTD::swap(__f_, __f.__f_);
}

template<class _Rp, class _A0, class _A1, class _A2>
_Rp
function<_Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2) const
{
    if (__f_ == 0)
        __throw_bad_function_call();
    return (*__f_)(__a0, __a1, __a2);
}

#ifndef _LIBCPP_NO_RTTI

template<class _Rp, class _A0, class _A1, class _A2>
const std::type_info&
function<_Rp(_A0, _A1, _A2)>::target_type() const
{
    if (__f_ == 0)
        return typeid(void);
    return __f_->target_type();
}

template<class _Rp, class _A0, class _A1, class _A2>
template <typename _Tp>
_Tp*
function<_Rp(_A0, _A1, _A2)>::target()
{
    if (__f_ == 0)
        return (_Tp*)0;
    return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}

template<class _Rp, class _A0, class _A1, class _A2>
template <typename _Tp>
const _Tp*
function<_Rp(_A0, _A1, _A2)>::target() const
{
    if (__f_ == 0)
        return (const _Tp*)0;
    return (const _Tp*)__f_->target(typeid(_Tp));
}

#endif // _LIBCPP_NO_RTTI
# 2778 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const function<_Fp>& __f, nullptr_t) {return !__f;}

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(nullptr_t, const function<_Fp>& __f) {return !__f;}

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const function<_Fp>& __f, nullptr_t) {return (bool)__f;}

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(nullptr_t, const function<_Fp>& __f) {return (bool)__f;}

template <class _Fp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(function<_Fp>& __x, function<_Fp>& __y)
{return __x.swap(__y);}

#endif
# 2806 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_FUNCTION_H
# 2810 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/function.h" 3
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/hash.h>
#endif /* expanded by -frewrite-includes */
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/identity.h>
#endif /* expanded by -frewrite-includes */
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_IDENTITY_H
#define _LIBCPP___FUNCTIONAL_IDENTITY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3

struct identity {
    template<class _Tp>
    _LIBCPP_NODISCARD_EXT constexpr _Tp&& operator()(_Tp&& __t) const noexcept
    {
        return _VSTD::forward<_Tp>(__t);
    }

    using is_transparent = void;
};
#endif // _LIBCPP_STD_VER > 17
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_IDENTITY_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/identity.h" 3
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/mem_fn.h> // TODO: deprecate
#endif /* expanded by -frewrite-includes */
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_MEM_FN_H
#define _LIBCPP___FUNCTIONAL_MEM_FN_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/weak_result_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp>
class __mem_fn
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
    : public __weak_result_type<_Tp>
#endif
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
{
public:
    // types
    typedef _Tp type;
private:
    type __f_;

public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    __mem_fn(type __f) _NOEXCEPT : __f_(__f) {}

#ifndef _LIBCPP_CXX03_LANG
    // invoke
    template <class... _ArgTypes>
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    typename __invoke_return<type, _ArgTypes...>::type
    operator() (_ArgTypes&&... __args) const {
        return _VSTD::__invoke(__f_, _VSTD::forward<_ArgTypes>(__args)...);
    }
#else
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3

    template <class _A0>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return0<type, _A0>::type
    operator() (_A0& __a0) const {
        return _VSTD::__invoke(__f_, __a0);
    }

    template <class _A0>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return0<type, _A0 const>::type
    operator() (_A0 const& __a0) const {
        return _VSTD::__invoke(__f_, __a0);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0, _A1>::type
    operator() (_A0& __a0, _A1& __a1) const {
        return _VSTD::__invoke(__f_, __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0 const, _A1>::type
    operator() (_A0 const& __a0, _A1& __a1) const {
        return _VSTD::__invoke(__f_, __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0, _A1 const>::type
    operator() (_A0& __a0, _A1 const& __a1) const {
        return _VSTD::__invoke(__f_, __a0, __a1);
    }

    template <class _A0, class _A1>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return1<type, _A0 const, _A1 const>::type
    operator() (_A0 const& __a0, _A1 const& __a1) const {
        return _VSTD::__invoke(__f_, __a0, __a1);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1, _A2>::type
    operator() (_A0& __a0, _A1& __a1, _A2& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1, _A2>::type
    operator() (_A0 const& __a0, _A1& __a1, _A2& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1 const, _A2>::type
    operator() (_A0& __a0, _A1 const& __a1, _A2& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1, _A2 const>::type
    operator() (_A0& __a0, _A1& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1 const, _A2>::type
    operator() (_A0 const& __a0, _A1 const& __a1, _A2& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1, _A2 const>::type
    operator() (_A0 const& __a0, _A1& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0, _A1 const, _A2 const>::type
    operator() (_A0& __a0, _A1 const& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }

    template <class _A0, class _A1, class _A2>
    _LIBCPP_INLINE_VISIBILITY
    typename __invoke_return2<type, _A0 const, _A1 const, _A2 const>::type
    operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const {
        return _VSTD::__invoke(__f_, __a0, __a1, __a2);
    }
#endif
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
};

template<class _Rp, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
__mem_fn<_Rp _Tp::*>
mem_fn(_Rp _Tp::* __pm) _NOEXCEPT
{
    return __mem_fn<_Rp _Tp::*>(__pm);
}

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_MEM_FN_H
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fn.h" 3
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/mem_fun_ref.h>
#endif /* expanded by -frewrite-includes */
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H
#define _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3

template<class _Sp, class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_t
    : public unary_function<_Tp*, _Sp>
{
    _Sp (_Tp::*__p_)();
public:
    _LIBCPP_INLINE_VISIBILITY explicit mem_fun_t(_Sp (_Tp::*__p)())
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p) const
        {return (__p->*__p_)();}
};

template<class _Sp, class _Tp, class _Ap>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_t
    : public binary_function<_Tp*, _Ap, _Sp>
{
    _Sp (_Tp::*__p_)(_Ap);
public:
    _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap))
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p, _Ap __x) const
        {return (__p->*__p_)(__x);}
};

template<class _Sp, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
mem_fun_t<_Sp,_Tp>
mem_fun(_Sp (_Tp::*__f)())
    {return mem_fun_t<_Sp,_Tp>(__f);}

template<class _Sp, class _Tp, class _Ap>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
mem_fun1_t<_Sp,_Tp,_Ap>
mem_fun(_Sp (_Tp::*__f)(_Ap))
    {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);}

template<class _Sp, class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_ref_t
    : public unary_function<_Tp, _Sp>
{
    _Sp (_Tp::*__p_)();
public:
    _LIBCPP_INLINE_VISIBILITY explicit mem_fun_ref_t(_Sp (_Tp::*__p)())
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p) const
        {return (__p.*__p_)();}
};

template<class _Sp, class _Tp, class _Ap>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_ref_t
    : public binary_function<_Tp, _Ap, _Sp>
{
    _Sp (_Tp::*__p_)(_Ap);
public:
    _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap))
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p, _Ap __x) const
        {return (__p.*__p_)(__x);}
};

template<class _Sp, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
mem_fun_ref_t<_Sp,_Tp>
mem_fun_ref(_Sp (_Tp::*__f)())
    {return mem_fun_ref_t<_Sp,_Tp>(__f);}

template<class _Sp, class _Tp, class _Ap>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
mem_fun1_ref_t<_Sp,_Tp,_Ap>
mem_fun_ref(_Sp (_Tp::*__f)(_Ap))
    {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);}

template <class _Sp, class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_t
    : public unary_function<const _Tp*, _Sp>
{
    _Sp (_Tp::*__p_)() const;
public:
    _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_t(_Sp (_Tp::*__p)() const)
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p) const
        {return (__p->*__p_)();}
};

template <class _Sp, class _Tp, class _Ap>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_t
    : public binary_function<const _Tp*, _Ap, _Sp>
{
    _Sp (_Tp::*__p_)(_Ap) const;
public:
    _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const)
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p, _Ap __x) const
        {return (__p->*__p_)(__x);}
};

template <class _Sp, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
const_mem_fun_t<_Sp,_Tp>
mem_fun(_Sp (_Tp::*__f)() const)
    {return const_mem_fun_t<_Sp,_Tp>(__f);}

template <class _Sp, class _Tp, class _Ap>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
const_mem_fun1_t<_Sp,_Tp,_Ap>
mem_fun(_Sp (_Tp::*__f)(_Ap) const)
    {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);}

template <class _Sp, class _Tp>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_ref_t
    : public unary_function<_Tp, _Sp>
{
    _Sp (_Tp::*__p_)() const;
public:
    _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const)
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p) const
        {return (__p.*__p_)();}
};

template <class _Sp, class _Tp, class _Ap>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_ref_t
    : public binary_function<_Tp, _Ap, _Sp>
{
    _Sp (_Tp::*__p_)(_Ap) const;
public:
    _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const)
        : __p_(__p) {}
    _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p, _Ap __x) const
        {return (__p.*__p_)(__x);}
};

template <class _Sp, class _Tp>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
const_mem_fun_ref_t<_Sp,_Tp>
mem_fun_ref(_Sp (_Tp::*__f)() const)
    {return const_mem_fun_ref_t<_Sp,_Tp>(__f);}

template <class _Sp, class _Tp, class _Ap>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
const_mem_fun1_ref_t<_Sp,_Tp,_Ap>
mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const)
    {return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);}

#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
# 170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H
# 174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/mem_fun_ref.h" 3
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/not_fn.h>
#endif /* expanded by -frewrite-includes */
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_NOT_FN_H
#define _LIBCPP___FUNCTIONAL_NOT_FN_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/perfect_forward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/invoke.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3

struct __not_fn_op
{
    template<class... _Args>
    static _LIBCPP_CONSTEXPR_AFTER_CXX17 auto __call(_Args&&... __args)
    noexcept(noexcept(!_VSTD::invoke(_VSTD::forward<_Args>(__args)...)))
    -> decltype(      !_VSTD::invoke(_VSTD::forward<_Args>(__args)...))
    { return          !_VSTD::invoke(_VSTD::forward<_Args>(__args)...); }
};

template<class _Fn,
         class = _EnableIf<is_constructible_v<decay_t<_Fn>, _Fn> &&
                           is_move_constructible_v<_Fn>>>
_LIBCPP_CONSTEXPR_AFTER_CXX17 auto not_fn(_Fn&& __f)
{
    return __perfect_forward<__not_fn_op, _Fn>(_VSTD::forward<_Fn>(__f));
}

#endif // _LIBCPP_STD_VER > 14
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_NOT_FN_H
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/not_fn.h" 3
# 507 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/operations.h>
#endif /* expanded by -frewrite-includes */
# 507 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/pointer_to_binary_function.h>
#endif /* expanded by -frewrite-includes */
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H
#define _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/binary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3

template <class _Arg1, class _Arg2, class _Result>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function
    : public binary_function<_Arg1, _Arg2, _Result>
{
    _Result (*__f_)(_Arg1, _Arg2);
public:
    _LIBCPP_INLINE_VISIBILITY explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2))
        : __f_(__f) {}
    _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg1 __x, _Arg2 __y) const
        {return __f_(__x, __y);}
};

template <class _Arg1, class _Arg2, class _Result>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
pointer_to_binary_function<_Arg1,_Arg2,_Result>
ptr_fun(_Result (*__f)(_Arg1,_Arg2))
    {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);}

#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_binary_function.h" 3
# 509 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/pointer_to_unary_function.h>
#endif /* expanded by -frewrite-includes */
# 509 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H
#define _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3

template <class _Arg, class _Result>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_unary_function
    : public unary_function<_Arg, _Result>
{
    _Result (*__f_)(_Arg);
public:
    _LIBCPP_INLINE_VISIBILITY explicit pointer_to_unary_function(_Result (*__f)(_Arg))
        : __f_(__f) {}
    _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg __x) const
        {return __f_(__x);}
};

template <class _Arg, class _Result>
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
pointer_to_unary_function<_Arg,_Result>
ptr_fun(_Result (*__f)(_Arg))
    {return pointer_to_unary_function<_Arg,_Result>(__f);}

#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/pointer_to_unary_function.h" 3
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/ranges_operations.h>
#endif /* expanded by -frewrite-includes */
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H
#define _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
namespace ranges {

struct equal_to {
  template <class _Tp, class _Up>
  requires equality_comparable_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u)))) {
    return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u);
  }

  using is_transparent = void;
};

struct not_equal_to {
  template <class _Tp, class _Up>
  requires equality_comparable_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u))))) {
    return !(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u));
  }

  using is_transparent = void;
};

struct less {
  template <class _Tp, class _Up>
  requires totally_ordered_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u)))) {
    return _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u);
  }

  using is_transparent = void;
};

struct less_equal {
  template <class _Tp, class _Up>
  requires totally_ordered_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(!(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t))))) {
    return !(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t));
  }

  using is_transparent = void;
};

struct greater {
  template <class _Tp, class _Up>
  requires totally_ordered_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t)))) {
    return _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t);
  }

  using is_transparent = void;
};

struct greater_equal {
  template <class _Tp, class _Up>
  requires totally_ordered_with<_Tp, _Up>
  [[nodiscard]] constexpr bool operator()(_Tp &&__t, _Up &&__u) const
      noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u))))) {
    return !(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u));
  }

  using is_transparent = void;
};

} // namespace ranges
#endif // !defined(_LIBCPP_HAS_NO_RANGES)
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/ranges_operations.h" 3
# 511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/reference_wrapper.h>
#endif /* expanded by -frewrite-includes */
# 511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h> // TODO: deprecate
#endif /* expanded by -frewrite-includes */
# 512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_negate.h>
#endif /* expanded by -frewrite-includes */
# 513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H
#define _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3

template <class _Predicate>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 unary_negate
    : public unary_function<typename _Predicate::argument_type, bool>
{
    _Predicate __pred_;
public:
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    explicit unary_negate(const _Predicate& __pred)
        : __pred_(__pred) {}
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool operator()(const typename _Predicate::argument_type& __x) const
        {return !__pred_(__x);}
};

template <class _Predicate>
_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
unary_negate<_Predicate>
not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);}

#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS)
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/unary_negate.h" 3
# 514 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unwrap_ref.h>
#endif /* expanded by -frewrite-includes */
# 514 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 515 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 515 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 517 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 517 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <tuple>
#endif /* expanded by -frewrite-includes */
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
#endif
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3

#endif // _LIBCPP_FUNCTIONAL
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/functional" 3
# 654 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 654 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 655 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility> // needed to provide swap_ranges.
#endif /* expanded by -frewrite-includes */
# 655 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 658 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 658 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 660 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility> // swap_ranges
#endif /* expanded by -frewrite-includes */
# 660 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 661 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 661 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 662 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/adjacent_find.h>
#endif /* expanded by -frewrite-includes */
# 663 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ADJACENT_FIND_H
#define _LIBCPP___ALGORITHM_ADJACENT_FIND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
adjacent_find(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) {
  if (__first != __last) {
    _ForwardIterator __i = __first;
    while (++__i != __last) {
      if (__pred(*__first, *__i))
        return __first;
      __first = __i;
    }
  }
  return __last;
}

template <class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
adjacent_find(_ForwardIterator __first, _ForwardIterator __last) {
  typedef typename iterator_traits<_ForwardIterator>::value_type __v;
  return _VSTD::adjacent_find(__first, __last, __equal_to<__v>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ADJACENT_FIND_H
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/adjacent_find.h" 3
# 664 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/all_of.h>
#endif /* expanded by -frewrite-includes */
# 664 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ALL_OF_H
#define _LIBCPP___ALGORITHM_ALL_OF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  for (; __first != __last; ++__first)
    if (!__pred(*__first))
      return false;
  return true;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ALL_OF_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/all_of.h" 3
# 665 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/any_of.h>
#endif /* expanded by -frewrite-includes */
# 665 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ANY_OF_H
#define _LIBCPP___ALGORITHM_ANY_OF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  for (; __first != __last; ++__first)
    if (__pred(*__first))
      return true;
  return false;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ANY_OF_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/any_of.h" 3
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/binary_search.h>
#endif /* expanded by -frewrite-includes */
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_BINARY_SEARCH_H
#define _LIBCPP___ALGORITHM_BINARY_SEARCH_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/lower_bound.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_LOWER_BOUND_H
#define _LIBCPP___ALGORITHM_LOWER_BOUND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/half_positive.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_HALF_POSITIVE_H
#define _LIBCPP___ALGORITHM_HALF_POSITIVE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// Perform division by two quickly for positive integers (llvm.org/PR39129)

template <typename _Integral>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    is_integral<_Integral>::value,
    _Integral
>::type
__half_positive(_Integral __value)
{
    return static_cast<_Integral>(static_cast<typename make_unsigned<_Integral>::type>(__value) / 2);
}

template <typename _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
typename enable_if
<
    !is_integral<_Tp>::value,
    _Tp
>::type
__half_positive(_Tp __value)
{
    return __value / 2;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_HALF_POSITIVE_H
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/half_positive.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _ForwardIterator, class _Tp>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
__lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type;
    difference_type __len = _VSTD::distance(__first, __last);
    while (__len != 0)
    {
        difference_type __l2 = _VSTD::__half_positive(__len);
        _ForwardIterator __m = __first;
        _VSTD::advance(__m, __l2);
        if (__comp(*__m, __value_))
        {
            __first = ++__m;
            __len -= __l2 + 1;
        }
        else
            __len = __l2;
    }
    return __first;
}

template <class _ForwardIterator, class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
    return _VSTD::__lower_bound<_Comp_ref>(__first, __last, __value_, __comp);
}

template <class _ForwardIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    return _VSTD::lower_bound(__first, __last, __value_,
                             __less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_LOWER_BOUND_H
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lower_bound.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COMP_REF_TYPE_H
#define _LIBCPP___ALGORITHM_COMP_REF_TYPE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifdef _LIBCPP_DEBUG

template <class _Compare>
struct __debug_less
{
    _Compare &__comp_;
    _LIBCPP_CONSTEXPR_AFTER_CXX17
    __debug_less(_Compare& __c) : __comp_(__c) {}

    template <class _Tp, class _Up>
    _LIBCPP_CONSTEXPR_AFTER_CXX17
    bool operator()(const _Tp& __x,  const _Up& __y)
    {
        bool __r = __comp_(__x, __y);
        if (__r)
            __do_compare_assert(0, __y, __x);
        return __r;
    }

    template <class _Tp, class _Up>
    _LIBCPP_CONSTEXPR_AFTER_CXX17
    bool operator()(_Tp& __x,  _Up& __y)
    {
        bool __r = __comp_(__x, __y);
        if (__r)
            __do_compare_assert(0, __y, __x);
        return __r;
    }

    template <class _LHS, class _RHS>
    _LIBCPP_CONSTEXPR_AFTER_CXX17
    inline _LIBCPP_INLINE_VISIBILITY
    decltype((void)declval<_Compare&>()(
        declval<_LHS &>(), declval<_RHS &>()))
    __do_compare_assert(int, _LHS & __l, _RHS & __r) {
        _LIBCPP_ASSERT(!__comp_(__l, __r),
            "Comparator does not induce a strict weak ordering");
    }

    template <class _LHS, class _RHS>
    _LIBCPP_CONSTEXPR_AFTER_CXX17
    inline _LIBCPP_INLINE_VISIBILITY
    void __do_compare_assert(long, _LHS &, _RHS &) {}
};

#endif // _LIBCPP_DEBUG
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3

template <class _Comp>
struct __comp_ref_type {
  // Pass the comparator by lvalue reference. Or in debug mode, using a
  // debugging wrapper that stores a reference.
#ifndef _LIBCPP_DEBUG
  typedef typename add_lvalue_reference<_Comp>::type type;
#else
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
  typedef __debug_less<_Comp> type;
#endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
};


_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COMP_REF_TYPE_H
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/comp_ref_type.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _ForwardIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
__binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    __first = _VSTD::__lower_bound<_Compare>(__first, __last, __value_, __comp);
    return __first != __last && !__comp(__value_, *__first);
}

template <class _ForwardIterator, class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__binary_search<_Comp_ref>(__first, __last, __value_, __comp);
}

template <class _ForwardIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    return _VSTD::binary_search(__first, __last, __value_,
                             __less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>());
}


_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_BINARY_SEARCH_H
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/binary_search.h" 3
# 667 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/clamp.h>
#endif /* expanded by -frewrite-includes */
# 667 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_CLAMP_H
#define _LIBCPP___ALGORITHM_CLAMP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
// clamp
template<class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
const _Tp&
clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi, _Compare __comp)
{
    _LIBCPP_ASSERT(!__comp(__hi, __lo), "Bad bounds passed to std::clamp");
    return __comp(__v, __lo) ? __lo : __comp(__hi, __v) ? __hi : __v;

}

template<class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
const _Tp&
clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi)
{
    return _VSTD::clamp(__v, __lo, __hi, __less<_Tp>());
}
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_CLAMP_H
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/clamp.h" 3
# 668 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 668 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 669 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 669 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COPY_H
#define _LIBCPP___ALGORITHM_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_UNWRAP_ITER_H
#define _LIBCPP___ALGORITHM_UNWRAP_ITER_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__memory/pointer_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// The job of __unwrap_iter is to lower contiguous iterators (such as
// vector<T>::iterator) into pointers, to reduce the number of template
// instantiations and to enable pointer-based optimizations e.g. in std::copy.
// For iterators that are not contiguous, it must be a no-op.
// In debug mode, we don't do this.
//
// __unwrap_iter is non-constexpr for user-defined iterators whose
// `to_address` and/or `operator->` is non-constexpr. This is okay; but we
// try to avoid doing __unwrap_iter in constant-evaluated contexts anyway.
//
// Some algorithms (e.g. std::copy, but not std::sort) need to convert an
// "unwrapped" result back into a contiguous iterator. Since contiguous iterators
// are random-access, we can do this portably using iterator arithmetic; this
// is the job of __rewrap_iter.

template <class _Iter, bool = __is_cpp17_contiguous_iterator<_Iter>::value>
struct __unwrap_iter_impl {
    static _LIBCPP_CONSTEXPR _Iter
    __apply(_Iter __i) _NOEXCEPT {
        return __i;
    }
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL < 2
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3

template <class _Iter>
struct __unwrap_iter_impl<_Iter, true> {
    static _LIBCPP_CONSTEXPR decltype(_VSTD::__to_address(declval<_Iter>()))
    __apply(_Iter __i) _NOEXCEPT {
        return _VSTD::__to_address(__i);
    }
};

#endif // _LIBCPP_DEBUG_LEVEL < 2
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3

template<class _Iter, class _Impl = __unwrap_iter_impl<_Iter> >
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
decltype(_Impl::__apply(declval<_Iter>()))
__unwrap_iter(_Iter __i) _NOEXCEPT
{
    return _Impl::__apply(__i);
}

template<class _OrigIter>
_OrigIter __rewrap_iter(_OrigIter, _OrigIter __result)
{
    return __result;
}

template<class _OrigIter, class _UnwrappedIter>
_OrigIter __rewrap_iter(_OrigIter __first, _UnwrappedIter __result)
{
    // Precondition: __result is reachable from __first
    // Precondition: _OrigIter is a contiguous iterator
    return __first + (__result - _VSTD::__unwrap_iter(__first));
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_UNWRAP_ITER_H
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unwrap_iter.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// copy

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
__copy_constexpr(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    for (; __first != __last; ++__first, (void) ++__result)
        *__result = *__first;
    return __result;
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
__copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    return _VSTD::__copy_constexpr(__first, __last, __result);
}

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_same<typename remove_const<_Tp>::type, _Up>::value &&
    is_trivially_copy_assignable<_Up>::value,
    _Up*
>::type
__copy(_Tp* __first, _Tp* __last, _Up* __result)
{
    const size_t __n = static_cast<size_t>(__last - __first);
    if (__n > 0)
        _VSTD::memmove(__result, __first, __n * sizeof(_Up));
    return __result + __n;
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    if (__libcpp_is_constant_evaluated()) {
        return _VSTD::__copy_constexpr(__first, __last, __result);
    } else {
        return _VSTD::__rewrap_iter(__result,
            _VSTD::__copy(_VSTD::__unwrap_iter(__first),
                          _VSTD::__unwrap_iter(__last),
                          _VSTD::__unwrap_iter(__result)));
    }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COPY_H
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy.h" 3
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy_backward.h>
#endif /* expanded by -frewrite-includes */
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COPY_BACKWARD_H
#define _LIBCPP___ALGORITHM_COPY_BACKWARD_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BidirectionalIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
__copy_backward_constexpr(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result)
{
    while (__first != __last)
        *--__result = *--__last;
    return __result;
}

template <class _BidirectionalIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
__copy_backward(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result)
{
    return _VSTD::__copy_backward_constexpr(__first, __last, __result);
}

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_same<typename remove_const<_Tp>::type, _Up>::value &&
    is_trivially_copy_assignable<_Up>::value,
    _Up*
>::type
__copy_backward(_Tp* __first, _Tp* __last, _Up* __result)
{
    const size_t __n = static_cast<size_t>(__last - __first);
    if (__n > 0)
    {
        __result -= __n;
        _VSTD::memmove(__result, __first, __n * sizeof(_Up));
    }
    return __result;
}

template <class _BidirectionalIterator1, class _BidirectionalIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_BidirectionalIterator2
copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
              _BidirectionalIterator2 __result)
{
    if (__libcpp_is_constant_evaluated()) {
        return _VSTD::__copy_backward_constexpr(__first, __last, __result);
    } else {
        return _VSTD::__rewrap_iter(__result,
            _VSTD::__copy_backward(_VSTD::__unwrap_iter(__first),
                                   _VSTD::__unwrap_iter(__last),
                                   _VSTD::__unwrap_iter(__result)));
    }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COPY_BACKWARD_H
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_backward.h" 3
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy_if.h>
#endif /* expanded by -frewrite-includes */
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COPY_IF_H
#define _LIBCPP___ALGORITHM_COPY_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _InputIterator, class _OutputIterator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
copy_if(_InputIterator __first, _InputIterator __last,
        _OutputIterator __result, _Predicate __pred)
{
    for (; __first != __last; ++__first)
    {
        if (__pred(*__first))
        {
            *__result = *__first;
            ++__result;
        }
    }
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COPY_IF_H
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_if.h" 3
# 673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy_n.h>
#endif /* expanded by -frewrite-includes */
# 673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COPY_N_H
#define _LIBCPP___ALGORITHM_COPY_N_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _InputIterator, class _Size, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
typename enable_if
<
    __is_cpp17_input_iterator<_InputIterator>::value &&
   !__is_cpp17_random_access_iterator<_InputIterator>::value,
    _OutputIterator
>::type
copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result)
{
    typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize;
    _IntegralSize __n = __orig_n;
    if (__n > 0)
    {
        *__result = *__first;
        ++__result;
        for (--__n; __n > 0; --__n)
        {
            ++__first;
            *__result = *__first;
            ++__result;
        }
    }
    return __result;
}

template<class _InputIterator, class _Size, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
typename enable_if
<
    __is_cpp17_random_access_iterator<_InputIterator>::value,
    _OutputIterator
>::type
copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result)
{
    typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize;
    _IntegralSize __n = __orig_n;
    return _VSTD::copy(__first, __first + __n, __result);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COPY_N_H
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/copy_n.h" 3
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/count.h>
#endif /* expanded by -frewrite-includes */
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COUNT_H
#define _LIBCPP___ALGORITHM_COUNT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    typename iterator_traits<_InputIterator>::difference_type
    count(_InputIterator __first, _InputIterator __last, const _Tp& __value_) {
  typename iterator_traits<_InputIterator>::difference_type __r(0);
  for (; __first != __last; ++__first)
    if (*__first == __value_)
      ++__r;
  return __r;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COUNT_H
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count.h" 3
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/count_if.h>
#endif /* expanded by -frewrite-includes */
# 675 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_COUNT_IF_H
#define _LIBCPP___ALGORITHM_COUNT_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    typename iterator_traits<_InputIterator>::difference_type
    count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  typename iterator_traits<_InputIterator>::difference_type __r(0);
  for (; __first != __last; ++__first)
    if (__pred(*__first))
      ++__r;
  return __r;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_COUNT_IF_H
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/count_if.h" 3
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/equal.h>
#endif /* expanded by -frewrite-includes */
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_EQUAL_H
#define _LIBCPP___ALGORITHM_EQUAL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator> // FIXME: replace with <__iterator/distance.h> when it lands
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) {
  for (; __first1 != __last1; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      return false;
  return true;
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) {
  typedef typename iterator_traits<_InputIterator1>::value_type __v1;
  typedef typename iterator_traits<_InputIterator2>::value_type __v2;
  return _VSTD::equal(__first1, __last1, __first2, __equal_to<__v1, __v2>());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
template <class _BinaryPredicate, class _InputIterator1, class _InputIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2,
        _BinaryPredicate __pred, input_iterator_tag, input_iterator_tag) {
  for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      return false;
  return __first1 == __last1 && __first2 == __last2;
}

template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__equal(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, _RandomAccessIterator2 __first2,
        _RandomAccessIterator2 __last2, _BinaryPredicate __pred, random_access_iterator_tag,
        random_access_iterator_tag) {
  if (_VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2))
    return false;
  return _VSTD::equal<_RandomAccessIterator1, _RandomAccessIterator2,
                      typename add_lvalue_reference<_BinaryPredicate>::type>(__first1, __last1, __first2, __pred);
}

template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2,
      _BinaryPredicate __pred) {
  return _VSTD::__equal<typename add_lvalue_reference<_BinaryPredicate>::type>(
      __first1, __last1, __first2, __last2, __pred, typename iterator_traits<_InputIterator1>::iterator_category(),
      typename iterator_traits<_InputIterator2>::iterator_category());
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) {
  typedef typename iterator_traits<_InputIterator1>::value_type __v1;
  typedef typename iterator_traits<_InputIterator2>::value_type __v2;
  return _VSTD::__equal(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>(),
                        typename iterator_traits<_InputIterator1>::iterator_category(),
                        typename iterator_traits<_InputIterator2>::iterator_category());
}
#endif
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_EQUAL_H
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal.h" 3
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/equal_range.h>
#endif /* expanded by -frewrite-includes */
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_EQUAL_RANGE_H
#define _LIBCPP___ALGORITHM_EQUAL_RANGE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/half_positive.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/lower_bound.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/upper_bound.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_UPPER_BOUND_H
#define _LIBCPP___ALGORITHM_UPPER_BOUND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/half_positive.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _ForwardIterator, class _Tp>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
__upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type;
    difference_type __len = _VSTD::distance(__first, __last);
    while (__len != 0)
    {
        difference_type __l2 = _VSTD::__half_positive(__len);
        _ForwardIterator __m = __first;
        _VSTD::advance(__m, __l2);
        if (__comp(__value_, *__m))
            __len = __l2;
        else
        {
            __first = ++__m;
            __len -= __l2 + 1;
        }
    }
    return __first;
}

template <class _ForwardIterator, class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
    return _VSTD::__upper_bound<_Comp_ref>(__first, __last, __value_, __comp);
}

template <class _ForwardIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    return _VSTD::upper_bound(__first, __last, __value_,
                             __less<_Tp, typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_UPPER_BOUND_H
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/upper_bound.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _ForwardIterator, class _Tp>
_LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_ForwardIterator, _ForwardIterator>
__equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type;
    difference_type __len = _VSTD::distance(__first, __last);
    while (__len != 0)
    {
        difference_type __l2 = _VSTD::__half_positive(__len);
        _ForwardIterator __m = __first;
        _VSTD::advance(__m, __l2);
        if (__comp(*__m, __value_))
        {
            __first = ++__m;
            __len -= __l2 + 1;
        }
        else if (__comp(__value_, *__m))
        {
            __last = __m;
            __len = __l2;
        }
        else
        {
            _ForwardIterator __mp1 = __m;
            return pair<_ForwardIterator, _ForwardIterator>
                   (
                      _VSTD::__lower_bound<_Compare>(__first, __m, __value_, __comp),
                      _VSTD::__upper_bound<_Compare>(++__mp1, __last, __value_, __comp)
                   );
        }
    }
    return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
}

template <class _ForwardIterator, class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
pair<_ForwardIterator, _ForwardIterator>
equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__equal_range<_Comp_ref>(__first, __last, __value_, __comp);
}

template <class _ForwardIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
pair<_ForwardIterator, _ForwardIterator>
equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    return _VSTD::equal_range(__first, __last, __value_,
                             __less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_EQUAL_RANGE_H
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/equal_range.h" 3
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/fill_n.h>
#endif /* expanded by -frewrite-includes */
# 678 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FILL_N_H
#define _LIBCPP___ALGORITHM_FILL_N_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _OutputIterator, class _Size, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_)
{
    for (; __n > 0; ++__first, (void) --__n)
        *__first = __value_;
    return __first;
}

template <class _OutputIterator, class _Size, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_)
{
   return _VSTD::__fill_n(__first, _VSTD::__convert_to_integral(__n), __value_);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FILL_N_H
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill_n.h" 3
# 679 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/fill.h>
#endif /* expanded by -frewrite-includes */
# 679 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FILL_H
#define _LIBCPP___ALGORITHM_FILL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/fill_n.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, forward_iterator_tag)
{
    for (; __first != __last; ++__first)
        *__first = __value_;
}

template <class _RandomAccessIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value_, random_access_iterator_tag)
{
    _VSTD::fill_n(__first, __last - __first, __value_);
}

template <class _ForwardIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    _VSTD::__fill(__first, __last, __value_, typename iterator_traits<_ForwardIterator>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FILL_H
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/fill.h" 3
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find.h>
#endif /* expanded by -frewrite-includes */
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FIND_H
#define _LIBCPP___ALGORITHM_FIND_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _InputIterator
find(_InputIterator __first, _InputIterator __last, const _Tp& __value_) {
  for (; __first != __last; ++__first)
    if (*__first == __value_)
      break;
  return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FIND_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find.h" 3
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_end.h>
#endif /* expanded by -frewrite-includes */
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FIND_END_OF_H
#define _LIBCPP___ALGORITHM_FIND_END_OF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
                                                           _ForwardIterator2 __first2, _ForwardIterator2 __last2,
                                                           _BinaryPredicate __pred, forward_iterator_tag,
                                                           forward_iterator_tag) {
  // modeled after search algorithm
  _ForwardIterator1 __r = __last1; // __last1 is the "default" answer
  if (__first2 == __last2)
    return __r;
  while (true) {
    while (true) {
      if (__first1 == __last1) // if source exhausted return last correct answer
        return __r;            //    (or __last1 if never found)
      if (__pred(*__first1, *__first2))
        break;
      ++__first1;
    }
    // *__first1 matches *__first2, now match elements after here
    _ForwardIterator1 __m1 = __first1;
    _ForwardIterator2 __m2 = __first2;
    while (true) {
      if (++__m2 == __last2) { // Pattern exhaused, record answer and search for another one
        __r = __first1;
        ++__first1;
        break;
      }
      if (++__m1 == __last1) // Source exhausted, return last answer
        return __r;
      if (!__pred(*__m1, *__m2)) // mismatch, restart with a new __first
      {
        ++__first1;
        break;
      } // else there is a match, check next elements
    }
  }
}

template <class _BinaryPredicate, class _BidirectionalIterator1, class _BidirectionalIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _BidirectionalIterator1 __find_end(
    _BidirectionalIterator1 __first1, _BidirectionalIterator1 __last1, _BidirectionalIterator2 __first2,
    _BidirectionalIterator2 __last2, _BinaryPredicate __pred, bidirectional_iterator_tag, bidirectional_iterator_tag) {
  // modeled after search algorithm (in reverse)
  if (__first2 == __last2)
    return __last1; // Everything matches an empty sequence
  _BidirectionalIterator1 __l1 = __last1;
  _BidirectionalIterator2 __l2 = __last2;
  --__l2;
  while (true) {
    // Find last element in sequence 1 that matchs *(__last2-1), with a mininum of loop checks
    while (true) {
      if (__first1 == __l1) // return __last1 if no element matches *__first2
        return __last1;
      if (__pred(*--__l1, *__l2))
        break;
    }
    // *__l1 matches *__l2, now match elements before here
    _BidirectionalIterator1 __m1 = __l1;
    _BidirectionalIterator2 __m2 = __l2;
    while (true) {
      if (__m2 == __first2) // If pattern exhausted, __m1 is the answer (works for 1 element pattern)
        return __m1;
      if (__m1 == __first1) // Otherwise if source exhaused, pattern not found
        return __last1;
      if (!__pred(*--__m1, *--__m2)) // if there is a mismatch, restart with a new __l1
      {
        break;
      } // else there is a match, check next elements
    }
  }
}

template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _RandomAccessIterator1 __find_end(
    _RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, _RandomAccessIterator2 __first2,
    _RandomAccessIterator2 __last2, _BinaryPredicate __pred, random_access_iterator_tag, random_access_iterator_tag) {
  // Take advantage of knowing source and pattern lengths.  Stop short when source is smaller than pattern
  typename iterator_traits<_RandomAccessIterator2>::difference_type __len2 = __last2 - __first2;
  if (__len2 == 0)
    return __last1;
  typename iterator_traits<_RandomAccessIterator1>::difference_type __len1 = __last1 - __first1;
  if (__len1 < __len2)
    return __last1;
  const _RandomAccessIterator1 __s = __first1 + (__len2 - 1); // End of pattern match can't go before here
  _RandomAccessIterator1 __l1 = __last1;
  _RandomAccessIterator2 __l2 = __last2;
  --__l2;
  while (true) {
    while (true) {
      if (__s == __l1)
        return __last1;
      if (__pred(*--__l1, *__l2))
        break;
    }
    _RandomAccessIterator1 __m1 = __l1;
    _RandomAccessIterator2 __m2 = __l2;
    while (true) {
      if (__m2 == __first2)
        return __m1;
      // no need to check range on __m1 because __s guarantees we have enough source
      if (!__pred(*--__m1, *--__m2)) {
        break;
      }
    }
  }
}

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1
find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2,
         _BinaryPredicate __pred) {
  return _VSTD::__find_end<typename add_lvalue_reference<_BinaryPredicate>::type>(
      __first1, __last1, __first2, __last2, __pred, typename iterator_traits<_ForwardIterator1>::iterator_category(),
      typename iterator_traits<_ForwardIterator2>::iterator_category());
}

template <class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1
find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) {
  typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
  typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
  return _VSTD::find_end(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FIND_END_OF_H
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_end.h" 3
# 682 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_first_of.h>
#endif /* expanded by -frewrite-includes */
# 682 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FIND_FIRST_OF_H
#define _LIBCPP___ALGORITHM_FIND_FIRST_OF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _ForwardIterator1 __find_first_of_ce(_ForwardIterator1 __first1,
                                                                   _ForwardIterator1 __last1,
                                                                   _ForwardIterator2 __first2,
                                                                   _ForwardIterator2 __last2, _BinaryPredicate __pred) {
  for (; __first1 != __last1; ++__first1)
    for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j)
      if (__pred(*__first1, *__j))
        return __first1;
  return __last1;
}

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1
find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
              _ForwardIterator2 __last2, _BinaryPredicate __pred) {
  return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred);
}

template <class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator1 find_first_of(
    _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) {
  typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
  typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
  return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FIND_FIRST_OF_H
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_first_of.h" 3
# 683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_if.h>
#endif /* expanded by -frewrite-includes */
# 683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FIND_IF_H
#define _LIBCPP___ALGORITHM_FIND_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _InputIterator
find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  for (; __first != __last; ++__first)
    if (__pred(*__first))
      break;
  return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FIND_IF_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if.h" 3
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_if_not.h>
#endif /* expanded by -frewrite-includes */
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FIND_IF_NOT_H
#define _LIBCPP___ALGORITHM_FIND_IF_NOT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _InputIterator
find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  for (; __first != __last; ++__first)
    if (!__pred(*__first))
      break;
  return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FIND_IF_NOT_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/find_if_not.h" 3
# 685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/for_each.h>
#endif /* expanded by -frewrite-includes */
# 685 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FOR_EACH_H
#define _LIBCPP___ALGORITHM_FOR_EACH_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Function>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _Function for_each(_InputIterator __first,
                                                                                  _InputIterator __last,
                                                                                  _Function __f) {
  for (; __first != __last; ++__first)
    __f(*__first);
  return __f;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FOR_EACH_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each.h" 3
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/for_each_n.h>
#endif /* expanded by -frewrite-includes */
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_FOR_EACH_N_H
#define _LIBCPP___ALGORITHM_FOR_EACH_N_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3

template <class _InputIterator, class _Size, class _Function>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _InputIterator for_each_n(_InputIterator __first,
                                                                                         _Size __orig_n,
                                                                                         _Function __f) {
  typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize;
  _IntegralSize __n = __orig_n;
  while (__n > 0) {
    __f(*__first);
    ++__first;
    --__n;
  }
  return __first;
}

#endif
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_FOR_EACH_N_H
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/for_each_n.h" 3
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/generate_n.h>
#endif /* expanded by -frewrite-includes */
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_GENERATE_N_H
#define _LIBCPP___ALGORITHM_GENERATE_N_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _OutputIterator, class _Size, class _Generator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen)
{
    typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize;
    _IntegralSize __n = __orig_n;
    for (; __n > 0; ++__first, (void) --__n)
        *__first = __gen();
    return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_GENERATE_N_H
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate_n.h" 3
# 688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/generate.h>
#endif /* expanded by -frewrite-includes */
# 688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_GENERATE_H
#define _LIBCPP___ALGORITHM_GENERATE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Generator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen)
{
    for (; __first != __last; ++__first)
        *__first = __gen();
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_GENERATE_H
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/generate.h" 3
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/half_positive.h>
#endif /* expanded by -frewrite-includes */
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/includes.h>
#endif /* expanded by -frewrite-includes */
# 690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_INCLUDES_H
#define _LIBCPP___ALGORITHM_INCLUDES_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2,
           _Compare __comp)
{
    for (; __first2 != __last2; ++__first1)
    {
        if (__first1 == __last1 || __comp(*__first2, *__first1))
            return false;
        if (!__comp(*__first1, *__first2))
            ++__first2;
    }
    return true;
}

template <class _InputIterator1, class _InputIterator2, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2,
         _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__includes<_Comp_ref>(__first1, __last1, __first2, __last2, __comp);
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2)
{
    return _VSTD::includes(__first1, __last1, __first2, __last2,
                          __less<typename iterator_traits<_InputIterator1>::value_type,
                                 typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_INCLUDES_H
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/includes.h" 3
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/inplace_merge.h>
#endif /* expanded by -frewrite-includes */
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_INPLACE_MERGE_H
#define _LIBCPP___ALGORITHM_INPLACE_MERGE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/lower_bound.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MIN_H
#define _LIBCPP___ALGORITHM_MIN_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min_element.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MIN_ELEMENT_H
#define _LIBCPP___ALGORITHM_MIN_ELEMENT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_ForwardIterator
min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
{
    static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value,
        "std::min_element requires a ForwardIterator");
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
            if (__comp(*__i, *__first))
                __first = __i;
    }
    return __first;
}

template <class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_ForwardIterator
min_element(_ForwardIterator __first, _ForwardIterator __last)
{
    return _VSTD::min_element(__first, __last,
              __less<typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MIN_ELEMENT_H
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
min(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
    return __comp(__b, __a) ? __b : __a;
}

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
min(const _Tp& __a, const _Tp& __b)
{
    return _VSTD::min(__a, __b, __less<_Tp>());
}

#ifndef _LIBCPP_CXX03_LANG

template<class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp
min(initializer_list<_Tp> __t, _Compare __comp)
{
    return *_VSTD::min_element(__t.begin(), __t.end(), __comp);
}

template<class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp
min(initializer_list<_Tp> __t)
{
    return *_VSTD::min_element(__t.begin(), __t.end(), __less<_Tp>());
}

#endif // _LIBCPP_CXX03_LANG
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MIN_H
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/min.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MOVE_H
#define _LIBCPP___ALGORITHM_MOVE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// move

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
_OutputIterator
__move_constexpr(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    for (; __first != __last; ++__first, (void) ++__result)
        *__result = _VSTD::move(*__first);
    return __result;
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
_OutputIterator
__move(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    return _VSTD::__move_constexpr(__first, __last, __result);
}

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
typename enable_if
<
    is_same<typename remove_const<_Tp>::type, _Up>::value &&
    is_trivially_move_assignable<_Up>::value,
    _Up*
>::type
__move(_Tp* __first, _Tp* __last, _Up* __result)
{
    const size_t __n = static_cast<size_t>(__last - __first);
    if (__n > 0)
        _VSTD::memmove(__result, __first, __n * sizeof(_Up));
    return __result + __n;
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
move(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    if (__libcpp_is_constant_evaluated()) {
        return _VSTD::__move_constexpr(__first, __last, __result);
    } else {
        return _VSTD::__rewrap_iter(__result,
            _VSTD::__move(_VSTD::__unwrap_iter(__first),
                          _VSTD::__unwrap_iter(__last),
                          _VSTD::__unwrap_iter(__result)));
    }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MOVE_H
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/rotate.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ROTATE_H
#define _LIBCPP___ALGORITHM_ROTATE_H

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move.h>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move_backward.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MOVE_BACKWARD_H
#define _LIBCPP___ALGORITHM_MOVE_BACKWARD_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
_OutputIterator
__move_backward_constexpr(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    while (__first != __last)
        *--__result = _VSTD::move(*--__last);
    return __result;
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
_OutputIterator
__move_backward(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    return _VSTD::__move_backward_constexpr(__first, __last, __result);
}

template <class _Tp, class _Up>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
typename enable_if
<
    is_same<typename remove_const<_Tp>::type, _Up>::value &&
    is_trivially_move_assignable<_Up>::value,
    _Up*
>::type
__move_backward(_Tp* __first, _Tp* __last, _Up* __result)
{
    const size_t __n = static_cast<size_t>(__last - __first);
    if (__n > 0)
    {
        __result -= __n;
        _VSTD::memmove(__result, __first, __n * sizeof(_Up));
    }
    return __result;
}

template <class _BidirectionalIterator1, class _BidirectionalIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_BidirectionalIterator2
move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
              _BidirectionalIterator2 __result)
{
    if (__libcpp_is_constant_evaluated()) {
        return _VSTD::__move_backward_constexpr(__first, __last, __result);
    } else {
        return _VSTD::__rewrap_iter(__result,
            _VSTD::__move_backward(_VSTD::__unwrap_iter(__first),
                                   _VSTD::__unwrap_iter(__last),
                                   _VSTD::__unwrap_iter(__result)));
    }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MOVE_BACKWARD_H
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/move_backward.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/swap_ranges.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SWAP_RANGES_H
#define _LIBCPP___ALGORITHM_SWAP_RANGES_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator1, class _ForwardIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator2
swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) {
  for (; __first1 != __last1; ++__first1, (void)++__first2)
    swap(*__first1, *__first2);
  return __first2;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SWAP_RANGES_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/swap_ranges.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/next.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/prev.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
#endif
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _ForwardIterator
__rotate_left(_ForwardIterator __first, _ForwardIterator __last)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
    value_type __tmp = _VSTD::move(*__first);
    _ForwardIterator __lm1 = _VSTD::move(_VSTD::next(__first), __last, __first);
    *__lm1 = _VSTD::move(__tmp);
    return __lm1;
}

template <class _BidirectionalIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _BidirectionalIterator
__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    _BidirectionalIterator __lm1 = _VSTD::prev(__last);
    value_type __tmp = _VSTD::move(*__lm1);
    _BidirectionalIterator __fp1 = _VSTD::move_backward(__first, __lm1, __last);
    *__first = _VSTD::move(__tmp);
    return __fp1;
}

template <class _ForwardIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX14 _ForwardIterator
__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last)
{
    _ForwardIterator __i = __middle;
    while (true)
    {
        swap(*__first, *__i);
        ++__first;
        if (++__i == __last)
            break;
        if (__first == __middle)
            __middle = __i;
    }
    _ForwardIterator __r = __first;
    if (__first != __middle)
    {
        __i = __middle;
        while (true)
        {
            swap(*__first, *__i);
            ++__first;
            if (++__i == __last)
            {
                if (__first == __middle)
                    break;
                __i = __middle;
            }
            else if (__first == __middle)
                __middle = __i;
        }
    }
    return __r;
}

template<typename _Integral>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX14 _Integral
__algo_gcd(_Integral __x, _Integral __y)
{
    do
    {
        _Integral __t = __x % __y;
        __x = __y;
        __y = __t;
    } while (__y);
    return __x;
}

template<typename _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX14 _RandomAccessIterator
__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;

    const difference_type __m1 = __middle - __first;
    const difference_type __m2 = __last - __middle;
    if (__m1 == __m2)
    {
        _VSTD::swap_ranges(__first, __middle, __middle);
        return __middle;
    }
    const difference_type __g = _VSTD::__algo_gcd(__m1, __m2);
    for (_RandomAccessIterator __p = __first + __g; __p != __first;)
    {
        value_type __t(_VSTD::move(*--__p));
        _RandomAccessIterator __p1 = __p;
        _RandomAccessIterator __p2 = __p1 + __m1;
        do
        {
            *__p1 = _VSTD::move(*__p2);
            __p1 = __p2;
            const difference_type __d = __last - __p2;
            if (__m1 < __d)
                __p2 += __m1;
            else
                __p2 = __first + (__m1 - __d);
        } while (__p2 != __p);
        *__p1 = _VSTD::move(__t);
    }
    return __first + __m2;
}

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX11 _ForwardIterator
__rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last,
         _VSTD::forward_iterator_tag)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
    if (is_trivially_move_assignable<value_type>::value)
    {
        if (_VSTD::next(__first) == __middle)
            return _VSTD::__rotate_left(__first, __last);
    }
    return _VSTD::__rotate_forward(__first, __middle, __last);
}

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX11 _BidirectionalIterator
__rotate(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last,
         bidirectional_iterator_tag)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    if (is_trivially_move_assignable<value_type>::value)
    {
        if (_VSTD::next(__first) == __middle)
            return _VSTD::__rotate_left(__first, __last);
        if (_VSTD::next(__middle) == __last)
            return _VSTD::__rotate_right(__first, __last);
    }
    return _VSTD::__rotate_forward(__first, __middle, __last);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX11 _RandomAccessIterator
__rotate(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last,
         random_access_iterator_tag)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    if (is_trivially_move_assignable<value_type>::value)
    {
        if (_VSTD::next(__first) == __middle)
            return _VSTD::__rotate_left(__first, __last);
        if (_VSTD::next(__middle) == __last)
            return _VSTD::__rotate_right(__first, __last);
        return _VSTD::__rotate_gcd(__first, __middle, __last);
    }
    return _VSTD::__rotate_forward(__first, __middle, __last);
}

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last)
{
    if (__first == __middle)
        return __last;
    if (__middle == __last)
        return __first;
    return _VSTD::__rotate(__first, __middle, __last,
                           typename iterator_traits<_ForwardIterator>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ROTATE_H
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/upper_bound.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
#endif
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Predicate>
class __invert // invert the sense of a comparison
{
private:
    _Predicate __p_;
public:
    _LIBCPP_INLINE_VISIBILITY __invert() {}

    _LIBCPP_INLINE_VISIBILITY
    explicit __invert(_Predicate __p) : __p_(__p) {}

    template <class _T1>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _T1& __x) {return !__p_(__x);}

    template <class _T1, class _T2>
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _T1& __x, const _T2& __y) {return __p_(__y, __x);}
};

template <class _Compare, class _InputIterator1, class _InputIterator2,
          class _OutputIterator>
void __half_inplace_merge(_InputIterator1 __first1, _InputIterator1 __last1,
                          _InputIterator2 __first2, _InputIterator2 __last2,
                          _OutputIterator __result, _Compare __comp)
{
    for (; __first1 != __last1; ++__result)
    {
        if (__first2 == __last2)
        {
            _VSTD::move(__first1, __last1, __result);
            return;
        }

        if (__comp(*__first2, *__first1))
        {
            *__result = _VSTD::move(*__first2);
            ++__first2;
        }
        else
        {
            *__result = _VSTD::move(*__first1);
            ++__first1;
        }
    }
    // __first2 through __last2 are already in the right spot.
}

template <class _Compare, class _BidirectionalIterator>
void
__buffered_inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last,
                _Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1,
                                 typename iterator_traits<_BidirectionalIterator>::difference_type __len2,
                typename iterator_traits<_BidirectionalIterator>::value_type* __buff)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    __destruct_n __d(0);
    unique_ptr<value_type, __destruct_n&> __h2(__buff, __d);
    if (__len1 <= __len2)
    {
        value_type* __p = __buff;
        for (_BidirectionalIterator __i = __first; __i != __middle; __d.template __incr<value_type>(), (void) ++__i, (void) ++__p)
            ::new ((void*)__p) value_type(_VSTD::move(*__i));
        _VSTD::__half_inplace_merge<_Compare>(__buff, __p, __middle, __last, __first, __comp);
    }
    else
    {
        value_type* __p = __buff;
        for (_BidirectionalIterator __i = __middle; __i != __last; __d.template __incr<value_type>(), (void) ++__i, (void) ++__p)
            ::new ((void*)__p) value_type(_VSTD::move(*__i));
        typedef reverse_iterator<_BidirectionalIterator> _RBi;
        typedef reverse_iterator<value_type*> _Rv;
        typedef __invert<_Compare> _Inverted;
        _VSTD::__half_inplace_merge<_Inverted>(_Rv(__p), _Rv(__buff),
                                    _RBi(__middle), _RBi(__first),
                                    _RBi(__last), _Inverted(__comp));
    }
}

template <class _Compare, class _BidirectionalIterator>
void
__inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last,
                _Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1,
                                 typename iterator_traits<_BidirectionalIterator>::difference_type __len2,
                typename iterator_traits<_BidirectionalIterator>::value_type* __buff, ptrdiff_t __buff_size)
{
    typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type;
    while (true)
    {
        // if __middle == __last, we're done
        if (__len2 == 0)
            return;
        if (__len1 <= __buff_size || __len2 <= __buff_size)
            return _VSTD::__buffered_inplace_merge<_Compare>
                   (__first, __middle, __last, __comp, __len1, __len2, __buff);
        // shrink [__first, __middle) as much as possible (with no moves), returning if it shrinks to 0
        for (; true; ++__first, (void) --__len1)
        {
            if (__len1 == 0)
                return;
            if (__comp(*__middle, *__first))
                break;
        }
        // __first < __middle < __last
        // *__first > *__middle
        // partition [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) such that
        //     all elements in:
        //         [__first, __m1)  <= [__middle, __m2)
        //         [__middle, __m2) <  [__m1, __middle)
        //         [__m1, __middle) <= [__m2, __last)
        //     and __m1 or __m2 is in the middle of its range
        _BidirectionalIterator __m1;  // "median" of [__first, __middle)
        _BidirectionalIterator __m2;  // "median" of [__middle, __last)
        difference_type __len11;      // distance(__first, __m1)
        difference_type __len21;      // distance(__middle, __m2)
        // binary search smaller range
        if (__len1 < __len2)
        {   // __len >= 1, __len2 >= 2
            __len21 = __len2 / 2;
            __m2 = __middle;
            _VSTD::advance(__m2, __len21);
            __m1 = _VSTD::__upper_bound<_Compare>(__first, __middle, *__m2, __comp);
            __len11 = _VSTD::distance(__first, __m1);
        }
        else
        {
            if (__len1 == 1)
            {   // __len1 >= __len2 && __len2 > 0, therefore __len2 == 1
                // It is known *__first > *__middle
                swap(*__first, *__middle);
                return;
            }
            // __len1 >= 2, __len2 >= 1
            __len11 = __len1 / 2;
            __m1 = __first;
            _VSTD::advance(__m1, __len11);
            __m2 = _VSTD::__lower_bound<_Compare>(__middle, __last, *__m1, __comp);
            __len21 = _VSTD::distance(__middle, __m2);
        }
        difference_type __len12 = __len1 - __len11;  // distance(__m1, __middle)
        difference_type __len22 = __len2 - __len21;  // distance(__m2, __last)
        // [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last)
        // swap middle two partitions
        __middle = _VSTD::rotate(__m1, __middle, __m2);
        // __len12 and __len21 now have swapped meanings
        // merge smaller range with recursive call and larger with tail recursion elimination
        if (__len11 + __len21 < __len12 + __len22)
        {
            _VSTD::__inplace_merge<_Compare>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size);
//          _VSTD::__inplace_merge<_Compare>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size);
            __first = __middle;
            __middle = __m2;
            __len1 = __len12;
            __len2 = __len22;
        }
        else
        {
            _VSTD::__inplace_merge<_Compare>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size);
//          _VSTD::__inplace_merge<_Compare>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size);
            __last = __middle;
            __middle = __m1;
            __len1 = __len11;
            __len2 = __len21;
        }
    }
}

template <class _BidirectionalIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY
void
inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last,
              _Compare __comp)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type;
    difference_type __len1 = _VSTD::distance(__first, __middle);
    difference_type __len2 = _VSTD::distance(__middle, __last);
    difference_type __buf_size = _VSTD::min(__len1, __len2);
    pair<value_type*, ptrdiff_t> __buf = _VSTD::get_temporary_buffer<value_type>(__buf_size);
    unique_ptr<value_type, __return_temporary_buffer> __h(__buf.first);
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__inplace_merge<_Comp_ref>(__first, __middle, __last, __comp, __len1, __len2,
                                            __buf.first, __buf.second);
}

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY
void
inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last)
{
    _VSTD::inplace_merge(__first, __middle, __last,
                        __less<typename iterator_traits<_BidirectionalIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_INPLACE_MERGE_H
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/inplace_merge.h" 3
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_heap.h>
#endif /* expanded by -frewrite-includes */
# 692 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_HEAP_H
#define _LIBCPP___ALGORITHM_IS_HEAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_heap_until.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H
#define _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _RandomAccessIterator, class _Compare>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _RandomAccessIterator
is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    difference_type __len = __last - __first;
    difference_type __p = 0;
    difference_type __c = 1;
    _RandomAccessIterator __pp = __first;
    while (__c < __len)
    {
        _RandomAccessIterator __cp = __first + __c;
        if (__comp(*__pp, *__cp))
            return __cp;
        ++__c;
        ++__cp;
        if (__c == __len)
            return __last;
        if (__comp(*__pp, *__cp))
            return __cp;
        ++__p;
        ++__pp;
        __c = 2 * __p + 1;
    }
    return __last;
}

template<class _RandomAccessIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_RandomAccessIterator
is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    return _VSTD::is_heap_until(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap_until.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _RandomAccessIterator, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    return _VSTD::is_heap_until(__first, __last, __comp) == __last;
}

template<class _RandomAccessIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    return _VSTD::is_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_HEAP_H
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_heap.h" 3
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_heap_until.h>
#endif /* expanded by -frewrite-includes */
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_partitioned.h>
#endif /* expanded by -frewrite-includes */
# 694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_PARTITIONED_H
#define _LIBCPP___ALGORITHM_IS_PARTITIONED_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred)
{
    for (; __first != __last; ++__first)
        if (!__pred(*__first))
            break;
    if ( __first == __last )
        return true;
    ++__first;
    for (; __first != __last; ++__first)
        if (__pred(*__first))
            return false;
    return true;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_PARTITIONED_H
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_partitioned.h" 3
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_permutation.h>
#endif /* expanded by -frewrite-includes */
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_PERMUTATION_H
#define _LIBCPP___ALGORITHM_IS_PERMUTATION_H

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/next.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator> // FIXME: replace with <__iterator/distance.h> when it lands
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
               _BinaryPredicate __pred) {
  //  shorten sequences as much as possible by lopping of any equal prefix
  for (; __first1 != __last1; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      break;
  if (__first1 == __last1)
    return true;

  //  __first1 != __last1 && *__first1 != *__first2
  typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1;
  _D1 __l1 = _VSTD::distance(__first1, __last1);
  if (__l1 == _D1(1))
    return false;
  _ForwardIterator2 __last2 = _VSTD::next(__first2, __l1);
  // For each element in [f1, l1) see if there are the same number of
  //    equal elements in [f2, l2)
  for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i) {
    //  Have we already counted the number of *__i in [f1, l1)?
    _ForwardIterator1 __match = __first1;
    for (; __match != __i; ++__match)
      if (__pred(*__match, *__i))
        break;
    if (__match == __i) {
      // Count number of *__i in [f2, l2)
      _D1 __c2 = 0;
      for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j)
        if (__pred(*__i, *__j))
          ++__c2;
      if (__c2 == 0)
        return false;
      // Count number of *__i in [__i, l1) (we can start with 1)
      _D1 __c1 = 1;
      for (_ForwardIterator1 __j = _VSTD::next(__i); __j != __last1; ++__j)
        if (__pred(*__i, *__j))
          ++__c1;
      if (__c1 != __c2)
        return false;
    }
  }
  return true;
}

template <class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) {
  typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
  typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
  return _VSTD::is_permutation(__first1, __last1, __first2, __equal_to<__v1, __v2>());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
                 _ForwardIterator2 __last2, _BinaryPredicate __pred, forward_iterator_tag, forward_iterator_tag) {
  //  shorten sequences as much as possible by lopping of any equal prefix
  for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      break;
  if (__first1 == __last1)
    return __first2 == __last2;
  else if (__first2 == __last2)
    return false;

  typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1;
  _D1 __l1 = _VSTD::distance(__first1, __last1);

  typedef typename iterator_traits<_ForwardIterator2>::difference_type _D2;
  _D2 __l2 = _VSTD::distance(__first2, __last2);
  if (__l1 != __l2)
    return false;

  // For each element in [f1, l1) see if there are the same number of
  //    equal elements in [f2, l2)
  for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i) {
    //  Have we already counted the number of *__i in [f1, l1)?
    _ForwardIterator1 __match = __first1;
    for (; __match != __i; ++__match)
      if (__pred(*__match, *__i))
        break;
    if (__match == __i) {
      // Count number of *__i in [f2, l2)
      _D1 __c2 = 0;
      for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j)
        if (__pred(*__i, *__j))
          ++__c2;
      if (__c2 == 0)
        return false;
      // Count number of *__i in [__i, l1) (we can start with 1)
      _D1 __c1 = 1;
      for (_ForwardIterator1 __j = _VSTD::next(__i); __j != __last1; ++__j)
        if (__pred(*__i, *__j))
          ++__c1;
      if (__c1 != __c2)
        return false;
    }
  }
  return true;
}

template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool __is_permutation(_RandomAccessIterator1 __first1, _RandomAccessIterator2 __last1,
                                                    _RandomAccessIterator1 __first2, _RandomAccessIterator2 __last2,
                                                    _BinaryPredicate __pred, random_access_iterator_tag,
                                                    random_access_iterator_tag) {
  if (_VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2))
    return false;
  return _VSTD::is_permutation<_RandomAccessIterator1, _RandomAccessIterator2,
                               typename add_lvalue_reference<_BinaryPredicate>::type>(__first1, __last1, __first2,
                                                                                      __pred);
}

template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
               _ForwardIterator2 __last2, _BinaryPredicate __pred) {
  return _VSTD::__is_permutation<typename add_lvalue_reference<_BinaryPredicate>::type>(
      __first1, __last1, __first2, __last2, __pred, typename iterator_traits<_ForwardIterator1>::iterator_category(),
      typename iterator_traits<_ForwardIterator2>::iterator_category());
}

template <class _ForwardIterator1, class _ForwardIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
               _ForwardIterator2 __last2) {
  typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
  typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
  return _VSTD::__is_permutation(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>(),
                                 typename iterator_traits<_ForwardIterator1>::iterator_category(),
                                 typename iterator_traits<_ForwardIterator2>::iterator_category());
}
#endif
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_PERMUTATION_H
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_permutation.h" 3
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_sorted.h>
#endif /* expanded by -frewrite-includes */
# 696 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_SORTED_H
#define _LIBCPP___ALGORITHM_IS_SORTED_H

#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_sorted_until.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H
#define _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Compare>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
{
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
        {
            if (__comp(*__i, *__first))
                return __i;
            __first = __i;
        }
    }
    return __last;
}

template<class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
is_sorted_until(_ForwardIterator __first, _ForwardIterator __last)
{
    return _VSTD::is_sorted_until(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted_until.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
{
    return _VSTD::is_sorted_until(__first, __last, __comp) == __last;
}

template<class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
is_sorted(_ForwardIterator __first, _ForwardIterator __last)
{
    return _VSTD::is_sorted(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_IS_SORTED_H
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/is_sorted.h" 3
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/is_sorted_until.h>
#endif /* expanded by -frewrite-includes */
# 697 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/iter_swap.h>
#endif /* expanded by -frewrite-includes */
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ITER_SWAP_H
#define _LIBCPP___ALGORITHM_ITER_SWAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/declval.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator1, class _ForwardIterator2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void iter_swap(_ForwardIterator1 __a,
                                                                              _ForwardIterator2 __b)
    //                                  _NOEXCEPT_(_NOEXCEPT_(swap(*__a, *__b)))
    _NOEXCEPT_(_NOEXCEPT_(swap(*declval<_ForwardIterator1>(), *declval<_ForwardIterator2>()))) {
  swap(*__a, *__b);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ITER_SWAP_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/iter_swap.h" 3
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/lexicographical_compare.h>
#endif /* expanded by -frewrite-includes */
# 699 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H
#define _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,
                          _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp)
{
    for (; __first2 != __last2; ++__first1, (void) ++__first2)
    {
        if (__first1 == __last1 || __comp(*__first1, *__first2))
            return true;
        if (__comp(*__first2, *__first1))
            return false;
    }
    return false;
}

template <class _InputIterator1, class _InputIterator2, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,
                        _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__lexicographical_compare<_Comp_ref>(__first1, __last1, __first2, __last2, __comp);
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,
                        _InputIterator2 __first2, _InputIterator2 __last2)
{
    return _VSTD::lexicographical_compare(__first1, __last1, __first2, __last2,
                                         __less<typename iterator_traits<_InputIterator1>::value_type,
                                                typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/lexicographical_compare.h" 3
# 700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/lower_bound.h>
#endif /* expanded by -frewrite-includes */
# 700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 701 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/make_heap.h>
#endif /* expanded by -frewrite-includes */
# 701 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MAKE_HEAP_H
#define _LIBCPP___ALGORITHM_MAKE_HEAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sift_down.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SIFT_DOWN_H
#define _LIBCPP___ALGORITHM_SIFT_DOWN_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 void
__sift_down(_RandomAccessIterator __first, _RandomAccessIterator /*__last*/,
            _Compare __comp,
            typename iterator_traits<_RandomAccessIterator>::difference_type __len,
            _RandomAccessIterator __start)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    // left-child of __start is at 2 * __start + 1
    // right-child of __start is at 2 * __start + 2
    difference_type __child = __start - __first;

    if (__len < 2 || (__len - 2) / 2 < __child)
        return;

    __child = 2 * __child + 1;
    _RandomAccessIterator __child_i = __first + __child;

    if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) {
        // right-child exists and is greater than left-child
        ++__child_i;
        ++__child;
    }

    // check if we are in heap-order
    if (__comp(*__child_i, *__start))
        // we are, __start is larger than it's largest child
        return;

    value_type __top(_VSTD::move(*__start));
    do
    {
        // we are not in heap-order, swap the parent with its largest child
        *__start = _VSTD::move(*__child_i);
        __start = __child_i;

        if ((__len - 2) / 2 < __child)
            break;

        // recompute the child based off of the updated parent
        __child = 2 * __child + 1;
        __child_i = __first + __child;

        if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) {
            // right-child exists and is greater than left-child
            ++__child_i;
            ++__child;
        }

        // check if we are in heap-order
    } while (!__comp(*__child_i, __top));
    *__start = _VSTD::move(__top);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SIFT_DOWN_H
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sift_down.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 void
__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    difference_type __n = __last - __first;
    if (__n > 1)
    {
        // start from the first parent, there is no need to consider children
        for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start)
        {
            _VSTD::__sift_down<_Compare>(__first, __last, __comp, __n, __first + __start);
        }
    }
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__make_heap<_Comp_ref>(__first, __last, __comp);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::make_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MAKE_HEAP_H
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/make_heap.h" 3
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/max.h>
#endif /* expanded by -frewrite-includes */
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MAX_H
#define _LIBCPP___ALGORITHM_MAX_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/max_element.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MAX_ELEMENT_H
#define _LIBCPP___ALGORITHM_MAX_ELEMENT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_ForwardIterator
max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
{
    static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value,
        "std::max_element requires a ForwardIterator");
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
            if (__comp(*__first, *__i))
                __first = __i;
    }
    return __first;
}


template <class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_ForwardIterator
max_element(_ForwardIterator __first, _ForwardIterator __last)
{
    return _VSTD::max_element(__first, __last,
              __less<typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MAX_ELEMENT_H
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
    return __comp(__a, __b) ? __b : __a;
}

template <class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
max(const _Tp& __a, const _Tp& __b)
{
    return _VSTD::max(__a, __b, __less<_Tp>());
}

#ifndef _LIBCPP_CXX03_LANG

template<class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp
max(initializer_list<_Tp> __t, _Compare __comp)
{
    return *_VSTD::max_element(__t.begin(), __t.end(), __comp);
}

template<class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
_Tp
max(initializer_list<_Tp> __t)
{
    return *_VSTD::max_element(__t.begin(), __t.end(), __less<_Tp>());
}

#endif // _LIBCPP_CXX03_LANG
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MAX_H
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/max.h" 3
# 703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/max_element.h>
#endif /* expanded by -frewrite-includes */
# 703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/merge.h>
#endif /* expanded by -frewrite-includes */
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MERGE_H
#define _LIBCPP___ALGORITHM_MERGE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
__merge(_InputIterator1 __first1, _InputIterator1 __last1,
        _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    for (; __first1 != __last1; ++__result)
    {
        if (__first2 == __last2)
            return _VSTD::copy(__first1, __last1, __result);
        if (__comp(*__first2, *__first1))
        {
            *__result = *__first2;
            ++__first2;
        }
        else
        {
            *__result = *__first1;
            ++__first1;
        }
    }
    return _VSTD::copy(__first2, __last2, __result);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
merge(_InputIterator1 __first1, _InputIterator1 __last1,
      _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__merge<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
merge(_InputIterator1 __first1, _InputIterator1 __last1,
      _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
{
    typedef typename iterator_traits<_InputIterator1>::value_type __v1;
    typedef typename iterator_traits<_InputIterator2>::value_type __v2;
    return _VSTD::merge(__first1, __last1, __first2, __last2, __result, __less<__v1, __v2>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MERGE_H
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/merge.h" 3
# 705 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min.h>
#endif /* expanded by -frewrite-includes */
# 705 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min_element.h>
#endif /* expanded by -frewrite-includes */
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/minmax.h>
#endif /* expanded by -frewrite-includes */
# 707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MINMAX_H
#define _LIBCPP___ALGORITHM_MINMAX_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3


#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<const _Tp&, const _Tp&>
minmax(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
    return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a) :
                              pair<const _Tp&, const _Tp&>(__a, __b);
}

template<class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<const _Tp&, const _Tp&>
minmax(const _Tp& __a, const _Tp& __b)
{
    return _VSTD::minmax(__a, __b, __less<_Tp>());
}

#ifndef _LIBCPP_CXX03_LANG

template<class _Tp, class _Compare>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<_Tp, _Tp>
minmax(initializer_list<_Tp> __t, _Compare __comp)
{
    typedef typename initializer_list<_Tp>::const_iterator _Iter;
    _Iter __first = __t.begin();
    _Iter __last  = __t.end();
    pair<_Tp, _Tp> __result(*__first, *__first);

    ++__first;
    if (__t.size() % 2 == 0)
    {
        if (__comp(*__first,  __result.first))
            __result.first  = *__first;
        else
            __result.second = *__first;
        ++__first;
    }

    while (__first != __last)
    {
        _Tp __prev = *__first++;
        if (__comp(*__first, __prev)) {
            if ( __comp(*__first, __result.first)) __result.first  = *__first;
            if (!__comp(__prev, __result.second))  __result.second = __prev;
            }
        else {
            if ( __comp(__prev, __result.first))    __result.first  = __prev;
            if (!__comp(*__first, __result.second)) __result.second = *__first;
            }

        __first++;
    }
    return __result;
}

template<class _Tp>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<_Tp, _Tp>
minmax(initializer_list<_Tp> __t)
{
    return _VSTD::minmax(__t, __less<_Tp>());
}

#endif // _LIBCPP_CXX03_LANG
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MINMAX_H
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax.h" 3
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/minmax_element.h>
#endif /* expanded by -frewrite-includes */
# 708 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H
#define _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Compare>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<_ForwardIterator, _ForwardIterator>
minmax_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
{
  static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value,
        "std::minmax_element requires a ForwardIterator");
  pair<_ForwardIterator, _ForwardIterator> __result(__first, __first);
  if (__first != __last)
  {
      if (++__first != __last)
      {
          if (__comp(*__first, *__result.first))
              __result.first = __first;
          else
              __result.second = __first;
          while (++__first != __last)
          {
              _ForwardIterator __i = __first;
              if (++__first == __last)
              {
                  if (__comp(*__i, *__result.first))
                      __result.first = __i;
                  else if (!__comp(*__i, *__result.second))
                      __result.second = __i;
                  break;
              }
              else
              {
                  if (__comp(*__first, *__i))
                  {
                      if (__comp(*__first, *__result.first))
                          __result.first = __first;
                      if (!__comp(*__i, *__result.second))
                          __result.second = __i;
                  }
                  else
                  {
                      if (__comp(*__i, *__result.first))
                          __result.first = __i;
                      if (!__comp(*__first, *__result.second))
                          __result.second = __first;
                  }
              }
          }
      }
  }
  return __result;
}

template <class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
pair<_ForwardIterator, _ForwardIterator>
minmax_element(_ForwardIterator __first, _ForwardIterator __last)
{
    return _VSTD::minmax_element(__first, __last,
              __less<typename iterator_traits<_ForwardIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/minmax_element.h" 3
# 709 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/mismatch.h>
#endif /* expanded by -frewrite-includes */
# 709 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_MISMATCH_H
#define _LIBCPP___ALGORITHM_MISMATCH_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_InputIterator1, _InputIterator2>
    mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) {
  for (; __first1 != __last1; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      break;
  return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_InputIterator1, _InputIterator2>
    mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) {
  typedef typename iterator_traits<_InputIterator1>::value_type __v1;
  typedef typename iterator_traits<_InputIterator2>::value_type __v2;
  return _VSTD::mismatch(__first1, __last1, __first2, __equal_to<__v1, __v2>());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_InputIterator1, _InputIterator2>
    mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2,
             _BinaryPredicate __pred) {
  for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2)
    if (!__pred(*__first1, *__first2))
      break;
  return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
}

template <class _InputIterator1, class _InputIterator2>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_InputIterator1, _InputIterator2>
    mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) {
  typedef typename iterator_traits<_InputIterator1>::value_type __v1;
  typedef typename iterator_traits<_InputIterator2>::value_type __v2;
  return _VSTD::mismatch(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>());
}
#endif
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_MISMATCH_H
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/mismatch.h" 3
# 710 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move.h>
#endif /* expanded by -frewrite-includes */
# 710 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move_backward.h>
#endif /* expanded by -frewrite-includes */
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/next_permutation.h>
#endif /* expanded by -frewrite-includes */
# 712 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H
#define _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/reverse.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REVERSE_H
#define _LIBCPP___ALGORITHM_REVERSE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/iter_swap.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
__reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag)
{
    while (__first != __last)
    {
        if (__first == --__last)
            break;
        _VSTD::iter_swap(__first, __last);
        ++__first;
    }
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
__reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag)
{
    if (__first != __last)
        for (; __first < --__last; ++__first)
            _VSTD::iter_swap(__first, __last);
}

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
{
    _VSTD::__reverse(__first, __last, typename iterator_traits<_BidirectionalIterator>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REVERSE_H
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _BidirectionalIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    _BidirectionalIterator __i = __last;
    if (__first == __last || __first == --__i)
        return false;
    while (true)
    {
        _BidirectionalIterator __ip1 = __i;
        if (__comp(*--__i, *__ip1))
        {
            _BidirectionalIterator __j = __last;
            while (!__comp(*__i, *--__j))
                ;
            swap(*__i, *__j);
            _VSTD::reverse(__ip1, __last);
            return true;
        }
        if (__i == __first)
        {
            _VSTD::reverse(__first, __last);
            return false;
        }
    }
}

template <class _BidirectionalIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__next_permutation<_Comp_ref>(__first, __last, __comp);
}

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last)
{
    return _VSTD::next_permutation(__first, __last,
                                  __less<typename iterator_traits<_BidirectionalIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/next_permutation.h" 3
# 713 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/none_of.h>
#endif /* expanded by -frewrite-includes */
# 713 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_NONE_OF_H
#define _LIBCPP___ALGORITHM_NONE_OF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3
#endif
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool
none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
  for (; __first != __last; ++__first)
    if (__pred(*__first))
      return false;
  return true;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_NONE_OF_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/none_of.h" 3
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/nth_element.h>
#endif /* expanded by -frewrite-includes */
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_NTH_ELEMENT_H
#define _LIBCPP___ALGORITHM_NTH_ELEMENT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SORT_H
#define _LIBCPP___ALGORITHM_SORT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min_element.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partial_sort.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PARTIAL_SORT_H
#define _LIBCPP___ALGORITHM_PARTIAL_SORT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/make_heap.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sift_down.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort_heap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SORT_HEAP_H
#define _LIBCPP___ALGORITHM_SORT_HEAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/pop_heap.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_POP_HEAP_H
#define _LIBCPP___ALGORITHM_POP_HEAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sift_down.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp,
           typename iterator_traits<_RandomAccessIterator>::difference_type __len)
{
    if (__len > 1)
    {
        swap(*__first, *--__last);
        _VSTD::__sift_down<_Compare>(__first, __last, __comp, __len - 1, __first);
    }
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__pop_heap<_Comp_ref>(__first, __last, __comp, __last - __first);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::pop_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_POP_HEAP_H
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/pop_heap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 void
__sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    for (difference_type __n = __last - __first; __n > 1; --__last, (void) --__n)
        _VSTD::__pop_heap<_Compare>(__first, __last, __comp, __n);
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__sort_heap<_Comp_ref>(__first, __last, __comp);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::sort_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SORT_HEAP_H
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort_heap.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 void
__partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last,
             _Compare __comp)
{
    _VSTD::__make_heap<_Compare>(__first, __middle, __comp);
    typename iterator_traits<_RandomAccessIterator>::difference_type __len = __middle - __first;
    for (_RandomAccessIterator __i = __middle; __i != __last; ++__i)
    {
        if (__comp(*__i, *__first))
        {
            swap(*__i, *__first);
            _VSTD::__sift_down<_Compare>(__first, __middle, __comp, __len, __first);
        }
    }
    _VSTD::__sort_heap<_Compare>(__first, __middle, __comp);
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last,
             _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__partial_sort<_Comp_ref>(__first, __middle, __last, __comp);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last)
{
    _VSTD::partial_sort(__first, __middle, __last,
                       __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_H
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
#endif
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// stable, 2-3 compares, 0-2 swaps

template <class _Compare, class _ForwardIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 unsigned
__sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, _Compare __c)
{
    unsigned __r = 0;
    if (!__c(*__y, *__x))          // if x <= y
    {
        if (!__c(*__z, *__y))      // if y <= z
            return __r;            // x <= y && y <= z
                                   // x <= y && y > z
        swap(*__y, *__z);          // x <= z && y < z
        __r = 1;
        if (__c(*__y, *__x))       // if x > y
        {
            swap(*__x, *__y);      // x < y && y <= z
            __r = 2;
        }
        return __r;                // x <= y && y < z
    }
    if (__c(*__z, *__y))           // x > y, if y > z
    {
        swap(*__x, *__z);          // x < y && y < z
        __r = 1;
        return __r;
    }
    swap(*__x, *__y);              // x > y && y <= z
    __r = 1;                       // x < y && x <= z
    if (__c(*__z, *__y))           // if y > z
    {
        swap(*__y, *__z);          // x <= y && y < z
        __r = 2;
    }
    return __r;
}                                  // x <= y && y <= z

// stable, 3-6 compares, 0-5 swaps

template <class _Compare, class _ForwardIterator>
unsigned
__sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3,
            _ForwardIterator __x4, _Compare __c)
{
    unsigned __r = _VSTD::__sort3<_Compare>(__x1, __x2, __x3, __c);
    if (__c(*__x4, *__x3))
    {
        swap(*__x3, *__x4);
        ++__r;
        if (__c(*__x3, *__x2))
        {
            swap(*__x2, *__x3);
            ++__r;
            if (__c(*__x2, *__x1))
            {
                swap(*__x1, *__x2);
                ++__r;
            }
        }
    }
    return __r;
}

// stable, 4-10 compares, 0-9 swaps

template <class _Compare, class _ForwardIterator>
_LIBCPP_HIDDEN
unsigned
__sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3,
            _ForwardIterator __x4, _ForwardIterator __x5, _Compare __c)
{
    unsigned __r = _VSTD::__sort4<_Compare>(__x1, __x2, __x3, __x4, __c);
    if (__c(*__x5, *__x4))
    {
        swap(*__x4, *__x5);
        ++__r;
        if (__c(*__x4, *__x3))
        {
            swap(*__x3, *__x4);
            ++__r;
            if (__c(*__x3, *__x2))
            {
                swap(*__x2, *__x3);
                ++__r;
                if (__c(*__x2, *__x1))
                {
                    swap(*__x1, *__x2);
                    ++__r;
                }
            }
        }
    }
    return __r;
}

// Assumes size > 0
template <class _Compare, class _BidirectionalIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 void
__selection_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    _BidirectionalIterator __lm1 = __last;
    for (--__lm1; __first != __lm1; ++__first)
    {
        _BidirectionalIterator __i = _VSTD::min_element<_BidirectionalIterator,
                                                        typename add_lvalue_reference<_Compare>::type>
                                                       (__first, __last, __comp);
        if (__i != __first)
            swap(*__first, *__i);
    }
}

template <class _Compare, class _BidirectionalIterator>
void
__insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    if (__first != __last)
    {
        _BidirectionalIterator __i = __first;
        for (++__i; __i != __last; ++__i)
        {
            _BidirectionalIterator __j = __i;
            value_type __t(_VSTD::move(*__j));
            for (_BidirectionalIterator __k = __i; __k != __first && __comp(__t,  *--__k); --__j)
                *__j = _VSTD::move(*__k);
            *__j = _VSTD::move(__t);
        }
    }
}

template <class _Compare, class _RandomAccessIterator>
void
__insertion_sort_3(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    _RandomAccessIterator __j = __first+2;
    _VSTD::__sort3<_Compare>(__first, __first+1, __j, __comp);
    for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i)
    {
        if (__comp(*__i, *__j))
        {
            value_type __t(_VSTD::move(*__i));
            _RandomAccessIterator __k = __j;
            __j = __i;
            do
            {
                *__j = _VSTD::move(*__k);
                __j = __k;
            } while (__j != __first && __comp(__t, *--__k));
            *__j = _VSTD::move(__t);
        }
        __j = __i;
    }
}

template <class _Compare, class _RandomAccessIterator>
bool
__insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    switch (__last - __first)
    {
    case 0:
    case 1:
        return true;
    case 2:
        if (__comp(*--__last, *__first))
            swap(*__first, *__last);
        return true;
    case 3:
        _VSTD::__sort3<_Compare>(__first, __first+1, --__last, __comp);
        return true;
    case 4:
        _VSTD::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp);
        return true;
    case 5:
        _VSTD::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp);
        return true;
    }
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    _RandomAccessIterator __j = __first+2;
    _VSTD::__sort3<_Compare>(__first, __first+1, __j, __comp);
    const unsigned __limit = 8;
    unsigned __count = 0;
    for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i)
    {
        if (__comp(*__i, *__j))
        {
            value_type __t(_VSTD::move(*__i));
            _RandomAccessIterator __k = __j;
            __j = __i;
            do
            {
                *__j = _VSTD::move(*__k);
                __j = __k;
            } while (__j != __first && __comp(__t, *--__k));
            *__j = _VSTD::move(__t);
            if (++__count == __limit)
                return ++__i == __last;
        }
        __j = __i;
    }
    return true;
}

template <class _Compare, class _BidirectionalIterator>
void
__insertion_sort_move(_BidirectionalIterator __first1, _BidirectionalIterator __last1,
                      typename iterator_traits<_BidirectionalIterator>::value_type* __first2, _Compare __comp)
{
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    if (__first1 != __last1)
    {
        __destruct_n __d(0);
        unique_ptr<value_type, __destruct_n&> __h(__first2, __d);
        value_type* __last2 = __first2;
        ::new ((void*)__last2) value_type(_VSTD::move(*__first1));
        __d.template __incr<value_type>();
        for (++__last2; ++__first1 != __last1; ++__last2)
        {
            value_type* __j2 = __last2;
            value_type* __i2 = __j2;
            if (__comp(*__first1, *--__i2))
            {
                ::new ((void*)__j2) value_type(_VSTD::move(*__i2));
                __d.template __incr<value_type>();
                for (--__j2; __i2 != __first2 && __comp(*__first1,  *--__i2); --__j2)
                    *__j2 = _VSTD::move(*__i2);
                *__j2 = _VSTD::move(*__first1);
            }
            else
            {
                ::new ((void*)__j2) value_type(_VSTD::move(*__first1));
                __d.template __incr<value_type>();
            }
        }
        __h.release();
    }
}

template <class _Compare, class _RandomAccessIterator>
void
__sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    const difference_type __limit = is_trivially_copy_constructible<value_type>::value &&
                                    is_trivially_copy_assignable<value_type>::value ? 30 : 6;
    while (true)
    {
    __restart:
        difference_type __len = __last - __first;
        switch (__len)
        {
        case 0:
        case 1:
            return;
        case 2:
            if (__comp(*--__last, *__first))
                swap(*__first, *__last);
            return;
        case 3:
            _VSTD::__sort3<_Compare>(__first, __first+1, --__last, __comp);
            return;
        case 4:
            _VSTD::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp);
            return;
        case 5:
            _VSTD::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp);
            return;
        }
        if (__len <= __limit)
        {
            _VSTD::__insertion_sort_3<_Compare>(__first, __last, __comp);
            return;
        }
        // __len > 5
        _RandomAccessIterator __m = __first;
        _RandomAccessIterator __lm1 = __last;
        --__lm1;
        unsigned __n_swaps;
        {
        difference_type __delta;
        if (__len >= 1000)
        {
            __delta = __len/2;
            __m += __delta;
            __delta /= 2;
            __n_swaps = _VSTD::__sort5<_Compare>(__first, __first + __delta, __m, __m+__delta, __lm1, __comp);
        }
        else
        {
            __delta = __len/2;
            __m += __delta;
            __n_swaps = _VSTD::__sort3<_Compare>(__first, __m, __lm1, __comp);
        }
        }
        // *__m is median
        // partition [__first, __m) < *__m and *__m <= [__m, __last)
        // (this inhibits tossing elements equivalent to __m around unnecessarily)
        _RandomAccessIterator __i = __first;
        _RandomAccessIterator __j = __lm1;
        // j points beyond range to be tested, *__m is known to be <= *__lm1
        // The search going up is known to be guarded but the search coming down isn't.
        // Prime the downward search with a guard.
        if (!__comp(*__i, *__m))  // if *__first == *__m
        {
            // *__first == *__m, *__first doesn't go in first part
            // manually guard downward moving __j against __i
            while (true)
            {
                if (__i == --__j)
                {
                    // *__first == *__m, *__m <= all other elements
                    // Parition instead into [__first, __i) == *__first and *__first < [__i, __last)
                    ++__i;  // __first + 1
                    __j = __last;
                    if (!__comp(*__first, *--__j))  // we need a guard if *__first == *(__last-1)
                    {
                        while (true)
                        {
                            if (__i == __j)
                                return;  // [__first, __last) all equivalent elements
                            if (__comp(*__first, *__i))
                            {
                                swap(*__i, *__j);
                                ++__n_swaps;
                                ++__i;
                                break;
                            }
                            ++__i;
                        }
                    }
                    // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1
                    if (__i == __j)
                        return;
                    while (true)
                    {
                        while (!__comp(*__first, *__i))
                            ++__i;
                        while (__comp(*__first, *--__j))
                            ;
                        if (__i >= __j)
                            break;
                        swap(*__i, *__j);
                        ++__n_swaps;
                        ++__i;
                    }
                    // [__first, __i) == *__first and *__first < [__i, __last)
                    // The first part is sorted, sort the second part
                    // _VSTD::__sort<_Compare>(__i, __last, __comp);
                    __first = __i;
                    goto __restart;
                }
                if (__comp(*__j, *__m))
                {
                    swap(*__i, *__j);
                    ++__n_swaps;
                    break;  // found guard for downward moving __j, now use unguarded partition
                }
            }
        }
        // It is known that *__i < *__m
        ++__i;
        // j points beyond range to be tested, *__m is known to be <= *__lm1
        // if not yet partitioned...
        if (__i < __j)
        {
            // known that *(__i - 1) < *__m
            // known that __i <= __m
            while (true)
            {
                // __m still guards upward moving __i
                while (__comp(*__i, *__m))
                    ++__i;
                // It is now known that a guard exists for downward moving __j
                while (!__comp(*--__j, *__m))
                    ;
                if (__i > __j)
                    break;
                swap(*__i, *__j);
                ++__n_swaps;
                // It is known that __m != __j
                // If __m just moved, follow it
                if (__m == __i)
                    __m = __j;
                ++__i;
            }
        }
        // [__first, __i) < *__m and *__m <= [__i, __last)
        if (__i != __m && __comp(*__m, *__i))
        {
            swap(*__i, *__m);
            ++__n_swaps;
        }
        // [__first, __i) < *__i and *__i <= [__i+1, __last)
        // If we were given a perfect partition, see if insertion sort is quick...
        if (__n_swaps == 0)
        {
            bool __fs = _VSTD::__insertion_sort_incomplete<_Compare>(__first, __i, __comp);
            if (_VSTD::__insertion_sort_incomplete<_Compare>(__i+1, __last, __comp))
            {
                if (__fs)
                    return;
                __last = __i;
                continue;
            }
            else
            {
                if (__fs)
                {
                    __first = ++__i;
                    continue;
                }
            }
        }
        // sort smaller range with recursive call and larger with tail recursion elimination
        if (__i - __first < __last - __i)
        {
            _VSTD::__sort<_Compare>(__first, __i, __comp);
            // _VSTD::__sort<_Compare>(__i+1, __last, __comp);
            __first = ++__i;
        }
        else
        {
            _VSTD::__sort<_Compare>(__i+1, __last, __comp);
            // _VSTD::__sort<_Compare>(__first, __i, __comp);
            __last = __i;
        }
    }
}

template <class _Compare, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
void
__sort(_Tp** __first, _Tp** __last, __less<_Tp*>&)
{
    __less<uintptr_t> __comp;
    _VSTD::__sort<__less<uintptr_t>&, uintptr_t*>((uintptr_t*)__first, (uintptr_t*)__last, __comp);
}

_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<char>&, char*>(char*, char*, __less<char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<short>&, short*>(short*, short*, __less<short>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, __less<unsigned short>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<int>&, int*>(int*, int*, __less<int>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned>&, unsigned*>(unsigned*, unsigned*, __less<unsigned>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<long>&, long*>(long*, long*, __less<long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, __less<unsigned long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<long long>&, long long*>(long long*, long long*, __less<long long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned long long>&, unsigned long long*>(unsigned long long*, unsigned long long*, __less<unsigned long long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<float>&, float*>(float*, float*, __less<float>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<double>&, double*>(double*, double*, __less<double>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&))

_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<char>&, char*>(char*, char*, __less<char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<short>&, short*>(short*, short*, __less<short>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, __less<unsigned short>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<int>&, int*>(int*, int*, __less<int>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned>&, unsigned*>(unsigned*, unsigned*, __less<unsigned>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<long>&, long*>(long*, long*, __less<long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, __less<unsigned long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<long long>&, long long*>(long long*, long long*, __less<long long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned long long>&, unsigned long long*>(unsigned long long*, unsigned long long*, __less<unsigned long long>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<float>&, float*>(float*, float*, __less<float>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<double>&, double*>(double*, double*, __less<double>&))
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<long double>&, long double*>(long double*, long double*, __less<long double>&))

_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS unsigned __sort5<__less<long double>&, long double*>(long double*, long double*, long double*, long double*, long double*, __less<long double>&))

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    if (__libcpp_is_constant_evaluated()) {
        _VSTD::__partial_sort<_Comp_ref>(__first, __last, __last, _Comp_ref(__comp));
    } else {
        _VSTD::__sort<_Comp_ref>(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _Comp_ref(__comp));
    }
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SORT_H
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sort.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 bool
__nth_element_find_guard(_RandomAccessIterator& __i, _RandomAccessIterator& __j,
                         _RandomAccessIterator __m, _Compare __comp)
{
    // manually guard downward moving __j against __i
    while (true) {
        if (__i == --__j) {
            return false;
        }
        if (__comp(*__j, *__m)) {
            return true;  // found guard for downward moving __j, now use unguarded partition
        }
    }
}

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 void
__nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp)
{
    // _Compare is known to be a reference type
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    const difference_type __limit = 7;
    while (true)
    {
        if (__nth == __last)
            return;
        difference_type __len = __last - __first;
        switch (__len)
        {
        case 0:
        case 1:
            return;
        case 2:
            if (__comp(*--__last, *__first))
                swap(*__first, *__last);
            return;
        case 3:
            {
            _RandomAccessIterator __m = __first;
            _VSTD::__sort3<_Compare>(__first, ++__m, --__last, __comp);
            return;
            }
        }
        if (__len <= __limit)
        {
            _VSTD::__selection_sort<_Compare>(__first, __last, __comp);
            return;
        }
        // __len > __limit >= 3
        _RandomAccessIterator __m = __first + __len/2;
        _RandomAccessIterator __lm1 = __last;
        unsigned __n_swaps = _VSTD::__sort3<_Compare>(__first, __m, --__lm1, __comp);
        // *__m is median
        // partition [__first, __m) < *__m and *__m <= [__m, __last)
        // (this inhibits tossing elements equivalent to __m around unnecessarily)
        _RandomAccessIterator __i = __first;
        _RandomAccessIterator __j = __lm1;
        // j points beyond range to be tested, *__lm1 is known to be <= *__m
        // The search going up is known to be guarded but the search coming down isn't.
        // Prime the downward search with a guard.
        if (!__comp(*__i, *__m))  // if *__first == *__m
        {
            // *__first == *__m, *__first doesn't go in first part
            if (_VSTD::__nth_element_find_guard<_Compare>(__i, __j, __m, __comp)) {
                swap(*__i, *__j);
                ++__n_swaps;
            } else {
                // *__first == *__m, *__m <= all other elements
                // Partition instead into [__first, __i) == *__first and *__first < [__i, __last)
                ++__i;  // __first + 1
                __j = __last;
                if (!__comp(*__first, *--__j)) {  // we need a guard if *__first == *(__last-1)
                    while (true) {
                        if (__i == __j) {
                            return;  // [__first, __last) all equivalent elements
                        } else if (__comp(*__first, *__i)) {
                            swap(*__i, *__j);
                            ++__n_swaps;
                            ++__i;
                            break;
                        }
                        ++__i;
                    }
                }
                // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1
                if (__i == __j) {
                    return;
                }
                while (true) {
                    while (!__comp(*__first, *__i))
                        ++__i;
                    while (__comp(*__first, *--__j))
                        ;
                    if (__i >= __j)
                        break;
                    swap(*__i, *__j);
                    ++__n_swaps;
                    ++__i;
                }
                // [__first, __i) == *__first and *__first < [__i, __last)
                // The first part is sorted,
                if (__nth < __i) {
                    return;
                }
                // __nth_element the second part
                // _VSTD::__nth_element<_Compare>(__i, __nth, __last, __comp);
                __first = __i;
                continue;
            }
        }
        ++__i;
        // j points beyond range to be tested, *__lm1 is known to be <= *__m
        // if not yet partitioned...
        if (__i < __j)
        {
            // known that *(__i - 1) < *__m
            while (true)
            {
                // __m still guards upward moving __i
                while (__comp(*__i, *__m))
                    ++__i;
                // It is now known that a guard exists for downward moving __j
                while (!__comp(*--__j, *__m))
                    ;
                if (__i >= __j)
                    break;
                swap(*__i, *__j);
                ++__n_swaps;
                // It is known that __m != __j
                // If __m just moved, follow it
                if (__m == __i)
                    __m = __j;
                ++__i;
            }
        }
        // [__first, __i) < *__m and *__m <= [__i, __last)
        if (__i != __m && __comp(*__m, *__i))
        {
            swap(*__i, *__m);
            ++__n_swaps;
        }
        // [__first, __i) < *__i and *__i <= [__i+1, __last)
        if (__nth == __i)
            return;
        if (__n_swaps == 0)
        {
            // We were given a perfectly partitioned sequence.  Coincidence?
            if (__nth < __i)
            {
                // Check for [__first, __i) already sorted
                __j = __m = __first;
                while (true) {
                    if (++__j == __i) {
                        // [__first, __i) sorted
                        return;
                    }
                    if (__comp(*__j, *__m)) {
                        // not yet sorted, so sort
                        break;
                    }
                    __m = __j;
                }
            }
            else
            {
                // Check for [__i, __last) already sorted
                __j = __m = __i;
                while (true) {
                    if (++__j == __last) {
                        // [__i, __last) sorted
                        return;
                    }
                    if (__comp(*__j, *__m)) {
                        // not yet sorted, so sort
                        break;
                    }
                    __m = __j;
                }
            }
        }
        // __nth_element on range containing __nth
        if (__nth < __i)
        {
            // _VSTD::__nth_element<_Compare>(__first, __nth, __i, __comp);
            __last = __i;
        }
        else
        {
            // _VSTD::__nth_element<_Compare>(__i+1, __nth, __last, __comp);
            __first = ++__i;
        }
    }
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__nth_element<_Comp_ref>(__first, __nth, __last, __comp);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last)
{
    _VSTD::nth_element(__first, __nth, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_NTH_ELEMENT_H
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/nth_element.h" 3
# 715 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partial_sort.h>
#endif /* expanded by -frewrite-includes */
# 715 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partial_sort_copy.h>
#endif /* expanded by -frewrite-includes */
# 716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H
#define _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/make_heap.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sift_down.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort_heap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _RandomAccessIterator
__partial_sort_copy(_InputIterator __first, _InputIterator __last,
                    _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp)
{
    _RandomAccessIterator __r = __result_first;
    if (__r != __result_last)
    {
        for (; __first != __last && __r != __result_last; ++__first, (void) ++__r)
            *__r = *__first;
        _VSTD::__make_heap<_Compare>(__result_first, __r, __comp);
        typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first;
        for (; __first != __last; ++__first)
            if (__comp(*__first, *__result_first))
            {
                *__result_first = *__first;
                _VSTD::__sift_down<_Compare>(__result_first, __r, __comp, __len, __result_first);
            }
        _VSTD::__sort_heap<_Compare>(__result_first, __r, __comp);
    }
    return __r;
}

template <class _InputIterator, class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_RandomAccessIterator
partial_sort_copy(_InputIterator __first, _InputIterator __last,
                  _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__partial_sort_copy<_Comp_ref>(__first, __last, __result_first, __result_last, __comp);
}

template <class _InputIterator, class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_RandomAccessIterator
partial_sort_copy(_InputIterator __first, _InputIterator __last,
                  _RandomAccessIterator __result_first, _RandomAccessIterator __result_last)
{
    return _VSTD::partial_sort_copy(__first, __last, __result_first, __result_last,
                                   __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partial_sort_copy.h" 3
# 717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partition.h>
#endif /* expanded by -frewrite-includes */
# 717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PARTITION_H
#define _LIBCPP___ALGORITHM_PARTITION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility> // pair
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Predicate, class _ForwardIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
__partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag)
{
    while (true)
    {
        if (__first == __last)
            return __first;
        if (!__pred(*__first))
            break;
        ++__first;
    }
    for (_ForwardIterator __p = __first; ++__p != __last;)
    {
        if (__pred(*__p))
        {
            swap(*__first, *__p);
            ++__first;
        }
    }
    return __first;
}

template <class _Predicate, class _BidirectionalIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _BidirectionalIterator
__partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred,
            bidirectional_iterator_tag)
{
    while (true)
    {
        while (true)
        {
            if (__first == __last)
                return __first;
            if (!__pred(*__first))
                break;
            ++__first;
        }
        do
        {
            if (__first == --__last)
                return __first;
        } while (!__pred(*__last));
        swap(*__first, *__last);
        ++__first;
    }
}

template <class _ForwardIterator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred)
{
    return _VSTD::__partition<typename add_lvalue_reference<_Predicate>::type>
                            (__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PARTITION_H
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition.h" 3
# 718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partition_copy.h>
#endif /* expanded by -frewrite-includes */
# 718 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PARTITION_COPY_H
#define _LIBCPP___ALGORITHM_PARTITION_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility> // pair
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator1,
          class _OutputIterator2, class _Predicate>
_LIBCPP_CONSTEXPR_AFTER_CXX17 pair<_OutputIterator1, _OutputIterator2>
partition_copy(_InputIterator __first, _InputIterator __last,
               _OutputIterator1 __out_true, _OutputIterator2 __out_false,
               _Predicate __pred)
{
    for (; __first != __last; ++__first)
    {
        if (__pred(*__first))
        {
            *__out_true = *__first;
            ++__out_true;
        }
        else
        {
            *__out_false = *__first;
            ++__out_false;
        }
    }
    return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PARTITION_COPY_H
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_copy.h" 3
# 719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/partition_point.h>
#endif /* expanded by -frewrite-includes */
# 719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PARTITION_POINT_H
#define _LIBCPP___ALGORITHM_PARTITION_POINT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/half_positive.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template<class _ForwardIterator, class _Predicate>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred)
{
    typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type;
    difference_type __len = _VSTD::distance(__first, __last);
    while (__len != 0)
    {
        difference_type __l2 = _VSTD::__half_positive(__len);
        _ForwardIterator __m = __first;
        _VSTD::advance(__m, __l2);
        if (__pred(*__m))
        {
            __first = ++__m;
            __len -= __l2 + 1;
        }
        else
            __len = __l2;
    }
    return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PARTITION_POINT_H
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/partition_point.h" 3
# 720 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/pop_heap.h>
#endif /* expanded by -frewrite-includes */
# 720 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 721 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/prev_permutation.h>
#endif /* expanded by -frewrite-includes */
# 721 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PREV_PERMUTATION_H
#define _LIBCPP___ALGORITHM_PREV_PERMUTATION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/reverse.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _BidirectionalIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool
__prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    _BidirectionalIterator __i = __last;
    if (__first == __last || __first == --__i)
        return false;
    while (true)
    {
        _BidirectionalIterator __ip1 = __i;
        if (__comp(*__ip1, *--__i))
        {
            _BidirectionalIterator __j = __last;
            while (!__comp(*--__j, *__i))
                ;
            swap(*__i, *__j);
            _VSTD::reverse(__ip1, __last);
            return true;
        }
        if (__i == __first)
        {
            _VSTD::reverse(__first, __last);
            return false;
        }
    }
}

template <class _BidirectionalIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__prev_permutation<_Comp_ref>(__first, __last, __comp);
}

template <class _BidirectionalIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
bool
prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last)
{
    return _VSTD::prev_permutation(__first, __last,
                                  __less<typename iterator_traits<_BidirectionalIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PREV_PERMUTATION_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/prev_permutation.h" 3
# 722 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/push_heap.h>
#endif /* expanded by -frewrite-includes */
# 722 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_PUSH_HEAP_H
#define _LIBCPP___ALGORITHM_PUSH_HEAP_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _RandomAccessIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX11 void
__sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp,
          typename iterator_traits<_RandomAccessIterator>::difference_type __len)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    if (__len > 1)
    {
        __len = (__len - 2) / 2;
        _RandomAccessIterator __ptr = __first + __len;
        if (__comp(*__ptr, *--__last))
        {
            value_type __t(_VSTD::move(*__last));
            do
            {
                *__last = _VSTD::move(*__ptr);
                __last = __ptr;
                if (__len == 0)
                    break;
                __len = (__len - 1) / 2;
                __ptr = __first + __len;
            } while (__comp(*__ptr, __t));
            *__last = _VSTD::move(__t);
        }
    }
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__sift_up<_Comp_ref>(__first, __last, __comp, __last - __first);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::push_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_PUSH_HEAP_H
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/push_heap.h" 3
# 723 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/remove.h>
#endif /* expanded by -frewrite-includes */
# 723 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REMOVE_H
#define _LIBCPP___ALGORITHM_REMOVE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_if.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Tp>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_)
{
    __first = _VSTD::find(__first, __last, __value_);
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
        {
            if (!(*__i == __value_))
            {
                *__first = _VSTD::move(*__i);
                ++__first;
            }
        }
    }
    return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REMOVE_H
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove.h" 3
# 724 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/remove_copy.h>
#endif /* expanded by -frewrite-includes */
# 724 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REMOVE_COPY_H
#define _LIBCPP___ALGORITHM_REMOVE_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value_)
{
    for (; __first != __last; ++__first)
    {
        if (!(*__first == __value_))
        {
            *__result = *__first;
            ++__result;
        }
    }
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REMOVE_COPY_H
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy.h" 3
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/remove_copy_if.h>
#endif /* expanded by -frewrite-includes */
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H
#define _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred)
{
    for (; __first != __last; ++__first)
    {
        if (!__pred(*__first))
        {
            *__result = *__first;
            ++__result;
        }
    }
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_copy_if.h" 3
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/remove_if.h>
#endif /* expanded by -frewrite-includes */
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REMOVE_IF_H
#define _LIBCPP___ALGORITHM_REMOVE_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_if.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Predicate>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred)
{
    __first = _VSTD::find_if<_ForwardIterator, typename add_lvalue_reference<_Predicate>::type>
                           (__first, __last, __pred);
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        while (++__i != __last)
        {
            if (!__pred(*__i))
            {
                *__first = _VSTD::move(*__i);
                ++__first;
            }
        }
    }
    return __first;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REMOVE_IF_H
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/remove_if.h" 3
# 727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/replace.h>
#endif /* expanded by -frewrite-includes */
# 727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REPLACE_H
#define _LIBCPP___ALGORITHM_REPLACE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value)
{
    for (; __first != __last; ++__first)
        if (*__first == __old_value)
            *__first = __new_value;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REPLACE_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace.h" 3
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/replace_copy.h>
#endif /* expanded by -frewrite-includes */
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REPLACE_COPY_H
#define _LIBCPP___ALGORITHM_REPLACE_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result,
             const _Tp& __old_value, const _Tp& __new_value)
{
    for (; __first != __last; ++__first, (void) ++__result)
        if (*__first == __old_value)
            *__result = __new_value;
        else
            *__result = *__first;
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REPLACE_COPY_H
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy.h" 3
# 729 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/replace_copy_if.h>
#endif /* expanded by -frewrite-includes */
# 729 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H
#define _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator, class _Predicate, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result,
                _Predicate __pred, const _Tp& __new_value)
{
    for (; __first != __last; ++__first, (void) ++__result)
        if (__pred(*__first))
            *__result = __new_value;
        else
            *__result = *__first;
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_copy_if.h" 3
# 730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/replace_if.h>
#endif /* expanded by -frewrite-includes */
# 730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REPLACE_IF_H
#define _LIBCPP___ALGORITHM_REPLACE_IF_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _Predicate, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
void
replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value)
{
    for (; __first != __last; ++__first)
        if (__pred(*__first))
            *__first = __new_value;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REPLACE_IF_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/replace_if.h" 3
# 731 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/reverse.h>
#endif /* expanded by -frewrite-includes */
# 731 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/reverse_copy.h>
#endif /* expanded by -frewrite-includes */
# 732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_REVERSE_COPY_H
#define _LIBCPP___ALGORITHM_REVERSE_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BidirectionalIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result)
{
    for (; __first != __last; ++__result)
        *__result = *--__last;
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_REVERSE_COPY_H
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/reverse_copy.h" 3
# 733 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/rotate.h>
#endif /* expanded by -frewrite-includes */
# 733 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/rotate_copy.h>
#endif /* expanded by -frewrite-includes */
# 734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_ROTATE_COPY_H
#define _LIBCPP___ALGORITHM_ROTATE_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _ForwardIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result)
{
    return _VSTD::copy(__first, __middle, _VSTD::copy(__middle, __last, __result));
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_ROTATE_COPY_H
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/rotate_copy.h" 3
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sample.h>
#endif /* expanded by -frewrite-includes */
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SAMPLE_H
#define _LIBCPP___ALGORITHM_SAMPLE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__random/uniform_int_distribution.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___RANDOM_UNIFORM_INT_DISTRIBUTION_H
#define _LIBCPP___RANDOM_UNIFORM_INT_DISTRIBUTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__bits>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
#endif
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// __independent_bits_engine

template <unsigned long long _Xp, size_t _Rp>
struct __log2_imp
{
    static const size_t value = _Xp & ((unsigned long long)(1) << _Rp) ? _Rp
                                           : __log2_imp<_Xp, _Rp - 1>::value;
};

template <unsigned long long _Xp>
struct __log2_imp<_Xp, 0>
{
    static const size_t value = 0;
};

template <size_t _Rp>
struct __log2_imp<0, _Rp>
{
    static const size_t value = _Rp + 1;
};

template <class _UIntType, _UIntType _Xp>
struct __log2
{
    static const size_t value = __log2_imp<_Xp,
                                         sizeof(_UIntType) * __CHAR_BIT__ - 1>::value;
};

template<class _Engine, class _UIntType>
class __independent_bits_engine
{
public:
    // types
    typedef _UIntType result_type;

private:
    typedef typename _Engine::result_type _Engine_result_type;
    typedef typename conditional
        <
            sizeof(_Engine_result_type) <= sizeof(result_type),
                result_type,
                _Engine_result_type
        >::type _Working_result_type;

    _Engine& __e_;
    size_t __w_;
    size_t __w0_;
    size_t __n_;
    size_t __n0_;
    _Working_result_type __y0_;
    _Working_result_type __y1_;
    _Engine_result_type __mask0_;
    _Engine_result_type __mask1_;

#ifdef _LIBCPP_CXX03_LANG
    static const _Working_result_type _Rp = _Engine::_Max - _Engine::_Min
                                          + _Working_result_type(1);
#else
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
    static _LIBCPP_CONSTEXPR const _Working_result_type _Rp = _Engine::max() - _Engine::min()
                                                      + _Working_result_type(1);
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
    static _LIBCPP_CONSTEXPR const size_t __m = __log2<_Working_result_type, _Rp>::value;
    static _LIBCPP_CONSTEXPR const size_t _WDt = numeric_limits<_Working_result_type>::digits;
    static _LIBCPP_CONSTEXPR const size_t _EDt = numeric_limits<_Engine_result_type>::digits;

public:
    // constructors and seeding functions
    __independent_bits_engine(_Engine& __e, size_t __w);

    // generating functions
    result_type operator()() {return __eval(integral_constant<bool, _Rp != 0>());}

private:
    result_type __eval(false_type);
    result_type __eval(true_type);
};

template<class _Engine, class _UIntType>
__independent_bits_engine<_Engine, _UIntType>
    ::__independent_bits_engine(_Engine& __e, size_t __w)
        : __e_(__e),
          __w_(__w)
{
    __n_ = __w_ / __m + (__w_ % __m != 0);
    __w0_ = __w_ / __n_;
    if (_Rp == 0)
        __y0_ = _Rp;
    else if (__w0_ < _WDt)
        __y0_ = (_Rp >> __w0_) << __w0_;
    else
        __y0_ = 0;
    if (_Rp - __y0_ > __y0_ / __n_)
    {
        ++__n_;
        __w0_ = __w_ / __n_;
        if (__w0_ < _WDt)
            __y0_ = (_Rp >> __w0_) << __w0_;
        else
            __y0_ = 0;
    }
    __n0_ = __n_ - __w_ % __n_;
    if (__w0_ < _WDt - 1)
        __y1_ = (_Rp >> (__w0_ + 1)) << (__w0_ + 1);
    else
        __y1_ = 0;
    __mask0_ = __w0_ > 0 ? _Engine_result_type(~0) >> (_EDt - __w0_) :
                          _Engine_result_type(0);
    __mask1_ = __w0_ < _EDt - 1 ?
                               _Engine_result_type(~0) >> (_EDt - (__w0_ + 1)) :
                               _Engine_result_type(~0);
}

template<class _Engine, class _UIntType>
inline
_UIntType
__independent_bits_engine<_Engine, _UIntType>::__eval(false_type)
{
    return static_cast<result_type>(__e_() & __mask0_);
}

template<class _Engine, class _UIntType>
_UIntType
__independent_bits_engine<_Engine, _UIntType>::__eval(true_type)
{
    const size_t _WRt = numeric_limits<result_type>::digits;
    result_type _Sp = 0;
    for (size_t __k = 0; __k < __n0_; ++__k)
    {
        _Engine_result_type __u;
        do
        {
            __u = __e_() - _Engine::min();
        } while (__u >= __y0_);
        if (__w0_ < _WRt)
            _Sp <<= __w0_;
        else
            _Sp = 0;
        _Sp += __u & __mask0_;
    }
    for (size_t __k = __n0_; __k < __n_; ++__k)
    {
        _Engine_result_type __u;
        do
        {
            __u = __e_() - _Engine::min();
        } while (__u >= __y1_);
        if (__w0_ < _WRt - 1)
            _Sp <<= __w0_ + 1;
        else
            _Sp = 0;
        _Sp += __u & __mask1_;
    }
    return _Sp;
}

template<class _IntType = int>
class uniform_int_distribution
{
public:
    // types
    typedef _IntType result_type;

    class param_type
    {
        result_type __a_;
        result_type __b_;
    public:
        typedef uniform_int_distribution distribution_type;

        explicit param_type(result_type __a = 0,
                            result_type __b = numeric_limits<result_type>::max())
            : __a_(__a), __b_(__b) {}

        result_type a() const {return __a_;}
        result_type b() const {return __b_;}

        friend bool operator==(const param_type& __x, const param_type& __y)
            {return __x.__a_ == __y.__a_ && __x.__b_ == __y.__b_;}
        friend bool operator!=(const param_type& __x, const param_type& __y)
            {return !(__x == __y);}
    };

private:
    param_type __p_;

public:
    // constructors and reset functions
#ifndef _LIBCPP_CXX03_LANG
    uniform_int_distribution() : uniform_int_distribution(0) {}
    explicit uniform_int_distribution(
        result_type __a, result_type __b = numeric_limits<result_type>::max())
        : __p_(param_type(__a, __b)) {}
#else
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
    explicit uniform_int_distribution(
        result_type __a = 0,
        result_type __b = numeric_limits<result_type>::max())
        : __p_(param_type(__a, __b)) {}
#endif
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
    explicit uniform_int_distribution(const param_type& __p) : __p_(__p) {}
    void reset() {}

    // generating functions
    template<class _URNG> result_type operator()(_URNG& __g)
        {return (*this)(__g, __p_);}
    template<class _URNG> result_type operator()(_URNG& __g, const param_type& __p);

    // property functions
    result_type a() const {return __p_.a();}
    result_type b() const {return __p_.b();}

    param_type param() const {return __p_;}
    void param(const param_type& __p) {__p_ = __p;}

    result_type min() const {return a();}
    result_type max() const {return b();}

    friend bool operator==(const uniform_int_distribution& __x,
                           const uniform_int_distribution& __y)
        {return __x.__p_ == __y.__p_;}
    friend bool operator!=(const uniform_int_distribution& __x,
                           const uniform_int_distribution& __y)
            {return !(__x == __y);}
};

template<class _IntType>
template<class _URNG>
typename uniform_int_distribution<_IntType>::result_type
uniform_int_distribution<_IntType>::operator()(_URNG& __g, const param_type& __p)
_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
{
    typedef typename conditional<sizeof(result_type) <= sizeof(uint32_t),
                                            uint32_t, uint64_t>::type _UIntType;
    const _UIntType _Rp = _UIntType(__p.b()) - _UIntType(__p.a()) + _UIntType(1);
    if (_Rp == 1)
        return __p.a();
    const size_t _Dt = numeric_limits<_UIntType>::digits;
    typedef __independent_bits_engine<_URNG, _UIntType> _Eng;
    if (_Rp == 0)
        return static_cast<result_type>(_Eng(__g, _Dt)());
    size_t __w = _Dt - __libcpp_clz(_Rp) - 1;
    if ((_Rp & (numeric_limits<_UIntType>::max() >> (_Dt - __w))) != 0)
        ++__w;
    _Eng __e(__g, __w);
    _UIntType __u;
    do
    {
        __u = __e();
    } while (__u >= _Rp);
    return static_cast<result_type>(__u + __p.a());
}

template <class _CharT, class _Traits, class _IT>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os,
           const uniform_int_distribution<_IT>& __x)
{
    __save_flags<_CharT, _Traits> __lx(__os);
    typedef basic_ostream<_CharT, _Traits> _Ostream;
    __os.flags(_Ostream::dec | _Ostream::left);
    _CharT __sp = __os.widen(' ');
    __os.fill(__sp);
    return __os << __x.a() << __sp << __x.b();
}

template <class _CharT, class _Traits, class _IT>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is,
           uniform_int_distribution<_IT>& __x)
{
    typedef uniform_int_distribution<_IT> _Eng;
    typedef typename _Eng::result_type result_type;
    typedef typename _Eng::param_type param_type;
    __save_flags<_CharT, _Traits> __lx(__is);
    typedef basic_istream<_CharT, _Traits> _Istream;
    __is.flags(_Istream::dec | _Istream::skipws);
    result_type __a;
    result_type __b;
    __is >> __a >> __b;
    if (!__is.fail())
        __x.param(param_type(__a, __b));
    return __is;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___RANDOM_UNIFORM_INT_DISTRIBUTION_H
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__random/uniform_int_distribution.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _PopulationIterator, class _SampleIterator, class _Distance,
          class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first,
                         _PopulationIterator __last, _SampleIterator __output_iter,
                         _Distance __n,
                         _UniformRandomNumberGenerator & __g,
                         input_iterator_tag) {

  _Distance __k = 0;
  for (; __first != __last && __k < __n; ++__first, (void) ++__k)
    __output_iter[__k] = *__first;
  _Distance __sz = __k;
  for (; __first != __last; ++__first, (void) ++__k) {
    _Distance __r = uniform_int_distribution<_Distance>(0, __k)(__g);
    if (__r < __sz)
      __output_iter[__r] = *__first;
  }
  return __output_iter + _VSTD::min(__n, __k);
}

template <class _PopulationIterator, class _SampleIterator, class _Distance,
          class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first,
                         _PopulationIterator __last, _SampleIterator __output_iter,
                         _Distance __n,
                         _UniformRandomNumberGenerator& __g,
                         forward_iterator_tag) {
  _Distance __unsampled_sz = _VSTD::distance(__first, __last);
  for (__n = _VSTD::min(__n, __unsampled_sz); __n != 0; ++__first) {
    _Distance __r = uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g);
    if (__r < __n) {
      *__output_iter++ = *__first;
      --__n;
    }
  }
  return __output_iter;
}

template <class _PopulationIterator, class _SampleIterator, class _Distance,
          class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first,
                         _PopulationIterator __last, _SampleIterator __output_iter,
                         _Distance __n, _UniformRandomNumberGenerator& __g) {
  typedef typename iterator_traits<_PopulationIterator>::iterator_category
        _PopCategory;
  typedef typename iterator_traits<_PopulationIterator>::difference_type
        _Difference;
  static_assert(__is_cpp17_forward_iterator<_PopulationIterator>::value ||
                __is_cpp17_random_access_iterator<_SampleIterator>::value,
                "SampleIterator must meet the requirements of RandomAccessIterator");
  typedef typename common_type<_Distance, _Difference>::type _CommonType;
  _LIBCPP_ASSERT(__n >= 0, "N must be a positive number.");
  return _VSTD::__sample(
      __first, __last, __output_iter, _CommonType(__n),
      __g, _PopCategory());
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
template <class _PopulationIterator, class _SampleIterator, class _Distance,
          class _UniformRandomNumberGenerator>
inline _LIBCPP_INLINE_VISIBILITY
_SampleIterator sample(_PopulationIterator __first,
                       _PopulationIterator __last, _SampleIterator __output_iter,
                       _Distance __n, _UniformRandomNumberGenerator&& __g) {
    return _VSTD::__sample(__first, __last, __output_iter, __n, __g);
}
#endif // _LIBCPP_STD_VER > 14
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SAMPLE_H
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/sample.h" 3
# 736 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/search.h>
#endif /* expanded by -frewrite-includes */
# 736 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 737 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/search_n.h>
#endif /* expanded by -frewrite-includes */
# 737 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SEARCH_N_H
#define _LIBCPP___ALGORITHM_SEARCH_N_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BinaryPredicate, class _ForwardIterator, class _Size, class _Tp>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator __search_n(_ForwardIterator __first, _ForwardIterator __last,
                                                          _Size __count, const _Tp& __value_, _BinaryPredicate __pred,
                                                          forward_iterator_tag) {
  if (__count <= 0)
    return __first;
  while (true) {
    // Find first element in sequence that matchs __value_, with a mininum of loop checks
    while (true) {
      if (__first == __last) // return __last if no element matches __value_
        return __last;
      if (__pred(*__first, __value_))
        break;
      ++__first;
    }
    // *__first matches __value_, now match elements after here
    _ForwardIterator __m = __first;
    _Size __c(0);
    while (true) {
      if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern)
        return __first;
      if (++__m == __last) // Otherwise if source exhaused, pattern not found
        return __last;
      if (!__pred(*__m, __value_)) // if there is a mismatch, restart with a new __first
      {
        __first = __m;
        ++__first;
        break;
      } // else there is a match, check next elements
    }
  }
}

template <class _BinaryPredicate, class _RandomAccessIterator, class _Size, class _Tp>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _RandomAccessIterator __search_n(_RandomAccessIterator __first,
                                                               _RandomAccessIterator __last, _Size __count,
                                                               const _Tp& __value_, _BinaryPredicate __pred,
                                                               random_access_iterator_tag) {
  if (__count <= 0)
    return __first;
  _Size __len = static_cast<_Size>(__last - __first);
  if (__len < __count)
    return __last;
  const _RandomAccessIterator __s = __last - (__count - 1); // Start of pattern match can't go beyond here
  while (true) {
    // Find first element in sequence that matchs __value_, with a mininum of loop checks
    while (true) {
      if (__first >= __s) // return __last if no element matches __value_
        return __last;
      if (__pred(*__first, __value_))
        break;
      ++__first;
    }
    // *__first matches __value_, now match elements after here
    _RandomAccessIterator __m = __first;
    _Size __c(0);
    while (true) {
      if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern)
        return __first;
      ++__m;                       // no need to check range on __m because __s guarantees we have enough source
      if (!__pred(*__m, __value_)) // if there is a mismatch, restart with a new __first
      {
        __first = __m;
        ++__first;
        break;
      } // else there is a match, check next elements
    }
  }
}

template <class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator search_n(
    _ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value_, _BinaryPredicate __pred) {
  return _VSTD::__search_n<typename add_lvalue_reference<_BinaryPredicate>::type>(
      __first, __last, _VSTD::__convert_to_integral(__count), __value_, __pred,
      typename iterator_traits<_ForwardIterator>::iterator_category());
}

template <class _ForwardIterator, class _Size, class _Tp>
_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value_) {
  typedef typename iterator_traits<_ForwardIterator>::value_type __v;
  return _VSTD::search_n(__first, __last, _VSTD::__convert_to_integral(__count), __value_, __equal_to<__v, _Tp>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SEARCH_N_H
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/search_n.h" 3
# 738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/set_difference.h>
#endif /* expanded by -frewrite-includes */
# 738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SET_DIFFERENCE_H
#define _LIBCPP___ALGORITHM_SET_DIFFERENCE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
                 _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    while (__first1 != __last1)
    {
        if (__first2 == __last2)
            return _VSTD::copy(__first1, __last1, __result);
        if (__comp(*__first1, *__first2))
        {
            *__result = *__first1;
            ++__result;
            ++__first1;
        }
        else
        {
            if (!__comp(*__first2, *__first1))
                ++__first1;
            ++__first2;
        }
    }
    return __result;
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
               _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__set_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
               _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
{
    return _VSTD::set_difference(__first1, __last1, __first2, __last2, __result,
                                __less<typename iterator_traits<_InputIterator1>::value_type,
                                       typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SET_DIFFERENCE_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_difference.h" 3
# 739 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/set_intersection.h>
#endif /* expanded by -frewrite-includes */
# 739 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SET_INTERSECTION_H
#define _LIBCPP___ALGORITHM_SET_INTERSECTION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
                   _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    while (__first1 != __last1 && __first2 != __last2)
    {
        if (__comp(*__first1, *__first2))
            ++__first1;
        else
        {
            if (!__comp(*__first2, *__first1))
            {
                *__result = *__first1;
                ++__result;
                ++__first1;
            }
            ++__first2;
        }
    }
    return __result;
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
                 _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__set_intersection<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
                 _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
{
    return _VSTD::set_intersection(__first1, __last1, __first2, __last2, __result,
                                  __less<typename iterator_traits<_InputIterator1>::value_type,
                                         typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SET_INTERSECTION_H
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_intersection.h" 3
# 740 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/set_symmetric_difference.h>
#endif /* expanded by -frewrite-includes */
# 740 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H
#define _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
                           _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    while (__first1 != __last1)
    {
        if (__first2 == __last2)
            return _VSTD::copy(__first1, __last1, __result);
        if (__comp(*__first1, *__first2))
        {
            *__result = *__first1;
            ++__result;
            ++__first1;
        }
        else
        {
            if (__comp(*__first2, *__first1))
            {
                *__result = *__first2;
                ++__result;
            }
            else
                ++__first1;
            ++__first2;
        }
    }
    return _VSTD::copy(__first2, __last2, __result);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
                         _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__set_symmetric_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
                         _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
{
    return _VSTD::set_symmetric_difference(__first1, __last1, __first2, __last2, __result,
                                          __less<typename iterator_traits<_InputIterator1>::value_type,
                                                 typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_symmetric_difference.h" 3
# 741 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/set_union.h>
#endif /* expanded by -frewrite-includes */
# 741 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SET_UNION_H
#define _LIBCPP___ALGORITHM_SET_UNION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__set_union(_InputIterator1 __first1, _InputIterator1 __last1,
            _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    for (; __first1 != __last1; ++__result)
    {
        if (__first2 == __last2)
            return _VSTD::copy(__first1, __last1, __result);
        if (__comp(*__first2, *__first1))
        {
            *__result = *__first2;
            ++__first2;
        }
        else
        {
            if (!__comp(*__first1, *__first2))
                ++__first2;
            *__result = *__first1;
            ++__first1;
        }
    }
    return _VSTD::copy(__first2, __last2, __result);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_union(_InputIterator1 __first1, _InputIterator1 __last1,
          _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
{
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    return _VSTD::__set_union<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp);
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
set_union(_InputIterator1 __first1, _InputIterator1 __last1,
          _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
{
    return _VSTD::set_union(__first1, __last1, __first2, __last2, __result,
                          __less<typename iterator_traits<_InputIterator1>::value_type,
                                 typename iterator_traits<_InputIterator2>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SET_UNION_H
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/set_union.h" 3
# 742 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/shift_left.h>
#endif /* expanded by -frewrite-includes */
# 742 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SHIFT_LEFT_H
#define _LIBCPP___ALGORITHM_SHIFT_LEFT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY constexpr
_ForwardIterator
shift_left(_ForwardIterator __first, _ForwardIterator __last,
           typename iterator_traits<_ForwardIterator>::difference_type __n)
{
    if (__n == 0) {
        return __last;
    }

    _ForwardIterator __m = __first;
    if constexpr (__is_cpp17_random_access_iterator<_ForwardIterator>::value) {
        if (__n >= __last - __first) {
            return __first;
        }
        __m += __n;
    } else {
        for (; __n > 0; --__n) {
            if (__m == __last) {
                return __first;
            }
            ++__m;
        }
    }
    return _VSTD::move(__m, __last, __first);
}

#endif // _LIBCPP_STD_VER > 17
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SHIFT_LEFT_H
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_left.h" 3
# 743 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/shift_right.h>
#endif /* expanded by -frewrite-includes */
# 743 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SHIFT_RIGHT_H
#define _LIBCPP___ALGORITHM_SHIFT_RIGHT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/move_backward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/swap_ranges.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3

template <class _ForwardIterator>
inline _LIBCPP_INLINE_VISIBILITY constexpr
_ForwardIterator
shift_right(_ForwardIterator __first, _ForwardIterator __last,
            typename iterator_traits<_ForwardIterator>::difference_type __n)
{
    if (__n == 0) {
        return __first;
    }

    if constexpr (__is_cpp17_random_access_iterator<_ForwardIterator>::value) {
        decltype(__n) __d = __last - __first;
        if (__n >= __d) {
            return __last;
        }
        _ForwardIterator __m = __first + (__d - __n);
        return _VSTD::move_backward(__first, __m, __last);
    } else if constexpr (__is_cpp17_bidirectional_iterator<_ForwardIterator>::value) {
        _ForwardIterator __m = __last;
        for (; __n > 0; --__n) {
            if (__m == __first) {
                return __last;
            }
            --__m;
        }
        return _VSTD::move_backward(__first, __m, __last);
    } else {
        _ForwardIterator __ret = __first;
        for (; __n > 0; --__n) {
            if (__ret == __last) {
                return __last;
            }
            ++__ret;
        }

        // We have an __n-element scratch space from __first to __ret.
        // Slide an __n-element window [__trail, __lead) from left to right.
        // We're essentially doing swap_ranges(__first, __ret, __trail, __lead)
        // over and over; but once __lead reaches __last we needn't bother
        // to save the values of elements [__trail, __last).

        auto __trail = __first;
        auto __lead = __ret;
        while (__trail != __ret) {
            if (__lead == __last) {
                _VSTD::move(__first, __trail, __ret);
                return __ret;
            }
            ++__trail;
            ++__lead;
        }

        _ForwardIterator __mid = __first;
        while (true) {
            if (__lead == __last) {
                __trail = _VSTD::move(__mid, __ret, __trail);
                _VSTD::move(__first, __mid, __trail);
                return __ret;
            }
            swap(*__mid, *__trail);
            ++__mid;
            ++__trail;
            ++__lead;
            if (__mid == __ret) {
                __mid = __first;
            }
        }
    }
}

#endif // _LIBCPP_STD_VER > 17
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SHIFT_RIGHT_H
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shift_right.h" 3
# 744 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/shuffle.h>
#endif /* expanded by -frewrite-includes */
# 744 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_SHUFFLE_H
#define _LIBCPP___ALGORITHM_SHUFFLE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__random/uniform_int_distribution.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) \
  || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
class _LIBCPP_TYPE_VIS __rs_default;

_LIBCPP_FUNC_VIS __rs_default __rs_get();

class _LIBCPP_TYPE_VIS __rs_default
{
    static unsigned __c_;

    __rs_default();
public:
    typedef uint_fast32_t result_type;

    static const result_type _Min = 0;
    static const result_type _Max = 0xFFFFFFFF;

    __rs_default(const __rs_default&);
    ~__rs_default();

    result_type operator()();

    static _LIBCPP_CONSTEXPR result_type min() {return _Min;}
    static _LIBCPP_CONSTEXPR result_type max() {return _Max;}

    friend _LIBCPP_FUNC_VIS __rs_default __rs_get();
};

_LIBCPP_FUNC_VIS __rs_default __rs_get();

template <class _RandomAccessIterator>
_LIBCPP_DEPRECATED_IN_CXX14 void
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    typedef uniform_int_distribution<ptrdiff_t> _Dp;
    typedef typename _Dp::param_type _Pp;
    difference_type __d = __last - __first;
    if (__d > 1)
    {
        _Dp __uid;
        __rs_default __g = __rs_get();
        for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d)
        {
            difference_type __i = __uid(__g, _Pp(0, __d));
            if (__i != difference_type(0))
                swap(*__first, *(__first + __i));
        }
    }
}

template <class _RandomAccessIterator, class _RandomNumberGenerator>
_LIBCPP_DEPRECATED_IN_CXX14 void
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
#ifndef _LIBCPP_CXX03_LANG
               _RandomNumberGenerator&& __rand)
#else
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
               _RandomNumberGenerator& __rand)
#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    difference_type __d = __last - __first;
    if (__d > 1)
    {
        for (--__last; __first < __last; ++__first, (void) --__d)
        {
            difference_type __i = __rand(__d);
            if (__i != difference_type(0))
              swap(*__first, *(__first + __i));
        }
    }
}
#endif
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3

template<class _RandomAccessIterator, class _UniformRandomNumberGenerator>
    void shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
                 _UniformRandomNumberGenerator&& __g)
{
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    typedef uniform_int_distribution<ptrdiff_t> _Dp;
    typedef typename _Dp::param_type _Pp;
    difference_type __d = __last - __first;
    if (__d > 1)
    {
        _Dp __uid;
        for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d)
        {
            difference_type __i = __uid(__g, _Pp(0, __d));
            if (__i != difference_type(0))
                swap(*__first, *(__first + __i));
        }
    }
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_SHUFFLE_H
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/shuffle.h" 3
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sift_down.h>
#endif /* expanded by -frewrite-includes */
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 746 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort.h>
#endif /* expanded by -frewrite-includes */
# 746 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 747 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort_heap.h>
#endif /* expanded by -frewrite-includes */
# 747 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/stable_partition.h>
#endif /* expanded by -frewrite-includes */
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_STABLE_PARTITION_H
#define _LIBCPP___ALGORITHM_STABLE_PARTITION_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/rotate.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Predicate, class _ForwardIterator, class _Distance, class _Pair>
_ForwardIterator
__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred,
                   _Distance __len, _Pair __p, forward_iterator_tag __fit)
{
    // *__first is known to be false
    // __len >= 1
    if (__len == 1)
        return __first;
    if (__len == 2)
    {
        _ForwardIterator __m = __first;
        if (__pred(*++__m))
        {
            swap(*__first, *__m);
            return __m;
        }
        return __first;
    }
    if (__len <= __p.second)
    {   // The buffer is big enough to use
        typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
        __destruct_n __d(0);
        unique_ptr<value_type, __destruct_n&> __h(__p.first, __d);
        // Move the falses into the temporary buffer, and the trues to the front of the line
        // Update __first to always point to the end of the trues
        value_type* __t = __p.first;
        ::new ((void*)__t) value_type(_VSTD::move(*__first));
        __d.template __incr<value_type>();
        ++__t;
        _ForwardIterator __i = __first;
        while (++__i != __last)
        {
            if (__pred(*__i))
            {
                *__first = _VSTD::move(*__i);
                ++__first;
            }
            else
            {
                ::new ((void*)__t) value_type(_VSTD::move(*__i));
                __d.template __incr<value_type>();
                ++__t;
            }
        }
        // All trues now at start of range, all falses in buffer
        // Move falses back into range, but don't mess up __first which points to first false
        __i = __first;
        for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i)
            *__i = _VSTD::move(*__t2);
        // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer
        return __first;
    }
    // Else not enough buffer, do in place
    // __len >= 3
    _ForwardIterator __m = __first;
    _Distance __len2 = __len / 2;  // __len2 >= 2
    _VSTD::advance(__m, __len2);
    // recurse on [__first, __m), *__first know to be false
    // F?????????????????
    // f       m         l
    typedef typename add_lvalue_reference<_Predicate>::type _PredRef;
    _ForwardIterator __first_false = _VSTD::__stable_partition<_PredRef>(__first, __m, __pred, __len2, __p, __fit);
    // TTTFFFFF??????????
    // f  ff   m         l
    // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true
    _ForwardIterator __m1 = __m;
    _ForwardIterator __second_false = __last;
    _Distance __len_half = __len - __len2;
    while (__pred(*__m1))
    {
        if (++__m1 == __last)
            goto __second_half_done;
        --__len_half;
    }
    // TTTFFFFFTTTF??????
    // f  ff   m  m1     l
    __second_false = _VSTD::__stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __fit);
__second_half_done:
    // TTTFFFFFTTTTTFFFFF
    // f  ff   m    sf   l
    return _VSTD::rotate(__first_false, __m, __second_false);
    // TTTTTTTTFFFFFFFFFF
    //         |
}

template <class _Predicate, class _ForwardIterator>
_ForwardIterator
__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred,
                   forward_iterator_tag)
{
    const unsigned __alloc_limit = 3;  // might want to make this a function of trivial assignment
    // Either prove all true and return __first or point to first false
    while (true)
    {
        if (__first == __last)
            return __first;
        if (!__pred(*__first))
            break;
        ++__first;
    }
    // We now have a reduced range [__first, __last)
    // *__first is known to be false
    typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type;
    typedef typename iterator_traits<_ForwardIterator>::value_type value_type;
    difference_type __len = _VSTD::distance(__first, __last);
    pair<value_type*, ptrdiff_t> __p(0, 0);
    unique_ptr<value_type, __return_temporary_buffer> __h;
    if (__len >= __alloc_limit)
    {
        __p = _VSTD::get_temporary_buffer<value_type>(__len);
        __h.reset(__p.first);
    }
    return _VSTD::__stable_partition<typename add_lvalue_reference<_Predicate>::type>
                             (__first, __last, __pred, __len, __p, forward_iterator_tag());
}

template <class _Predicate, class _BidirectionalIterator, class _Distance, class _Pair>
_BidirectionalIterator
__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred,
                   _Distance __len, _Pair __p, bidirectional_iterator_tag __bit)
{
    // *__first is known to be false
    // *__last is known to be true
    // __len >= 2
    if (__len == 2)
    {
        swap(*__first, *__last);
        return __last;
    }
    if (__len == 3)
    {
        _BidirectionalIterator __m = __first;
        if (__pred(*++__m))
        {
            swap(*__first, *__m);
            swap(*__m, *__last);
            return __last;
        }
        swap(*__m, *__last);
        swap(*__first, *__m);
        return __m;
    }
    if (__len <= __p.second)
    {   // The buffer is big enough to use
        typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
        __destruct_n __d(0);
        unique_ptr<value_type, __destruct_n&> __h(__p.first, __d);
        // Move the falses into the temporary buffer, and the trues to the front of the line
        // Update __first to always point to the end of the trues
        value_type* __t = __p.first;
        ::new ((void*)__t) value_type(_VSTD::move(*__first));
        __d.template __incr<value_type>();
        ++__t;
        _BidirectionalIterator __i = __first;
        while (++__i != __last)
        {
            if (__pred(*__i))
            {
                *__first = _VSTD::move(*__i);
                ++__first;
            }
            else
            {
                ::new ((void*)__t) value_type(_VSTD::move(*__i));
                __d.template __incr<value_type>();
                ++__t;
            }
        }
        // move *__last, known to be true
        *__first = _VSTD::move(*__i);
        __i = ++__first;
        // All trues now at start of range, all falses in buffer
        // Move falses back into range, but don't mess up __first which points to first false
        for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i)
            *__i = _VSTD::move(*__t2);
        // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer
        return __first;
    }
    // Else not enough buffer, do in place
    // __len >= 4
    _BidirectionalIterator __m = __first;
    _Distance __len2 = __len / 2;  // __len2 >= 2
    _VSTD::advance(__m, __len2);
    // recurse on [__first, __m-1], except reduce __m-1 until *(__m-1) is true, *__first know to be false
    // F????????????????T
    // f       m        l
    _BidirectionalIterator __m1 = __m;
    _BidirectionalIterator __first_false = __first;
    _Distance __len_half = __len2;
    while (!__pred(*--__m1))
    {
        if (__m1 == __first)
            goto __first_half_done;
        --__len_half;
    }
    // F???TFFF?????????T
    // f   m1  m        l
    typedef typename add_lvalue_reference<_Predicate>::type _PredRef;
    __first_false = _VSTD::__stable_partition<_PredRef>(__first, __m1, __pred, __len_half, __p, __bit);
__first_half_done:
    // TTTFFFFF?????????T
    // f  ff   m        l
    // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true
    __m1 = __m;
    _BidirectionalIterator __second_false = __last;
    ++__second_false;
    __len_half = __len - __len2;
    while (__pred(*__m1))
    {
        if (++__m1 == __last)
            goto __second_half_done;
        --__len_half;
    }
    // TTTFFFFFTTTF?????T
    // f  ff   m  m1    l
    __second_false = _VSTD::__stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __bit);
__second_half_done:
    // TTTFFFFFTTTTTFFFFF
    // f  ff   m    sf  l
    return _VSTD::rotate(__first_false, __m, __second_false);
    // TTTTTTTTFFFFFFFFFF
    //         |
}

template <class _Predicate, class _BidirectionalIterator>
_BidirectionalIterator
__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred,
                   bidirectional_iterator_tag)
{
    typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type;
    typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type;
    const difference_type __alloc_limit = 4;  // might want to make this a function of trivial assignment
    // Either prove all true and return __first or point to first false
    while (true)
    {
        if (__first == __last)
            return __first;
        if (!__pred(*__first))
            break;
        ++__first;
    }
    // __first points to first false, everything prior to __first is already set.
    // Either prove [__first, __last) is all false and return __first, or point __last to last true
    do
    {
        if (__first == --__last)
            return __first;
    } while (!__pred(*__last));
    // We now have a reduced range [__first, __last]
    // *__first is known to be false
    // *__last is known to be true
    // __len >= 2
    difference_type __len = _VSTD::distance(__first, __last) + 1;
    pair<value_type*, ptrdiff_t> __p(0, 0);
    unique_ptr<value_type, __return_temporary_buffer> __h;
    if (__len >= __alloc_limit)
    {
        __p = _VSTD::get_temporary_buffer<value_type>(__len);
        __h.reset(__p.first);
    }
    return _VSTD::__stable_partition<typename add_lvalue_reference<_Predicate>::type>
                             (__first, __last, __pred, __len, __p, bidirectional_iterator_tag());
}

template <class _ForwardIterator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY
_ForwardIterator
stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred)
{
    return _VSTD::__stable_partition<typename add_lvalue_reference<_Predicate>::type>
                             (__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_STABLE_PARTITION_H
# 306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_partition.h" 3
# 749 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/stable_sort.h>
#endif /* expanded by -frewrite-includes */
# 749 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_STABLE_SORT_H
#define _LIBCPP___ALGORITHM_STABLE_SORT_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp_ref_type.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/inplace_merge.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/sort.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/swap.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // swap
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
#endif
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Compare, class _InputIterator1, class _InputIterator2>
void
__merge_move_construct(_InputIterator1 __first1, _InputIterator1 __last1,
        _InputIterator2 __first2, _InputIterator2 __last2,
        typename iterator_traits<_InputIterator1>::value_type* __result, _Compare __comp)
{
    typedef typename iterator_traits<_InputIterator1>::value_type value_type;
    __destruct_n __d(0);
    unique_ptr<value_type, __destruct_n&> __h(__result, __d);
    for (; true; ++__result)
    {
        if (__first1 == __last1)
        {
            for (; __first2 != __last2; ++__first2, ++__result, (void)__d.template __incr<value_type>())
                ::new ((void*)__result) value_type(_VSTD::move(*__first2));
            __h.release();
            return;
        }
        if (__first2 == __last2)
        {
            for (; __first1 != __last1; ++__first1, ++__result, (void)__d.template __incr<value_type>())
                ::new ((void*)__result) value_type(_VSTD::move(*__first1));
            __h.release();
            return;
        }
        if (__comp(*__first2, *__first1))
        {
            ::new ((void*)__result) value_type(_VSTD::move(*__first2));
            __d.template __incr<value_type>();
            ++__first2;
        }
        else
        {
            ::new ((void*)__result) value_type(_VSTD::move(*__first1));
            __d.template __incr<value_type>();
            ++__first1;
        }
    }
}

template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator>
void
__merge_move_assign(_InputIterator1 __first1, _InputIterator1 __last1,
        _InputIterator2 __first2, _InputIterator2 __last2,
        _OutputIterator __result, _Compare __comp)
{
    for (; __first1 != __last1; ++__result)
    {
        if (__first2 == __last2)
        {
            for (; __first1 != __last1; ++__first1, (void) ++__result)
                *__result = _VSTD::move(*__first1);
            return;
        }
        if (__comp(*__first2, *__first1))
        {
            *__result = _VSTD::move(*__first2);
            ++__first2;
        }
        else
        {
            *__result = _VSTD::move(*__first1);
            ++__first1;
        }
    }
    for (; __first2 != __last2; ++__first2, (void) ++__result)
        *__result = _VSTD::move(*__first2);
}

template <class _Compare, class _RandomAccessIterator>
void
__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp,
              typename iterator_traits<_RandomAccessIterator>::difference_type __len,
              typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size);

template <class _Compare, class _RandomAccessIterator>
void
__stable_sort_move(_RandomAccessIterator __first1, _RandomAccessIterator __last1, _Compare __comp,
                   typename iterator_traits<_RandomAccessIterator>::difference_type __len,
                   typename iterator_traits<_RandomAccessIterator>::value_type* __first2)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    switch (__len)
    {
    case 0:
        return;
    case 1:
        ::new ((void*)__first2) value_type(_VSTD::move(*__first1));
        return;
    case 2:
        __destruct_n __d(0);
        unique_ptr<value_type, __destruct_n&> __h2(__first2, __d);
        if (__comp(*--__last1, *__first1))
        {
            ::new ((void*)__first2) value_type(_VSTD::move(*__last1));
            __d.template __incr<value_type>();
            ++__first2;
            ::new ((void*)__first2) value_type(_VSTD::move(*__first1));
        }
        else
        {
            ::new ((void*)__first2) value_type(_VSTD::move(*__first1));
            __d.template __incr<value_type>();
            ++__first2;
            ::new ((void*)__first2) value_type(_VSTD::move(*__last1));
        }
        __h2.release();
        return;
    }
    if (__len <= 8)
    {
        _VSTD::__insertion_sort_move<_Compare>(__first1, __last1, __first2, __comp);
        return;
    }
    typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2;
    _RandomAccessIterator __m = __first1 + __l2;
    _VSTD::__stable_sort<_Compare>(__first1, __m, __comp, __l2, __first2, __l2);
    _VSTD::__stable_sort<_Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2);
    _VSTD::__merge_move_construct<_Compare>(__first1, __m, __m, __last1, __first2, __comp);
}

template <class _Tp>
struct __stable_sort_switch
{
    static const unsigned value = 128*is_trivially_copy_assignable<_Tp>::value;
};

template <class _Compare, class _RandomAccessIterator>
void
__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp,
              typename iterator_traits<_RandomAccessIterator>::difference_type __len,
              typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    switch (__len)
    {
    case 0:
    case 1:
        return;
    case 2:
        if (__comp(*--__last, *__first))
            swap(*__first, *__last);
        return;
    }
    if (__len <= static_cast<difference_type>(__stable_sort_switch<value_type>::value))
    {
        _VSTD::__insertion_sort<_Compare>(__first, __last, __comp);
        return;
    }
    typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2;
    _RandomAccessIterator __m = __first + __l2;
    if (__len <= __buff_size)
    {
        __destruct_n __d(0);
        unique_ptr<value_type, __destruct_n&> __h2(__buff, __d);
        _VSTD::__stable_sort_move<_Compare>(__first, __m, __comp, __l2, __buff);
        __d.__set(__l2, (value_type*)nullptr);
        _VSTD::__stable_sort_move<_Compare>(__m, __last, __comp, __len - __l2, __buff + __l2);
        __d.__set(__len, (value_type*)nullptr);
        _VSTD::__merge_move_assign<_Compare>(__buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp);
//         _VSTD::__merge<_Compare>(move_iterator<value_type*>(__buff),
//                                  move_iterator<value_type*>(__buff + __l2),
//                                  move_iterator<_RandomAccessIterator>(__buff + __l2),
//                                  move_iterator<_RandomAccessIterator>(__buff + __len),
//                                  __first, __comp);
        return;
    }
    _VSTD::__stable_sort<_Compare>(__first, __m, __comp, __l2, __buff, __buff_size);
    _VSTD::__stable_sort<_Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size);
    _VSTD::__inplace_merge<_Compare>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size);
}

template <class _RandomAccessIterator, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY
void
stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
    typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
    typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
    difference_type __len = __last - __first;
    pair<value_type*, ptrdiff_t> __buf(0, 0);
    unique_ptr<value_type, __return_temporary_buffer> __h;
    if (__len > static_cast<difference_type>(__stable_sort_switch<value_type>::value))
    {
        __buf = _VSTD::get_temporary_buffer<value_type>(__len);
        __h.reset(__buf.first);
    }
    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
    _VSTD::__stable_sort<_Comp_ref>(__first, __last, __comp, __len, __buf.first, __buf.second);
}

template <class _RandomAccessIterator>
inline _LIBCPP_INLINE_VISIBILITY
void
stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
    _VSTD::stable_sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_STABLE_SORT_H
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/stable_sort.h" 3
# 750 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/swap_ranges.h>
#endif /* expanded by -frewrite-includes */
# 750 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/transform.h>
#endif /* expanded by -frewrite-includes */
# 751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_TRANSFORM_H
#define _LIBCPP___ALGORITHM_TRANSFORM_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3
#endif
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _OutputIterator, class _UnaryOperation>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op)
{
    for (; __first != __last; ++__first, (void) ++__result)
        *__result = __op(*__first);
    return __result;
}

template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _BinaryOperation>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
transform(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2,
          _OutputIterator __result, _BinaryOperation __binary_op)
{
    for (; __first1 != __last1; ++__first1, (void) ++__first2, ++__result)
        *__result = __binary_op(*__first1, *__first2);
    return __result;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_TRANSFORM_H
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/transform.h" 3
# 752 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unique_copy.h>
#endif /* expanded by -frewrite-includes */
# 752 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_UNIQUE_COPY_H
#define _LIBCPP___ALGORITHM_UNIQUE_COPY_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _BinaryPredicate, class _InputIterator, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred,
              input_iterator_tag, output_iterator_tag)
{
    if (__first != __last)
    {
        typename iterator_traits<_InputIterator>::value_type __t(*__first);
        *__result = __t;
        ++__result;
        while (++__first != __last)
        {
            if (!__pred(__t, *__first))
            {
                __t = *__first;
                *__result = __t;
                ++__result;
            }
        }
    }
    return __result;
}

template <class _BinaryPredicate, class _ForwardIterator, class _OutputIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator
__unique_copy(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, _BinaryPredicate __pred,
              forward_iterator_tag, output_iterator_tag)
{
    if (__first != __last)
    {
        _ForwardIterator __i = __first;
        *__result = *__i;
        ++__result;
        while (++__first != __last)
        {
            if (!__pred(*__i, *__first))
            {
                *__result = *__first;
                ++__result;
                __i = __first;
            }
        }
    }
    return __result;
}

template <class _BinaryPredicate, class _InputIterator, class _ForwardIterator>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
__unique_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _BinaryPredicate __pred,
              input_iterator_tag, forward_iterator_tag)
{
    if (__first != __last)
    {
        *__result = *__first;
        while (++__first != __last)
            if (!__pred(*__result, *__first))
                *++__result = *__first;
        ++__result;
    }
    return __result;
}

template <class _InputIterator, class _OutputIterator, class _BinaryPredicate>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred)
{
    return _VSTD::__unique_copy<typename add_lvalue_reference<_BinaryPredicate>::type>
                              (__first, __last, __result, __pred,
                               typename iterator_traits<_InputIterator>::iterator_category(),
                               typename iterator_traits<_OutputIterator>::iterator_category());
}

template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
    typedef typename iterator_traits<_InputIterator>::value_type __v;
    return _VSTD::unique_copy(__first, __last, __result, __equal_to<__v>());
}


_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_UNIQUE_COPY_H
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique_copy.h" 3
# 753 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unique.h>
#endif /* expanded by -frewrite-includes */
# 753 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 1 3
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ALGORITHM_UNIQUE_H
#define _LIBCPP___ALGORITHM_UNIQUE_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/comp.h>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/adjacent_find.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/move.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

// unique

template <class _ForwardIterator, class _BinaryPredicate>
_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator
unique(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred)
{
    __first = _VSTD::adjacent_find<_ForwardIterator, typename add_lvalue_reference<_BinaryPredicate>::type>
                                 (__first, __last, __pred);
    if (__first != __last)
    {
        // ...  a  a  ?  ...
        //      f     i
        _ForwardIterator __i = __first;
        for (++__i; ++__i != __last;)
            if (!__pred(*__first, *__i))
                *++__first = _VSTD::move(*__i);
        ++__first;
    }
    return __first;
}

template <class _ForwardIterator>
_LIBCPP_NODISCARD_EXT inline
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_ForwardIterator
unique(_ForwardIterator __first, _ForwardIterator __last)
{
    typedef typename iterator_traits<_ForwardIterator>::value_type __v;
    return _VSTD::unique(__first, __last, __equal_to<__v>());
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___ALGORITHM_UNIQUE_H
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__algorithm/unique.h" 3
# 754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/unwrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 755 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/upper_bound.h>
#endif /* expanded by -frewrite-includes */
# 755 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 756 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 758 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 759 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#endif
# 760 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 762 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 763 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 2 3

_LIBCPP_POP_MACROS

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) && _LIBCPP_STD_VER >= 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 767 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#if 0 /* expanded by -frewrite-includes */
#   include <__pstl_algorithm>
#endif /* expanded by -frewrite-includes */
# 767 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 768 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
#endif
# 769 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3

#endif // _LIBCPP_ALGORITHM
# 771 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/algorithm" 3
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdio>  // EOF
#endif /* expanded by -frewrite-includes */
# 524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 1 3
// -*- C++ -*-
//===---------------------------- cstdio ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTDIO
#define _LIBCPP_CSTDIO

/*
    cstdio synopsis

Macros:

    BUFSIZ
    EOF
    FILENAME_MAX
    FOPEN_MAX
    L_tmpnam
    NULL
    SEEK_CUR
    SEEK_END
    SEEK_SET
    TMP_MAX
    _IOFBF
    _IOLBF
    _IONBF
    stderr
    stdin
    stdout

namespace std
{

Types:

FILE
fpos_t
size_t

int remove(const char* filename);
int rename(const char* old, const char* new);
FILE* tmpfile(void);
char* tmpnam(char* s);
int fclose(FILE* stream);
int fflush(FILE* stream);
FILE* fopen(const char* restrict filename, const char* restrict mode);
FILE* freopen(const char* restrict filename, const char * restrict mode,
              FILE * restrict stream);
void setbuf(FILE* restrict stream, char* restrict buf);
int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
int fprintf(FILE* restrict stream, const char* restrict format, ...);
int fscanf(FILE* restrict stream, const char * restrict format, ...);
int printf(const char* restrict format, ...);
int scanf(const char* restrict format, ...);
int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
int sprintf(char* restrict s, const char* restrict format, ...);
int sscanf(const char* restrict s, const char* restrict format, ...);
int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
int vprintf(const char* restrict format, va_list arg);
int vscanf(const char* restrict format, va_list arg);                          // C99
int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
              va_list arg);
int vsprintf(char* restrict s, const char* restrict format, va_list arg);
int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
int fgetc(FILE* stream);
char* fgets(char* restrict s, int n, FILE* restrict stream);
int fputc(int c, FILE* stream);
int fputs(const char* restrict s, FILE* restrict stream);
int getc(FILE* stream);
int getchar(void);
char* gets(char* s);  // removed in C++14
int putc(int c, FILE* stream);
int putchar(int c);
int puts(const char* s);
int ungetc(int c, FILE* stream);
size_t fread(void* restrict ptr, size_t size, size_t nmemb,
             FILE* restrict stream);
size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
              FILE* restrict stream);
int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
int fseek(FILE* stream, long offset, int whence);
int fsetpos(FILE*stream, const fpos_t* pos);
long ftell(FILE* stream);
void rewind(FILE* stream);
void clearerr(FILE* stream);
int feof(FILE* stream);
int ferror(FILE* stream);
void perror(const char* s);

}  // std
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 1 3
// -*- C++ -*-
//===---------------------------- stdio.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_FILE) || defined(__need___FILE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDIO_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#define _LIBCPP_STDIO_H

/*
    stdio.h synopsis

Macros:

    BUFSIZ
    EOF
    FILENAME_MAX
    FOPEN_MAX
    L_tmpnam
    NULL
    SEEK_CUR
    SEEK_END
    SEEK_SET
    TMP_MAX
    _IOFBF
    _IOLBF
    _IONBF
    stderr
    stdin
    stdout

Types:

FILE
fpos_t
size_t

int remove(const char* filename);
int rename(const char* old, const char* new);
FILE* tmpfile(void);
char* tmpnam(char* s);
int fclose(FILE* stream);
int fflush(FILE* stream);
FILE* fopen(const char* restrict filename, const char* restrict mode);
FILE* freopen(const char* restrict filename, const char * restrict mode,
              FILE * restrict stream);
void setbuf(FILE* restrict stream, char* restrict buf);
int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
int fprintf(FILE* restrict stream, const char* restrict format, ...);
int fscanf(FILE* restrict stream, const char * restrict format, ...);
int printf(const char* restrict format, ...);
int scanf(const char* restrict format, ...);
int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
int sprintf(char* restrict s, const char* restrict format, ...);
int sscanf(const char* restrict s, const char* restrict format, ...);
int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
int vprintf(const char* restrict format, va_list arg);
int vscanf(const char* restrict format, va_list arg);                          // C99
int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
              va_list arg);
int vsprintf(char* restrict s, const char* restrict format, va_list arg);
int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
int fgetc(FILE* stream);
char* fgets(char* restrict s, int n, FILE* restrict stream);
int fputc(int c, FILE* stream);
int fputs(const char* restrict s, FILE* restrict stream);
int getc(FILE* stream);
int getchar(void);
char* gets(char* s);  // removed in C++14
int putc(int c, FILE* stream);
int putchar(int c);
int puts(const char* s);
int ungetc(int c, FILE* stream);
size_t fread(void* restrict ptr, size_t size, size_t nmemb,
             FILE* restrict stream);
size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
              FILE* restrict stream);
int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
int fseek(FILE* stream, long offset, int whence);
int fsetpos(FILE*stream, const fpos_t* pos);
long ftell(FILE* stream);
void rewind(FILE* stream);
void clearerr(FILE* stream);
int feof(FILE* stream);
int ferror(FILE* stream);
void perror(const char* s);
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1990, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Chris Torek.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)stdio.h	8.5 (Berkeley) 4/29/95
 * $FreeBSD$
 */

#ifndef	_STDIO_H_
#define	_STDIO_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

__NULLABILITY_PRAGMA_PUSH

typedef	__off_t		fpos_t;

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#ifndef _RSIZE_T_DEFINED
#define _RSIZE_T_DEFINED
typedef size_t rsize_t;
#endif
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _OFF_T_DECLARED
#define	_OFF_T_DECLARED
typedef	__off_t		off_t;
#endif
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _SSIZE_T_DECLARED
#define	_SSIZE_T_DECLARED
typedef	__ssize_t	ssize_t;
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#ifndef _OFF64_T_DECLARED
#define	_OFF64_T_DECLARED
typedef	__off64_t	off64_t;
#endif
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _VA_LIST_DECLARED
typedef	__va_list	va_list;
#define	_VA_LIST_DECLARED
#endif
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#define	_FSTDIO			/* Define for new stdio with functions. */

/*
 * NB: to fit things in six character monocase externals, the stdio
 * code uses the prefix `__s' for stdio objects, typically followed
 * by a three-character attempt at a mnemonic.
 */

/* stdio buffers */
struct __sbuf {
	unsigned char *_base;
	int	_size;
};

/*
 * stdio state variables.
 *
 * The following always hold:
 *
 *	if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
 *		_lbfsize is -_bf._size, else _lbfsize is 0
 *	if _flags&__SRD, _w is 0
 *	if _flags&__SWR, _r is 0
 *
 * This ensures that the getc and putc macros (or inline functions) never
 * try to write or read from a file that is in `read' or `write' mode.
 * (Moreover, they can, and do, automatically switch from read mode to
 * write mode, and back, on "r+" and "w+" files.)
 *
 * _lbfsize is used only to make the inline line-buffered output stream
 * code as compact as possible.
 *
 * _ub, _up, and _ur are used when ungetc() pushes back more characters
 * than fit in the current _bf, or when ungetc() pushes back a character
 * that does not match the previous one in _bf.  When this happens,
 * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
 * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
 *
 * Certain members of __sFILE are accessed directly via macros or
 * inline functions.  To preserve ABI compat, these members must not
 * be disturbed.  These members are marked below with (*).
 */
struct __sFILE {
	unsigned char *_p;	/* (*) current position in (some) buffer */
	int	_r;		/* (*) read space left for getc() */
	int	_w;		/* (*) write space left for putc() */
	short	_flags;		/* (*) flags, below; this FILE is free if 0 */
	short	_file;		/* (*) fileno, if Unix descriptor, else -1 */
	struct	__sbuf _bf;	/* (*) the buffer (at least 1 byte, if !NULL) */
	int	_lbfsize;	/* (*) 0 or -_bf._size, for inline putc */

	/* operations */
	void	*_cookie;	/* (*) cookie passed to io functions */
	int	(* _Nullable _close)(void *);
	int	(* _Nullable _read)(void *, char *, int);
	fpos_t	(* _Nullable _seek)(void *, fpos_t, int);
	int	(* _Nullable _write)(void *, const char *, int);

	/* separate buffer for long sequences of ungetc() */
	struct	__sbuf _ub;	/* ungetc buffer */
	unsigned char	*_up;	/* saved _p when _p is doing ungetc data */
	int	_ur;		/* saved _r when _r is counting ungetc data */

	/* tricks to meet minimum requirements even when malloc() fails */
	unsigned char _ubuf[3];	/* guarantee an ungetc() buffer */
	unsigned char _nbuf[1];	/* guarantee a getc() buffer */

	/* separate buffer for fgetln() when line crosses buffer boundary */
	struct	__sbuf _lb;	/* buffer for fgetln() */

	/* Unix stdio files get aligned to block boundaries on fseek() */
	int	_blksize;	/* stat.st_blksize (may be != _bf._size) */
	fpos_t	_offset;	/* current lseek offset */

	struct pthread_mutex *_fl_mutex;	/* used for MT-safety */
	struct pthread *_fl_owner;	/* current owner */
	int	_fl_count;	/* recursive lock count */
	int	_orientation;	/* orientation for fwide() */
	__mbstate_t _mbstate;	/* multibyte conversion state */
	int	_flags2;	/* additional flags */
};
#ifndef _STDFILE_DECLARED
#define _STDFILE_DECLARED
typedef struct __sFILE FILE;
#endif
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _STDSTREAM_DECLARED
__BEGIN_DECLS
extern FILE *__stdinp;
extern FILE *__stdoutp;
extern FILE *__stderrp;
__END_DECLS
#define	_STDSTREAM_DECLARED
#endif
# 175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#define	__SLBF	0x0001		/* line buffered */
#define	__SNBF	0x0002		/* unbuffered */
#define	__SRD	0x0004		/* OK to read */
#define	__SWR	0x0008		/* OK to write */
	/* RD and WR are never simultaneously asserted */
#define	__SRW	0x0010		/* open for reading & writing */
#define	__SEOF	0x0020		/* found EOF */
#define	__SERR	0x0040		/* found error */
#define	__SMBF	0x0080		/* _bf._base is from malloc */
#define	__SAPP	0x0100		/* fdopen()ed in append mode */
#define	__SSTR	0x0200		/* this is an sprintf/snprintf string */
#define	__SOPT	0x0400		/* do fseek() optimization */
#define	__SNPT	0x0800		/* do not do fseek() optimization */
#define	__SOFF	0x1000		/* set iff _offset is in fact correct */
#define	__SMOD	0x2000		/* true => fgetln modified _p text */
#define	__SALC	0x4000		/* allocate string space dynamically */
#define	__SIGN	0x8000		/* ignore this file in _fwalk */

#define	__S2OAP	0x0001		/* O_APPEND mode is set */

/*
 * The following three definitions are for ANSI C, which took them
 * from System V, which brilliantly took internal interface macros and
 * made them official arguments to setvbuf(), without renaming them.
 * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
 *
 * Although numbered as their counterparts above, the implementation
 * does not rely on this.
 */
#define	_IOFBF	0		/* setvbuf should set fully buffered */
#define	_IOLBF	1		/* setvbuf should set line buffered */
#define	_IONBF	2		/* setvbuf should set unbuffered */

#define	BUFSIZ	1024		/* size of buffer used by setbuf */
#define	EOF	(-1)

/*
 * FOPEN_MAX is a minimum maximum, and is the number of streams that
 * stdio can provide without attempting to allocate further resources
 * (which could fail).  Do not use this for anything.
 */
				/* must be == _POSIX_STREAM_MAX <limits.h> */
#ifndef FOPEN_MAX
#define	FOPEN_MAX	20	/* must be <= OPEN_MAX <sys/syslimits.h> */
#endif
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	FILENAME_MAX	1024	/* must be <= PATH_MAX <sys/syslimits.h> */

/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	P_tmpdir	"/tmp/"
#endif
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	L_tmpnam	1024	/* XXX must be == PATH_MAX */
#define	TMP_MAX		308915776

#ifndef SEEK_SET
#define	SEEK_SET	0	/* set file offset to offset */
#endif
# 233 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef SEEK_CUR
#define	SEEK_CUR	1	/* set file offset to current plus offset */
#endif
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef SEEK_END
#define	SEEK_END	2	/* set file offset to EOF plus offset */
#endif
# 239 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#define	stdin	__stdinp
#define	stdout	__stdoutp
#define	stderr	__stderrp

__BEGIN_DECLS
#ifdef _XLOCALE_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdio.h>
#endif /* expanded by -frewrite-includes */
# 246 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
# 247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#endif
# 248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
/*
 * Functions defined in ANSI C standard.
 */
void	 clearerr(FILE *);
int	 fclose(FILE *);
int	 feof(FILE *);
int	 ferror(FILE *);
int	 fflush(FILE *);
int	 fgetc(FILE *);
int	 fgetpos(FILE * __restrict, fpos_t * __restrict);
char	*fgets(char * __restrict, int, FILE * __restrict);
FILE	*fopen(const char * __restrict, const char * __restrict);
int	 fprintf(FILE * __restrict, const char * __restrict, ...);
int	 fputc(int, FILE *);
int	 fputs(const char * __restrict, FILE * __restrict);
size_t	 fread(void * __restrict, size_t, size_t, FILE * __restrict);
FILE	*freopen(const char * __restrict, const char * __restrict, FILE * __restrict);
int	 fscanf(FILE * __restrict, const char * __restrict, ...);
int	 fseek(FILE *, long, int);
int	 fsetpos(FILE *, const fpos_t *);
long	 ftell(FILE *);
size_t	 fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
int	 getc(FILE *);
int	 getchar(void);
#if 0 /* disabled by -frewrite-includes */
#if __EXT1_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
char	*gets_s(char *, rsize_t);
#endif
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
void	 perror(const char *);
int	 printf(const char * __restrict, ...);
int	 putc(int, FILE *);
int	 putchar(int);
int	 puts(const char *);
int	 remove(const char *);
int	 rename(const char *, const char *);
void	 rewind(FILE *);
int	 scanf(const char * __restrict, ...);
void	 setbuf(FILE * __restrict, char * __restrict);
int	 setvbuf(FILE * __restrict, char * __restrict, int, size_t);
int	 sprintf(char * __restrict, const char * __restrict, ...);
int	 sscanf(const char * __restrict, const char * __restrict, ...);
FILE	*tmpfile(void);
char	*tmpnam(char *);
int	 ungetc(int, FILE *);
int	 vfprintf(FILE * __restrict, const char * __restrict,
	    __va_list);
int	 vprintf(const char * __restrict, __va_list);
int	 vsprintf(char * __restrict, const char * __restrict,
	    __va_list);

#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999 || __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 snprintf(char * __restrict, size_t, const char * __restrict,
	    ...) __printflike(3, 4);
int	 vsnprintf(char * __restrict, size_t, const char * __restrict,
	    __va_list) __printflike(3, 0);
#endif
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 vfscanf(FILE * __restrict, const char * __restrict, __va_list)
	    __scanflike(2, 0);
int	 vscanf(const char * __restrict, __va_list) __scanflike(1, 0);
int	 vsscanf(const char * __restrict, const char * __restrict, __va_list)
	    __scanflike(2, 0);
#endif
# 310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

/*
 * Functions defined in all versions of POSIX 1003.1.
 */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE <= 199506)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 315 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	L_cuserid	17	/* size for cuserid(3); MAXLOGNAME, legacy */
#endif
# 317 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	L_ctermid	1024	/* size for ctermid(3); PATH_MAX */

char	*ctermid(char *);
FILE	*fdopen(int, const char *);
int	 fileno(FILE *);
#endif /* __POSIX_VISIBLE */
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199209
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 327 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 pclose(FILE *);
FILE	*popen(const char *, const char *);
#endif
# 330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 ftrylockfile(FILE *);
void	 flockfile(FILE *);
void	 funlockfile(FILE *);

/*
 * These are normally used through macros as defined below, but POSIX
 * requires functions as well.
 */
int	 getc_unlocked(FILE *);
int	 getchar_unlocked(void);
int	 putc_unlocked(int, FILE *);
int	 putchar_unlocked(int);
#endif
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 346 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
void	 clearerr_unlocked(FILE *);
int	 feof_unlocked(FILE *);
int	 ferror_unlocked(FILE *);
int	 fflush_unlocked(FILE *);
int	 fileno_unlocked(FILE *);
int	 fputc_unlocked(int, FILE *);
int	 fputs_unlocked(const char * __restrict, FILE * __restrict);
size_t	 fread_unlocked(void * __restrict, size_t, size_t, FILE * __restrict);
size_t	 fwrite_unlocked(const void * __restrict, size_t, size_t,
    FILE * __restrict);
#endif
# 357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 359 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 fseeko(FILE *, __off_t, int);
__off_t	 ftello(FILE *);
#endif
# 362 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE || __XSI_VISIBLE > 0 && __XSI_VISIBLE < 600
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 364 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 getw(FILE *);
int	 putw(int, FILE *);
#endif /* BSD or X/Open before issue 6 */
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 369 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
char	*tempnam(const char *, const char *);
#endif
# 371 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 373 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
FILE	*fmemopen(void * __restrict, size_t, const char * __restrict);
ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
	    FILE * __restrict);
FILE	*open_memstream(char **, size_t *);
int	 renameat(int, const char *, int, const char *);
int	 vdprintf(int, const char * __restrict, __va_list) __printflike(2, 0);
/* _WITH_GETLINE to allow pre 11 sources to build on 11+ systems */
ssize_t	 getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
int	 dprintf(int, const char * __restrict, ...) __printflike(2, 3);
#endif /* __POSIX_VISIBLE >= 200809 */
# 383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

/*
 * Routines that are purely local.
 */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
int	 asprintf(char **, const char *, ...) __printflike(2, 3);
char	*ctermid_r(char *);
void	 fcloseall(void);
int	 fdclose(FILE *, int *);
char	*fgetln(FILE *, size_t *);
const char *fmtcheck(const char *, const char *) __format_arg(2);
int	 fpurge(FILE *);
void	 setbuffer(FILE *, char *, int);
int	 setlinebuf(FILE *);
int	 vasprintf(char **, const char *, __va_list)
	    __printflike(2, 0);

/*
 * The system error table contains messages for the first sys_nerr
 * positive errno values.  Use strerror() or strerror_r() from <string.h>
 * instead.
 */
extern const int sys_nerr;
extern const char * const sys_errlist[];

/*
 * Stdio function-access interface.
 */
FILE	*funopen(const void *,
	    int (* _Nullable)(void *, char *, int),
	    int (* _Nullable)(void *, const char *, int),
	    fpos_t (* _Nullable)(void *, fpos_t, int),
	    int (* _Nullable)(void *));
#define	fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
#define	fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)

typedef __ssize_t cookie_read_function_t(void *, char *, size_t);
typedef __ssize_t cookie_write_function_t(void *, const char *, size_t);
typedef int cookie_seek_function_t(void *, off64_t *, int);
typedef int cookie_close_function_t(void *);
typedef struct {
	cookie_read_function_t	*read;
	cookie_write_function_t	*write;
	cookie_seek_function_t	*seek;
	cookie_close_function_t	*close;
} cookie_io_functions_t;
FILE	*fopencookie(void *, const char *, cookie_io_functions_t);

/*
 * Portability hacks.  See <sys/types.h>.
 */
#ifndef _FTRUNCATE_DECLARED
#define	_FTRUNCATE_DECLARED
int	 ftruncate(int, __off_t);
#endif
# 438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _LSEEK_DECLARED
#define	_LSEEK_DECLARED
__off_t	 lseek(int, __off_t, int);
#endif
# 442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _MMAP_DECLARED
#define	_MMAP_DECLARED
void	*mmap(void *, size_t, int, int, int, __off_t);
#endif
# 446 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#ifndef _TRUNCATE_DECLARED
#define	_TRUNCATE_DECLARED
int	 truncate(const char *, __off_t);
#endif
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#endif /* __BSD_VISIBLE */
# 451 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

/*
 * Functions internal to the implementation.
 */
int	__srget(FILE *);
int	__swbuf(int, FILE *);

/*
 * The __sfoo macros are here so that we can
 * define function versions in the C library.
 */
#define	__sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && defined(__STDC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
static __inline int __sputc(int _c, FILE *_p) {
	if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
		return (*_p->_p++ = _c);
	else
		return (__swbuf(_c, _p));
}
#else
# 471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
/*
 * This has been tuned to generate reasonable code on the vax using pcc.
 */
#define	__sputc(c, p) \
	(--(p)->_w < 0 ? \
		(p)->_w >= (p)->_lbfsize ? \
			(*(p)->_p = (c)), *(p)->_p != '\n' ? \
				(int)*(p)->_p++ : \
				__swbuf('\n', p) : \
			__swbuf((int)(c), p) : \
		(*(p)->_p = (c), (int)*(p)->_p++))
#endif
# 483 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#ifndef __LIBC_ISTHREADED_DECLARED
#define __LIBC_ISTHREADED_DECLARED
extern int __isthreaded;
#endif
# 488 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#ifndef __cplusplus

#define	__sfeof(p)	(((p)->_flags & __SEOF) != 0)
#define	__sferror(p)	(((p)->_flags & __SERR) != 0)
#define	__sclearerr(p)	((void)((p)->_flags &= ~(__SERR|__SEOF)))
#define	__sfileno(p)	((p)->_file)


#define	feof(p)		(!__isthreaded ? __sfeof(p) : (feof)(p))
#define	ferror(p)	(!__isthreaded ? __sferror(p) : (ferror)(p))
#define	clearerr(p)	(!__isthreaded ? __sclearerr(p) : (clearerr)(p))

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	fileno(p)	(!__isthreaded ? __sfileno(p) : (fileno)(p))
#endif
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

#define	getc(fp)	(!__isthreaded ? __sgetc(fp) : (getc)(fp))
#define	putc(x, fp)	(!__isthreaded ? __sputc(x, fp) : (putc)(x, fp))

#define	getchar()	getc(stdin)
#define	putchar(x)	putc(x, stdout)

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
/*
 * See ISO/IEC 9945-1 ANSI/IEEE Std 1003.1 Second Edition 1996-07-12
 * B.8.2.7 for the rationale behind the *_unlocked() macros.
 */
#define	clearerr_unlocked(p)	__sclearerr(p)
#define	feof_unlocked(p)	__sfeof(p)
#define	ferror_unlocked(p)	__sferror(p)
#define	fileno_unlocked(p)	__sfileno(p)
#define	fputc_unlocked(s, p)	__sputc(s, p)
#endif
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#define	getc_unlocked(fp)	__sgetc(fp)
#define	putc_unlocked(x, fp)	__sputc(x, fp)

#define	getchar_unlocked()	getc_unlocked(stdin)
#define	putchar_unlocked(x)	putc_unlocked(x, stdout)
#endif
# 529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
#endif /* __cplusplus */
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4

__END_DECLS
__NULLABILITY_PRAGMA_POP

#endif /* !_STDIO_H_ */
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdio.h" 3 4
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 2 3

#ifdef __cplusplus

#undef getc
#undef putc
#undef clearerr
#undef feof
#undef ferror

#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#endif // _LIBCPP_STDIO_H
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::FILE _LIBCPP_USING_IF_EXISTS;
using ::fpos_t _LIBCPP_USING_IF_EXISTS;
using ::size_t _LIBCPP_USING_IF_EXISTS;

using ::fclose _LIBCPP_USING_IF_EXISTS;
using ::fflush _LIBCPP_USING_IF_EXISTS;
using ::setbuf _LIBCPP_USING_IF_EXISTS;
using ::setvbuf _LIBCPP_USING_IF_EXISTS;
using ::fprintf _LIBCPP_USING_IF_EXISTS;
using ::fscanf _LIBCPP_USING_IF_EXISTS;
using ::snprintf _LIBCPP_USING_IF_EXISTS;
using ::sprintf _LIBCPP_USING_IF_EXISTS;
using ::sscanf _LIBCPP_USING_IF_EXISTS;
using ::vfprintf _LIBCPP_USING_IF_EXISTS;
using ::vfscanf _LIBCPP_USING_IF_EXISTS;
using ::vsscanf _LIBCPP_USING_IF_EXISTS;
using ::vsnprintf _LIBCPP_USING_IF_EXISTS;
using ::vsprintf _LIBCPP_USING_IF_EXISTS;
using ::fgetc _LIBCPP_USING_IF_EXISTS;
using ::fgets _LIBCPP_USING_IF_EXISTS;
using ::fputc _LIBCPP_USING_IF_EXISTS;
using ::fputs _LIBCPP_USING_IF_EXISTS;
using ::getc _LIBCPP_USING_IF_EXISTS;
using ::putc _LIBCPP_USING_IF_EXISTS;
using ::ungetc _LIBCPP_USING_IF_EXISTS;
using ::fread _LIBCPP_USING_IF_EXISTS;
using ::fwrite _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_FGETPOS_FSETPOS
using ::fgetpos _LIBCPP_USING_IF_EXISTS;
#endif
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
using ::fseek _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_FGETPOS_FSETPOS
using ::fsetpos _LIBCPP_USING_IF_EXISTS;
#endif
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
using ::ftell _LIBCPP_USING_IF_EXISTS;
using ::rewind _LIBCPP_USING_IF_EXISTS;
using ::clearerr _LIBCPP_USING_IF_EXISTS;
using ::feof _LIBCPP_USING_IF_EXISTS;
using ::ferror _LIBCPP_USING_IF_EXISTS;
using ::perror _LIBCPP_USING_IF_EXISTS;

#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
using ::fopen _LIBCPP_USING_IF_EXISTS;
using ::freopen _LIBCPP_USING_IF_EXISTS;
using ::remove _LIBCPP_USING_IF_EXISTS;
using ::rename _LIBCPP_USING_IF_EXISTS;
using ::tmpfile _LIBCPP_USING_IF_EXISTS;
using ::tmpnam _LIBCPP_USING_IF_EXISTS;
#endif
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3

#ifndef _LIBCPP_HAS_NO_STDIN
using ::getchar _LIBCPP_USING_IF_EXISTS;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 11 && !defined(_LIBCPP_C_HAS_NO_GETS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
using ::gets _LIBCPP_USING_IF_EXISTS;
#endif
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
using ::scanf _LIBCPP_USING_IF_EXISTS;
using ::vscanf _LIBCPP_USING_IF_EXISTS;
#endif
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3

#ifndef _LIBCPP_HAS_NO_STDOUT
using ::printf _LIBCPP_USING_IF_EXISTS;
using ::putchar _LIBCPP_USING_IF_EXISTS;
using ::puts _LIBCPP_USING_IF_EXISTS;
using ::vprintf _LIBCPP_USING_IF_EXISTS;
#endif
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CSTDIO
# 176 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdio" 3
# 525 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 525 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cwchar>
#endif /* expanded by -frewrite-includes */
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 1 3
// -*- C++ -*-
//===--------------------------- cwchar -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CWCHAR
#define _LIBCPP_CWCHAR

/*
    cwchar synopsis

Macros:

    NULL
    WCHAR_MAX
    WCHAR_MIN
    WEOF

namespace std
{

Types:

    mbstate_t
    size_t
    tm
    wint_t

int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...);
int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...);
int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...);
int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...);
int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);  // C99
int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg);
int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg);  // C99
int vwprintf(const wchar_t* restrict format, va_list arg);
int vwscanf(const wchar_t* restrict format, va_list arg);  // C99
int wprintf(const wchar_t* restrict format, ...);
int wscanf(const wchar_t* restrict format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* restrict s, FILE* restrict stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar();
wint_t putwc(wchar_t c, FILE* stream);
wint_t putwchar(wchar_t c);
wint_t ungetwc(wint_t c, FILE* stream);
double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr);
float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr);         // C99
long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr);  // C99
long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
int wcscmp(const wchar_t* s1, const wchar_t* s2);
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
const wchar_t* wcschr(const wchar_t* s, wchar_t c);
      wchar_t* wcschr(      wchar_t* s, wchar_t c);
size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
size_t wcslen(const wchar_t* s);
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
      wchar_t* wcsrchr(      wchar_t* s, wchar_t c);
size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);
wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr);
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
      wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);
int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format,
                const tm* restrict timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps);
size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len,
                 mbstate_t* restrict ps);
size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
                 mbstate_t* restrict ps);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
#if 0 /* expanded by -frewrite-includes */
#include <cwctype>
#endif /* expanded by -frewrite-includes */
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 1 3
// -*- C++ -*-
//===--------------------------- cwctype ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CWCTYPE
#define _LIBCPP_CWCTYPE

/*
    cwctype synopsis

Macros:

    WEOF

namespace std
{

Types:

    wint_t
    wctrans_t
    wctype_t

int iswalnum(wint_t wc);
int iswalpha(wint_t wc);
int iswblank(wint_t wc);  // C99
int iswcntrl(wint_t wc);
int iswdigit(wint_t wc);
int iswgraph(wint_t wc);
int iswlower(wint_t wc);
int iswprint(wint_t wc);
int iswpunct(wint_t wc);
int iswspace(wint_t wc);
int iswupper(wint_t wc);
int iswxdigit(wint_t wc);
int iswctype(wint_t wc, wctype_t desc);
wctype_t wctype(const char* property);
wint_t towlower(wint_t wc);
wint_t towupper(wint_t wc);
wint_t towctrans(wint_t wc, wctrans_t desc);
wctrans_t wctrans(const char* property);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
#if 0 /* expanded by -frewrite-includes */
#include <cctype>
#endif /* expanded by -frewrite-includes */
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 1 3
// -*- C++ -*-
//===---------------------------- cctype ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CCTYPE
#define _LIBCPP_CCTYPE

/*
    cctype synopsis

namespace std
{

int isalnum(int c);
int isalpha(int c);
int isblank(int c);  // C99
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int tolower(int c);
int toupper(int c);

}  // std
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
#if 0 /* expanded by -frewrite-includes */
#include <ctype.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 1 3
// -*- C++ -*-
//===---------------------------- ctype.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CTYPE_H
#define _LIBCPP_CTYPE_H

/*
    ctype.h synopsis

int isalnum(int c);
int isalpha(int c);
int isblank(int c);  // C99
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int tolower(int c);
int toupper(int c);
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3
#endif
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <ctype.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * This code is derived from software contributed to Berkeley by
 * Paul Borman at Krystal Technologies.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)ctype.h	8.4 (Berkeley) 1/21/94
 *      $FreeBSD$
 */

#ifndef _CTYPE_H_
#define	_CTYPE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <_ctype.h>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

__BEGIN_DECLS
int	isalnum(int);
int	isalpha(int);
int	iscntrl(int);
int	isdigit(int);
int	isgraph(int);
int	islower(int);
int	isprint(int);
int	ispunct(int);
int	isspace(int);
int	isupper(int);
int	isxdigit(int);
int	tolower(int);
int	toupper(int);

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
int	isascii(int);
int	toascii(int);
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
int	isblank(int);
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
int	digittoint(int);
int	ishexnumber(int);
int	isideogram(int);
int	isnumber(int);
int	isphonogram(int);
int	isrune(int);
int	isspecial(int);
#endif
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_ctype.h>
#endif /* expanded by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */


#if 0 /* disabled by -frewrite-includes */
#if	(defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
#define _XLOCALE_WCTYPE_H
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#define _XLOCALE_CTYPE_H
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_RUN_FUNCTIONS_DEFINED
#define _XLOCALE_RUN_FUNCTIONS_DEFINED 1
unsigned long	 ___runetype_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___tolower_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___toupper_l(__ct_rune_t, locale_t) __pure;
_RuneLocale	*__runes_for_locale(locale_t, int*);
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_INLINE
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* GNU89 inline has nonstandard semantics. */
#define _XLOCALE_INLINE extern __inline
#else
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Hack to work around people who define inline away */
#ifdef inline
#define _XLOCALE_INLINE static __inline
#else
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Define with C++ / C99 compatible semantics */
#define _XLOCALE_INLINE inline
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* _XLOCALE_INLINE */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return ((__c < 0 || __c >= _CACHED_RUNES) ? ___runetype_l(__c, __loc) :
	        runes->__runetype[__c]) & __f;
}

_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__maskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(fname, cat) \
		_XLOCALE_INLINE int isw##fname##_l(int, locale_t);\
		_XLOCALE_INLINE int isw##fname##_l(int __c, locale_t __l)\
		{ return __istype_l(__c, cat, __l); }
#else
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return (__c < 0 || __c >= __limit) ? 0 :
	       runes->__runetype[__c] & __f;
}

_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__sbmaskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(__fname, __cat) \
		_XLOCALE_INLINE int is##__fname##_l(int, locale_t); \
		_XLOCALE_INLINE int is##__fname##_l(int __c, locale_t __l)\
		{ return __sbistype_l(__c, __cat, __l); }
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
XLOCALE_ISCTYPE(digit, _CTYPE_D)
XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)
XLOCALE_ISCTYPE(rune, 0xFFFFFF00L)
XLOCALE_ISCTYPE(space, _CTYPE_S)
XLOCALE_ISCTYPE(special, _CTYPE_T)
XLOCALE_ISCTYPE(upper, _CTYPE_U)
XLOCALE_ISCTYPE(xdigit, _CTYPE_X)
#undef XLOCALE_ISCTYPE

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int towlower_l(int, locale_t);
_XLOCALE_INLINE int __wcwidth_l(__ct_rune_t, locale_t);
_XLOCALE_INLINE int towupper_l(int, locale_t);

_XLOCALE_INLINE int towlower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___tolower_l(__c, __l) :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int towupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___toupper_l(__c, __l) :
	       __runes->__mapupper[__c];
}
_XLOCALE_INLINE int
__wcwidth_l(__ct_rune_t _c, locale_t __l)
{
	unsigned int _x;

	if (_c == 0)
		return (0);
	_x = (unsigned int)__maskrune_l(_c, _CTYPE_SWM|_CTYPE_R, __l);
	if ((_x & _CTYPE_SWM) != 0)
		return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
	return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}
int iswctype_l(wint_t __wc, wctype_t __charclass, locale_t __l);
wctype_t wctype_l(const char *property, locale_t __l);
wint_t towctrans_l(wint_t __wc, wctrans_t desc, locale_t __l);
wint_t nextwctype_l(wint_t __wc, wctype_t wct, locale_t __l);
wctrans_t wctrans_l(const char *__charclass, locale_t __l);
#undef _XLOCALE_WCTYPES
#else
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int digittoint_l(int, locale_t);
_XLOCALE_INLINE int tolower_l(int, locale_t);
_XLOCALE_INLINE int toupper_l(int, locale_t);

_XLOCALE_INLINE int digittoint_l(int __c, locale_t __l)
{ return __sbmaskrune_l((__c), 0xFF, __l); }

_XLOCALE_INLINE int tolower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int toupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__mapupper[__c];
}
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* (defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H)) */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 2 3 4
#endif
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
__END_DECLS

#ifndef __cplusplus
#define	isalnum(c)	__sbistype((c), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define	isalpha(c)	__sbistype((c), _CTYPE_A)
#define	iscntrl(c)	__sbistype((c), _CTYPE_C)
#define	isdigit(c)	__sbistype((c), _CTYPE_D)
#define	isgraph(c)	__sbistype((c), _CTYPE_G)
#define	islower(c)	__sbistype((c), _CTYPE_L)
#define	isprint(c)	__sbistype((c), _CTYPE_R)
#define	ispunct(c)	__sbistype((c), _CTYPE_P)
#define	isspace(c)	__sbistype((c), _CTYPE_S)
#define	isupper(c)	__sbistype((c), _CTYPE_U)
#define	isxdigit(c)	__sbistype((c), _CTYPE_X)
#define	tolower(c)	__sbtolower(c)
#define	toupper(c)	__sbtoupper(c)
#endif /* !__cplusplus */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
/*
 * POSIX.1-2001 specifies _tolower() and _toupper() to be macros equivalent to
 * tolower() and toupper() respectively, minus extra checking to ensure that
 * the argument is a lower or uppercase letter respectively.  We've chosen to
 * implement these macros with the same error checking as tolower() and
 * toupper() since this doesn't violate the specification itself, only its
 * intent.  We purposely leave _tolower() and _toupper() undocumented to
 * discourage their use.
 *
 * XXX isascii() and toascii() should similarly be undocumented.
 */
#define	_tolower(c)	__sbtolower(c)
#define	_toupper(c)	__sbtoupper(c)
#define	isascii(c)	(((c) & ~0x7F) == 0)
#define	toascii(c)	((c) & 0x7F)
#endif
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999 && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
#define	isblank(c)	__sbistype((c), _CTYPE_B)
#endif
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
#define	digittoint(c)	__sbmaskrune((c), 0xFF)
#define	ishexnumber(c)	__sbistype((c), _CTYPE_X)
#define	isideogram(c)	__sbistype((c), _CTYPE_I)
#define	isnumber(c)	__sbistype((c), _CTYPE_D|_CTYPE_N)
#define	isphonogram(c)	__sbistype((c), _CTYPE_Q)
#define	isrune(c)	__sbistype((c), 0xFFFFFF00L)
#define	isspecial(c)	__sbistype((c), _CTYPE_T)
#endif
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4

#endif /* !_CTYPE_H_ */
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/ctype.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 2 3

#ifdef __cplusplus

#undef isalnum
#undef isalpha
#undef isblank
#undef iscntrl
#undef isdigit
#undef isgraph
#undef islower
#undef isprint
#undef ispunct
#undef isspace
#undef isupper
#undef isxdigit
#undef tolower
#undef toupper

#endif
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3

#endif // _LIBCPP_CTYPE_H
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ctype.h" 3
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifdef isalnum
#undef isalnum
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isalpha
#undef isalpha
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isblank
#undef isblank
#endif
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef iscntrl
#undef iscntrl
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isdigit
#undef isdigit
#endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isgraph
#undef isgraph
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef islower
#undef islower
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isprint
#undef isprint
#endif
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef ispunct
#undef ispunct
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isspace
#undef isspace
#endif
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isupper
#undef isupper
#endif
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef isxdigit
#undef isxdigit
#endif
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef tolower
#undef tolower
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3

#ifdef toupper
#undef toupper
#endif
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3


using ::isalnum _LIBCPP_USING_IF_EXISTS;
using ::isalpha _LIBCPP_USING_IF_EXISTS;
using ::isblank _LIBCPP_USING_IF_EXISTS;
using ::iscntrl _LIBCPP_USING_IF_EXISTS;
using ::isdigit _LIBCPP_USING_IF_EXISTS;
using ::isgraph _LIBCPP_USING_IF_EXISTS;
using ::islower _LIBCPP_USING_IF_EXISTS;
using ::isprint _LIBCPP_USING_IF_EXISTS;
using ::ispunct _LIBCPP_USING_IF_EXISTS;
using ::isspace _LIBCPP_USING_IF_EXISTS;
using ::isupper _LIBCPP_USING_IF_EXISTS;
using ::isxdigit _LIBCPP_USING_IF_EXISTS;
using ::tolower _LIBCPP_USING_IF_EXISTS;
using ::toupper _LIBCPP_USING_IF_EXISTS;

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CCTYPE
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cctype" 3
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <wctype.h>
#endif /* expanded by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 1 3
// -*- C++ -*-
//===--------------------------- wctype.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_WCTYPE_H
#define _LIBCPP_WCTYPE_H

/*
    wctype.h synopsis

Macros:

    WEOF

Types:

    wint_t
    wctrans_t
    wctype_t

int iswalnum(wint_t wc);
int iswalpha(wint_t wc);
int iswblank(wint_t wc);  // C99
int iswcntrl(wint_t wc);
int iswdigit(wint_t wc);
int iswgraph(wint_t wc);
int iswlower(wint_t wc);
int iswprint(wint_t wc);
int iswpunct(wint_t wc);
int iswspace(wint_t wc);
int iswupper(wint_t wc);
int iswxdigit(wint_t wc);
int iswctype(wint_t wc, wctype_t desc);
wctype_t wctype(const char* property);
wint_t towlower(wint_t wc);
wint_t towupper(wint_t wc);
wint_t towctrans(wint_t wc, wctrans_t desc);
wctrans_t wctrans(const char* property);

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3

// TODO:
// In the future, we should unconditionally include_next <wctype.h> here and instead
// have a mode under which the library does not need libc++'s <wctype.h> or <cwctype>
// at all (i.e. a mode without wchar_t). As it stands, we need to do that to completely
// bypass the using declarations in <cwctype> when we did not include <wctype.h>.
// Otherwise, a using declaration like `using ::wint_t` in <cwctype> will refer to
// nothing (with using_if_exists), and if we include another header that defines one
// of these declarations (e.g. <wchar.h>), the second `using ::wint_t` with using_if_exists
// will fail because it does not refer to the same declaration.
#if 0 /* disabled by -frewrite-includes */
#if __has_include_next(<wctype.h>)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
#if 0 /* expanded by -frewrite-includes */
#   include_next <wctype.h>
#endif /* expanded by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause
 *
 * Copyright (c)1999 Citrus Project,
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	citrus Id: wctype.h,v 1.4 2000/12/21 01:50:21 itojun Exp
 *	$NetBSD: wctype.h,v 1.3 2000/12/22 14:16:16 itojun Exp $
 * $FreeBSD$
 */

#ifndef _WCTYPE_H_
#define	_WCTYPE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <_ctype.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#ifndef _WCTRANS_T
typedef	int	wctrans_t;
#define	_WCTRANS_T
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#ifndef _WCTYPE_T
typedef	unsigned long	wctype_t;
#define	_WCTYPE_T
#endif
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#ifndef _WINT_T_DECLARED
typedef	__wint_t	wint_t;
#define	_WINT_T_DECLARED
#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#ifndef WEOF
#define	WEOF	((wint_t)-1)
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

__BEGIN_DECLS
int	iswalnum(wint_t);
int	iswalpha(wint_t);
int	iswblank(wint_t);
int	iswcntrl(wint_t);
int	iswctype(wint_t, wctype_t);
int	iswdigit(wint_t);
int	iswgraph(wint_t);
int	iswlower(wint_t);
int	iswprint(wint_t);
int	iswpunct(wint_t);
int	iswspace(wint_t);
int	iswupper(wint_t);
int	iswxdigit(wint_t);
wint_t	towctrans(wint_t, wctrans_t);
wint_t	towlower(wint_t);
wint_t	towupper(wint_t);
wctrans_t
	wctrans(const char *);
wctype_t
	wctype(const char *);

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
wint_t	iswascii(wint_t);
wint_t	iswhexnumber(wint_t);
wint_t	iswideogram(wint_t);
wint_t	iswnumber(wint_t);
wint_t	iswphonogram(wint_t);
wint_t	iswrune(wint_t);
wint_t	iswspecial(wint_t);
wint_t	nextwctype(wint_t, wctype_t);
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
#define _XLOCALE_WCTYPES 1
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_ctype.h>
#endif /* expanded by -frewrite-includes */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */


#if 0 /* disabled by -frewrite-includes */
#if	(defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
#define _XLOCALE_WCTYPE_H
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#define _XLOCALE_CTYPE_H
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_RUN_FUNCTIONS_DEFINED
#define _XLOCALE_RUN_FUNCTIONS_DEFINED 1
unsigned long	 ___runetype_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___tolower_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___toupper_l(__ct_rune_t, locale_t) __pure;
_RuneLocale	*__runes_for_locale(locale_t, int*);
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_INLINE
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* GNU89 inline has nonstandard semantics. */
#define _XLOCALE_INLINE extern __inline
#else
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Hack to work around people who define inline away */
#ifdef inline
#define _XLOCALE_INLINE static __inline
#else
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Define with C++ / C99 compatible semantics */
#define _XLOCALE_INLINE inline
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* _XLOCALE_INLINE */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return ((__c < 0 || __c >= _CACHED_RUNES) ? ___runetype_l(__c, __loc) :
	        runes->__runetype[__c]) & __f;
}

_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__maskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(fname, cat) \
		_XLOCALE_INLINE int isw##fname##_l(int, locale_t);\
		_XLOCALE_INLINE int isw##fname##_l(int __c, locale_t __l)\
		{ return __istype_l(__c, cat, __l); }
#else
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return (__c < 0 || __c >= __limit) ? 0 :
	       runes->__runetype[__c] & __f;
}

_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__sbmaskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(__fname, __cat) \
		_XLOCALE_INLINE int is##__fname##_l(int, locale_t); \
		_XLOCALE_INLINE int is##__fname##_l(int __c, locale_t __l)\
		{ return __sbistype_l(__c, __cat, __l); }
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
XLOCALE_ISCTYPE(digit, _CTYPE_D)
XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)
XLOCALE_ISCTYPE(rune, 0xFFFFFF00L)
XLOCALE_ISCTYPE(space, _CTYPE_S)
XLOCALE_ISCTYPE(special, _CTYPE_T)
XLOCALE_ISCTYPE(upper, _CTYPE_U)
XLOCALE_ISCTYPE(xdigit, _CTYPE_X)
#undef XLOCALE_ISCTYPE

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int towlower_l(int, locale_t);
_XLOCALE_INLINE int __wcwidth_l(__ct_rune_t, locale_t);
_XLOCALE_INLINE int towupper_l(int, locale_t);

_XLOCALE_INLINE int towlower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___tolower_l(__c, __l) :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int towupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___toupper_l(__c, __l) :
	       __runes->__mapupper[__c];
}
_XLOCALE_INLINE int
__wcwidth_l(__ct_rune_t _c, locale_t __l)
{
	unsigned int _x;

	if (_c == 0)
		return (0);
	_x = (unsigned int)__maskrune_l(_c, _CTYPE_SWM|_CTYPE_R, __l);
	if ((_x & _CTYPE_SWM) != 0)
		return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
	return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}
int iswctype_l(wint_t __wc, wctype_t __charclass, locale_t __l);
wctype_t wctype_l(const char *property, locale_t __l);
wint_t towctrans_l(wint_t __wc, wctrans_t desc, locale_t __l);
wint_t nextwctype_l(wint_t __wc, wctype_t wct, locale_t __l);
wctrans_t wctrans_l(const char *__charclass, locale_t __l);
#undef _XLOCALE_WCTYPES
#else
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int digittoint_l(int, locale_t);
_XLOCALE_INLINE int tolower_l(int, locale_t);
_XLOCALE_INLINE int toupper_l(int, locale_t);

_XLOCALE_INLINE int digittoint_l(int __c, locale_t __l)
{ return __sbmaskrune_l((__c), 0xFF, __l); }

_XLOCALE_INLINE int tolower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int toupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__mapupper[__c];
}
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* (defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H)) */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 2 3 4
#endif /* __POSIX_VISIBLE >= 200809 */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
__END_DECLS

#ifndef __cplusplus
#define	iswalnum(wc)		__istype((wc), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define	iswalpha(wc)		__istype((wc), _CTYPE_A)
#define	iswblank(wc)		__istype((wc), _CTYPE_B)
#define	iswcntrl(wc)		__istype((wc), _CTYPE_C)
#define	iswctype(wc, charclass)	__istype((wc), (charclass))
#define	iswdigit(wc)		__istype((wc), _CTYPE_D)
#define	iswgraph(wc)		__istype((wc), _CTYPE_G)
#define	iswlower(wc)		__istype((wc), _CTYPE_L)
#define	iswprint(wc)		__istype((wc), _CTYPE_R)
#define	iswpunct(wc)		__istype((wc), _CTYPE_P)
#define	iswspace(wc)		__istype((wc), _CTYPE_S)
#define	iswupper(wc)		__istype((wc), _CTYPE_U)
#define	iswxdigit(wc)		__istype((wc), _CTYPE_X)
#define	towlower(wc)		__tolower(wc)
#define	towupper(wc)		__toupper(wc)

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
#define	iswascii(wc)		(((wc) & ~0x7F) == 0)
#define	iswhexnumber(wc)	__istype((wc), _CTYPE_X) /* alias of iswxdigit */
#define	iswideogram(wc)		__istype((wc), _CTYPE_I)
#define	iswnumber(wc)		__istype((wc), _CTYPE_D|_CTYPE_N)
#define	iswphonogram(wc)	__istype((wc), _CTYPE_Q)
#define	iswrune(wc)		__istype((wc), 0xFFFFFF00L)
#define	iswspecial(wc)		__istype((wc), _CTYPE_T)
#endif /* __BSD_VISIBLE */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
#endif /* __cplusplus */
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4

#endif		/* _WCTYPE_H_ */
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/wctype.h" 3 4
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 2 3
#   define _LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H
#endif
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3

#ifdef __cplusplus

#undef iswalnum
#undef iswalpha
#undef iswblank
#undef iswcntrl
#undef iswdigit
#undef iswgraph
#undef iswlower
#undef iswprint
#undef iswpunct
#undef iswspace
#undef iswupper
#undef iswxdigit
#undef iswctype
#undef wctype
#undef towlower
#undef towupper
#undef towctrans
#undef wctrans

#endif // __cplusplus
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3

#endif // _LIBCPP_WCTYPE_H
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wctype.h" 3
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
#endif
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
using ::wint_t _LIBCPP_USING_IF_EXISTS;
using ::wctrans_t _LIBCPP_USING_IF_EXISTS;
using ::wctype_t _LIBCPP_USING_IF_EXISTS;
using ::iswalnum _LIBCPP_USING_IF_EXISTS;
using ::iswalpha _LIBCPP_USING_IF_EXISTS;
using ::iswblank _LIBCPP_USING_IF_EXISTS;
using ::iswcntrl _LIBCPP_USING_IF_EXISTS;
using ::iswdigit _LIBCPP_USING_IF_EXISTS;
using ::iswgraph _LIBCPP_USING_IF_EXISTS;
using ::iswlower _LIBCPP_USING_IF_EXISTS;
using ::iswprint _LIBCPP_USING_IF_EXISTS;
using ::iswpunct _LIBCPP_USING_IF_EXISTS;
using ::iswspace _LIBCPP_USING_IF_EXISTS;
using ::iswupper _LIBCPP_USING_IF_EXISTS;
using ::iswxdigit _LIBCPP_USING_IF_EXISTS;
using ::iswctype _LIBCPP_USING_IF_EXISTS;
using ::wctype _LIBCPP_USING_IF_EXISTS;
using ::towlower _LIBCPP_USING_IF_EXISTS;
using ::towupper _LIBCPP_USING_IF_EXISTS;
using ::towctrans _LIBCPP_USING_IF_EXISTS;
using ::wctrans _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CWCTYPE
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwctype" 3
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <wchar.h>
#endif /* expanded by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 1 3
// -*- C++ -*-
//===--------------------------- wchar.h ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_wint_t) || defined(__need_mbstate_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <wchar.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_WCHAR_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#define _LIBCPP_WCHAR_H

/*
    wchar.h synopsis

Macros:

    NULL
    WCHAR_MAX
    WCHAR_MIN
    WEOF

Types:

    mbstate_t
    size_t
    tm
    wint_t

int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...);
int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...);
int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...);
int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...);
int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);  // C99
int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg);
int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg);  // C99
int vwprintf(const wchar_t* restrict format, va_list arg);
int vwscanf(const wchar_t* restrict format, va_list arg);  // C99
int wprintf(const wchar_t* restrict format, ...);
int wscanf(const wchar_t* restrict format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* restrict s, FILE* restrict stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar();
wint_t putwc(wchar_t c, FILE* stream);
wint_t putwchar(wchar_t c);
wint_t ungetwc(wint_t c, FILE* stream);
double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr);
float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr);         // C99
long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr);  // C99
long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);  // C99
wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
int wcscmp(const wchar_t* s1, const wchar_t* s2);
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
const wchar_t* wcschr(const wchar_t* s, wchar_t c);
      wchar_t* wcschr(      wchar_t* s, wchar_t c);
size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
size_t wcslen(const wchar_t* s);
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
      wchar_t* wcsrchr(      wchar_t* s, wchar_t c);
size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
      wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);
wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr);
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
      wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);
int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format,
                const tm* restrict timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps);
size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len,
                 mbstate_t* restrict ps);
size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
                 mbstate_t* restrict ps);

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <stddef.h>
#endif /* expanded by -frewrite-includes */
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#ifdef __cplusplus
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <wchar.h>
#endif /* expanded by -frewrite-includes */
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

// Determine whether we have const-correct overloads for wcschr and friends.
#if 0 /* disabled by -frewrite-includes */
#if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#  define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GLIBC_PREREQ)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#  if __GLIBC_PREREQ(2, 10)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#    define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#  endif
# 128 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_MSVCRT)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#if 0 /* disabled by -frewrite-includes */
#  if defined(_CRT_CONST_CORRECT_OVERLOADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#    define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1
#  endif
# 132 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
#endif
# 133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && !defined(_LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
extern "C++" {
inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcschr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcschr(      wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcspbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcspbrk(      wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcsrchr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcsrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcsrchr(      wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcsstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wcsstr(      wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);}

inline _LIBCPP_INLINE_VISIBILITY
wchar_t* __libcpp_wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return (wchar_t*)wmemchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);}
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
      wchar_t* wmemchr(      wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);}
}
#endif
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__cplusplus) && defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
extern "C" {
size_t mbsnrtowcs(wchar_t *__restrict dst, const char **__restrict src,
                  size_t nmc, size_t len, mbstate_t *__restrict ps);
size_t wcsnrtombs(char *__restrict dst, const wchar_t **__restrict src,
                  size_t nwc, size_t len, mbstate_t *__restrict ps);
}  // extern "C++"
#endif // __cplusplus && _LIBCPP_MSVCRT
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3

#endif // _LIBCPP_WCHAR_H
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/wchar.h" 3
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
#endif
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::mbstate_t _LIBCPP_USING_IF_EXISTS;
using ::size_t _LIBCPP_USING_IF_EXISTS;
using ::tm _LIBCPP_USING_IF_EXISTS;
using ::wint_t _LIBCPP_USING_IF_EXISTS;
using ::FILE _LIBCPP_USING_IF_EXISTS;
using ::fwprintf _LIBCPP_USING_IF_EXISTS;
using ::fwscanf _LIBCPP_USING_IF_EXISTS;
using ::swprintf _LIBCPP_USING_IF_EXISTS;
using ::vfwprintf _LIBCPP_USING_IF_EXISTS;
using ::vswprintf _LIBCPP_USING_IF_EXISTS;
using ::swscanf _LIBCPP_USING_IF_EXISTS;
using ::vfwscanf _LIBCPP_USING_IF_EXISTS;
using ::vswscanf _LIBCPP_USING_IF_EXISTS;
using ::fgetwc _LIBCPP_USING_IF_EXISTS;
using ::fgetws _LIBCPP_USING_IF_EXISTS;
using ::fputwc _LIBCPP_USING_IF_EXISTS;
using ::fputws _LIBCPP_USING_IF_EXISTS;
using ::fwide _LIBCPP_USING_IF_EXISTS;
using ::getwc _LIBCPP_USING_IF_EXISTS;
using ::putwc _LIBCPP_USING_IF_EXISTS;
using ::ungetwc _LIBCPP_USING_IF_EXISTS;
using ::wcstod _LIBCPP_USING_IF_EXISTS;
using ::wcstof _LIBCPP_USING_IF_EXISTS;
using ::wcstold _LIBCPP_USING_IF_EXISTS;
using ::wcstol _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::wcstoll _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
using ::wcstoul _LIBCPP_USING_IF_EXISTS;
#ifndef _LIBCPP_HAS_NO_LONG_LONG
using ::wcstoull _LIBCPP_USING_IF_EXISTS;
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
using ::wcscpy _LIBCPP_USING_IF_EXISTS;
using ::wcsncpy _LIBCPP_USING_IF_EXISTS;
using ::wcscat _LIBCPP_USING_IF_EXISTS;
using ::wcsncat _LIBCPP_USING_IF_EXISTS;
using ::wcscmp _LIBCPP_USING_IF_EXISTS;
using ::wcscoll _LIBCPP_USING_IF_EXISTS;
using ::wcsncmp _LIBCPP_USING_IF_EXISTS;
using ::wcsxfrm _LIBCPP_USING_IF_EXISTS;
using ::wcschr _LIBCPP_USING_IF_EXISTS;
using ::wcspbrk _LIBCPP_USING_IF_EXISTS;
using ::wcsrchr _LIBCPP_USING_IF_EXISTS;
using ::wcsstr _LIBCPP_USING_IF_EXISTS;
using ::wmemchr _LIBCPP_USING_IF_EXISTS;
using ::wcscspn _LIBCPP_USING_IF_EXISTS;
using ::wcslen _LIBCPP_USING_IF_EXISTS;
using ::wcsspn _LIBCPP_USING_IF_EXISTS;
using ::wcstok _LIBCPP_USING_IF_EXISTS;
using ::wmemcmp _LIBCPP_USING_IF_EXISTS;
using ::wmemcpy _LIBCPP_USING_IF_EXISTS;
using ::wmemmove _LIBCPP_USING_IF_EXISTS;
using ::wmemset _LIBCPP_USING_IF_EXISTS;
using ::wcsftime _LIBCPP_USING_IF_EXISTS;
using ::btowc _LIBCPP_USING_IF_EXISTS;
using ::wctob _LIBCPP_USING_IF_EXISTS;
using ::mbsinit _LIBCPP_USING_IF_EXISTS;
using ::mbrlen _LIBCPP_USING_IF_EXISTS;
using ::mbrtowc _LIBCPP_USING_IF_EXISTS;
using ::wcrtomb _LIBCPP_USING_IF_EXISTS;
using ::mbsrtowcs _LIBCPP_USING_IF_EXISTS;
using ::wcsrtombs _LIBCPP_USING_IF_EXISTS;

#ifndef _LIBCPP_HAS_NO_STDIN
using ::getwchar _LIBCPP_USING_IF_EXISTS;
using ::vwscanf _LIBCPP_USING_IF_EXISTS;
using ::wscanf _LIBCPP_USING_IF_EXISTS;
#endif
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3

#ifndef _LIBCPP_HAS_NO_STDOUT
using ::putwchar _LIBCPP_USING_IF_EXISTS;
using ::vwprintf _LIBCPP_USING_IF_EXISTS;
using ::wprintf _LIBCPP_USING_IF_EXISTS;
#endif
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CWCHAR
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cwchar" 3
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 532 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 532 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <string_view>
#endif /* expanded by -frewrite-includes */
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 1 3
// -*- C++ -*-
//===------------------------ string_view ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STRING_VIEW
#define _LIBCPP_STRING_VIEW

/*
string_view synopsis

namespace std {

    // 7.2, Class template basic_string_view
    template<class charT, class traits = char_traits<charT>>
        class basic_string_view;

    template<class charT, class traits>
    inline constexpr bool ranges::enable_view<basic_string_view<charT, traits>> = true;

    template<class charT, class traits>
    inline constexpr bool ranges::enable_borrowed_range<basic_string_view<charT, traits>> = true;  // C++20

    // 7.9, basic_string_view non-member comparison functions
    template<class charT, class traits>
    constexpr bool operator==(basic_string_view<charT, traits> x,
                              basic_string_view<charT, traits> y) noexcept;
    template<class charT, class traits>
    constexpr bool operator!=(basic_string_view<charT, traits> x,
                              basic_string_view<charT, traits> y) noexcept;
    template<class charT, class traits>
    constexpr bool operator< (basic_string_view<charT, traits> x,
                                 basic_string_view<charT, traits> y) noexcept;
    template<class charT, class traits>
    constexpr bool operator> (basic_string_view<charT, traits> x,
                              basic_string_view<charT, traits> y) noexcept;
    template<class charT, class traits>
    constexpr bool operator<=(basic_string_view<charT, traits> x,
                                 basic_string_view<charT, traits> y) noexcept;
    template<class charT, class traits>
    constexpr bool operator>=(basic_string_view<charT, traits> x,
                              basic_string_view<charT, traits> y) noexcept;
    // see below, sufficient additional overloads of comparison functions

    // 7.10, Inserters and extractors
    template<class charT, class traits>
      basic_ostream<charT, traits>&
        operator<<(basic_ostream<charT, traits>& os,
                   basic_string_view<charT, traits> str);

    // basic_string_view typedef names
    typedef basic_string_view<char> string_view;
    typedef basic_string_view<char8_t> u8string_view; // C++20
    typedef basic_string_view<char16_t> u16string_view;
    typedef basic_string_view<char32_t> u32string_view;
    typedef basic_string_view<wchar_t> wstring_view;

    template<class charT, class traits = char_traits<charT>>
    class basic_string_view {
      public:
      // types
      typedef traits traits_type;
      typedef charT value_type;
      typedef charT* pointer;
      typedef const charT* const_pointer;
      typedef charT& reference;
      typedef const charT& const_reference;
      typedef implementation-defined const_iterator;
      typedef const_iterator iterator;
      typedef reverse_iterator<const_iterator> const_reverse_iterator;
      typedef const_reverse_iterator reverse_iterator;
      typedef size_t size_type;
      typedef ptrdiff_t difference_type;
      static constexpr size_type npos = size_type(-1);

      // 7.3, basic_string_view constructors and assignment operators
      constexpr basic_string_view() noexcept;
      constexpr basic_string_view(const basic_string_view&) noexcept = default;
      basic_string_view& operator=(const basic_string_view&) noexcept = default;
      template<class Allocator>
      constexpr basic_string_view(const charT* str);
      basic_string_view(nullptr_t) = delete; // C++2b
      constexpr basic_string_view(const charT* str, size_type len);

      // 7.4, basic_string_view iterator support
      constexpr const_iterator begin() const noexcept;
      constexpr const_iterator end() const noexcept;
      constexpr const_iterator cbegin() const noexcept;
      constexpr const_iterator cend() const noexcept;
      const_reverse_iterator rbegin() const noexcept;
      const_reverse_iterator rend() const noexcept;
      const_reverse_iterator crbegin() const noexcept;
      const_reverse_iterator crend() const noexcept;

      // 7.5, basic_string_view capacity
      constexpr size_type size() const noexcept;
      constexpr size_type length() const noexcept;
      constexpr size_type max_size() const noexcept;
      constexpr bool empty() const noexcept;

      // 7.6, basic_string_view element access
      constexpr const_reference operator[](size_type pos) const;
      constexpr const_reference at(size_type pos) const;
      constexpr const_reference front() const;
      constexpr const_reference back() const;
      constexpr const_pointer data() const noexcept;

      // 7.7, basic_string_view modifiers
      constexpr void remove_prefix(size_type n);
      constexpr void remove_suffix(size_type n);
      constexpr void swap(basic_string_view& s) noexcept;

      size_type copy(charT* s, size_type n, size_type pos = 0) const;  // constexpr in C++20

      constexpr basic_string_view substr(size_type pos = 0, size_type n = npos) const;
      constexpr int compare(basic_string_view s) const noexcept;
      constexpr int compare(size_type pos1, size_type n1, basic_string_view s) const;
      constexpr int compare(size_type pos1, size_type n1,
                            basic_string_view s, size_type pos2, size_type n2) const;
      constexpr int compare(const charT* s) const;
      constexpr int compare(size_type pos1, size_type n1, const charT* s) const;
      constexpr int compare(size_type pos1, size_type n1,
                            const charT* s, size_type n2) const;
      constexpr size_type find(basic_string_view s, size_type pos = 0) const noexcept;
      constexpr size_type find(charT c, size_type pos = 0) const noexcept;
      constexpr size_type find(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type find(const charT* s, size_type pos = 0) const noexcept; // noexcept as an extension
      constexpr size_type rfind(basic_string_view s, size_type pos = npos) const noexcept;
      constexpr size_type rfind(charT c, size_type pos = npos) const noexcept;
      constexpr size_type rfind(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type rfind(const charT* s, size_type pos = npos) const noexcept; // noexcept as an extension
      constexpr size_type find_first_of(basic_string_view s, size_type pos = 0) const noexcept;
      constexpr size_type find_first_of(charT c, size_type pos = 0) const noexcept;
      constexpr size_type find_first_of(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type find_first_of(const charT* s, size_type pos = 0) const noexcept; // noexcept as an extension
      constexpr size_type find_last_of(basic_string_view s, size_type pos = npos) const noexcept;
      constexpr size_type find_last_of(charT c, size_type pos = npos) const noexcept;
      constexpr size_type find_last_of(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type find_last_of(const charT* s, size_type pos = npos) const noexcept; // noexcept as an extension
      constexpr size_type find_first_not_of(basic_string_view s, size_type pos = 0) const noexcept;
      constexpr size_type find_first_not_of(charT c, size_type pos = 0) const noexcept;
      constexpr size_type find_first_not_of(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type find_first_not_of(const charT* s, size_type pos = 0) const noexcept; // noexcept as an extension
      constexpr size_type find_last_not_of(basic_string_view s, size_type pos = npos) const noexcept;
      constexpr size_type find_last_not_of(charT c, size_type pos = npos) const noexcept;
      constexpr size_type find_last_not_of(const charT* s, size_type pos, size_type n) const noexcept; // noexcept as an extension
      constexpr size_type find_last_not_of(const charT* s, size_type pos = npos) const noexcept; // noexcept as an extension

      constexpr bool starts_with(basic_string_view s) const noexcept; // C++20
      constexpr bool starts_with(charT c) const noexcept;             // C++20
      constexpr bool starts_with(const charT* s) const;               // C++20
      constexpr bool ends_with(basic_string_view s) const noexcept;   // C++20
      constexpr bool ends_with(charT c) const noexcept;               // C++20
      constexpr bool ends_with(const charT* s) const;                 // C++20

      constexpr bool contains(basic_string_view s) const noexcept; // C++2b
      constexpr bool contains(charT c) const noexcept;             // C++2b
      constexpr bool contains(const charT* s) const;               // C++2b

     private:
      const_pointer data_;  // exposition only
      size_type     size_;  // exposition only
    };

  // 7.11, Hash support
  template <class T> struct hash;
  template <> struct hash<string_view>;
  template <> struct hash<u8string_view>; // C++20
  template <> struct hash<u16string_view>;
  template <> struct hash<u32string_view>;
  template <> struct hash<wstring_view>;

  constexpr basic_string_view<char>     operator "" sv( const char *str,     size_t len ) noexcept;
  constexpr basic_string_view<wchar_t>  operator "" sv( const wchar_t *str,  size_t len ) noexcept;
  constexpr basic_string_view<char8_t>  operator "" sv( const char8_t *str,  size_t len ) noexcept; // C++20
  constexpr basic_string_view<char16_t> operator "" sv( const char16_t *str, size_t len ) noexcept;
  constexpr basic_string_view<char32_t> operator "" sv( const char32_t *str, size_t len ) noexcept;

}  // namespace std


*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <__ranges/enable_borrowed_range.h>
#endif /* expanded by -frewrite-includes */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <__ranges/enable_view.h>
#endif /* expanded by -frewrite-includes */
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___RANGES_ENABLE_VIEW_H
#define _LIBCPP___RANGES_ENABLE_VIEW_H

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <concepts>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3

namespace ranges {

struct view_base { };

template <class _Tp>
inline constexpr bool enable_view = derived_from<_Tp, view_base>;

} // end namespace ranges

#endif // !_LIBCPP_HAS_NO_RANGES
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___RANGES_ENABLE_VIEW_H
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__ranges/enable_view.h" 3
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__string>
#endif /* expanded by -frewrite-includes */
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 1 3
// -*- C++ -*-
//===-------------------------- __string ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___STRING
#define _LIBCPP___STRING

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy_backward.h>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/copy_n.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/fill_n.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_first_of.h>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/find_end.h>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__algorithm/min.h>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/hash.h>     // for __murmur2_or_cityhash
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/iterator_traits.h>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdio>      // for EOF
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>     // for uint_least16_t
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>     // for memcpy
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <cwchar>      // for wmemcpy
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // for __libcpp_is_constant_evaluated
#endif /* expanded by -frewrite-includes */
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3

#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

// The the extern template ABI lists are kept outside of <string> to improve the
// readability of that header.

// The extern template ABI lists are kept outside of <string> to improve the
// readability of that header. We maintain 2 ABI lists:
// - _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST
// - _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST
// As the name implies, the ABI lists define the V1 (Stable) and unstable ABI.
//
// For unstable, we may explicitly remove function that are external in V1,
// and add (new) external functions to better control inlining and compiler
// optimization opportunities.
//
// For stable, the ABI list should rarely change, except for adding new
// functions supporting new c++ version / API changes. Typically entries
// must never be removed from the stable list.
#define _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_Func, _CharType) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::rfind(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(value_type const*, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::basic_string(basic_string const&)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::basic_string(basic_string const&, allocator<_CharType> const&)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_last_not_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::~basic_string()) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_first_not_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::operator=(value_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS const _CharType& basic_string<_CharType>::at(size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_first_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::reserve(size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::copy(value_type*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::basic_string(basic_string const&, size_type, size_type, allocator<_CharType> const&)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find(value_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_last_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__grow_by(size_type, size_type, size_type, size_type, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__grow_by_and_replace(size_type, size_type, size_type, size_type, size_type, size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::push_back(value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::rfind(value_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS const basic_string<_CharType>::size_type basic_string<_CharType>::npos) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::erase(size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(value_type const*) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, value_type const*) const) \
  _Func(_LIBCPP_FUNC_VIS _CharType& basic_string<_CharType>::at(size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, basic_string const&, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, value_type const*, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::operator=(basic_string const&)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::iterator basic_string<_CharType>::insert(basic_string::const_iterator, value_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::resize(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, basic_string const&, size_type, size_type))

#define _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_Func, _CharType) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::rfind(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(value_type const*, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_last_not_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::~basic_string()) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_first_not_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::operator=(value_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init_copy_ctor_external(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS const _CharType& basic_string<_CharType>::at(size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_first_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::__assign_external(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::__assign_external(value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::reserve(size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::copy(value_type*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::basic_string(basic_string const&, size_type, size_type, allocator<_CharType> const&)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find(value_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__init(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find_last_of(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__grow_by(size_type, size_type, size_type, size_type, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__grow_by_and_replace(size_type, size_type, size_type, size_type, size_type, size_type, value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::__assign_no_alias<false>(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::__assign_no_alias<true>(value_type const*, size_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::push_back(value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::rfind(value_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS const basic_string<_CharType>::size_type basic_string<_CharType>::npos) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::assign(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::__erase_external_with_move(size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(value_type const*) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, value_type const*) const) \
  _Func(_LIBCPP_FUNC_VIS _CharType& basic_string<_CharType>::at(size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::size_type basic_string<_CharType>::find(value_type const*, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, basic_string const&, size_type, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS int basic_string<_CharType>::compare(size_type, size_type, value_type const*, size_type) const) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::append(value_type const*)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::replace(size_type, size_type, basic_string const&, size_type, size_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>::iterator basic_string<_CharType>::insert(basic_string::const_iterator, value_type)) \
  _Func(_LIBCPP_FUNC_VIS void basic_string<_CharType>::resize(size_type, value_type)) \
  _Func(_LIBCPP_FUNC_VIS basic_string<_CharType>& basic_string<_CharType>::insert(size_type, basic_string const&, size_type, size_type))


// char_traits

template <class _CharT>
struct _LIBCPP_TEMPLATE_VIS char_traits
{
    typedef _CharT    char_type;
    typedef int       int_type;
    typedef streamoff off_type;
    typedef streampos pos_type;
    typedef mbstate_t state_type;

    static inline void _LIBCPP_CONSTEXPR_AFTER_CXX14
        assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
    static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 < __c2;}

    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    int compare(const char_type* __s1, const char_type* __s2, size_t __n);
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    size_t length(const char_type* __s);
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a);
    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       move(char_type* __s1, const char_type* __s2, size_t __n);
    _LIBCPP_INLINE_VISIBILITY
    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n);
    _LIBCPP_INLINE_VISIBILITY
    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       assign(char_type* __s, size_t __n, char_type __a);

    static inline _LIBCPP_CONSTEXPR int_type  not_eof(int_type __c) _NOEXCEPT
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT
        {return char_type(__c);}
    static inline _LIBCPP_CONSTEXPR int_type  to_int_type(char_type __c) _NOEXCEPT
        {return int_type(__c);}
    static inline _LIBCPP_CONSTEXPR bool      eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR int_type  eof() _NOEXCEPT
        {return int_type(EOF);}
};

template <class _CharT>
_LIBCPP_CONSTEXPR_AFTER_CXX14 int
char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n)
{
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
}

template <class _CharT>
inline
_LIBCPP_CONSTEXPR_AFTER_CXX14 size_t
char_traits<_CharT>::length(const char_type* __s)
{
    size_t __len = 0;
    for (; !eq(*__s, char_type(0)); ++__s)
        ++__len;
    return __len;
}

template <class _CharT>
inline
_LIBCPP_CONSTEXPR_AFTER_CXX14 const _CharT*
char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a)
{
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
}

template <class _CharT>
_LIBCPP_CONSTEXPR_AFTER_CXX17 _CharT*
char_traits<_CharT>::move(char_type* __s1, const char_type* __s2, size_t __n)
{
    if (__n == 0) return __s1;
    char_type* __r = __s1;
    if (__s1 < __s2)
    {
        for (; __n; --__n, ++__s1, ++__s2)
            assign(*__s1, *__s2);
    }
    else if (__s2 < __s1)
    {
        __s1 += __n;
        __s2 += __n;
        for (; __n; --__n)
            assign(*--__s1, *--__s2);
    }
    return __r;
}

template <class _CharT>
inline _LIBCPP_CONSTEXPR_AFTER_CXX17
_CharT*
char_traits<_CharT>::copy(char_type* __s1, const char_type* __s2, size_t __n)
{
    _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
    char_type* __r = __s1;
    for (; __n; --__n, ++__s1, ++__s2)
        assign(*__s1, *__s2);
    return __r;
}

template <class _CharT>
inline _LIBCPP_CONSTEXPR_AFTER_CXX17
_CharT*
char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a)
{
    char_type* __r = __s;
    for (; __n; --__n, ++__s)
        assign(*__s, __a);
    return __r;
}

// constexpr versions of move/copy/assign.

template <class _CharT>
static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
_CharT* __move_constexpr(_CharT* __s1, const _CharT* __s2, size_t __n) _NOEXCEPT
{
    if (__n == 0) return __s1;
    if (__s1 < __s2) {
      _VSTD::copy(__s2, __s2 + __n, __s1);
    } else if (__s2 < __s1) {
      _VSTD::copy_backward(__s2, __s2 + __n, __s1 + __n);
    }
    return __s1;
}

template <class _CharT>
static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
_CharT* __copy_constexpr(_CharT* __s1, const _CharT* __s2, size_t __n) _NOEXCEPT
{
    _VSTD::copy_n(__s2, __n, __s1);
    return __s1;
}

template <class _CharT>
static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
_CharT* __assign_constexpr(_CharT* __s, size_t __n, _CharT __a) _NOEXCEPT
{
     _VSTD::fill_n(__s, __n, __a);
     return __s;
}

// char_traits<char>

template <>
struct _LIBCPP_TEMPLATE_VIS char_traits<char>
{
    typedef char      char_type;
    typedef int       int_type;
    typedef streamoff off_type;
    typedef streampos pos_type;
    typedef mbstate_t state_type;

    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
    static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
            {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
        {return (unsigned char)__c1 < (unsigned char)__c2;}

    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    static inline size_t _LIBCPP_CONSTEXPR_AFTER_CXX14
    length(const char_type* __s)  _NOEXCEPT {return __builtin_strlen(__s);}
    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__move_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : (char_type*)_VSTD::memmove(__s1, __s2, __n);
        }
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
        {
            _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__copy_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : (char_type*)_VSTD::memcpy(__s1, __s2, __n);
        }
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__assign_constexpr(__s, __n, __a)
                       : __n == 0 ? __s : (char_type*)_VSTD::memset(__s, to_int_type(__a), __n);
        }

    static inline _LIBCPP_CONSTEXPR int_type  not_eof(int_type __c) _NOEXCEPT
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT
        {return char_type(__c);}
    static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT
        {return int_type((unsigned char)__c);}
    static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR int_type  eof() _NOEXCEPT
        {return int_type(EOF);}
};

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
int
char_traits<char>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    if (__n == 0)
        return 0;
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_memcmp(__s1, __s2, __n);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return _VSTD::memcmp(__s1, __s2, __n);
#else
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
#endif
# 396 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
const char*
char_traits<char>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
{
    if (__n == 0)
        return nullptr;
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 405 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_char_memchr(__s, to_int_type(__a), __n);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return (const char_type*) _VSTD::memchr(__s, to_int_type(__a), __n);
#else
# 409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
#endif
# 417 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}


// char_traits<wchar_t>

template <>
struct _LIBCPP_TEMPLATE_VIS char_traits<wchar_t>
{
    typedef wchar_t   char_type;
    typedef wint_t    int_type;
    typedef streamoff off_type;
    typedef streampos pos_type;
    typedef mbstate_t state_type;

    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
    static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 < __c2;}

    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    size_t length(const char_type* __s) _NOEXCEPT;
    static _LIBCPP_CONSTEXPR_AFTER_CXX14
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__move_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : _VSTD::wmemmove(__s1, __s2, __n);
        }
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
        {
            _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__copy_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : _VSTD::wmemcpy(__s1, __s2, __n);
        }
    static inline _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__assign_constexpr(__s, __n, __a)
                       : __n == 0 ? __s : _VSTD::wmemset(__s, __a, __n);
        }
    static inline _LIBCPP_CONSTEXPR int_type  not_eof(int_type __c) _NOEXCEPT
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT
        {return char_type(__c);}
    static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT
        {return int_type(__c);}
    static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT
        {return int_type(WEOF);}
};

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
int
char_traits<wchar_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    if (__n == 0)
        return 0;
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_wmemcmp(__s1, __s2, __n);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 487 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return _VSTD::wmemcmp(__s1, __s2, __n);
#else
# 489 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
#endif
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}


template <class _Traits>
_LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
inline size_t __char_traits_length_checked(const typename _Traits::char_type* __s) _NOEXCEPT {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL >= 1
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
  return __s ? _Traits::length(__s) : (_VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, "p == nullptr", "null pointer pass to non-null argument of char_traits<...>::length")), 0);
#else
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
  return _Traits::length(__s);
#endif
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
size_t
char_traits<wchar_t>::length(const char_type* __s) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 517 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_wcslen(__s);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 519 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return _VSTD::wcslen(__s);
#else
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    size_t __len = 0;
    for (; !eq(*__s, char_type(0)); ++__s)
        ++__len;
    return __len;
#endif
# 526 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
const wchar_t*
char_traits<wchar_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
{
    if (__n == 0)
        return nullptr;
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_wmemchr(__s, __a, __n);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 537 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return _VSTD::wmemchr(__s, __a, __n);
#else
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
#endif
# 547 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}


#ifndef _LIBCPP_HAS_NO_CHAR8_T

template <>
struct _LIBCPP_TEMPLATE_VIS char_traits<char8_t>
{
    typedef char8_t        char_type;
    typedef unsigned int   int_type;
    typedef streamoff      off_type;
    typedef u8streampos    pos_type;
    typedef mbstate_t      state_type;

    static inline constexpr void assign(char_type& __c1, const char_type& __c2) noexcept
        {__c1 = __c2;}
    static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept
        {return __c1 == __c2;}
    static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept
        {return __c1 < __c2;}

    static constexpr
    int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;

    static constexpr
    size_t           length(const char_type* __s) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY static constexpr
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;

    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__move_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : (char_type*)_VSTD::memmove(__s1, __s2, __n);
        }

    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
       {
            _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__copy_constexpr(__s1, __s2, __n)
                       : __n == 0 ? __s1 : (char_type*)_VSTD::memcpy(__s1, __s2, __n);
        }

    static _LIBCPP_CONSTEXPR_AFTER_CXX17
    char_type*       assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
        {
            return __libcpp_is_constant_evaluated()
                       ? _VSTD::__assign_constexpr(__s, __n, __a)
                       : __n == 0 ? __s : (char_type*)_VSTD::memset(__s, to_int_type(__a), __n);
        }

    static inline constexpr int_type  not_eof(int_type __c) noexcept
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline constexpr char_type to_char_type(int_type __c) noexcept
        {return char_type(__c);}
    static inline constexpr int_type to_int_type(char_type __c) noexcept
        {return int_type(__c);}
    static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept
        {return __c1 == __c2;}
    static inline constexpr int_type eof() noexcept
        {return int_type(EOF);}
};

// TODO use '__builtin_strlen' if it ever supports char8_t ??
inline constexpr
size_t
char_traits<char8_t>::length(const char_type* __s) _NOEXCEPT
{
    size_t __len = 0;
    for (; !eq(*__s, char_type(0)); ++__s)
        ++__len;
    return __len;
}

inline constexpr
int
char_traits<char8_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if __has_feature(cxx_constexpr_string_builtins)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 630 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    return __builtin_memcmp(__s1, __s2, __n);
#else
# 632 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
#endif
# 641 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
}

// TODO use '__builtin_char_memchr' if it ever supports char8_t ??
inline constexpr
const char8_t*
char_traits<char8_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
{
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
}

#endif // #_LIBCPP_HAS_NO_CHAR8_T
# 658 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3

#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS

template <>
struct _LIBCPP_TEMPLATE_VIS char_traits<char16_t>
{
    typedef char16_t       char_type;
    typedef uint_least16_t int_type;
    typedef streamoff      off_type;
    typedef u16streampos   pos_type;
    typedef mbstate_t      state_type;

    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
    static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 < __c2;}

    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    size_t           length(const char_type* __s) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT;

    static inline _LIBCPP_CONSTEXPR int_type  not_eof(int_type __c) _NOEXCEPT
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT
        {return char_type(__c);}
    static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT
        {return int_type(__c);}
    static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT
        {return int_type(0xFFFF);}
};

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
int
char_traits<char16_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
size_t
char_traits<char16_t>::length(const char_type* __s) _NOEXCEPT
{
    size_t __len = 0;
    for (; !eq(*__s, char_type(0)); ++__s)
        ++__len;
    return __len;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
const char16_t*
char_traits<char16_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
{
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char16_t*
char_traits<char16_t>::move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    if (__n == 0) return __s1;
    char_type* __r = __s1;
    if (__s1 < __s2)
    {
        for (; __n; --__n, ++__s1, ++__s2)
            assign(*__s1, *__s2);
    }
    else if (__s2 < __s1)
    {
        __s1 += __n;
        __s2 += __n;
        for (; __n; --__n)
            assign(*--__s1, *--__s2);
    }
    return __r;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char16_t*
char_traits<char16_t>::copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
    char_type* __r = __s1;
    for (; __n; --__n, ++__s1, ++__s2)
        assign(*__s1, *__s2);
    return __r;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char16_t*
char_traits<char16_t>::assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
{
    char_type* __r = __s;
    for (; __n; --__n, ++__s)
        assign(*__s, __a);
    return __r;
}

template <>
struct _LIBCPP_TEMPLATE_VIS char_traits<char32_t>
{
    typedef char32_t       char_type;
    typedef uint_least32_t int_type;
    typedef streamoff      off_type;
    typedef u32streampos   pos_type;
    typedef mbstate_t      state_type;

    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
    static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
        {return __c1 < __c2;}

    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    size_t           length(const char_type* __s) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    static char_type*       assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT;

    static inline _LIBCPP_CONSTEXPR int_type  not_eof(int_type __c) _NOEXCEPT
        {return eq_int_type(__c, eof()) ? ~eof() : __c;}
    static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT
        {return char_type(__c);}
    static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT
        {return int_type(__c);}
    static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT
        {return __c1 == __c2;}
    static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT
        {return int_type(0xFFFFFFFF);}
};

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
int
char_traits<char32_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    for (; __n; --__n, ++__s1, ++__s2)
    {
        if (lt(*__s1, *__s2))
            return -1;
        if (lt(*__s2, *__s1))
            return 1;
    }
    return 0;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
size_t
char_traits<char32_t>::length(const char_type* __s) _NOEXCEPT
{
    size_t __len = 0;
    for (; !eq(*__s, char_type(0)); ++__s)
        ++__len;
    return __len;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX14
const char32_t*
char_traits<char32_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
{
    for (; __n; --__n)
    {
        if (eq(*__s, __a))
            return __s;
        ++__s;
    }
    return nullptr;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char32_t*
char_traits<char32_t>::move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    if (__n == 0) return __s1;
    char_type* __r = __s1;
    if (__s1 < __s2)
    {
        for (; __n; --__n, ++__s1, ++__s2)
            assign(*__s1, *__s2);
    }
    else if (__s2 < __s1)
    {
        __s1 += __n;
        __s2 += __n;
        for (; __n; --__n)
            assign(*--__s1, *--__s2);
    }
    return __r;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char32_t*
char_traits<char32_t>::copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
{
    _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range");
    char_type* __r = __s1;
    for (; __n; --__n, ++__s1, ++__s2)
        assign(*__s1, *__s2);
    return __r;
}

inline _LIBCPP_CONSTEXPR_AFTER_CXX17
char32_t*
char_traits<char32_t>::assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT
{
    char_type* __r = __s;
    for (; __n; --__n, ++__s)
        assign(*__s, __a);
    return __r;
}

#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3

// helper fns for basic_string and string_view

// __str_find
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find(const _CharT *__p, _SizeT __sz,
             _CharT __c, _SizeT __pos) _NOEXCEPT
{
    if (__pos >= __sz)
        return __npos;
    const _CharT* __r = _Traits::find(__p + __pos, __sz - __pos, __c);
    if (__r == nullptr)
        return __npos;
    return static_cast<_SizeT>(__r - __p);
}

template <class _CharT, class _Traits>
inline _LIBCPP_CONSTEXPR_AFTER_CXX11 const _CharT *
__search_substring(const _CharT *__first1, const _CharT *__last1,
                   const _CharT *__first2, const _CharT *__last2) _NOEXCEPT {
  // Take advantage of knowing source and pattern lengths.
  // Stop short when source is smaller than pattern.
  const ptrdiff_t __len2 = __last2 - __first2;
  if (__len2 == 0)
    return __first1;

  ptrdiff_t __len1 = __last1 - __first1;
  if (__len1 < __len2)
    return __last1;

  // First element of __first2 is loop invariant.
  _CharT __f2 = *__first2;
  while (true) {
    __len1 = __last1 - __first1;
    // Check whether __first1 still has at least __len2 bytes.
    if (__len1 < __len2)
      return __last1;

    // Find __f2 the first byte matching in __first1.
    __first1 = _Traits::find(__first1, __len1 - __len2 + 1, __f2);
    if (__first1 == nullptr)
      return __last1;

    // It is faster to compare from the first byte of __first1 even if we
    // already know that it matches the first byte of __first2: this is because
    // __first2 is most likely aligned, as it is user's "pattern" string, and
    // __first1 + 1 is most likely not aligned, as the match is in the middle of
    // the string.
    if (_Traits::compare(__first1, __first2, __len2) == 0)
      return __first1;

    ++__first1;
  }
}

template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find(const _CharT *__p, _SizeT __sz,
       const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
{
    if (__pos > __sz)
        return __npos;

    if (__n == 0) // There is nothing to search, just return __pos.
        return __pos;

    const _CharT *__r = __search_substring<_CharT, _Traits>(
        __p + __pos, __p + __sz, __s, __s + __n);

    if (__r == __p + __sz)
        return __npos;
    return static_cast<_SizeT>(__r - __p);
}


// __str_rfind

template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_rfind(const _CharT *__p, _SizeT __sz,
              _CharT __c, _SizeT __pos) _NOEXCEPT
{
    if (__sz < 1)
        return __npos;
    if (__pos < __sz)
        ++__pos;
    else
        __pos = __sz;
    for (const _CharT* __ps = __p + __pos; __ps != __p;)
    {
        if (_Traits::eq(*--__ps, __c))
            return static_cast<_SizeT>(__ps - __p);
    }
    return __npos;
}

template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_rfind(const _CharT *__p, _SizeT __sz,
        const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
{
    __pos = _VSTD::min(__pos, __sz);
    if (__n < __sz - __pos)
        __pos += __n;
    else
        __pos = __sz;
    const _CharT* __r = _VSTD::__find_end(
                  __p, __p + __pos, __s, __s + __n, _Traits::eq,
                        random_access_iterator_tag(), random_access_iterator_tag());
    if (__n > 0 && __r == __p + __pos)
        return __npos;
    return static_cast<_SizeT>(__r - __p);
}

// __str_find_first_of
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_first_of(const _CharT *__p, _SizeT __sz,
                const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
{
    if (__pos >= __sz || __n == 0)
        return __npos;
    const _CharT* __r = _VSTD::__find_first_of_ce
        (__p + __pos, __p + __sz, __s, __s + __n, _Traits::eq );
    if (__r == __p + __sz)
        return __npos;
    return static_cast<_SizeT>(__r - __p);
}


// __str_find_last_of
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_last_of(const _CharT *__p, _SizeT __sz,
               const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
    {
    if (__n != 0)
    {
        if (__pos < __sz)
            ++__pos;
        else
            __pos = __sz;
        for (const _CharT* __ps = __p + __pos; __ps != __p;)
        {
            const _CharT* __r = _Traits::find(__s, __n, *--__ps);
            if (__r)
                return static_cast<_SizeT>(__ps - __p);
        }
    }
    return __npos;
}


// __str_find_first_not_of
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_first_not_of(const _CharT *__p, _SizeT __sz,
                    const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
{
    if (__pos < __sz)
    {
        const _CharT* __pe = __p + __sz;
        for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps)
            if (_Traits::find(__s, __n, *__ps) == nullptr)
                return static_cast<_SizeT>(__ps - __p);
    }
    return __npos;
}


template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_first_not_of(const _CharT *__p, _SizeT __sz,
                          _CharT __c, _SizeT __pos) _NOEXCEPT
{
    if (__pos < __sz)
    {
        const _CharT* __pe = __p + __sz;
        for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps)
            if (!_Traits::eq(*__ps, __c))
                return static_cast<_SizeT>(__ps - __p);
    }
    return __npos;
}


// __str_find_last_not_of
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_last_not_of(const _CharT *__p, _SizeT __sz,
                   const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT
{
    if (__pos < __sz)
        ++__pos;
    else
        __pos = __sz;
    for (const _CharT* __ps = __p + __pos; __ps != __p;)
        if (_Traits::find(__s, __n, *--__ps) == nullptr)
            return static_cast<_SizeT>(__ps - __p);
    return __npos;
}


template<class _CharT, class _SizeT, class _Traits, _SizeT __npos>
inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
__str_find_last_not_of(const _CharT *__p, _SizeT __sz,
                         _CharT __c, _SizeT __pos) _NOEXCEPT
{
    if (__pos < __sz)
        ++__pos;
    else
        __pos = __sz;
    for (const _CharT* __ps = __p + __pos; __ps != __p;)
        if (!_Traits::eq(*--__ps, __c))
            return static_cast<_SizeT>(__ps - __p);
    return __npos;
}

template<class _Ptr>
inline _LIBCPP_INLINE_VISIBILITY
size_t __do_string_hash(_Ptr __p, _Ptr __e)
{
    typedef typename iterator_traits<_Ptr>::value_type value_type;
    return __murmur2_or_cityhash<size_t>()(__p, (__e-__p)*sizeof(value_type));
}

template <class _CharT, class _Iter, class _Traits=char_traits<_CharT> >
struct __quoted_output_proxy
{
    _Iter  __first;
    _Iter  __last;
    _CharT  __delim;
    _CharT  __escape;

    __quoted_output_proxy(_Iter __f, _Iter __l, _CharT __d, _CharT __e)
    : __first(__f), __last(__l), __delim(__d), __escape(__e) {}
    //  This would be a nice place for a string_ref
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___STRING
# 1147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__string" 3
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template<class _CharT, class _Traits = char_traits<_CharT> >
    class _LIBCPP_TEMPLATE_VIS basic_string_view;

typedef basic_string_view<char>     string_view;
#ifndef _LIBCPP_HAS_NO_CHAR8_T
typedef basic_string_view<char8_t>  u8string_view;
#endif
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
typedef basic_string_view<char16_t> u16string_view;
typedef basic_string_view<char32_t> u32string_view;
typedef basic_string_view<wchar_t>  wstring_view;

template<class _CharT, class _Traits>
class
    _LIBCPP_PREFERRED_NAME(string_view)
#ifndef _LIBCPP_HAS_NO_CHAR8_T
    _LIBCPP_PREFERRED_NAME(u8string_view)
#endif
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    _LIBCPP_PREFERRED_NAME(u16string_view)
    _LIBCPP_PREFERRED_NAME(u32string_view)
    _LIBCPP_PREFERRED_NAME(wstring_view)
    basic_string_view {
public:
    // types
    typedef _Traits                                    traits_type;
    typedef _CharT                                     value_type;
    typedef _CharT*                                    pointer;
    typedef const _CharT*                              const_pointer;
    typedef _CharT&                                    reference;
    typedef const _CharT&                              const_reference;
    typedef const_pointer                              const_iterator; // See [string.view.iterators]
    typedef const_iterator                             iterator;
    typedef _VSTD::reverse_iterator<const_iterator>    const_reverse_iterator;
    typedef const_reverse_iterator                     reverse_iterator;
    typedef size_t                                     size_type;
    typedef ptrdiff_t                                  difference_type;
    static _LIBCPP_CONSTEXPR const size_type npos = -1; // size_type(-1);

    static_assert((!is_array<value_type>::value), "Character type of basic_string_view must not be an array");
    static_assert(( is_standard_layout<value_type>::value), "Character type of basic_string_view must be standard-layout");
    static_assert(( is_trivial<value_type>::value), "Character type of basic_string_view must be trivial");
    static_assert((is_same<_CharT, typename traits_type::char_type>::value),
                  "traits_type::char_type must be the same type as CharT");

    // [string.view.cons], construct/copy
    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    basic_string_view(const basic_string_view&) _NOEXCEPT = default;

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    basic_string_view& operator=(const basic_string_view&) _NOEXCEPT = default;

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    basic_string_view(const _CharT* __s, size_type __len) _NOEXCEPT
        : __data(__s), __size(__len)
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    _LIBCPP_ASSERT(__len == 0 || __s != nullptr, "string_view::string_view(_CharT *, size_t): received nullptr");
#endif
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    basic_string_view(const _CharT* __s)
        : __data(__s), __size(_VSTD::__char_traits_length_checked<_Traits>(__s)) {}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    basic_string_view(nullptr_t) = delete;
#endif
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

    // [string.view.iterators], iterators
    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_iterator begin()  const _NOEXCEPT { return cbegin(); }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_iterator end()    const _NOEXCEPT { return cend(); }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_iterator cbegin() const _NOEXCEPT { return __data; }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_iterator cend()   const _NOEXCEPT { return __data + __size; }

    _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin()   const _NOEXCEPT { return const_reverse_iterator(cend()); }

    _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend()     const _NOEXCEPT { return const_reverse_iterator(cbegin()); }

    _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin()  const _NOEXCEPT { return const_reverse_iterator(cend()); }

    _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend()    const _NOEXCEPT { return const_reverse_iterator(cbegin()); }

    // [string.view.capacity], capacity
    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    size_type size()     const _NOEXCEPT { return __size; }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    size_type length()   const _NOEXCEPT { return __size; }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    size_type max_size() const _NOEXCEPT { return numeric_limits<size_type>::max(); }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    bool empty()         const _NOEXCEPT { return __size == 0; }

    // [string.view.access], element access
    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_reference operator[](size_type __pos) const _NOEXCEPT {
      return _LIBCPP_ASSERT(__pos < size(), "string_view[] index out of bounds"), __data[__pos];
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_reference at(size_type __pos) const
    {
        return __pos >= size()
            ? (__throw_out_of_range("string_view::at"), __data[0])
            : __data[__pos];
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_reference front() const _NOEXCEPT
    {
        return _LIBCPP_ASSERT(!empty(), "string_view::front(): string is empty"), __data[0];
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_reference back() const _NOEXCEPT
    {
        return _LIBCPP_ASSERT(!empty(), "string_view::back(): string is empty"), __data[__size-1];
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    const_pointer data() const _NOEXCEPT { return __data; }

    // [string.view.modifiers], modifiers:
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    void remove_prefix(size_type __n) _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n <= size(), "remove_prefix() can't remove more than size()");
        __data += __n;
        __size -= __n;
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    void remove_suffix(size_type __n) _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n <= size(), "remove_suffix() can't remove more than size()");
        __size -= __n;
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    void swap(basic_string_view& __other) _NOEXCEPT
    {
        const value_type *__p = __data;
        __data = __other.__data;
        __other.__data = __p;

        size_type __sz = __size;
        __size = __other.__size;
        __other.__size = __sz;
    }

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const
    {
        if (__pos > size())
            __throw_out_of_range("string_view::copy");
        size_type __rlen = _VSTD::min(__n, size() - __pos);
        _Traits::copy(__s, data() + __pos, __rlen);
        return __rlen;
    }

    _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    basic_string_view substr(size_type __pos = 0, size_type __n = npos) const
    {
        return __pos > size()
            ? (__throw_out_of_range("string_view::substr"), basic_string_view())
            : basic_string_view(data() + __pos, _VSTD::min(__n, size() - __pos));
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 int compare(basic_string_view __sv) const _NOEXCEPT
    {
        size_type __rlen = _VSTD::min( size(), __sv.size());
        int __retval = _Traits::compare(data(), __sv.data(), __rlen);
        if ( __retval == 0 ) // first __rlen chars matched
            __retval = size() == __sv.size() ? 0 : ( size() < __sv.size() ? -1 : 1 );
        return __retval;
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    int compare(size_type __pos1, size_type __n1, basic_string_view __sv) const
    {
        return substr(__pos1, __n1).compare(__sv);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    int compare(                       size_type __pos1, size_type __n1,
                basic_string_view __sv, size_type __pos2, size_type __n2) const
    {
        return substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2));
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    int compare(const _CharT* __s) const _NOEXCEPT
    {
        return compare(basic_string_view(__s));
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    int compare(size_type __pos1, size_type __n1, const _CharT* __s) const
    {
        return substr(__pos1, __n1).compare(basic_string_view(__s));
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    int compare(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2) const
    {
        return substr(__pos1, __n1).compare(basic_string_view(__s, __n2));
    }

    // find
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find(basic_string_view __s, size_type __pos = 0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find(): received nullptr");
        return __str_find<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find(_CharT __c, size_type __pos = 0) const _NOEXCEPT
    {
        return __str_find<value_type, size_type, traits_type, npos>
            (data(), size(), __c, __pos);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find(): received nullptr");
        return __str_find<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find(const _CharT* __s, size_type __pos = 0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::find(): received nullptr");
        return __str_find<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

    // rfind
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type rfind(basic_string_view __s, size_type __pos = npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find(): received nullptr");
        return __str_rfind<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type rfind(_CharT __c, size_type __pos = npos) const _NOEXCEPT
    {
        return __str_rfind<value_type, size_type, traits_type, npos>
            (data(), size(), __c, __pos);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::rfind(): received nullptr");
        return __str_rfind<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type rfind(const _CharT* __s, size_type __pos=npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::rfind(): received nullptr");
        return __str_rfind<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

    // find_first_of
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(basic_string_view __s, size_type __pos = 0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_first_of(): received nullptr");
        return __str_find_first_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(_CharT __c, size_type __pos = 0) const _NOEXCEPT
    { return find(__c, __pos); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_first_of(): received nullptr");
        return __str_find_first_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(const _CharT* __s, size_type __pos=0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::find_first_of(): received nullptr");
        return __str_find_first_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

    // find_last_of
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(basic_string_view __s, size_type __pos=npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_last_of(): received nullptr");
        return __str_find_last_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(_CharT __c, size_type __pos = npos) const _NOEXCEPT
    { return rfind(__c, __pos); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_last_of(): received nullptr");
        return __str_find_last_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(const _CharT* __s, size_type __pos=npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::find_last_of(): received nullptr");
        return __str_find_last_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

    // find_first_not_of
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(basic_string_view __s, size_type __pos=0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_first_not_of(): received nullptr");
        return __str_find_first_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(_CharT __c, size_type __pos=0) const _NOEXCEPT
    {
        return __str_find_first_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __c, __pos);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_first_not_of(): received nullptr");
        return __str_find_first_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(const _CharT* __s, size_type __pos=0) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::find_first_not_of(): received nullptr");
        return __str_find_first_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

    // find_last_not_of
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(basic_string_view __s, size_type __pos=npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_last_not_of(): received nullptr");
        return __str_find_last_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s.data(), __pos, __s.size());
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(_CharT __c, size_type __pos=npos) const _NOEXCEPT
    {
        return __str_find_last_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __c, __pos);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_last_not_of(): received nullptr");
        return __str_find_last_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, __n);
    }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(const _CharT* __s, size_type __pos=npos) const _NOEXCEPT
    {
        _LIBCPP_ASSERT(__s != nullptr, "string_view::find_last_not_of(): received nullptr");
        return __str_find_last_not_of<value_type, size_type, traits_type, npos>
            (data(), size(), __s, __pos, traits_type::length(__s));
    }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 621 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(basic_string_view __s) const _NOEXCEPT
    { return size() >= __s.size() && compare(0, __s.size(), __s) == 0; }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(value_type __c) const _NOEXCEPT
    { return !empty() && _Traits::eq(front(), __c); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(const value_type* __s) const _NOEXCEPT
    { return starts_with(basic_string_view(__s)); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(basic_string_view __s) const _NOEXCEPT
    { return size() >= __s.size() && compare(size() - __s.size(), npos, __s) == 0; }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(value_type __c) const _NOEXCEPT
    { return !empty() && _Traits::eq(back(), __c); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(const value_type* __s) const _NOEXCEPT
    { return ends_with(basic_string_view(__s)); }
#endif
# 645 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 647 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(basic_string_view __sv) const noexcept
    { return find(__sv) != npos; }

    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(value_type __c) const noexcept
    { return find(__c) != npos; }

    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(const value_type* __s) const
    { return find(__s) != npos; }
#endif
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

private:
    const   value_type* __data;
    size_type           __size;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_RANGES)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
template <class _CharT, class _Traits>
inline constexpr bool ranges::enable_view<basic_string_view<_CharT, _Traits>> = true;

template <class _CharT, class _Traits>
inline constexpr bool ranges::enable_borrowed_range<basic_string_view<_CharT, _Traits> > = true;
#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_RANGES)
# 672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

// [string.view.comparison]
// operator ==
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator==(basic_string_view<_CharT, _Traits> __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size()) return false;
    return __lhs.compare(__rhs) == 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator==(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size()) return false;
    return __lhs.compare(__rhs) == 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator==(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size()) return false;
    return __lhs.compare(__rhs) == 0;
}


// operator !=
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator!=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size())
        return true;
    return __lhs.compare(__rhs) != 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator!=(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size())
        return true;
    return __lhs.compare(__rhs) != 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator!=(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    if ( __lhs.size() != __rhs.size())
        return true;
    return __lhs.compare(__rhs) != 0;
}


// operator <
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) < 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) < 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) < 0;
}


// operator >
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator> (basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) > 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator>(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) > 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator>(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) > 0;
}


// operator <=
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) <= 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<=(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) <= 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator<=(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) <= 0;
}


// operator >=
template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator>=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) >= 0;
}


template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator>=(basic_string_view<_CharT, _Traits> __lhs,
                typename common_type<basic_string_view<_CharT, _Traits> >::type __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) >= 0;
}

template<class _CharT, class _Traits>
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
bool operator>=(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs,
                basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) >= 0;
}


template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os,
           basic_string_view<_CharT, _Traits> __str);

// [string.view.hash]
template<class _CharT>
struct _LIBCPP_TEMPLATE_VIS hash<basic_string_view<_CharT, char_traits<_CharT> > >
    : public unary_function<basic_string_view<_CharT, char_traits<_CharT> >, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const basic_string_view<_CharT, char_traits<_CharT> > __val) const _NOEXCEPT {
        return __do_string_hash(__val.data(), __val.data() + __val.size());
    }
};


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 853 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
inline namespace literals
{
  inline namespace string_view_literals
  {
    inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    basic_string_view<char> operator "" sv(const char *__str, size_t __len) _NOEXCEPT
    {
        return basic_string_view<char> (__str, __len);
    }

    inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    basic_string_view<wchar_t> operator "" sv(const wchar_t *__str, size_t __len) _NOEXCEPT
    {
        return basic_string_view<wchar_t> (__str, __len);
    }

#ifndef _LIBCPP_HAS_NO_CHAR8_T
    inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    basic_string_view<char8_t> operator "" sv(const char8_t *__str, size_t __len) _NOEXCEPT
    {
        return basic_string_view<char8_t> (__str, __len);
    }
#endif
# 876 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3

    inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    basic_string_view<char16_t> operator "" sv(const char16_t *__str, size_t __len) _NOEXCEPT
    {
        return basic_string_view<char16_t> (__str, __len);
    }

    inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
    basic_string_view<char32_t> operator "" sv(const char32_t *__str, size_t __len) _NOEXCEPT
    {
        return basic_string_view<char32_t> (__str, __len);
    }
  }
}
#endif
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_STRING_VIEW
# 896 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string_view" 3
# 534 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 534 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 536 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 536 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 537 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
#if 0 /* expanded by -frewrite-includes */
# include <cstdint>
#endif /* expanded by -frewrite-includes */
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 540 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#endif
# 541 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 543 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 544 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#endif
# 545 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 547 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 548 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

// fpos

template <class _StateT>
class _LIBCPP_TEMPLATE_VIS fpos
{
private:
    _StateT __st_;
    streamoff __off_;
public:
    _LIBCPP_INLINE_VISIBILITY fpos(streamoff __off = streamoff()) : __st_(), __off_(__off) {}

    _LIBCPP_INLINE_VISIBILITY operator streamoff() const {return __off_;}

    _LIBCPP_INLINE_VISIBILITY _StateT state() const {return __st_;}
    _LIBCPP_INLINE_VISIBILITY void state(_StateT __st) {__st_ = __st;}

    _LIBCPP_INLINE_VISIBILITY fpos& operator+=(streamoff __off) {__off_ += __off; return *this;}
    _LIBCPP_INLINE_VISIBILITY fpos  operator+ (streamoff __off) const {fpos __t(*this); __t += __off; return __t;}
    _LIBCPP_INLINE_VISIBILITY fpos& operator-=(streamoff __off) {__off_ -= __off; return *this;}
    _LIBCPP_INLINE_VISIBILITY fpos  operator- (streamoff __off) const {fpos __t(*this); __t -= __off; return __t;}
};

template <class _StateT>
inline _LIBCPP_INLINE_VISIBILITY
streamoff operator-(const fpos<_StateT>& __x, const fpos<_StateT>& __y)
    {return streamoff(__x) - streamoff(__y);}

template <class _StateT>
inline _LIBCPP_INLINE_VISIBILITY
bool operator==(const fpos<_StateT>& __x, const fpos<_StateT>& __y)
    {return streamoff(__x) == streamoff(__y);}

template <class _StateT>
inline _LIBCPP_INLINE_VISIBILITY
bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y)
    {return streamoff(__x) != streamoff(__y);}

// basic_string

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x,
          const basic_string<_CharT, _Traits, _Allocator>& __y);

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const _CharT* __x, const basic_string<_CharT,_Traits,_Allocator>& __y);

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(_CharT __x, const basic_string<_CharT,_Traits,_Allocator>& __y);

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, const _CharT* __y);

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y);

_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+<char, char_traits<char>, allocator<char> >(char const*, string const&))

template <bool>
class _LIBCPP_TEMPLATE_VIS __basic_string_common
{
protected:
    _LIBCPP_NORETURN void __throw_length_error() const;
    _LIBCPP_NORETURN void __throw_out_of_range() const;
};

template <bool __b>
void
__basic_string_common<__b>::__throw_length_error() const
{
    _VSTD::__throw_length_error("basic_string");
}

template <bool __b>
void
__basic_string_common<__b>::__throw_out_of_range() const
{
    _VSTD::__throw_out_of_range("basic_string");
}

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __basic_string_common<true>)

template <class _Iter>
struct __string_is_trivial_iterator : public false_type {};

template <class _Tp>
struct __string_is_trivial_iterator<_Tp*>
    : public is_arithmetic<_Tp> {};

template <class _Iter>
struct __string_is_trivial_iterator<__wrap_iter<_Iter> >
    : public __string_is_trivial_iterator<_Iter> {};

template <class _CharT, class _Traits, class _Tp>
struct __can_be_converted_to_string_view : public _BoolConstant<
      is_convertible<const _Tp&, basic_string_view<_CharT, _Traits> >::value &&
     !is_convertible<const _Tp&, const _CharT*>::value
    > {};

#ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT

template <class _CharT, size_t = sizeof(_CharT)>
struct __padding
{
    unsigned char __xx[sizeof(_CharT)-1];
};

template <class _CharT>
struct __padding<_CharT, 1>
{
};

#endif // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
# 670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#ifndef _LIBCPP_HAS_NO_CHAR8_T
typedef basic_string<char8_t> u8string;
#endif
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
typedef basic_string<char16_t> u16string;
typedef basic_string<char32_t> u32string;
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
# 679 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template<class _CharT, class _Traits, class _Allocator>
class
    _LIBCPP_TEMPLATE_VIS
#ifndef _LIBCPP_HAS_NO_CHAR8_T
    _LIBCPP_PREFERRED_NAME(u8string)
#endif
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
    _LIBCPP_PREFERRED_NAME(u16string)
    _LIBCPP_PREFERRED_NAME(u32string)
#endif
# 690 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    basic_string
    : private __basic_string_common<true>
{
public:
    typedef basic_string                                 __self;
    typedef basic_string_view<_CharT, _Traits>           __self_view;
    typedef _Traits                                      traits_type;
    typedef _CharT                                       value_type;
    typedef _Allocator                                   allocator_type;
    typedef allocator_traits<allocator_type>             __alloc_traits;
    typedef typename __alloc_traits::size_type           size_type;
    typedef typename __alloc_traits::difference_type     difference_type;
    typedef value_type&                                  reference;
    typedef const value_type&                            const_reference;
    typedef typename __alloc_traits::pointer             pointer;
    typedef typename __alloc_traits::const_pointer       const_pointer;

    static_assert((!is_array<value_type>::value), "Character type of basic_string must not be an array");
    static_assert(( is_standard_layout<value_type>::value), "Character type of basic_string must be standard-layout");
    static_assert(( is_trivial<value_type>::value), "Character type of basic_string must be trivial");
    static_assert(( is_same<_CharT, typename traits_type::char_type>::value),
                  "traits_type::char_type must be the same type as CharT");
    static_assert(( is_same<typename allocator_type::value_type, value_type>::value),
                  "Allocator::value_type must be same type as value_type");

    typedef __wrap_iter<pointer>                         iterator;
    typedef __wrap_iter<const_pointer>                   const_iterator;
    typedef _VSTD::reverse_iterator<iterator>             reverse_iterator;
    typedef _VSTD::reverse_iterator<const_iterator>       const_reverse_iterator;

private:

#ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT

    struct __long
    {
        pointer   __data_;
        size_type __size_;
        size_type __cap_;
    };

#ifdef _LIBCPP_BIG_ENDIAN
    static const size_type __short_mask = 0x01;
    static const size_type __long_mask  = 0x1ul;
#else  // _LIBCPP_BIG_ENDIAN
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    static const size_type __short_mask = 0x80;
    static const size_type __long_mask  = ~(size_type(~0) >> 1);
#endif // _LIBCPP_BIG_ENDIAN
# 738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    enum {__min_cap = (sizeof(__long) - 1)/sizeof(value_type) > 2 ?
                      (sizeof(__long) - 1)/sizeof(value_type) : 2};

    struct __short
    {
        value_type __data_[__min_cap];
        struct
            : __padding<value_type>
        {
            unsigned char __size_;
        };
    };

#else
# 753 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    struct __long
    {
        size_type __cap_;
        size_type __size_;
        pointer   __data_;
    };

#ifdef _LIBCPP_BIG_ENDIAN
    static const size_type __short_mask = 0x80;
    static const size_type __long_mask  = ~(size_type(~0) >> 1);
#else  // _LIBCPP_BIG_ENDIAN
# 765 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    static const size_type __short_mask = 0x01;
    static const size_type __long_mask  = 0x1ul;
#endif // _LIBCPP_BIG_ENDIAN
# 768 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    enum {__min_cap = (sizeof(__long) - 1)/sizeof(value_type) > 2 ?
                      (sizeof(__long) - 1)/sizeof(value_type) : 2};

    struct __short
    {
        union
        {
            unsigned char __size_;
            value_type __lx;
        };
        value_type __data_[__min_cap];
    };

#endif // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
# 783 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    union __ulx{__long __lx; __short __lxx;};

    enum {__n_words = sizeof(__ulx) / sizeof(size_type)};

    struct __raw
    {
        size_type __words[__n_words];
    };

    struct __rep
    {
        union
        {
            __long  __l;
            __short __s;
            __raw   __r;
        };
    };

    __compressed_pair<__rep, allocator_type> __r_;

public:
    _LIBCPP_TEMPLATE_DATA_VIS
    static const size_type npos = -1;

    _LIBCPP_INLINE_VISIBILITY basic_string()
        _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);

    _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 814 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value);
#else
# 816 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT;
#endif
# 818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    basic_string(const basic_string& __str);
    basic_string(const basic_string& __str, const allocator_type& __a);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string(basic_string&& __str)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 826 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
#else
# 828 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT;
#endif
# 830 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    basic_string(basic_string&& __str, const allocator_type& __a);
#endif // _LIBCPP_CXX03_LANG
# 834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    template <class = _EnableIf<__is_allocator<_Allocator>::value, nullptr_t> >
    _LIBCPP_INLINE_VISIBILITY
    basic_string(const _CharT* __s) : __r_(__default_init_tag(), __default_init_tag()) {
      _LIBCPP_ASSERT(__s != nullptr, "basic_string(const char*) detected nullptr");
      __init(__s, traits_type::length(__s));
#if 0 /* disabled by -frewrite-includes */
#   if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 841 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
      __get_db()->__insert_c(this);
#   endif
# 843 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    }

    template <class = _EnableIf<__is_allocator<_Allocator>::value, nullptr_t> >
        _LIBCPP_INLINE_VISIBILITY
        basic_string(const _CharT* __s, const _Allocator& __a);

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 850 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    basic_string(nullptr_t) = delete;
#endif
# 852 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    basic_string(const _CharT* __s, size_type __n);
    _LIBCPP_INLINE_VISIBILITY
    basic_string(const _CharT* __s, size_type __n, const _Allocator& __a);
    _LIBCPP_INLINE_VISIBILITY
    basic_string(size_type __n, _CharT __c);

    template <class = _EnableIf<__is_allocator<_Allocator>::value, nullptr_t> >
        _LIBCPP_INLINE_VISIBILITY
        basic_string(size_type __n, _CharT __c, const _Allocator& __a);

    basic_string(const basic_string& __str, size_type __pos, size_type __n,
                 const _Allocator& __a = _Allocator());
    _LIBCPP_INLINE_VISIBILITY
    basic_string(const basic_string& __str, size_type __pos,
                 const _Allocator& __a = _Allocator());

    template<class _Tp, class = _EnableIf<__can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value && !__is_same_uncvref<_Tp, basic_string>::value> >
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        basic_string(const _Tp& __t, size_type __pos, size_type __n,
                     const allocator_type& __a = allocator_type());

    template<class _Tp, class = _EnableIf<__can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value &&
                                          !__is_same_uncvref<_Tp, basic_string>::value> >
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        explicit basic_string(const _Tp& __t);

    template<class _Tp, class = _EnableIf<__can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value && !__is_same_uncvref<_Tp, basic_string>::value> >
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        explicit basic_string(const _Tp& __t, const allocator_type& __a);

    template<class _InputIterator, class = _EnableIf<__is_cpp17_input_iterator<_InputIterator>::value> >
        _LIBCPP_INLINE_VISIBILITY
        basic_string(_InputIterator __first, _InputIterator __last);
    template<class _InputIterator, class = _EnableIf<__is_cpp17_input_iterator<_InputIterator>::value> >
        _LIBCPP_INLINE_VISIBILITY
        basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a);
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string(initializer_list<_CharT> __il);
    _LIBCPP_INLINE_VISIBILITY
    basic_string(initializer_list<_CharT> __il, const _Allocator& __a);
#endif // _LIBCPP_CXX03_LANG
# 896 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    inline ~basic_string();

    _LIBCPP_INLINE_VISIBILITY
    operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }

    basic_string& operator=(const basic_string& __str);

    template <class _Tp, class = _EnableIf<__can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value && !__is_same_uncvref<_Tp, basic_string>::value> >
    basic_string& operator=(const _Tp& __t)
        {__self_view __sv = __t; return assign(__sv);}

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string& operator=(basic_string&& __str)
        _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value));
     _LIBCPP_INLINE_VISIBILITY
    basic_string& operator=(initializer_list<value_type> __il) {return assign(__il.begin(), __il.size());}
#endif
# 915 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_INLINE_VISIBILITY basic_string& operator=(const value_type* __s) {return assign(__s);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 917 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    basic_string& operator=(nullptr_t) = delete;
#endif
# 919 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    basic_string& operator=(value_type __c);

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 922 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_INLINE_VISIBILITY
    iterator begin() _NOEXCEPT
        {return iterator(this, __get_pointer());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT
        {return const_iterator(this, __get_pointer());}
    _LIBCPP_INLINE_VISIBILITY
    iterator end() _NOEXCEPT
        {return iterator(this, __get_pointer() + size());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end() const _NOEXCEPT
        {return const_iterator(this, __get_pointer() + size());}
#else
# 935 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_INLINE_VISIBILITY
    iterator begin() _NOEXCEPT
        {return iterator(__get_pointer());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT
        {return const_iterator(__get_pointer());}
    _LIBCPP_INLINE_VISIBILITY
    iterator end() _NOEXCEPT
        {return iterator(__get_pointer() + size());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end() const _NOEXCEPT
        {return const_iterator(__get_pointer() + size());}
#endif // _LIBCPP_DEBUG_LEVEL == 2
# 948 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator rbegin() _NOEXCEPT
        {return reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin() const _NOEXCEPT
        {return const_reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator rend() _NOEXCEPT
        {return reverse_iterator(begin());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend() const _NOEXCEPT
        {return const_reverse_iterator(begin());}

    _LIBCPP_INLINE_VISIBILITY
    const_iterator cbegin() const _NOEXCEPT
        {return begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator cend() const _NOEXCEPT
        {return end();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin() const _NOEXCEPT
        {return rbegin();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend() const _NOEXCEPT
        {return rend();}

    _LIBCPP_INLINE_VISIBILITY size_type size() const _NOEXCEPT
        {return __is_long() ? __get_long_size() : __get_short_size();}
    _LIBCPP_INLINE_VISIBILITY size_type length() const _NOEXCEPT {return size();}
    _LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY size_type capacity() const _NOEXCEPT
        {return (__is_long() ? __get_long_cap()
                             : static_cast<size_type>(__min_cap)) - 1;}

    void resize(size_type __n, value_type __c);
    _LIBCPP_INLINE_VISIBILITY void resize(size_type __n) {resize(__n, value_type());}

    void reserve(size_type __requested_capacity);
    _LIBCPP_INLINE_VISIBILITY void __resize_default_init(size_type __n);

    _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_INLINE_VISIBILITY
    void reserve() _NOEXCEPT {shrink_to_fit();}
    _LIBCPP_INLINE_VISIBILITY
    void shrink_to_fit() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT;
    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool empty() const _NOEXCEPT {return size() == 0;}

    _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __pos) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY reference       operator[](size_type __pos)       _NOEXCEPT;

    const_reference at(size_type __n) const;
    reference       at(size_type __n);

    _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(const basic_string& __str) {return append(__str);}

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
            && !__is_same_uncvref<_Tp, basic_string >::value,
            basic_string&
        >
                                            operator+=(const _Tp& __t)            {__self_view __sv = __t; return append(__sv);}
    _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(const value_type* __s)     {return append(__s);}
    _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(value_type __c)            {push_back(__c); return *this;}
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(initializer_list<value_type> __il) {return append(__il);}
#endif // _LIBCPP_CXX03_LANG
# 1019 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    basic_string& append(const basic_string& __str);

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf<
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
            && !__is_same_uncvref<_Tp, basic_string>::value,
            basic_string&
        >
                  append(const _Tp& __t) { __self_view __sv = __t; return append(__sv.data(), __sv.size()); }
    basic_string& append(const basic_string& __str, size_type __pos, size_type __n=npos);

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
            && !__is_same_uncvref<_Tp, basic_string>::value,
            basic_string&
        >
                  append(const _Tp& __t, size_type __pos, size_type __n=npos);
    basic_string& append(const value_type* __s, size_type __n);
    basic_string& append(const value_type* __s);
    basic_string& append(size_type __n, value_type __c);

    _LIBCPP_INLINE_VISIBILITY
    void __append_default_init(size_type __n);

    template<class _InputIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_exactly_cpp17_input_iterator<_InputIterator>::value,
            basic_string&
        >
    _LIBCPP_INLINE_VISIBILITY
    append(_InputIterator __first, _InputIterator __last) {
      const basic_string __temp(__first, __last, __alloc());
      append(__temp.data(), __temp.size());
      return *this;
    }
    template<class _ForwardIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            basic_string&
        >
    _LIBCPP_INLINE_VISIBILITY
    append(_ForwardIterator __first, _ForwardIterator __last);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string& append(initializer_list<value_type> __il) {return append(__il.begin(), __il.size());}
#endif // _LIBCPP_CXX03_LANG
# 1076 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    void push_back(value_type __c);
    _LIBCPP_INLINE_VISIBILITY
    void pop_back();
    _LIBCPP_INLINE_VISIBILITY reference       front() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY const_reference front() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY reference       back() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY const_reference back() const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            basic_string&
        >
                 assign(const _Tp & __t) { __self_view __sv = __t; return assign(__sv.data(), __sv.size()); }
    _LIBCPP_INLINE_VISIBILITY
    basic_string& assign(const basic_string& __str) { return *this = __str; }
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string& assign(basic_string&& __str)
        _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value))
        {*this = _VSTD::move(__str); return *this;}
#endif
# 1101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    basic_string& assign(const basic_string& __str, size_type __pos, size_type __n=npos);
    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
            && !__is_same_uncvref<_Tp, basic_string>::value,
            basic_string&
        >
                  assign(const _Tp & __t, size_type __pos, size_type __n=npos);
    basic_string& assign(const value_type* __s, size_type __n);
    basic_string& assign(const value_type* __s);
    basic_string& assign(size_type __n, value_type __c);
    template<class _InputIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_exactly_cpp17_input_iterator<_InputIterator>::value,
            basic_string&
        >
        assign(_InputIterator __first, _InputIterator __last);
    template<class _ForwardIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            basic_string&
        >
        assign(_ForwardIterator __first, _ForwardIterator __last);
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string& assign(initializer_list<value_type> __il) {return assign(__il.begin(), __il.size());}
#endif // _LIBCPP_CXX03_LANG
# 1134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    basic_string& insert(size_type __pos1, const basic_string& __str);

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            basic_string&
        >
                 insert(size_type __pos1, const _Tp& __t)
    { __self_view __sv = __t; return insert(__pos1, __sv.data(), __sv.size()); }

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value && !__is_same_uncvref<_Tp, basic_string>::value,
            basic_string&
        >
                  insert(size_type __pos1, const _Tp& __t, size_type __pos2, size_type __n=npos);
    basic_string& insert(size_type __pos1, const basic_string& __str, size_type __pos2, size_type __n=npos);
    basic_string& insert(size_type __pos, const value_type* __s, size_type __n);
    basic_string& insert(size_type __pos, const value_type* __s);
    basic_string& insert(size_type __pos, size_type __n, value_type __c);
    iterator      insert(const_iterator __pos, value_type __c);
    _LIBCPP_INLINE_VISIBILITY
    iterator      insert(const_iterator __pos, size_type __n, value_type __c);
    template<class _InputIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_exactly_cpp17_input_iterator<_InputIterator>::value,
            iterator
        >
        insert(const_iterator __pos, _InputIterator __first, _InputIterator __last);
    template<class _ForwardIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            iterator
        >
        insert(const_iterator __pos, _ForwardIterator __first, _ForwardIterator __last);
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __pos, initializer_list<value_type> __il)
                    {return insert(__pos, __il.begin(), __il.end());}
#endif // _LIBCPP_CXX03_LANG
# 1184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    basic_string& erase(size_type __pos = 0, size_type __n = npos);
    _LIBCPP_INLINE_VISIBILITY
    iterator      erase(const_iterator __pos);
    _LIBCPP_INLINE_VISIBILITY
    iterator      erase(const_iterator __first, const_iterator __last);

    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str);

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            basic_string&
        >
                  replace(size_type __pos1, size_type __n1, const _Tp& __t) { __self_view __sv = __t; return replace(__pos1, __n1, __sv.data(), __sv.size()); }
    basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2=npos);
    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value  && !__is_same_uncvref<_Tp, basic_string>::value,
            basic_string&
        >
                  replace(size_type __pos1, size_type __n1, const _Tp& __t, size_type __pos2, size_type __n2=npos);
    basic_string& replace(size_type __pos, size_type __n1, const value_type* __s, size_type __n2);
    basic_string& replace(size_type __pos, size_type __n1, const value_type* __s);
    basic_string& replace(size_type __pos, size_type __n1, size_type __n2, value_type __c);
    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(const_iterator __i1, const_iterator __i2, const basic_string& __str);

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            basic_string&
        >
                  replace(const_iterator __i1, const_iterator __i2, const _Tp& __t) { __self_view __sv = __t; return replace(__i1 - begin(), __i2 - __i1, __sv); }

    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(const_iterator __i1, const_iterator __i2, const value_type* __s, size_type __n);
    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(const_iterator __i1, const_iterator __i2, const value_type* __s);
    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c);
    template<class _InputIterator>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __is_cpp17_input_iterator<_InputIterator>::value,
            basic_string&
        >
        replace(const_iterator __i1, const_iterator __i2, _InputIterator __j1, _InputIterator __j2);
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    basic_string& replace(const_iterator __i1, const_iterator __i2, initializer_list<value_type> __il)
        {return replace(__i1, __i2, __il.begin(), __il.end());}
#endif // _LIBCPP_CXX03_LANG
# 1245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    size_type copy(value_type* __s, size_type __n, size_type __pos = 0) const;
    _LIBCPP_INLINE_VISIBILITY
    basic_string substr(size_type __pos = 0, size_type __n = npos) const;

    _LIBCPP_INLINE_VISIBILITY
    void swap(basic_string& __str)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT;
#else
# 1255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                    __is_nothrow_swappable<allocator_type>::value);
#endif
# 1258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    const value_type* c_str() const _NOEXCEPT {return data();}
    _LIBCPP_INLINE_VISIBILITY
    const value_type* data() const _NOEXCEPT  {return _VSTD::__to_address(__get_pointer());}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14 || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1264 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_INLINE_VISIBILITY
    value_type* data()             _NOEXCEPT  {return _VSTD::__to_address(__get_pointer());}
#endif
# 1267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    allocator_type get_allocator() const _NOEXCEPT {return __alloc();}

    _LIBCPP_INLINE_VISIBILITY
    size_type find(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              find(const _Tp& __t, size_type __pos = 0) const _NOEXCEPT;
    size_type find(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find(const value_type* __s, size_type __pos = 0) const _NOEXCEPT;
    size_type find(value_type __c, size_type __pos = 0) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_type rfind(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              rfind(const _Tp& __t, size_type __pos = npos) const _NOEXCEPT;
    size_type rfind(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type rfind(const value_type* __s, size_type __pos = npos) const _NOEXCEPT;
    size_type rfind(value_type __c, size_type __pos = npos) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              find_first_of(const _Tp& __t, size_type __pos = 0) const _NOEXCEPT;
    size_type find_first_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(const value_type* __s, size_type __pos = 0) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_of(value_type __c, size_type __pos = 0) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              find_last_of(const _Tp& __t, size_type __pos = npos) const _NOEXCEPT;
    size_type find_last_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(const value_type* __s, size_type __pos = npos) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_of(value_type __c, size_type __pos = npos) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(const basic_string& __str, size_type __pos = 0) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              find_first_not_of(const _Tp &__t, size_type __pos = 0) const _NOEXCEPT;
    size_type find_first_not_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(const value_type* __s, size_type __pos = 0) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_first_not_of(value_type __c, size_type __pos = 0) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(const basic_string& __str, size_type __pos = npos) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            size_type
        >
              find_last_not_of(const _Tp& __t, size_type __pos = npos) const _NOEXCEPT;
    size_type find_last_not_of(const value_type* __s, size_type __pos, size_type __n) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(const value_type* __s, size_type __pos = npos) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type find_last_not_of(value_type __c, size_type __pos = npos) const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    int compare(const basic_string& __str) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            int
        >
        compare(const _Tp &__t) const _NOEXCEPT;

    template <class _Tp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
            int
        >
         compare(size_type __pos1, size_type __n1, const _Tp& __t) const;

    _LIBCPP_INLINE_VISIBILITY
    int compare(size_type __pos1, size_type __n1, const basic_string& __str) const;
    int compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2=npos) const;

    template <class _Tp>
    inline _LIBCPP_INLINE_VISIBILITY
        _EnableIf
        <
            __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value  && !__is_same_uncvref<_Tp, basic_string>::value,
            int
        >
        compare(size_type __pos1, size_type __n1, const _Tp& __t, size_type __pos2, size_type __n2=npos) const;
    int compare(const value_type* __s) const _NOEXCEPT;
    int compare(size_type __pos1, size_type __n1, const value_type* __s) const;
    int compare(size_type __pos1, size_type __n1, const value_type* __s, size_type __n2) const;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(__self_view __sv) const _NOEXCEPT
    { return __self_view(data(), size()).starts_with(__sv); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(value_type __c) const _NOEXCEPT
    { return !empty() && _Traits::eq(front(), __c); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool starts_with(const value_type* __s) const _NOEXCEPT
    { return starts_with(__self_view(__s)); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(__self_view __sv) const _NOEXCEPT
    { return __self_view(data(), size()).ends_with( __sv); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(value_type __c) const _NOEXCEPT
    { return !empty() && _Traits::eq(back(), __c); }

    _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    bool ends_with(const value_type* __s) const _NOEXCEPT
    { return ends_with(__self_view(__s)); }
#endif
# 1433 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 20
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1435 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(__self_view __sv) const noexcept
    { return __self_view(data(), size()).contains(__sv); }

    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(value_type __c) const noexcept
    { return __self_view(data(), size()).contains(__c); }

    constexpr _LIBCPP_INLINE_VISIBILITY
    bool contains(const value_type* __s) const
    { return __self_view(data(), size()).contains(__s); }
#endif
# 1447 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY bool __invariants() const;

    _LIBCPP_INLINE_VISIBILITY void __clear_and_shrink() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY void __shrink_or_extend(size_type __target_capacity);

    _LIBCPP_INLINE_VISIBILITY
    bool __is_long() const _NOEXCEPT
        {return bool(__r_.first().__s.__size_ & __short_mask);}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    bool __dereferenceable(const const_iterator* __i) const;
    bool __decrementable(const const_iterator* __i) const;
    bool __addable(const const_iterator* __i, ptrdiff_t __n) const;
    bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const;

#endif // _LIBCPP_DEBUG_LEVEL == 2
# 1466 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

private:
    _LIBCPP_INLINE_VISIBILITY
    allocator_type& __alloc() _NOEXCEPT
        {return __r_.second();}
    _LIBCPP_INLINE_VISIBILITY
    const allocator_type& __alloc() const _NOEXCEPT
        {return __r_.second();}

#ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT

    _LIBCPP_INLINE_VISIBILITY
    void __set_short_size(size_type __s) _NOEXCEPT
#   ifdef _LIBCPP_BIG_ENDIAN
        {__r_.first().__s.__size_ = (unsigned char)(__s << 1);}
#   else
# 1482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        {__r_.first().__s.__size_ = (unsigned char)(__s);}
#   endif
# 1484 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    size_type __get_short_size() const _NOEXCEPT
#   ifdef _LIBCPP_BIG_ENDIAN
        {return __r_.first().__s.__size_ >> 1;}
#   else
# 1490 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        {return __r_.first().__s.__size_;}
#   endif
# 1492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#else  // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
# 1494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    void __set_short_size(size_type __s) _NOEXCEPT
#   ifdef _LIBCPP_BIG_ENDIAN
        {__r_.first().__s.__size_ = (unsigned char)(__s);}
#   else
# 1500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        {__r_.first().__s.__size_ = (unsigned char)(__s << 1);}
#   endif
# 1502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    size_type __get_short_size() const _NOEXCEPT
#   ifdef _LIBCPP_BIG_ENDIAN
        {return __r_.first().__s.__size_;}
#   else
# 1508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        {return __r_.first().__s.__size_ >> 1;}
#   endif
# 1510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#endif // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
# 1512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    void __set_long_size(size_type __s) _NOEXCEPT
        {__r_.first().__l.__size_ = __s;}
    _LIBCPP_INLINE_VISIBILITY
    size_type __get_long_size() const _NOEXCEPT
        {return __r_.first().__l.__size_;}
    _LIBCPP_INLINE_VISIBILITY
    void __set_size(size_type __s) _NOEXCEPT
        {if (__is_long()) __set_long_size(__s); else __set_short_size(__s);}

    _LIBCPP_INLINE_VISIBILITY
    void __set_long_cap(size_type __s) _NOEXCEPT
        {__r_.first().__l.__cap_  = __long_mask | __s;}
    _LIBCPP_INLINE_VISIBILITY
    size_type __get_long_cap() const _NOEXCEPT
        {return __r_.first().__l.__cap_ & size_type(~__long_mask);}

    _LIBCPP_INLINE_VISIBILITY
    void __set_long_pointer(pointer __p) _NOEXCEPT
        {__r_.first().__l.__data_ = __p;}
    _LIBCPP_INLINE_VISIBILITY
    pointer __get_long_pointer() _NOEXCEPT
        {return __r_.first().__l.__data_;}
    _LIBCPP_INLINE_VISIBILITY
    const_pointer __get_long_pointer() const _NOEXCEPT
        {return __r_.first().__l.__data_;}
    _LIBCPP_INLINE_VISIBILITY
    pointer __get_short_pointer() _NOEXCEPT
        {return pointer_traits<pointer>::pointer_to(__r_.first().__s.__data_[0]);}
    _LIBCPP_INLINE_VISIBILITY
    const_pointer __get_short_pointer() const _NOEXCEPT
        {return pointer_traits<const_pointer>::pointer_to(__r_.first().__s.__data_[0]);}
    _LIBCPP_INLINE_VISIBILITY
    pointer __get_pointer() _NOEXCEPT
        {return __is_long() ? __get_long_pointer() : __get_short_pointer();}
    _LIBCPP_INLINE_VISIBILITY
    const_pointer __get_pointer() const _NOEXCEPT
        {return __is_long() ? __get_long_pointer() : __get_short_pointer();}

    _LIBCPP_INLINE_VISIBILITY
    void __zero() _NOEXCEPT
        {
            size_type (&__a)[__n_words] = __r_.first().__r.__words;
            for (unsigned __i = 0; __i < __n_words; ++__i)
                __a[__i] = 0;
        }

    template <size_type __a> static
        _LIBCPP_INLINE_VISIBILITY
        size_type __align_it(size_type __s) _NOEXCEPT
            {return (__s + (__a-1)) & ~(__a-1);}
    enum {__alignment = 16};
    static _LIBCPP_INLINE_VISIBILITY
    size_type __recommend(size_type __s) _NOEXCEPT
        {
        if (__s < __min_cap) return static_cast<size_type>(__min_cap) - 1;
        size_type __guess = __align_it<sizeof(value_type) < __alignment ?
                     __alignment/sizeof(value_type) : 1 > (__s+1) - 1;
        if (__guess == __min_cap) ++__guess;
        return __guess;
        }

    inline
    void __init(const value_type* __s, size_type __sz, size_type __reserve);
    inline
    void __init(const value_type* __s, size_type __sz);
    inline
    void __init(size_type __n, value_type __c);

    // Slow path for the (inlined) copy constructor for 'long' strings.
    // Always externally instantiated and not inlined.
    // Requires that __s is zero terminated.
    // The main reason for this function to exist is because for unstable, we
    // want to allow inlining of the copy constructor. However, we don't want
    // to call the __init() functions as those are marked as inline which may
    // result in over-aggressive inlining by the compiler, where our aim is
    // to only inline the fast path code directly in the ctor.
    void __init_copy_ctor_external(const value_type* __s, size_type __sz);

    template <class _InputIterator>
    inline
    _EnableIf
    <
        __is_exactly_cpp17_input_iterator<_InputIterator>::value
    >
    __init(_InputIterator __first, _InputIterator __last);

    template <class _ForwardIterator>
    inline
    _EnableIf
    <
        __is_cpp17_forward_iterator<_ForwardIterator>::value
    >
    __init(_ForwardIterator __first, _ForwardIterator __last);

    void __grow_by(size_type __old_cap, size_type __delta_cap, size_type __old_sz,
                   size_type __n_copy,  size_type __n_del,     size_type __n_add = 0);
    void __grow_by_and_replace(size_type __old_cap, size_type __delta_cap, size_type __old_sz,
                               size_type __n_copy,  size_type __n_del,
                               size_type __n_add, const value_type* __p_new_stuff);

    // __assign_no_alias is invoked for assignment operations where we
    // have proof that the input does not alias the current instance.
    // For example, operator=(basic_string) performs a 'self' check.
    template <bool __is_short>
    basic_string& __assign_no_alias(const value_type* __s, size_type __n);

    _LIBCPP_INLINE_VISIBILITY
    void __erase_to_end(size_type __pos);

    // __erase_external_with_move is invoked for erase() invocations where
    // `n ~= npos`, likely requiring memory moves on the string data.
    void __erase_external_with_move(size_type __pos, size_type __n);

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const basic_string& __str)
        {__copy_assign_alloc(__str, integral_constant<bool,
                      __alloc_traits::propagate_on_container_copy_assignment::value>());}

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const basic_string& __str, true_type)
        {
            if (__alloc() == __str.__alloc())
                __alloc() = __str.__alloc();
            else
            {
                if (!__str.__is_long())
                {
                    __clear_and_shrink();
                    __alloc() = __str.__alloc();
                }
                else
                {
                    allocator_type __a = __str.__alloc();
                    pointer __p = __alloc_traits::allocate(__a, __str.__get_long_cap());
                    __clear_and_shrink();
                    __alloc() = _VSTD::move(__a);
                    __set_long_pointer(__p);
                    __set_long_cap(__str.__get_long_cap());
                    __set_long_size(__str.size());
                }
            }
        }

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const basic_string&, false_type) _NOEXCEPT
        {}

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign(basic_string& __str, false_type)
        _NOEXCEPT_(__alloc_traits::is_always_equal::value);
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign(basic_string& __str, true_type)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1668 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT;
#else
# 1670 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
#endif
# 1672 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
#endif
# 1673 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    _LIBCPP_INLINE_VISIBILITY
    void
    __move_assign_alloc(basic_string& __str)
        _NOEXCEPT_(
            !__alloc_traits::propagate_on_container_move_assignment::value ||
            is_nothrow_move_assignable<allocator_type>::value)
    {__move_assign_alloc(__str, integral_constant<bool,
                      __alloc_traits::propagate_on_container_move_assignment::value>());}

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(basic_string& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
        {
            __alloc() = _VSTD::move(__c.__alloc());
        }

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(basic_string&, false_type)
        _NOEXCEPT
        {}

    basic_string& __assign_external(const value_type* __s);
    basic_string& __assign_external(const value_type* __s, size_type __n);

    // Assigns the value in __s, guaranteed to be __n < __min_cap in length.
    inline basic_string& __assign_short(const value_type* __s, size_type __n) {
      pointer __p = __is_long()
                        ? (__set_long_size(__n), __get_long_pointer())
                        : (__set_short_size(__n), __get_short_pointer());
      traits_type::move(_VSTD::__to_address(__p), __s, __n);
      traits_type::assign(__p[__n], value_type());
      return *this;
    }

    _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
    _LIBCPP_INLINE_VISIBILITY void __invalidate_iterators_past(size_type);

    template<class _Tp>
    _LIBCPP_INLINE_VISIBILITY
    bool __addr_in_range(_Tp&& __t) const {
        const volatile void *__p = _VSTD::addressof(__t);
        return data() <= __p && __p <= data() + size();
    }

    _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI
    void __throw_length_error() const {
#ifndef _LIBCPP_NO_EXCEPTIONS
        __basic_string_common<true>::__throw_length_error();
#else
# 1723 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _VSTD::abort();
#endif
# 1725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    }

    _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI
    void __throw_out_of_range() const {
#ifndef _LIBCPP_NO_EXCEPTIONS
        __basic_string_common<true>::__throw_out_of_range();
#else
# 1732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _VSTD::abort();
#endif
# 1734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    }

    friend basic_string operator+<>(const basic_string&, const basic_string&);
    friend basic_string operator+<>(const value_type*, const basic_string&);
    friend basic_string operator+<>(value_type, const basic_string&);
    friend basic_string operator+<>(const basic_string&, const value_type*);
    friend basic_string operator+<>(const basic_string&, value_type);
};

// These declarations must appear before any functions are implicitly used
// so that they have the correct visibility specifier.
#ifdef _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION
_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
#else
# 1749 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
#endif
# 1752 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3


#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _InputIterator,
         class _CharT = __iter_value_type<_InputIterator>,
         class _Allocator = allocator<_CharT>,
         class = _EnableIf<__is_cpp17_input_iterator<_InputIterator>::value>,
         class = _EnableIf<__is_allocator<_Allocator>::value>
         >
basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator())
  -> basic_string<_CharT, char_traits<_CharT>, _Allocator>;

template<class _CharT,
         class _Traits,
         class _Allocator = allocator<_CharT>,
         class = _EnableIf<__is_allocator<_Allocator>::value>
         >
explicit basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator())
  -> basic_string<_CharT, _Traits, _Allocator>;

template<class _CharT,
         class _Traits,
         class _Allocator = allocator<_CharT>,
         class = _EnableIf<__is_allocator<_Allocator>::value>,
         class _Sz = typename allocator_traits<_Allocator>::size_type
         >
basic_string(basic_string_view<_CharT, _Traits>, _Sz, _Sz, const _Allocator& = _Allocator())
  -> basic_string<_CharT, _Traits, _Allocator>;
#endif
# 1781 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__invalidate_all_iterators()
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1788 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__invalidate_all(this);
#endif
# 1790 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__invalidate_iterators_past(size_type __pos)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1798 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __c_node* __c = __get_db()->__find_c_and_lock(this);
    if (__c)
    {
        const_pointer __new_last = __get_pointer() + __pos;
        for (__i_node** __p = __c->end_; __p != __c->beg_; )
        {
            --__p;
            const_iterator* __i = static_cast<const_iterator*>((*__p)->__i_);
            if (__i->base() > __new_last)
            {
                (*__p)->__c_ = nullptr;
                if (--__c->end_ != __p)
                    _VSTD::memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*));
            }
        }
        __get_db()->unlock();
    }
#else
# 1816 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    (void)__pos;
#endif // _LIBCPP_DEBUG_LEVEL == 2
# 1818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string()
    _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
     : __r_(__default_init_tag(), __default_init_tag())
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1829 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __zero();
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1836 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
#else
# 1838 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT
#endif
# 1840 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
: __r_(__default_init_tag(), __a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1843 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1845 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __zero();
}

template <class _CharT, class _Traits, class _Allocator>
void basic_string<_CharT, _Traits, _Allocator>::__init(const value_type* __s,
                                                       size_type __sz,
                                                       size_type __reserve)
{
    if (__reserve > max_size())
        this->__throw_length_error();
    pointer __p;
    if (__reserve < __min_cap)
    {
        __set_short_size(__sz);
        __p = __get_short_pointer();
    }
    else
    {
        size_type __cap = __recommend(__reserve);
        __p = __alloc_traits::allocate(__alloc(), __cap+1);
        __set_long_pointer(__p);
        __set_long_cap(__cap+1);
        __set_long_size(__sz);
    }
    traits_type::copy(_VSTD::__to_address(__p), __s, __sz);
    traits_type::assign(__p[__sz], value_type());
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__init(const value_type* __s, size_type __sz)
{
    if (__sz > max_size())
        this->__throw_length_error();
    pointer __p;
    if (__sz < __min_cap)
    {
        __set_short_size(__sz);
        __p = __get_short_pointer();
    }
    else
    {
        size_type __cap = __recommend(__sz);
        __p = __alloc_traits::allocate(__alloc(), __cap+1);
        __set_long_pointer(__p);
        __set_long_cap(__cap+1);
        __set_long_size(__sz);
    }
    traits_type::copy(_VSTD::__to_address(__p), __s, __sz);
    traits_type::assign(__p[__sz], value_type());
}

template <class _CharT, class _Traits, class _Allocator>
template <class>
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    _LIBCPP_ASSERT(__s != nullptr, "basic_string(const char*, allocator) detected nullptr");
    __init(__s, traits_type::length(__s));
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1905 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1907 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, size_type __n)
     : __r_(__default_init_tag(), __default_init_tag())
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "basic_string(const char*, n) detected nullptr");
    __init(__s, __n);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1917 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1919 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _CharT* __s, size_type __n, const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "basic_string(const char*, n, allocator) detected nullptr");
    __init(__s, __n);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1929 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1931 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __str)
    : __r_(__default_init_tag(), __alloc_traits::select_on_container_copy_construction(__str.__alloc()))
{
    if (!__str.__is_long())
        __r_.first().__r = __str.__r_.first().__r;
    else
        __init_copy_ctor_external(_VSTD::__to_address(__str.__get_long_pointer()),
                                  __str.__get_long_size());

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1944 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1946 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>::basic_string(
    const basic_string& __str, const allocator_type& __a)
    : __r_(__default_init_tag(), __a)
{
    if (!__str.__is_long())
        __r_.first().__r = __str.__r_.first().__r;
    else
        __init_copy_ctor_external(_VSTD::__to_address(__str.__get_long_pointer()),
                                  __str.__get_long_size());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1959 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 1961 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
void basic_string<_CharT, _Traits, _Allocator>::__init_copy_ctor_external(
    const value_type* __s, size_type __sz) {
  pointer __p;
  if (__sz < __min_cap) {
    __p = __get_short_pointer();
    __set_short_size(__sz);
  } else {
    if (__sz > max_size())
      this->__throw_length_error();
    size_t __cap = __recommend(__sz);
    __p = __alloc_traits::allocate(__alloc(), __cap + 1);
    __set_long_pointer(__p);
    __set_long_cap(__cap + 1);
    __set_long_size(__sz);
  }
  traits_type::copy(_VSTD::__to_address(__p), __s, __sz + 1);
}

#ifndef _LIBCPP_CXX03_LANG

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1988 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
#else
# 1990 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT
#endif
# 1992 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    : __r_(_VSTD::move(__str.__r_))
{
    __str.__zero();
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1996 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
    if (__is_long())
        __get_db()->swap(this, &__str);
#endif
# 2000 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str, const allocator_type& __a)
    : __r_(__default_init_tag(), __a)
{
    if (__str.__is_long() && __a != __str.__alloc()) // copy, not move
        __init(_VSTD::__to_address(__str.__get_long_pointer()), __str.__get_long_size());
    else
    {
        __r_.first().__r = __str.__r_.first().__r;
        __str.__zero();
    }
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2015 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
    if (__is_long())
        __get_db()->swap(this, &__str);
#endif
# 2019 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

#endif // _LIBCPP_CXX03_LANG
# 2022 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__init(size_type __n, value_type __c)
{
    if (__n > max_size())
        this->__throw_length_error();
    pointer __p;
    if (__n < __min_cap)
    {
        __set_short_size(__n);
        __p = __get_short_pointer();
    }
    else
    {
        size_type __cap = __recommend(__n);
        __p = __alloc_traits::allocate(__alloc(), __cap+1);
        __set_long_pointer(__p);
        __set_long_cap(__cap+1);
        __set_long_size(__n);
    }
    traits_type::assign(_VSTD::__to_address(__p), __n, __c);
    traits_type::assign(__p[__n], value_type());
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, _CharT __c)
     : __r_(__default_init_tag(), __default_init_tag())
{
    __init(__n, __c);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2054 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2056 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class>
basic_string<_CharT, _Traits, _Allocator>::basic_string(size_type __n, _CharT __c, const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    __init(__n, __c);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2065 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2067 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __str,
                                                        size_type __pos, size_type __n,
                                                        const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    size_type __str_sz = __str.size();
    if (__pos > __str_sz)
        this->__throw_out_of_range();
    __init(__str.data() + __pos, _VSTD::min(__n, __str_sz - __pos));
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2080 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2082 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __str, size_type __pos,
                                                        const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    size_type __str_sz = __str.size();
    if (__pos > __str_sz)
        this->__throw_out_of_range();
    __init(__str.data() + __pos, __str_sz - __pos);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2095 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2097 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp, class>
basic_string<_CharT, _Traits, _Allocator>::basic_string(
             const _Tp& __t, size_type __pos, size_type __n, const allocator_type& __a)
    : __r_(__default_init_tag(), __a)
{
    __self_view __sv0 = __t;
    __self_view __sv = __sv0.substr(__pos, __n);
    __init(__sv.data(), __sv.size());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp, class>
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _Tp & __t)
     : __r_(__default_init_tag(), __default_init_tag())
{
    __self_view __sv = __t;
    __init(__sv.data(), __sv.size());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp, class>
basic_string<_CharT, _Traits, _Allocator>::basic_string(const _Tp & __t, const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    __self_view __sv = __t;
    __init(__sv.data(), __sv.size());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class _InputIterator>
_EnableIf
<
    __is_exactly_cpp17_input_iterator<_InputIterator>::value
>
basic_string<_CharT, _Traits, _Allocator>::__init(_InputIterator __first, _InputIterator __last)
{
    __zero();
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 2150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    for (; __first != __last; ++__first)
        push_back(*__first);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        if (__is_long())
            __alloc_traits::deallocate(__alloc(), __get_long_pointer(), __get_long_cap());
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 2161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template <class _ForwardIterator>
_EnableIf
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value
>
basic_string<_CharT, _Traits, _Allocator>::__init(_ForwardIterator __first, _ForwardIterator __last)
{
    size_type __sz = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__sz > max_size())
        this->__throw_length_error();
    pointer __p;
    if (__sz < __min_cap)
    {
        __set_short_size(__sz);
        __p = __get_short_pointer();
    }
    else
    {
        size_type __cap = __recommend(__sz);
        __p = __alloc_traits::allocate(__alloc(), __cap+1);
        __set_long_pointer(__p);
        __set_long_cap(__cap+1);
        __set_long_size(__sz);
    }

#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif  // _LIBCPP_NO_EXCEPTIONS
# 2193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    for (; __first != __last; ++__first, (void) ++__p)
        traits_type::assign(*__p, *__first);
    traits_type::assign(*__p, value_type());
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        if (__is_long())
            __alloc_traits::deallocate(__alloc(), __get_long_pointer(), __get_long_cap());
        throw;
    }
#endif  // _LIBCPP_NO_EXCEPTIONS
# 2205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator, class>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(_InputIterator __first, _InputIterator __last)
     : __r_(__default_init_tag(), __default_init_tag())
{
    __init(__first, __last);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator, class>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(_InputIterator __first, _InputIterator __last,
                                                        const allocator_type& __a)
    : __r_(__default_init_tag(), __a)
{
    __init(__first, __last);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2230 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

#ifndef _LIBCPP_CXX03_LANG

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>::basic_string(
    initializer_list<_CharT> __il)
     : __r_(__default_init_tag(), __default_init_tag())
{
    __init(__il.begin(), __il.end());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
inline

basic_string<_CharT, _Traits, _Allocator>::basic_string(
    initializer_list<_CharT> __il, const _Allocator& __a)
    : __r_(__default_init_tag(), __a)
{
    __init(__il.begin(), __il.end());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__insert_c(this);
#endif
# 2257 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

#endif // _LIBCPP_CXX03_LANG
# 2260 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>::~basic_string()
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2265 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    __get_db()->__erase_c(this);
#endif
# 2267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    if (__is_long())
        __alloc_traits::deallocate(__alloc(), __get_long_pointer(), __get_long_cap());
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__grow_by_and_replace
    (size_type __old_cap, size_type __delta_cap, size_type __old_sz,
     size_type __n_copy,  size_type __n_del,     size_type __n_add, const value_type* __p_new_stuff)
{
    size_type __ms = max_size();
    if (__delta_cap > __ms - __old_cap - 1)
        this->__throw_length_error();
    pointer __old_p = __get_pointer();
    size_type __cap = __old_cap < __ms / 2 - __alignment ?
                          __recommend(_VSTD::max(__old_cap + __delta_cap, 2 * __old_cap)) :
                          __ms - 1;
    pointer __p = __alloc_traits::allocate(__alloc(), __cap+1);
    __invalidate_all_iterators();
    if (__n_copy != 0)
        traits_type::copy(_VSTD::__to_address(__p),
                          _VSTD::__to_address(__old_p), __n_copy);
    if (__n_add != 0)
        traits_type::copy(_VSTD::__to_address(__p) + __n_copy, __p_new_stuff, __n_add);
    size_type __sec_cp_sz = __old_sz - __n_del - __n_copy;
    if (__sec_cp_sz != 0)
        traits_type::copy(_VSTD::__to_address(__p) + __n_copy + __n_add,
                          _VSTD::__to_address(__old_p) + __n_copy + __n_del, __sec_cp_sz);
    if (__old_cap+1 != __min_cap)
        __alloc_traits::deallocate(__alloc(), __old_p, __old_cap+1);
    __set_long_pointer(__p);
    __set_long_cap(__cap+1);
    __old_sz = __n_copy + __n_add + __sec_cp_sz;
    __set_long_size(__old_sz);
    traits_type::assign(__p[__old_sz], value_type());
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__grow_by(size_type __old_cap, size_type __delta_cap, size_type __old_sz,
                                                     size_type __n_copy,  size_type __n_del,     size_type __n_add)
{
    size_type __ms = max_size();
    if (__delta_cap > __ms - __old_cap)
        this->__throw_length_error();
    pointer __old_p = __get_pointer();
    size_type __cap = __old_cap < __ms / 2 - __alignment ?
                          __recommend(_VSTD::max(__old_cap + __delta_cap, 2 * __old_cap)) :
                          __ms - 1;
    pointer __p = __alloc_traits::allocate(__alloc(), __cap+1);
    __invalidate_all_iterators();
    if (__n_copy != 0)
        traits_type::copy(_VSTD::__to_address(__p),
                          _VSTD::__to_address(__old_p), __n_copy);
    size_type __sec_cp_sz = __old_sz - __n_del - __n_copy;
    if (__sec_cp_sz != 0)
        traits_type::copy(_VSTD::__to_address(__p) + __n_copy + __n_add,
                          _VSTD::__to_address(__old_p) + __n_copy + __n_del,
                          __sec_cp_sz);
    if (__old_cap+1 != __min_cap)
        __alloc_traits::deallocate(__alloc(), __old_p, __old_cap+1);
    __set_long_pointer(__p);
    __set_long_cap(__cap+1);
}

// assign

template <class _CharT, class _Traits, class _Allocator>
template <bool __is_short>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::__assign_no_alias(
    const value_type* __s, size_type __n) {
  size_type __cap = __is_short ? __min_cap : __get_long_cap();
  if (__n < __cap) {
    pointer __p = __is_short ? __get_short_pointer() : __get_long_pointer();
    __is_short ? __set_short_size(__n) : __set_long_size(__n);
    traits_type::copy(_VSTD::__to_address(__p), __s, __n);
    traits_type::assign(__p[__n], value_type());
    __invalidate_iterators_past(__n);
  } else {
    size_type __sz = __is_short ? __get_short_size() : __get_long_size();
    __grow_by_and_replace(__cap - 1, __n - __cap + 1, __sz, 0, __sz, __n, __s);
  }
  return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::__assign_external(
    const value_type* __s, size_type __n) {
  size_type __cap = capacity();
  if (__cap >= __n) {
    value_type* __p = _VSTD::__to_address(__get_pointer());
    traits_type::move(__p, __s, __n);
    traits_type::assign(__p[__n], value_type());
    __set_size(__n);
    __invalidate_iterators_past(__n);
  } else {
    size_type __sz = size();
    __grow_by_and_replace(__cap, __n - __cap, __sz, 0, __sz, __n, __s);
  }
  return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::assign(const value_type* __s, size_type __n)
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::assign received nullptr");
    return (_LIBCPP_BUILTIN_CONSTANT_P(__n) && __n < __min_cap)
               ? __assign_short(__s, __n)
               : __assign_external(__s, __n);
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::assign(size_type __n, value_type __c)
{
    size_type __cap = capacity();
    if (__cap < __n)
    {
        size_type __sz = size();
        __grow_by(__cap, __n - __cap, __sz, 0, __sz);
    }
    value_type* __p = _VSTD::__to_address(__get_pointer());
    traits_type::assign(__p, __n, __c);
    traits_type::assign(__p[__n], value_type());
    __set_size(__n);
    __invalidate_iterators_past(__n);
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::operator=(value_type __c)
{
    pointer __p;
    if (__is_long())
    {
        __p = __get_long_pointer();
        __set_long_size(1);
    }
    else
    {
        __p = __get_short_pointer();
        __set_short_size(1);
    }
    traits_type::assign(*__p, __c);
    traits_type::assign(*++__p, value_type());
    __invalidate_iterators_past(1);
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::operator=(const basic_string& __str)
{
  if (this != &__str) {
    __copy_assign_alloc(__str);
    if (!__is_long()) {
      if (!__str.__is_long()) {
        __r_.first().__r = __str.__r_.first().__r;
      } else {
        return __assign_no_alias<true>(__str.data(), __str.size());
      }
    } else {
      return __assign_no_alias<false>(__str.data(), __str.size());
    }
  }
  return *this;
}

#ifndef _LIBCPP_CXX03_LANG

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, false_type)
    _NOEXCEPT_(__alloc_traits::is_always_equal::value)
{
    if (__alloc() != __str.__alloc())
        assign(__str);
    else
        __move_assign(__str, true_type());
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__move_assign(basic_string& __str, true_type)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _NOEXCEPT
#else
# 2460 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
#endif
# 2462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
{
  if (__is_long()) {
    __alloc_traits::deallocate(__alloc(), __get_long_pointer(),
                               __get_long_cap());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2467 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    if (!is_nothrow_move_assignable<allocator_type>::value) {
      __set_short_size(0);
      traits_type::assign(__get_short_pointer()[0], value_type());
    }
#endif
# 2472 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
  }
  __move_assign_alloc(__str);
  __r_.first() = __str.__r_.first();
  __str.__set_short_size(0);
  traits_type::assign(__str.__get_short_pointer()[0], value_type());
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::operator=(basic_string&& __str)
    _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value))
{
    __move_assign(__str, integral_constant<bool,
          __alloc_traits::propagate_on_container_move_assignment::value>());
    return *this;
}

#endif
# 2491 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator>
_EnableIf
<
     __is_exactly_cpp17_input_iterator<_InputIterator>::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
{
    const basic_string __temp(__first, __last, __alloc());
    assign(__temp.data(), __temp.size());
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
template<class _ForwardIterator>
_EnableIf
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
{
    size_type __cap = capacity();
    size_type __n = __string_is_trivial_iterator<_ForwardIterator>::value ?
        static_cast<size_type>(_VSTD::distance(__first, __last)) : 0;

    if (__string_is_trivial_iterator<_ForwardIterator>::value &&
        (__cap >= __n || !__addr_in_range(*__first)))
    {
        if (__cap < __n)
        {
            size_type __sz = size();
            __grow_by(__cap, __n - __cap, __sz, 0, __sz);
        }
        pointer __p = __get_pointer();
        for (; __first != __last; ++__first, ++__p)
            traits_type::assign(*__p, *__first);
        traits_type::assign(*__p, value_type());
        __set_size(__n);
        __invalidate_iterators_past(__n);
    }
    else
    {
        const basic_string __temp(__first, __last, __alloc());
        assign(__temp.data(), __temp.size());
    }
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::assign(const basic_string& __str, size_type __pos, size_type __n)
{
    size_type __sz = __str.size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    return assign(__str.data() + __pos, _VSTD::min(__n, __sz - __pos));
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
    && !__is_same_uncvref<_Tp, basic_string<_CharT, _Traits, _Allocator> >::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::assign(const _Tp & __t, size_type __pos, size_type __n)
{
    __self_view __sv = __t;
    size_type __sz = __sv.size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    return assign(__sv.data() + __pos, _VSTD::min(__n, __sz - __pos));
}


template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::__assign_external(const value_type* __s) {
  return __assign_external(__s, traits_type::length(__s));
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::assign(const value_type* __s)
{
    _LIBCPP_ASSERT(__s != nullptr, "string::assign received nullptr");
    return _LIBCPP_BUILTIN_CONSTANT_P(*__s)
               ? (traits_type::length(__s) < __min_cap
                      ? __assign_short(__s, traits_type::length(__s))
                      : __assign_external(__s, traits_type::length(__s)))
               : __assign_external(__s);
}
// append

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const value_type* __s, size_type __n)
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::append received nullptr");
    size_type __cap = capacity();
    size_type __sz = size();
    if (__cap - __sz >= __n)
    {
        if (__n)
        {
            value_type* __p = _VSTD::__to_address(__get_pointer());
            traits_type::copy(__p + __sz, __s, __n);
            __sz += __n;
            __set_size(__sz);
            traits_type::assign(__p[__sz], value_type());
        }
    }
    else
        __grow_by_and_replace(__cap, __sz + __n - __cap, __sz, __sz, 0, __n, __s);
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(size_type __n, value_type __c)
{
    if (__n)
    {
        size_type __cap = capacity();
        size_type __sz = size();
        if (__cap - __sz < __n)
            __grow_by(__cap, __sz + __n - __cap, __sz, __sz, 0);
        pointer __p = __get_pointer();
        traits_type::assign(_VSTD::__to_address(__p) + __sz, __n, __c);
        __sz += __n;
        __set_size(__sz);
        traits_type::assign(__p[__sz], value_type());
    }
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
inline void
basic_string<_CharT, _Traits, _Allocator>::__append_default_init(size_type __n)
{
    if (__n)
    {
        size_type __cap = capacity();
        size_type __sz = size();
        if (__cap - __sz < __n)
            __grow_by(__cap, __sz + __n - __cap, __sz, __sz, 0);
        pointer __p = __get_pointer();
        __sz += __n;
        __set_size(__sz);
        traits_type::assign(__p[__sz], value_type());
    }
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::push_back(value_type __c)
{
    bool __is_short = !__is_long();
    size_type __cap;
    size_type __sz;
    if (__is_short)
    {
        __cap = __min_cap - 1;
        __sz = __get_short_size();
    }
    else
    {
        __cap = __get_long_cap() - 1;
        __sz = __get_long_size();
    }
    if (__sz == __cap)
    {
        __grow_by(__cap, 1, __sz, __sz, 0);
        __is_short = !__is_long();
    }
    pointer __p;
    if (__is_short)
    {
        __p = __get_short_pointer() + __sz;
        __set_short_size(__sz+1);
    }
    else
    {
        __p = __get_long_pointer() + __sz;
        __set_long_size(__sz+1);
    }
    traits_type::assign(*__p, __c);
    traits_type::assign(*++__p, value_type());
}

template <class _CharT, class _Traits, class _Allocator>
template<class _ForwardIterator>
_EnableIf
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::append(
    _ForwardIterator __first, _ForwardIterator __last)
{
    size_type __sz = size();
    size_type __cap = capacity();
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n)
    {
        if (__string_is_trivial_iterator<_ForwardIterator>::value &&
            !__addr_in_range(*__first))
        {
            if (__cap - __sz < __n)
                __grow_by(__cap, __sz + __n - __cap, __sz, __sz, 0);
            pointer __p = __get_pointer() + __sz;
            for (; __first != __last; ++__p, ++__first)
                traits_type::assign(*__p, *__first);
            traits_type::assign(*__p, value_type());
            __set_size(__sz + __n);
        }
        else
        {
            const basic_string __temp(__first, __last, __alloc());
            append(__temp.data(), __temp.size());
        }
    }
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const basic_string& __str)
{
    return append(__str.data(), __str.size());
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const basic_string& __str, size_type __pos, size_type __n)
{
    size_type __sz = __str.size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    return append(__str.data() + __pos, _VSTD::min(__n, __sz - __pos));
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
    _EnableIf
    <
        __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value  && !__is_same_uncvref<_Tp, basic_string<_CharT, _Traits, _Allocator> >::value,
        basic_string<_CharT, _Traits, _Allocator>&
    >
basic_string<_CharT, _Traits, _Allocator>::append(const _Tp & __t, size_type __pos, size_type __n)
{
    __self_view __sv = __t;
    size_type __sz = __sv.size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    return append(__sv.data() + __pos, _VSTD::min(__n, __sz - __pos));
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const value_type* __s)
{
    _LIBCPP_ASSERT(__s != nullptr, "string::append received nullptr");
    return append(__s, traits_type::length(__s));
}

// insert

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos, const value_type* __s, size_type __n)
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::insert received nullptr");
    size_type __sz = size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    size_type __cap = capacity();
    if (__cap - __sz >= __n)
    {
        if (__n)
        {
            value_type* __p = _VSTD::__to_address(__get_pointer());
            size_type __n_move = __sz - __pos;
            if (__n_move != 0)
            {
                if (__p + __pos <= __s && __s < __p + __sz)
                    __s += __n;
                traits_type::move(__p + __pos + __n, __p + __pos, __n_move);
            }
            traits_type::move(__p + __pos, __s, __n);
            __sz += __n;
            __set_size(__sz);
            traits_type::assign(__p[__sz], value_type());
        }
    }
    else
        __grow_by_and_replace(__cap, __sz + __n - __cap, __sz, __pos, 0, __n, __s);
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos, size_type __n, value_type __c)
{
    size_type __sz = size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    if (__n)
    {
        size_type __cap = capacity();
        value_type* __p;
        if (__cap - __sz >= __n)
        {
            __p = _VSTD::__to_address(__get_pointer());
            size_type __n_move = __sz - __pos;
            if (__n_move != 0)
                traits_type::move(__p + __pos + __n, __p + __pos, __n_move);
        }
        else
        {
            __grow_by(__cap, __sz + __n - __cap, __sz, __pos, 0, __n);
            __p = _VSTD::__to_address(__get_long_pointer());
        }
        traits_type::assign(__p + __pos, __n, __c);
        __sz += __n;
        __set_size(__sz);
        traits_type::assign(__p[__sz], value_type());
    }
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator>
_EnableIf
<
   __is_exactly_cpp17_input_iterator<_InputIterator>::value,
   typename basic_string<_CharT, _Traits, _Allocator>::iterator
>
basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, _InputIterator __first, _InputIterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2837 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__pos) == this,
        "string::insert(iterator, range) called with an iterator not"
        " referring to this string");
#endif
# 2841 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    const basic_string __temp(__first, __last, __alloc());
    return insert(__pos, __temp.data(), __temp.data() + __temp.size());
}

template <class _CharT, class _Traits, class _Allocator>
template<class _ForwardIterator>
_EnableIf
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::iterator
>
basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, _ForwardIterator __first, _ForwardIterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2855 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__pos) == this,
        "string::insert(iterator, range) called with an iterator not"
        " referring to this string");
#endif
# 2859 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    size_type __ip = static_cast<size_type>(__pos - begin());
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n)
    {
        if (__string_is_trivial_iterator<_ForwardIterator>::value &&
            !__addr_in_range(*__first))
        {
            size_type __sz = size();
            size_type __cap = capacity();
            value_type* __p;
            if (__cap - __sz >= __n)
            {
                __p = _VSTD::__to_address(__get_pointer());
                size_type __n_move = __sz - __ip;
                if (__n_move != 0)
                    traits_type::move(__p + __ip + __n, __p + __ip, __n_move);
            }
            else
            {
                __grow_by(__cap, __sz + __n - __cap, __sz, __ip, 0, __n);
                __p = _VSTD::__to_address(__get_long_pointer());
            }
            __sz += __n;
            __set_size(__sz);
            traits_type::assign(__p[__sz], value_type());
            for (__p += __ip; __first != __last; ++__p, ++__first)
                traits_type::assign(*__p, *__first);
        }
        else
        {
            const basic_string __temp(__first, __last, __alloc());
            return insert(__pos, __temp.data(), __temp.data() + __temp.size());
        }
    }
    return begin() + __ip;
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos1, const basic_string& __str)
{
    return insert(__pos1, __str.data(), __str.size());
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos1, const basic_string& __str,
                                                  size_type __pos2, size_type __n)
{
    size_type __str_sz = __str.size();
    if (__pos2 > __str_sz)
        this->__throw_out_of_range();
    return insert(__pos1, __str.data() + __pos2, _VSTD::min(__n, __str_sz - __pos2));
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value  && !__is_same_uncvref<_Tp, basic_string<_CharT, _Traits, _Allocator> >::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos1, const _Tp& __t,
                                                  size_type __pos2, size_type __n)
{
    __self_view __sv = __t;
    size_type __str_sz = __sv.size();
    if (__pos2 > __str_sz)
        this->__throw_out_of_range();
    return insert(__pos1, __sv.data() + __pos2, _VSTD::min(__n, __str_sz - __pos2));
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::insert(size_type __pos, const value_type* __s)
{
    _LIBCPP_ASSERT(__s != nullptr, "string::insert received nullptr");
    return insert(__pos, __s, traits_type::length(__s));
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, value_type __c)
{
    size_type __ip = static_cast<size_type>(__pos - begin());
    size_type __sz = size();
    size_type __cap = capacity();
    value_type* __p;
    if (__cap == __sz)
    {
        __grow_by(__cap, 1, __sz, __ip, 0, 1);
        __p = _VSTD::__to_address(__get_long_pointer());
    }
    else
    {
        __p = _VSTD::__to_address(__get_pointer());
        size_type __n_move = __sz - __ip;
        if (__n_move != 0)
            traits_type::move(__p + __ip + 1, __p + __ip, __n_move);
    }
    traits_type::assign(__p[__ip], __c);
    traits_type::assign(__p[++__sz], value_type());
    __set_size(__sz);
    return begin() + static_cast<difference_type>(__ip);
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, size_type __n, value_type __c)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2972 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__pos) == this,
        "string::insert(iterator, n, value) called with an iterator not"
        " referring to this string");
#endif
# 2976 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    difference_type __p = __pos - begin();
    insert(static_cast<size_type>(__p), __n, __c);
    return begin() + __p;
}

// replace

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos, size_type __n1, const value_type* __s, size_type __n2)
    _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
{
    _LIBCPP_ASSERT(__n2 == 0 || __s != nullptr, "string::replace received nullptr");
    size_type __sz = size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    __n1 = _VSTD::min(__n1, __sz - __pos);
    size_type __cap = capacity();
    if (__cap - __sz + __n1 >= __n2)
    {
        value_type* __p = _VSTD::__to_address(__get_pointer());
        if (__n1 != __n2)
        {
            size_type __n_move = __sz - __pos - __n1;
            if (__n_move != 0)
            {
                if (__n1 > __n2)
                {
                    traits_type::move(__p + __pos, __s, __n2);
                    traits_type::move(__p + __pos + __n2, __p + __pos + __n1, __n_move);
                    goto __finish;
                }
                if (__p + __pos < __s && __s < __p + __sz)
                {
                    if (__p + __pos + __n1 <= __s)
                        __s += __n2 - __n1;
                    else // __p + __pos < __s < __p + __pos + __n1
                    {
                        traits_type::move(__p + __pos, __s, __n1);
                        __pos += __n1;
                        __s += __n2;
                        __n2 -= __n1;
                        __n1 = 0;
                    }
                }
                traits_type::move(__p + __pos + __n2, __p + __pos + __n1, __n_move);
            }
        }
        traits_type::move(__p + __pos, __s, __n2);
__finish:
// __sz += __n2 - __n1; in this and the below function below can cause unsigned
// integer overflow, but this is a safe operation, so we disable the check.
        __sz += __n2 - __n1;
        __set_size(__sz);
        __invalidate_iterators_past(__sz);
        traits_type::assign(__p[__sz], value_type());
    }
    else
        __grow_by_and_replace(__cap, __sz - __n1 + __n2 - __cap, __sz, __pos, __n1, __n2, __s);
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos, size_type __n1, size_type __n2, value_type __c)
    _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
{
    size_type __sz = size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    __n1 = _VSTD::min(__n1, __sz - __pos);
    size_type __cap = capacity();
    value_type* __p;
    if (__cap - __sz + __n1 >= __n2)
    {
        __p = _VSTD::__to_address(__get_pointer());
        if (__n1 != __n2)
        {
            size_type __n_move = __sz - __pos - __n1;
            if (__n_move != 0)
                traits_type::move(__p + __pos + __n2, __p + __pos + __n1, __n_move);
        }
    }
    else
    {
        __grow_by(__cap, __sz - __n1 + __n2 - __cap, __sz, __pos, __n1, __n2);
        __p = _VSTD::__to_address(__get_long_pointer());
    }
    traits_type::assign(__p + __pos, __n2, __c);
    __sz += __n2 - __n1;
    __set_size(__sz);
    __invalidate_iterators_past(__sz);
    traits_type::assign(__p[__sz], value_type());
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
template<class _InputIterator>
_EnableIf
<
    __is_cpp17_input_iterator<_InputIterator>::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2,
                                                   _InputIterator __j1, _InputIterator __j2)
{
    const basic_string __temp(__j1, __j2, __alloc());
    return this->replace(__i1, __i2, __temp);
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos1, size_type __n1, const basic_string& __str)
{
    return replace(__pos1, __n1, __str.data(), __str.size());
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos1, size_type __n1, const basic_string& __str,
                                                   size_type __pos2, size_type __n2)
{
    size_type __str_sz = __str.size();
    if (__pos2 > __str_sz)
        this->__throw_out_of_range();
    return replace(__pos1, __n1, __str.data() + __pos2, _VSTD::min(__n2, __str_sz - __pos2));
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value && !__is_same_uncvref<_Tp, basic_string<_CharT, _Traits, _Allocator> >::value,
    basic_string<_CharT, _Traits, _Allocator>&
>
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos1, size_type __n1, const _Tp& __t,
                                                   size_type __pos2, size_type __n2)
{
    __self_view __sv = __t;
    size_type __str_sz = __sv.size();
    if (__pos2 > __str_sz)
        this->__throw_out_of_range();
    return replace(__pos1, __n1, __sv.data() + __pos2, _VSTD::min(__n2, __str_sz - __pos2));
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(size_type __pos, size_type __n1, const value_type* __s)
{
    _LIBCPP_ASSERT(__s != nullptr, "string::replace received nullptr");
    return replace(__pos, __n1, __s, traits_type::length(__s));
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const basic_string& __str)
{
    return replace(static_cast<size_type>(__i1 - begin()), static_cast<size_type>(__i2 - __i1),
                   __str.data(), __str.size());
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s, size_type __n)
{
    return replace(static_cast<size_type>(__i1 - begin()), static_cast<size_type>(__i2 - __i1), __s, __n);
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, const value_type* __s)
{
    return replace(static_cast<size_type>(__i1 - begin()), static_cast<size_type>(__i2 - __i1), __s);
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c)
{
    return replace(static_cast<size_type>(__i1 - begin()), static_cast<size_type>(__i2 - __i1), __n, __c);
}

// erase

// 'externally instantiated' erase() implementation, called when __n != npos.
// Does not check __pos against size()
template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__erase_external_with_move(
    size_type __pos, size_type __n)
{
    if (__n)
    {
        size_type __sz = size();
        value_type* __p = _VSTD::__to_address(__get_pointer());
        __n = _VSTD::min(__n, __sz - __pos);
        size_type __n_move = __sz - __pos - __n;
        if (__n_move != 0)
            traits_type::move(__p + __pos, __p + __pos + __n, __n_move);
        __sz -= __n;
        __set_size(__sz);
        __invalidate_iterators_past(__sz);
        traits_type::assign(__p[__sz], value_type());
    }
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::erase(size_type __pos,
                                                 size_type __n) {
  if (__pos > size()) this->__throw_out_of_range();
  if (__n == npos) {
    __erase_to_end(__pos);
  } else {
    __erase_external_with_move(__pos, __n);
  }
  return *this;
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __pos)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__pos) == this,
        "string::erase(iterator) called with an iterator not"
        " referring to this string");
#endif
# 3210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__pos != end(),
        "string::erase(iterator) called with a non-dereferenceable iterator");
    iterator __b = begin();
    size_type __r = static_cast<size_type>(__pos - __b);
    erase(__r, 1);
    return __b + static_cast<difference_type>(__r);
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::iterator
basic_string<_CharT, _Traits, _Allocator>::erase(const_iterator __first, const_iterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this,
        "string::erase(iterator,  iterator) called with an iterator not"
        " referring to this string");
#endif
# 3228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(__first <= __last, "string::erase(first, last) called with invalid range");
    iterator __b = begin();
    size_type __r = static_cast<size_type>(__first - __b);
    erase(__r, static_cast<size_type>(__last - __first));
    return __b + static_cast<difference_type>(__r);
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::pop_back()
{
    _LIBCPP_ASSERT(!empty(), "string::pop_back(): string is already empty");
    size_type __sz;
    if (__is_long())
    {
        __sz = __get_long_size() - 1;
        __set_long_size(__sz);
        traits_type::assign(*(__get_long_pointer() + __sz), value_type());
    }
    else
    {
        __sz = __get_short_size() - 1;
        __set_short_size(__sz);
        traits_type::assign(*(__get_short_pointer() + __sz), value_type());
    }
    __invalidate_iterators_past(__sz);
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::clear() _NOEXCEPT
{
    __invalidate_all_iterators();
    if (__is_long())
    {
        traits_type::assign(*__get_long_pointer(), value_type());
        __set_long_size(0);
    }
    else
    {
        traits_type::assign(*__get_short_pointer(), value_type());
        __set_short_size(0);
    }
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__erase_to_end(size_type __pos)
{
    if (__is_long())
    {
        traits_type::assign(*(__get_long_pointer() + __pos), value_type());
        __set_long_size(__pos);
    }
    else
    {
        traits_type::assign(*(__get_short_pointer() + __pos), value_type());
        __set_short_size(__pos);
    }
    __invalidate_iterators_past(__pos);
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::resize(size_type __n, value_type __c)
{
    size_type __sz = size();
    if (__n > __sz)
        append(__n - __sz, __c);
    else
        __erase_to_end(__n);
}

template <class _CharT, class _Traits, class _Allocator>
inline void
basic_string<_CharT, _Traits, _Allocator>::__resize_default_init(size_type __n)
{
    size_type __sz = size();
    if (__n > __sz) {
       __append_default_init(__n - __sz);
    } else
        __erase_to_end(__n);
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::max_size() const _NOEXCEPT
{
    size_type __m = __alloc_traits::max_size(__alloc());
#ifdef _LIBCPP_BIG_ENDIAN
    return (__m <= ~__long_mask ? __m : __m/2) - __alignment;
#else
# 3324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    return __m - __alignment;
#endif
# 3326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::reserve(size_type __requested_capacity)
{
    if (__requested_capacity > max_size())
        this->__throw_length_error();

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3336 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    // Reserve never shrinks as of C++20.
    if (__requested_capacity <= capacity()) return;
#endif
# 3339 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    size_type __target_capacity = _VSTD::max(__requested_capacity, size());
    __target_capacity = __recommend(__target_capacity);
    if (__target_capacity == capacity()) return;

    __shrink_or_extend(__target_capacity);
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::shrink_to_fit() _NOEXCEPT
{
    size_type __target_capacity = __recommend(size());
    if (__target_capacity == capacity()) return;

    __shrink_or_extend(__target_capacity);
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_string<_CharT, _Traits, _Allocator>::__shrink_or_extend(size_type __target_capacity)
{
    size_type __cap = capacity();
    size_type __sz = size();

    pointer __new_data, __p;
    bool __was_long, __now_long;
    if (__target_capacity == __min_cap - 1)
    {
        __was_long = true;
        __now_long = false;
        __new_data = __get_short_pointer();
        __p = __get_long_pointer();
    }
    else
    {
        if (__target_capacity > __cap)
            __new_data = __alloc_traits::allocate(__alloc(), __target_capacity+1);
        else
        {
        #ifndef _LIBCPP_NO_EXCEPTIONS
            try
            {
        #endif // _LIBCPP_NO_EXCEPTIONS
# 3383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
                __new_data = __alloc_traits::allocate(__alloc(), __target_capacity+1);
        #ifndef _LIBCPP_NO_EXCEPTIONS
            }
            catch (...)
            {
                return;
            }
        #else  // _LIBCPP_NO_EXCEPTIONS
# 3391 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
            if (__new_data == nullptr)
                return;
        #endif // _LIBCPP_NO_EXCEPTIONS
# 3394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        }
        __now_long = true;
        __was_long = __is_long();
        __p = __get_pointer();
    }
    traits_type::copy(_VSTD::__to_address(__new_data),
                        _VSTD::__to_address(__p), size()+1);
    if (__was_long)
        __alloc_traits::deallocate(__alloc(), __p, __cap+1);
    if (__now_long)
    {
        __set_long_cap(__target_capacity+1);
        __set_long_size(__sz);
        __set_long_pointer(__new_data);
    }
    else
        __set_short_size(__sz);
    __invalidate_all_iterators();
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__pos <= size(), "string index out of bounds");
    return *(data() + __pos);
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::operator[](size_type __pos) _NOEXCEPT
{
    _LIBCPP_ASSERT(__pos <= size(), "string index out of bounds");
    return *(__get_pointer() + __pos);
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::at(size_type __n) const
{
    if (__n >= size())
        this->__throw_out_of_range();
    return (*this)[__n];
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::at(size_type __n)
{
    if (__n >= size())
        this->__throw_out_of_range();
    return (*this)[__n];
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::front() _NOEXCEPT
{
    _LIBCPP_ASSERT(!empty(), "string::front(): string is empty");
    return *__get_pointer();
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::front() const _NOEXCEPT
{
    _LIBCPP_ASSERT(!empty(), "string::front(): string is empty");
    return *data();
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::reference
basic_string<_CharT, _Traits, _Allocator>::back() _NOEXCEPT
{
    _LIBCPP_ASSERT(!empty(), "string::back(): string is empty");
    return *(__get_pointer() + size() - 1);
}

template <class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::const_reference
basic_string<_CharT, _Traits, _Allocator>::back() const _NOEXCEPT
{
    _LIBCPP_ASSERT(!empty(), "string::back(): string is empty");
    return *(data() + size() - 1);
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::copy(value_type* __s, size_type __n, size_type __pos) const
{
    size_type __sz = size();
    if (__pos > __sz)
        this->__throw_out_of_range();
    size_type __rlen = _VSTD::min(__n, __sz - __pos);
    traits_type::copy(__s, data() + __pos, __rlen);
    return __rlen;
}

template <class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>
basic_string<_CharT, _Traits, _Allocator>::substr(size_type __pos, size_type __n) const
{
    return basic_string(*this, __pos, __n, __alloc());
}

template <class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::swap(basic_string& __str)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT
#else
# 3513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                    __is_nothrow_swappable<allocator_type>::value)
#endif
# 3516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    if (!__is_long())
        __get_db()->__invalidate_all(this);
    if (!__str.__is_long())
        __get_db()->__invalidate_all(&__str);
    __get_db()->swap(this, &__str);
#endif
# 3524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
    _LIBCPP_ASSERT(
        __alloc_traits::propagate_on_container_swap::value ||
        __alloc_traits::is_always_equal::value ||
        __alloc() == __str.__alloc(), "swapping non-equal allocators");
    _VSTD::swap(__r_.first(), __str.__r_.first());
    _VSTD::__swap_allocator(__alloc(), __str.__alloc());
}

// find

template <class _Traits>
struct _LIBCPP_HIDDEN __traits_eq
{
    typedef typename _Traits::char_type char_type;
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const char_type& __x, const char_type& __y) _NOEXCEPT
        {return _Traits::eq(__x, __y);}
};

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(const value_type* __s,
                                                size_type __pos,
                                                size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::find(): received nullptr");
    return __str_find<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(const basic_string& __str,
                                                size_type __pos) const _NOEXCEPT
{
    return __str_find<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::find(const _Tp &__t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_find<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(const value_type* __s,
                                                size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::find(): received nullptr");
    return __str_find<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find(value_type __c,
                                                size_type __pos) const _NOEXCEPT
{
    return __str_find<value_type, size_type, traits_type, npos>
        (data(), size(), __c, __pos);
}

// rfind

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(const value_type* __s,
                                                 size_type __pos,
                                                 size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::rfind(): received nullptr");
    return __str_rfind<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(const basic_string& __str,
                                                 size_type __pos) const _NOEXCEPT
{
    return __str_rfind<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::rfind(const _Tp& __t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_rfind<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(const value_type* __s,
                                                 size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::rfind(): received nullptr");
    return __str_rfind<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::rfind(value_type __c,
                                                 size_type __pos) const _NOEXCEPT
{
    return __str_rfind<value_type, size_type, traits_type, npos>
        (data(), size(), __c, __pos);
}

// find_first_of

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const value_type* __s,
                                                         size_type __pos,
                                                         size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::find_first_of(): received nullptr");
    return __str_find_first_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const basic_string& __str,
                                                         size_type __pos) const _NOEXCEPT
{
    return __str_find_first_of<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const _Tp& __t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_find_first_of<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(const value_type* __s,
                                                         size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::find_first_of(): received nullptr");
    return __str_find_first_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_of(value_type __c,
                                                         size_type __pos) const _NOEXCEPT
{
    return find(__c, __pos);
}

// find_last_of

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const value_type* __s,
                                                        size_type __pos,
                                                        size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::find_last_of(): received nullptr");
    return __str_find_last_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const basic_string& __str,
                                                        size_type __pos) const _NOEXCEPT
{
    return __str_find_last_of<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const _Tp& __t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_find_last_of<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(const value_type* __s,
                                                        size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::find_last_of(): received nullptr");
    return __str_find_last_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_of(value_type __c,
                                                        size_type __pos) const _NOEXCEPT
{
    return rfind(__c, __pos);
}

// find_first_not_of

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const value_type* __s,
                                                             size_type __pos,
                                                             size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::find_first_not_of(): received nullptr");
    return __str_find_first_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const basic_string& __str,
                                                             size_type __pos) const _NOEXCEPT
{
    return __str_find_first_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const _Tp& __t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_find_first_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(const value_type* __s,
                                                             size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::find_first_not_of(): received nullptr");
    return __str_find_first_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_first_not_of(value_type __c,
                                                             size_type __pos) const _NOEXCEPT
{
    return __str_find_first_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __c, __pos);
}

// find_last_not_of

template<class _CharT, class _Traits, class _Allocator>
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const value_type* __s,
                                                            size_type __pos,
                                                            size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string::find_last_not_of(): received nullptr");
    return __str_find_last_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, __n);
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const basic_string& __str,
                                                            size_type __pos) const _NOEXCEPT
{
    return __str_find_last_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __str.data(), __pos, __str.size());
}

template<class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
>
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const _Tp& __t,
                                                size_type __pos) const _NOEXCEPT
{
    __self_view __sv = __t;
    return __str_find_last_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __sv.data(), __pos, __sv.size());
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(const value_type* __s,
                                                            size_type __pos) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::find_last_not_of(): received nullptr");
    return __str_find_last_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __s, __pos, traits_type::length(__s));
}

template<class _CharT, class _Traits, class _Allocator>
inline
typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::find_last_not_of(value_type __c,
                                                            size_type __pos) const _NOEXCEPT
{
    return __str_find_last_not_of<value_type, size_type, traits_type, npos>
        (data(), size(), __c, __pos);
}

// compare

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    int
>
basic_string<_CharT, _Traits, _Allocator>::compare(const _Tp& __t) const _NOEXCEPT
{
    __self_view __sv = __t;
    size_t __lhs_sz = size();
    size_t __rhs_sz = __sv.size();
    int __result = traits_type::compare(data(), __sv.data(),
                                        _VSTD::min(__lhs_sz, __rhs_sz));
    if (__result != 0)
        return __result;
    if (__lhs_sz < __rhs_sz)
        return -1;
    if (__lhs_sz > __rhs_sz)
        return 1;
    return 0;
}

template <class _CharT, class _Traits, class _Allocator>
inline
int
basic_string<_CharT, _Traits, _Allocator>::compare(const basic_string& __str) const _NOEXCEPT
{
    return compare(__self_view(__str));
}

template <class _CharT, class _Traits, class _Allocator>
int
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const value_type* __s,
                                                   size_type __n2) const
{
    _LIBCPP_ASSERT(__n2 == 0 || __s != nullptr, "string::compare(): received nullptr");
    size_type __sz = size();
    if (__pos1 > __sz || __n2 == npos)
        this->__throw_out_of_range();
    size_type __rlen = _VSTD::min(__n1, __sz - __pos1);
    int __r = traits_type::compare(data() + __pos1, __s, _VSTD::min(__rlen, __n2));
    if (__r == 0)
    {
        if (__rlen < __n2)
            __r = -1;
        else if (__rlen > __n2)
            __r = 1;
    }
    return __r;
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value,
    int
>
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const _Tp& __t) const
{
    __self_view __sv = __t;
    return compare(__pos1, __n1, __sv.data(), __sv.size());
}

template <class _CharT, class _Traits, class _Allocator>
inline
int
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const basic_string& __str) const
{
    return compare(__pos1, __n1, __str.data(), __str.size());
}

template <class _CharT, class _Traits, class _Allocator>
template <class _Tp>
_EnableIf
<
    __can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value
    && !__is_same_uncvref<_Tp, basic_string<_CharT, _Traits, _Allocator> >::value,
    int
>
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const _Tp& __t,
                                                   size_type __pos2,
                                                   size_type __n2) const
{
    __self_view __sv = __t;
    return __self_view(*this).substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2));
}

template <class _CharT, class _Traits, class _Allocator>
int
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const basic_string& __str,
                                                   size_type __pos2,
                                                   size_type __n2) const
{
        return compare(__pos1, __n1, __self_view(__str), __pos2, __n2);
}

template <class _CharT, class _Traits, class _Allocator>
int
basic_string<_CharT, _Traits, _Allocator>::compare(const value_type* __s) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__s != nullptr, "string::compare(): received nullptr");
    return compare(0, npos, __s, traits_type::length(__s));
}

template <class _CharT, class _Traits, class _Allocator>
int
basic_string<_CharT, _Traits, _Allocator>::compare(size_type __pos1,
                                                   size_type __n1,
                                                   const value_type* __s) const
{
    _LIBCPP_ASSERT(__s != nullptr, "string::compare(): received nullptr");
    return compare(__pos1, __n1, __s, traits_type::length(__s));
}

// __invariants

template<class _CharT, class _Traits, class _Allocator>
inline
bool
basic_string<_CharT, _Traits, _Allocator>::__invariants() const
{
    if (size() > capacity())
        return false;
    if (capacity() < __min_cap - 1)
        return false;
    if (data() == nullptr)
        return false;
    if (data()[size()] != value_type())
        return false;
    return true;
}

// __clear_and_shrink

template<class _CharT, class _Traits, class _Allocator>
inline
void
basic_string<_CharT, _Traits, _Allocator>::__clear_and_shrink() _NOEXCEPT
{
    clear();
    if(__is_long())
    {
        __alloc_traits::deallocate(__alloc(), __get_long_pointer(), capacity() + 1);
        __set_long_cap(0);
        __set_short_size(0);
        traits_type::assign(*__get_short_pointer(), value_type());
    }
}

// operator==

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    size_t __lhs_sz = __lhs.size();
    return __lhs_sz == __rhs.size() && _Traits::compare(__lhs.data(),
                                                        __rhs.data(),
                                                        __lhs_sz) == 0;
}

template<class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const basic_string<char, char_traits<char>, _Allocator>& __lhs,
           const basic_string<char, char_traits<char>, _Allocator>& __rhs) _NOEXCEPT
{
    size_t __lhs_sz = __lhs.size();
    if (__lhs_sz != __rhs.size())
        return false;
    const char* __lp = __lhs.data();
    const char* __rp = __rhs.data();
    if (__lhs.__is_long())
        return char_traits<char>::compare(__lp, __rp, __lhs_sz) == 0;
    for (; __lhs_sz != 0; --__lhs_sz, ++__lp, ++__rp)
        if (*__lp != *__rp)
            return false;
    return true;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    typedef basic_string<_CharT, _Traits, _Allocator> _String;
    _LIBCPP_ASSERT(__lhs != nullptr, "operator==(char*, basic_string): received nullptr");
    size_t __lhs_len = _Traits::length(__lhs);
    if (__lhs_len != __rhs.size()) return false;
    return __rhs.compare(0, _String::npos, __lhs, __lhs_len) == 0;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    typedef basic_string<_CharT, _Traits, _Allocator> _String;
    _LIBCPP_ASSERT(__rhs != nullptr, "operator==(basic_string, char*): received nullptr");
    size_t __rhs_len = _Traits::length(__rhs);
    if (__rhs_len != __lhs.size()) return false;
    return __lhs.compare(0, _String::npos, __rhs, __rhs_len) == 0;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__lhs == __rhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__lhs == __rhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    return !(__lhs == __rhs);
}

// operator<

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) < 0;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    return __lhs.compare(__rhs) < 0;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return __rhs.compare(__lhs) > 0;
}

// operator>

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return __rhs < __lhs;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    return __rhs < __lhs;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return __rhs < __lhs;
}

// operator<=

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__rhs < __lhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    return !(__rhs < __lhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__rhs < __lhs);
}

// operator>=

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__lhs < __rhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
           const _CharT* __rhs) _NOEXCEPT
{
    return !(__lhs < __rhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Allocator>& __rhs) _NOEXCEPT
{
    return !(__lhs < __rhs);
}

// operator +

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
          const basic_string<_CharT, _Traits, _Allocator>& __rhs)
{
    basic_string<_CharT, _Traits, _Allocator> __r(__lhs.get_allocator());
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __lhs_sz = __lhs.size();
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __rhs_sz = __rhs.size();
    __r.__init(__lhs.data(), __lhs_sz, __lhs_sz + __rhs_sz);
    __r.append(__rhs.data(), __rhs_sz);
    return __r;
}

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const _CharT* __lhs , const basic_string<_CharT,_Traits,_Allocator>& __rhs)
{
    basic_string<_CharT, _Traits, _Allocator> __r(__rhs.get_allocator());
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __lhs_sz = _Traits::length(__lhs);
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __rhs_sz = __rhs.size();
    __r.__init(__lhs, __lhs_sz, __lhs_sz + __rhs_sz);
    __r.append(__rhs.data(), __rhs_sz);
    return __r;
}

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Allocator>& __rhs)
{
    basic_string<_CharT, _Traits, _Allocator> __r(__rhs.get_allocator());
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __rhs_sz = __rhs.size();
    __r.__init(&__lhs, 1, 1 + __rhs_sz);
    __r.append(__rhs.data(), __rhs_sz);
    return __r;
}

template<class _CharT, class _Traits, class _Allocator>
inline
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs)
{
    basic_string<_CharT, _Traits, _Allocator> __r(__lhs.get_allocator());
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __lhs_sz = __lhs.size();
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __rhs_sz = _Traits::length(__rhs);
    __r.__init(__lhs.data(), __lhs_sz, __lhs_sz + __rhs_sz);
    __r.append(__rhs, __rhs_sz);
    return __r;
}

template<class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __lhs, _CharT __rhs)
{
    basic_string<_CharT, _Traits, _Allocator> __r(__lhs.get_allocator());
    typename basic_string<_CharT, _Traits, _Allocator>::size_type __lhs_sz = __lhs.size();
    __r.__init(__lhs.data(), __lhs_sz, __lhs_sz + 1);
    __r.push_back(__rhs);
    return __r;
}

#ifndef _LIBCPP_CXX03_LANG

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(basic_string<_CharT, _Traits, _Allocator>&& __lhs, const basic_string<_CharT, _Traits, _Allocator>& __rhs)
{
    return _VSTD::move(__lhs.append(__rhs));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(const basic_string<_CharT, _Traits, _Allocator>& __lhs, basic_string<_CharT, _Traits, _Allocator>&& __rhs)
{
    return _VSTD::move(__rhs.insert(0, __lhs));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(basic_string<_CharT, _Traits, _Allocator>&& __lhs, basic_string<_CharT, _Traits, _Allocator>&& __rhs)
{
    return _VSTD::move(__lhs.append(__rhs));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(const _CharT* __lhs , basic_string<_CharT,_Traits,_Allocator>&& __rhs)
{
    return _VSTD::move(__rhs.insert(0, __lhs));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(_CharT __lhs, basic_string<_CharT,_Traits,_Allocator>&& __rhs)
{
    __rhs.insert(__rhs.begin(), __lhs);
    return _VSTD::move(__rhs);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(basic_string<_CharT, _Traits, _Allocator>&& __lhs, const _CharT* __rhs)
{
    return _VSTD::move(__lhs.append(__rhs));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>
operator+(basic_string<_CharT, _Traits, _Allocator>&& __lhs, _CharT __rhs)
{
    __lhs.push_back(__rhs);
    return _VSTD::move(__lhs);
}

#endif // _LIBCPP_CXX03_LANG
# 4379 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

// swap

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(basic_string<_CharT, _Traits, _Allocator>& __lhs,
     basic_string<_CharT, _Traits, _Allocator>& __rhs)
     _NOEXCEPT_(_NOEXCEPT_(__lhs.swap(__rhs)))
{
    __lhs.swap(__rhs);
}

_LIBCPP_FUNC_VIS int                stoi  (const string& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS long               stol  (const string& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS unsigned long      stoul (const string& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS long long          stoll (const string& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS unsigned long long stoull(const string& __str, size_t* __idx = nullptr, int __base = 10);

_LIBCPP_FUNC_VIS float       stof (const string& __str, size_t* __idx = nullptr);
_LIBCPP_FUNC_VIS double      stod (const string& __str, size_t* __idx = nullptr);
_LIBCPP_FUNC_VIS long double stold(const string& __str, size_t* __idx = nullptr);

_LIBCPP_FUNC_VIS string to_string(int __val);
_LIBCPP_FUNC_VIS string to_string(unsigned __val);
_LIBCPP_FUNC_VIS string to_string(long __val);
_LIBCPP_FUNC_VIS string to_string(unsigned long __val);
_LIBCPP_FUNC_VIS string to_string(long long __val);
_LIBCPP_FUNC_VIS string to_string(unsigned long long __val);
_LIBCPP_FUNC_VIS string to_string(float __val);
_LIBCPP_FUNC_VIS string to_string(double __val);
_LIBCPP_FUNC_VIS string to_string(long double __val);

_LIBCPP_FUNC_VIS int                stoi  (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS long               stol  (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS unsigned long      stoul (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS long long          stoll (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
_LIBCPP_FUNC_VIS unsigned long long stoull(const wstring& __str, size_t* __idx = nullptr, int __base = 10);

_LIBCPP_FUNC_VIS float       stof (const wstring& __str, size_t* __idx = nullptr);
_LIBCPP_FUNC_VIS double      stod (const wstring& __str, size_t* __idx = nullptr);
_LIBCPP_FUNC_VIS long double stold(const wstring& __str, size_t* __idx = nullptr);

_LIBCPP_FUNC_VIS wstring to_wstring(int __val);
_LIBCPP_FUNC_VIS wstring to_wstring(unsigned __val);
_LIBCPP_FUNC_VIS wstring to_wstring(long __val);
_LIBCPP_FUNC_VIS wstring to_wstring(unsigned long __val);
_LIBCPP_FUNC_VIS wstring to_wstring(long long __val);
_LIBCPP_FUNC_VIS wstring to_wstring(unsigned long long __val);
_LIBCPP_FUNC_VIS wstring to_wstring(float __val);
_LIBCPP_FUNC_VIS wstring to_wstring(double __val);
_LIBCPP_FUNC_VIS wstring to_wstring(long double __val);

template<class _CharT, class _Traits, class _Allocator>
_LIBCPP_TEMPLATE_DATA_VIS
const typename basic_string<_CharT, _Traits, _Allocator>::size_type
               basic_string<_CharT, _Traits, _Allocator>::npos;

template <class _CharT, class _Allocator>
struct _LIBCPP_TEMPLATE_VIS
    hash<basic_string<_CharT, char_traits<_CharT>, _Allocator> >
    : public unary_function<
          basic_string<_CharT, char_traits<_CharT>, _Allocator>, size_t>
{
    size_t
    operator()(const basic_string<_CharT, char_traits<_CharT>, _Allocator>& __val) const _NOEXCEPT
    { return __do_string_hash(__val.data(), __val.data() + __val.size()); }
};


template<class _CharT, class _Traits, class _Allocator>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os,
           const basic_string<_CharT, _Traits, _Allocator>& __str);

template<class _CharT, class _Traits, class _Allocator>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is,
           basic_string<_CharT, _Traits, _Allocator>& __str);

template<class _CharT, class _Traits, class _Allocator>
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm);

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str);

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>&& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm);

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>&& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str);

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4483 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
template <class _CharT, class _Traits, class _Allocator, class _Up>
inline _LIBCPP_INLINE_VISIBILITY
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
    erase(basic_string<_CharT, _Traits, _Allocator>& __str, const _Up& __v) {
  auto __old_size = __str.size();
  __str.erase(_VSTD::remove(__str.begin(), __str.end(), __v), __str.end());
  return __old_size - __str.size();
}

template <class _CharT, class _Traits, class _Allocator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY
    typename basic_string<_CharT, _Traits, _Allocator>::size_type
    erase_if(basic_string<_CharT, _Traits, _Allocator>& __str,
             _Predicate __pred) {
  auto __old_size = __str.size();
  __str.erase(_VSTD::remove_if(__str.begin(), __str.end(), __pred),
              __str.end());
  return __old_size - __str.size();
}
#endif
# 4503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

template<class _CharT, class _Traits, class _Allocator>
bool
basic_string<_CharT, _Traits, _Allocator>::__dereferenceable(const const_iterator* __i) const
{
    return this->data() <= _VSTD::__to_address(__i->base()) &&
           _VSTD::__to_address(__i->base()) < this->data() + this->size();
}

template<class _CharT, class _Traits, class _Allocator>
bool
basic_string<_CharT, _Traits, _Allocator>::__decrementable(const const_iterator* __i) const
{
    return this->data() < _VSTD::__to_address(__i->base()) &&
           _VSTD::__to_address(__i->base()) <= this->data() + this->size();
}

template<class _CharT, class _Traits, class _Allocator>
bool
basic_string<_CharT, _Traits, _Allocator>::__addable(const const_iterator* __i, ptrdiff_t __n) const
{
    const value_type* __p = _VSTD::__to_address(__i->base()) + __n;
    return this->data() <= __p && __p <= this->data() + this->size();
}

template<class _CharT, class _Traits, class _Allocator>
bool
basic_string<_CharT, _Traits, _Allocator>::__subscriptable(const const_iterator* __i, ptrdiff_t __n) const
{
    const value_type* __p = _VSTD::__to_address(__i->base()) + __n;
    return this->data() <= __p && __p < this->data() + this->size();
}

#endif // _LIBCPP_DEBUG_LEVEL == 2
# 4539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 4541 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
// Literal suffixes for basic_string [basic.string.literals]
inline namespace literals
{
  inline namespace string_literals
  {
    inline _LIBCPP_INLINE_VISIBILITY
    basic_string<char> operator "" s( const char *__str, size_t __len )
    {
        return basic_string<char> (__str, __len);
    }

    inline _LIBCPP_INLINE_VISIBILITY
    basic_string<wchar_t> operator "" s( const wchar_t *__str, size_t __len )
    {
        return basic_string<wchar_t> (__str, __len);
    }

#ifndef _LIBCPP_HAS_NO_CHAR8_T
    inline _LIBCPP_INLINE_VISIBILITY
    basic_string<char8_t> operator "" s(const char8_t *__str, size_t __len) _NOEXCEPT
    {
        return basic_string<char8_t> (__str, __len);
    }
#endif
# 4565 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

    inline _LIBCPP_INLINE_VISIBILITY
    basic_string<char16_t> operator "" s( const char16_t *__str, size_t __len )
    {
        return basic_string<char16_t> (__str, __len);
    }

    inline _LIBCPP_INLINE_VISIBILITY
    basic_string<char32_t> operator "" s( const char32_t *__str, size_t __len )
    {
        return basic_string<char32_t> (__str, __len);
    }
  }
}
#endif
# 4580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_STRING
# 4586 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/string" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <mutex>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 1 3
// -*- C++ -*-
//===--------------------------- mutex ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_MUTEX
#define _LIBCPP_MUTEX

/*
    mutex synopsis

namespace std
{

class mutex
{
public:
     constexpr mutex() noexcept;
     ~mutex();

    mutex(const mutex&) = delete;
    mutex& operator=(const mutex&) = delete;

    void lock();
    bool try_lock();
    void unlock();

    typedef pthread_mutex_t* native_handle_type;
    native_handle_type native_handle();
};

class recursive_mutex
{
public:
     recursive_mutex();
     ~recursive_mutex();

    recursive_mutex(const recursive_mutex&) = delete;
    recursive_mutex& operator=(const recursive_mutex&) = delete;

    void lock();
    bool try_lock() noexcept;
    void unlock();

    typedef pthread_mutex_t* native_handle_type;
    native_handle_type native_handle();
};

class timed_mutex
{
public:
     timed_mutex();
     ~timed_mutex();

    timed_mutex(const timed_mutex&) = delete;
    timed_mutex& operator=(const timed_mutex&) = delete;

    void lock();
    bool try_lock();
    template <class Rep, class Period>
        bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
    template <class Clock, class Duration>
        bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
    void unlock();
};

class recursive_timed_mutex
{
public:
     recursive_timed_mutex();
     ~recursive_timed_mutex();

    recursive_timed_mutex(const recursive_timed_mutex&) = delete;
    recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete;

    void lock();
    bool try_lock() noexcept;
    template <class Rep, class Period>
        bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
    template <class Clock, class Duration>
        bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
    void unlock();
};

struct defer_lock_t { explicit defer_lock_t() = default; };
struct try_to_lock_t { explicit try_to_lock_t() = default; };
struct adopt_lock_t { explicit adopt_lock_t() = default; };

inline constexpr defer_lock_t  defer_lock{};
inline constexpr try_to_lock_t try_to_lock{};
inline constexpr adopt_lock_t  adopt_lock{};

template <class Mutex>
class lock_guard
{
public:
    typedef Mutex mutex_type;

    explicit lock_guard(mutex_type& m);
    lock_guard(mutex_type& m, adopt_lock_t);
    ~lock_guard();

    lock_guard(lock_guard const&) = delete;
    lock_guard& operator=(lock_guard const&) = delete;
};

template <class... MutexTypes>
class scoped_lock // C++17
{
public:
    using mutex_type = Mutex;  // If MutexTypes... consists of the single type Mutex

    explicit scoped_lock(MutexTypes&... m);
    scoped_lock(adopt_lock_t, MutexTypes&... m);
    ~scoped_lock();
    scoped_lock(scoped_lock const&) = delete;
    scoped_lock& operator=(scoped_lock const&) = delete;
private:
    tuple<MutexTypes&...> pm; // exposition only
};

template <class Mutex>
class unique_lock
{
public:
    typedef Mutex mutex_type;
    unique_lock() noexcept;
    explicit unique_lock(mutex_type& m);
    unique_lock(mutex_type& m, defer_lock_t) noexcept;
    unique_lock(mutex_type& m, try_to_lock_t);
    unique_lock(mutex_type& m, adopt_lock_t);
    template <class Clock, class Duration>
        unique_lock(mutex_type& m, const chrono::time_point<Clock, Duration>& abs_time);
    template <class Rep, class Period>
        unique_lock(mutex_type& m, const chrono::duration<Rep, Period>& rel_time);
    ~unique_lock();

    unique_lock(unique_lock const&) = delete;
    unique_lock& operator=(unique_lock const&) = delete;

    unique_lock(unique_lock&& u) noexcept;
    unique_lock& operator=(unique_lock&& u) noexcept;

    void lock();
    bool try_lock();

    template <class Rep, class Period>
        bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
    template <class Clock, class Duration>
        bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);

    void unlock();

    void swap(unique_lock& u) noexcept;
    mutex_type* release() noexcept;

    bool owns_lock() const noexcept;
    explicit operator bool () const noexcept;
    mutex_type* mutex() const noexcept;
};

template <class Mutex>
  void swap(unique_lock<Mutex>& x, unique_lock<Mutex>& y) noexcept;

template <class L1, class L2, class... L3>
  int try_lock(L1&, L2&, L3&...);
template <class L1, class L2, class... L3>
  void lock(L1&, L2&, L3&...);

struct once_flag
{
    constexpr once_flag() noexcept;

    once_flag(const once_flag&) = delete;
    once_flag& operator=(const once_flag&) = delete;
};

template<class Callable, class ...Args>
  void call_once(once_flag& flag, Callable&& func, Args&&... args);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <__mutex_base>
#endif /* expanded by -frewrite-includes */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___MUTEX_BASE
#define _LIBCPP___MUTEX_BASE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <__threading_support>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <chrono>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
#if 0 /* expanded by -frewrite-includes */
#include <system_error>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 1 3
// -*- C++ -*-
//===---------------------------- system_error ----------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_SYSTEM_ERROR
#define _LIBCPP_SYSTEM_ERROR

/*
    system_error synopsis

namespace std
{

class error_category
{
public:
    virtual ~error_category() noexcept;

    constexpr error_category();
    error_category(const error_category&) = delete;
    error_category& operator=(const error_category&) = delete;

    virtual const char* name() const noexcept = 0;
    virtual error_condition default_error_condition(int ev) const noexcept;
    virtual bool equivalent(int code, const error_condition& condition) const noexcept;
    virtual bool equivalent(const error_code& code, int condition) const noexcept;
    virtual string message(int ev) const = 0;

    bool operator==(const error_category& rhs) const noexcept;
    bool operator!=(const error_category& rhs) const noexcept;
    bool operator<(const error_category& rhs) const noexcept;
};

const error_category& generic_category() noexcept;
const error_category& system_category() noexcept;

template <class T> struct is_error_code_enum
    : public false_type {};

template <class T> struct is_error_condition_enum
    : public false_type {};

template <class _Tp>
inline constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; // C++17

template <class _Tp>
inline constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value; // C++17

class error_code
{
public:
    // constructors:
    error_code() noexcept;
    error_code(int val, const error_category& cat) noexcept;
    template <class ErrorCodeEnum>
        error_code(ErrorCodeEnum e) noexcept;

    // modifiers:
    void assign(int val, const error_category& cat) noexcept;
    template <class ErrorCodeEnum>
        error_code& operator=(ErrorCodeEnum e) noexcept;
    void clear() noexcept;

    // observers:
    int value() const noexcept;
    const error_category& category() const noexcept;
    error_condition default_error_condition() const noexcept;
    string message() const;
    explicit operator bool() const noexcept;
};

// non-member functions:
bool operator<(const error_code& lhs, const error_code& rhs) noexcept;
template <class charT, class traits>
    basic_ostream<charT,traits>&
    operator<<(basic_ostream<charT,traits>& os, const error_code& ec);

class error_condition
{
public:
    // constructors:
    error_condition() noexcept;
    error_condition(int val, const error_category& cat) noexcept;
    template <class ErrorConditionEnum>
        error_condition(ErrorConditionEnum e) noexcept;

    // modifiers:
    void assign(int val, const error_category& cat) noexcept;
    template <class ErrorConditionEnum>
        error_condition& operator=(ErrorConditionEnum e) noexcept;
    void clear() noexcept;

    // observers:
    int value() const noexcept;
    const error_category& category() const noexcept;
    string message() const noexcept;
    explicit operator bool() const noexcept;
};

bool operator<(const error_condition& lhs, const error_condition& rhs) noexcept;

class system_error
    : public runtime_error
{
public:
    system_error(error_code ec, const string& what_arg);
    system_error(error_code ec, const char* what_arg);
    system_error(error_code ec);
    system_error(int ev, const error_category& ecat, const string& what_arg);
    system_error(int ev, const error_category& ecat, const char* what_arg);
    system_error(int ev, const error_category& ecat);

    const error_code& code() const noexcept;
    const char* what() const noexcept;
};

template <> struct is_error_condition_enum<errc>
    : true_type { }

error_code make_error_code(errc e) noexcept;
error_condition make_error_condition(errc e) noexcept;

// Comparison operators:
bool operator==(const error_code& lhs, const error_code& rhs) noexcept;
bool operator==(const error_code& lhs, const error_condition& rhs) noexcept;
bool operator==(const error_condition& lhs, const error_code& rhs) noexcept;
bool operator==(const error_condition& lhs, const error_condition& rhs) noexcept;
bool operator!=(const error_code& lhs, const error_code& rhs) noexcept;
bool operator!=(const error_code& lhs, const error_condition& rhs) noexcept;
bool operator!=(const error_condition& lhs, const error_code& rhs) noexcept;
bool operator!=(const error_condition& lhs, const error_condition& rhs) noexcept;

template <> struct hash<std::error_code>;
template <> struct hash<std::error_condition>;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <__errc>
#endif /* expanded by -frewrite-includes */
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 1 3
// -*- C++ -*-
//===---------------------------- __errc ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ERRC
#define _LIBCPP___ERRC

/*
    system_error synopsis

namespace std
{

enum class errc
{
    address_family_not_supported,       // EAFNOSUPPORT
    address_in_use,                     // EADDRINUSE
    address_not_available,              // EADDRNOTAVAIL
    already_connected,                  // EISCONN
    argument_list_too_long,             // E2BIG
    argument_out_of_domain,             // EDOM
    bad_address,                        // EFAULT
    bad_file_descriptor,                // EBADF
    bad_message,                        // EBADMSG
    broken_pipe,                        // EPIPE
    connection_aborted,                 // ECONNABORTED
    connection_already_in_progress,     // EALREADY
    connection_refused,                 // ECONNREFUSED
    connection_reset,                   // ECONNRESET
    cross_device_link,                  // EXDEV
    destination_address_required,       // EDESTADDRREQ
    device_or_resource_busy,            // EBUSY
    directory_not_empty,                // ENOTEMPTY
    executable_format_error,            // ENOEXEC
    file_exists,                        // EEXIST
    file_too_large,                     // EFBIG
    filename_too_long,                  // ENAMETOOLONG
    function_not_supported,             // ENOSYS
    host_unreachable,                   // EHOSTUNREACH
    identifier_removed,                 // EIDRM
    illegal_byte_sequence,              // EILSEQ
    inappropriate_io_control_operation, // ENOTTY
    integrity_check_failed,             // EINTEGRITY
    interrupted,                        // EINTR
    invalid_argument,                   // EINVAL
    invalid_seek,                       // ESPIPE
    io_error,                           // EIO
    is_a_directory,                     // EISDIR
    message_size,                       // EMSGSIZE
    network_down,                       // ENETDOWN
    network_reset,                      // ENETRESET
    network_unreachable,                // ENETUNREACH
    no_buffer_space,                    // ENOBUFS
    no_child_process,                   // ECHILD
    no_link,                            // ENOLINK
    no_lock_available,                  // ENOLCK
    no_message_available,               // ENODATA
    no_message,                         // ENOMSG
    no_protocol_option,                 // ENOPROTOOPT
    no_space_on_device,                 // ENOSPC
    no_stream_resources,                // ENOSR
    no_such_device_or_address,          // ENXIO
    no_such_device,                     // ENODEV
    no_such_file_or_directory,          // ENOENT
    no_such_process,                    // ESRCH
    not_a_directory,                    // ENOTDIR
    not_a_socket,                       // ENOTSOCK
    not_a_stream,                       // ENOSTR
    not_connected,                      // ENOTCONN
    not_enough_memory,                  // ENOMEM
    not_supported,                      // ENOTSUP
    operation_canceled,                 // ECANCELED
    operation_in_progress,              // EINPROGRESS
    operation_not_permitted,            // EPERM
    operation_not_supported,            // EOPNOTSUPP
    operation_would_block,              // EWOULDBLOCK
    owner_dead,                         // EOWNERDEAD
    permission_denied,                  // EACCES
    protocol_error,                     // EPROTO
    protocol_not_supported,             // EPROTONOSUPPORT
    read_only_file_system,              // EROFS
    resource_deadlock_would_occur,      // EDEADLK
    resource_unavailable_try_again,     // EAGAIN
    result_out_of_range,                // ERANGE
    state_not_recoverable,              // ENOTRECOVERABLE
    stream_timeout,                     // ETIME
    text_file_busy,                     // ETXTBSY
    timed_out,                          // ETIMEDOUT
    too_many_files_open_in_system,      // ENFILE
    too_many_files_open,                // EMFILE
    too_many_links,                     // EMLINK
    too_many_symbolic_link_levels,      // ELOOP
    value_too_large,                    // EOVERFLOW
    wrong_protocol_type                 // EPROTOTYPE
};

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
#if 0 /* expanded by -frewrite-includes */
#include <cerrno>
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 1 3
// -*- C++ -*-
//===-------------------------- cerrno ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CERRNO
#define _LIBCPP_CERRNO

/*
    cerrno synopsis

Macros:

    EDOM
    EILSEQ  // C99
    ERANGE
    errno

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
#if 0 /* expanded by -frewrite-includes */
#include <errno.h>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3

#endif // _LIBCPP_CERRNO
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cerrno" 3
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
#endif
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3

_LIBCPP_BEGIN_NAMESPACE_STD

// Some error codes are not present on all platforms, so we provide equivalents
// for them:

//enum class errc
_LIBCPP_DECLARE_STRONG_ENUM(errc)
{
    address_family_not_supported        = EAFNOSUPPORT,
    address_in_use                      = EADDRINUSE,
    address_not_available               = EADDRNOTAVAIL,
    already_connected                   = EISCONN,
    argument_list_too_long              = E2BIG,
    argument_out_of_domain              = EDOM,
    bad_address                         = EFAULT,
    bad_file_descriptor                 = EBADF,
    bad_message                         = EBADMSG,
    broken_pipe                         = EPIPE,
    connection_aborted                  = ECONNABORTED,
    connection_already_in_progress      = EALREADY,
    connection_refused                  = ECONNREFUSED,
    connection_reset                    = ECONNRESET,
    cross_device_link                   = EXDEV,
    destination_address_required        = EDESTADDRREQ,
    device_or_resource_busy             = EBUSY,
    directory_not_empty                 = ENOTEMPTY,
    executable_format_error             = ENOEXEC,
    file_exists                         = EEXIST,
    file_too_large                      = EFBIG,
    filename_too_long                   = ENAMETOOLONG,
    function_not_supported              = ENOSYS,
    host_unreachable                    = EHOSTUNREACH,
    identifier_removed                  = EIDRM,
    illegal_byte_sequence               = EILSEQ,
    inappropriate_io_control_operation  = ENOTTY,
    integrity_check_failed              = EINTEGRITY,
    interrupted                         = EINTR,
    invalid_argument                    = EINVAL,
    invalid_seek                        = ESPIPE,
    io_error                            = EIO,
    is_a_directory                      = EISDIR,
    message_size                        = EMSGSIZE,
    network_down                        = ENETDOWN,
    network_reset                       = ENETRESET,
    network_unreachable                 = ENETUNREACH,
    no_buffer_space                     = ENOBUFS,
    no_child_process                    = ECHILD,
    no_link                             = ENOLINK,
    no_lock_available                   = ENOLCK,
#ifdef ENODATA
    no_message_available                = ENODATA,
#else
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    no_message_available                = ENOMSG,
#endif
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    no_message                          = ENOMSG,
    no_protocol_option                  = ENOPROTOOPT,
    no_space_on_device                  = ENOSPC,
#ifdef ENOSR
    no_stream_resources                 = ENOSR,
#else
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    no_stream_resources                 = ENOMEM,
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    no_such_device_or_address           = ENXIO,
    no_such_device                      = ENODEV,
    no_such_file_or_directory           = ENOENT,
    no_such_process                     = ESRCH,
    not_a_directory                     = ENOTDIR,
    not_a_socket                        = ENOTSOCK,
#ifdef ENOSTR
    not_a_stream                        = ENOSTR,
#else
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    not_a_stream                        = EINVAL,
#endif
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    not_connected                       = ENOTCONN,
    not_enough_memory                   = ENOMEM,
    not_supported                       = ENOTSUP,
    operation_canceled                  = ECANCELED,
    operation_in_progress               = EINPROGRESS,
    operation_not_permitted             = EPERM,
    operation_not_supported             = EOPNOTSUPP,
    operation_would_block               = EWOULDBLOCK,
    owner_dead                          = EOWNERDEAD,
    permission_denied                   = EACCES,
    protocol_error                      = EPROTO,
    protocol_not_supported              = EPROTONOSUPPORT,
    read_only_file_system               = EROFS,
    resource_deadlock_would_occur       = EDEADLK,
    resource_unavailable_try_again      = EAGAIN,
    result_out_of_range                 = ERANGE,
    state_not_recoverable               = ENOTRECOVERABLE,
#ifdef ETIME
    stream_timeout                      = ETIME,
#else
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    stream_timeout                      = ETIMEDOUT,
#endif
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
    text_file_busy                      = ETXTBSY,
    timed_out                           = ETIMEDOUT,
    too_many_files_open_in_system       = ENFILE,
    too_many_files_open                 = EMFILE,
    too_many_links                      = EMLINK,
    too_many_symbolic_link_levels       = ELOOP,
    value_too_large                     = EOVERFLOW,
    wrong_protocol_type                 = EPROTOTYPE
};
_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc)

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___ERRC
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__errc" 3
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/unary_function.h>
#endif /* expanded by -frewrite-includes */
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 148 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
#endif
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3

_LIBCPP_BEGIN_NAMESPACE_STD

// is_error_code_enum

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_error_code_enum
    : public false_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value;
#endif
# 170 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3

// is_error_condition_enum

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_error_condition_enum
    : public false_type {};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
template <class _Tp>
_LIBCPP_INLINE_VAR constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value;
#endif
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3

template <>
struct _LIBCPP_TEMPLATE_VIS is_error_condition_enum<errc>
    : true_type { };

#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
template <>
struct _LIBCPP_TEMPLATE_VIS is_error_condition_enum<errc::__lx>
    : true_type { };
#endif
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3

class _LIBCPP_TYPE_VIS error_condition;
class _LIBCPP_TYPE_VIS error_code;

// class error_category

class _LIBCPP_HIDDEN __do_message;

class _LIBCPP_TYPE_VIS error_category
{
public:
    virtual ~error_category() _NOEXCEPT;

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_BUILDING_LIBRARY) && \
    defined(_LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
    error_category() _NOEXCEPT;
#else
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX11 error_category() _NOEXCEPT _LIBCPP_DEFAULT
#endif
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
private:
    error_category(const error_category&);// = delete;
    error_category& operator=(const error_category&);// = delete;

public:
    virtual const char* name() const _NOEXCEPT = 0;
    virtual error_condition default_error_condition(int __ev) const _NOEXCEPT;
    virtual bool equivalent(int __code, const error_condition& __condition) const _NOEXCEPT;
    virtual bool equivalent(const error_code& __code, int __condition) const _NOEXCEPT;
    virtual string message(int __ev) const = 0;

    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const error_category& __rhs) const _NOEXCEPT {return this == &__rhs;}

    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const error_category& __rhs) const _NOEXCEPT {return !(*this == __rhs);}

    _LIBCPP_INLINE_VISIBILITY
    bool operator< (const error_category& __rhs) const _NOEXCEPT {return this < &__rhs;}

    friend class _LIBCPP_HIDDEN __do_message;
};

class _LIBCPP_HIDDEN __do_message
    : public error_category
{
public:
    virtual string message(int ev) const;
};

_LIBCPP_FUNC_VIS const error_category& generic_category() _NOEXCEPT;
_LIBCPP_FUNC_VIS const error_category& system_category() _NOEXCEPT;

class _LIBCPP_TYPE_VIS error_condition
{
    int __val_;
    const error_category* __cat_;
public:
    _LIBCPP_INLINE_VISIBILITY
    error_condition() _NOEXCEPT : __val_(0), __cat_(&generic_category()) {}

    _LIBCPP_INLINE_VISIBILITY
    error_condition(int __val, const error_category& __cat) _NOEXCEPT
        : __val_(__val), __cat_(&__cat) {}

    template <class _Ep>
        _LIBCPP_INLINE_VISIBILITY
        error_condition(_Ep __e,
              typename enable_if<is_error_condition_enum<_Ep>::value>::type* = nullptr
                                                                     ) _NOEXCEPT
            {*this = make_error_condition(__e);}

    _LIBCPP_INLINE_VISIBILITY
    void assign(int __val, const error_category& __cat) _NOEXCEPT
    {
        __val_ = __val;
        __cat_ = &__cat;
    }

    template <class _Ep>
        _LIBCPP_INLINE_VISIBILITY
        typename enable_if
        <
            is_error_condition_enum<_Ep>::value,
            error_condition&
        >::type
        operator=(_Ep __e) _NOEXCEPT
            {*this = make_error_condition(__e); return *this;}

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT
    {
        __val_ = 0;
        __cat_ = &generic_category();
    }

    _LIBCPP_INLINE_VISIBILITY
    int value() const _NOEXCEPT {return __val_;}

    _LIBCPP_INLINE_VISIBILITY
    const error_category& category() const _NOEXCEPT {return *__cat_;}
    string message() const;

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT {return __val_ != 0;}
};

inline _LIBCPP_INLINE_VISIBILITY
error_condition
make_error_condition(errc __e) _NOEXCEPT
{
    return error_condition(static_cast<int>(__e), generic_category());
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(const error_condition& __x, const error_condition& __y) _NOEXCEPT
{
    return __x.category() < __y.category()
        || (__x.category() == __y.category() && __x.value() < __y.value());
}

// error_code

class _LIBCPP_TYPE_VIS error_code
{
    int __val_;
    const error_category* __cat_;
public:
    _LIBCPP_INLINE_VISIBILITY
    error_code() _NOEXCEPT : __val_(0), __cat_(&system_category()) {}

    _LIBCPP_INLINE_VISIBILITY
    error_code(int __val, const error_category& __cat) _NOEXCEPT
        : __val_(__val), __cat_(&__cat) {}

    template <class _Ep>
        _LIBCPP_INLINE_VISIBILITY
        error_code(_Ep __e,
                   typename enable_if<is_error_code_enum<_Ep>::value>::type* = nullptr
                                                                     ) _NOEXCEPT
            {*this = make_error_code(__e);}

    _LIBCPP_INLINE_VISIBILITY
    void assign(int __val, const error_category& __cat) _NOEXCEPT
    {
        __val_ = __val;
        __cat_ = &__cat;
    }

    template <class _Ep>
        _LIBCPP_INLINE_VISIBILITY
        typename enable_if
        <
            is_error_code_enum<_Ep>::value,
            error_code&
        >::type
        operator=(_Ep __e) _NOEXCEPT
            {*this = make_error_code(__e); return *this;}

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT
    {
        __val_ = 0;
        __cat_ = &system_category();
    }

    _LIBCPP_INLINE_VISIBILITY
    int value() const _NOEXCEPT {return __val_;}

    _LIBCPP_INLINE_VISIBILITY
    const error_category& category() const _NOEXCEPT {return *__cat_;}

    _LIBCPP_INLINE_VISIBILITY
    error_condition default_error_condition() const _NOEXCEPT
        {return __cat_->default_error_condition(__val_);}

    string message() const;

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT {return __val_ != 0;}
};

inline _LIBCPP_INLINE_VISIBILITY
error_code
make_error_code(errc __e) _NOEXCEPT
{
    return error_code(static_cast<int>(__e), generic_category());
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator<(const error_code& __x, const error_code& __y) _NOEXCEPT
{
    return __x.category() < __y.category()
        || (__x.category() == __y.category() && __x.value() < __y.value());
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const error_code& __x, const error_code& __y) _NOEXCEPT
{
    return __x.category() == __y.category() && __x.value() == __y.value();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const error_code& __x, const error_condition& __y) _NOEXCEPT
{
    return __x.category().equivalent(__x.value(), __y)
        || __y.category().equivalent(__x, __y.value());
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const error_condition& __x, const error_code& __y) _NOEXCEPT
{
    return __y == __x;
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const error_condition& __x, const error_condition& __y) _NOEXCEPT
{
    return __x.category() == __y.category() && __x.value() == __y.value();
}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const error_code& __x, const error_code& __y) _NOEXCEPT
{return !(__x == __y);}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const error_code& __x, const error_condition& __y) _NOEXCEPT
{return !(__x == __y);}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const error_condition& __x, const error_code& __y) _NOEXCEPT
{return !(__x == __y);}

inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const error_condition& __x, const error_condition& __y) _NOEXCEPT
{return !(__x == __y);}

template <>
struct _LIBCPP_TEMPLATE_VIS hash<error_code>
    : public unary_function<error_code, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const error_code& __ec) const _NOEXCEPT
    {
        return static_cast<size_t>(__ec.value());
    }
};

template <>
struct _LIBCPP_TEMPLATE_VIS hash<error_condition>
    : public unary_function<error_condition, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const error_condition& __ec) const _NOEXCEPT
    {
        return static_cast<size_t>(__ec.value());
    }
};

// system_error

class _LIBCPP_TYPE_VIS system_error
    : public runtime_error
{
    error_code __ec_;
public:
    system_error(error_code __ec, const string& __what_arg);
    system_error(error_code __ec, const char* __what_arg);
    system_error(error_code __ec);
    system_error(int __ev, const error_category& __ecat, const string& __what_arg);
    system_error(int __ev, const error_category& __ecat, const char* __what_arg);
    system_error(int __ev, const error_category& __ecat);
    system_error(const system_error&) _NOEXCEPT = default;
    ~system_error() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    const error_code& code() const _NOEXCEPT {return __ec_;}

private:
    static string __init(const error_code&, string);
};

_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
void __throw_system_error(int ev, const char* what_arg);

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_SYSTEM_ERROR
# 489 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/system_error" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <time.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_HAS_NO_THREADS

class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("mutex")) mutex
{
    __libcpp_mutex_t __m_ = _LIBCPP_MUTEX_INITIALIZER;

public:
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR mutex() = default;

    mutex(const mutex&) = delete;
    mutex& operator=(const mutex&) = delete;

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    ~mutex() = default;
#else
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    ~mutex() _NOEXCEPT;
#endif
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

    void lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability());
    bool try_lock() _NOEXCEPT _LIBCPP_THREAD_SAFETY_ANNOTATION(try_acquire_capability(true));
    void unlock() _NOEXCEPT _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability());

    typedef __libcpp_mutex_t* native_handle_type;
    _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__m_;}
};

static_assert(is_nothrow_default_constructible<mutex>::value,
              "the default constructor for std::mutex must be nothrow");

struct _LIBCPP_TYPE_VIS defer_lock_t { explicit defer_lock_t() = default; };
struct _LIBCPP_TYPE_VIS try_to_lock_t { explicit try_to_lock_t() = default; };
struct _LIBCPP_TYPE_VIS adopt_lock_t { explicit adopt_lock_t() = default; };

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

extern _LIBCPP_EXPORTED_FROM_ABI const defer_lock_t  defer_lock;
extern _LIBCPP_EXPORTED_FROM_ABI const try_to_lock_t try_to_lock;
extern _LIBCPP_EXPORTED_FROM_ABI const adopt_lock_t  adopt_lock;

#else
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

/* _LIBCPP_INLINE_VAR */ constexpr defer_lock_t  defer_lock  = defer_lock_t();
/* _LIBCPP_INLINE_VAR */ constexpr try_to_lock_t try_to_lock = try_to_lock_t();
/* _LIBCPP_INLINE_VAR */ constexpr adopt_lock_t  adopt_lock  = adopt_lock_t();

#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

template <class _Mutex>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable)
lock_guard
{
public:
    typedef _Mutex mutex_type;

private:
    mutex_type& __m_;
public:

    _LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY
    explicit lock_guard(mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability(__m))
        : __m_(__m) {__m_.lock();}

    _LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY
    lock_guard(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
        : __m_(__m) {}
    _LIBCPP_INLINE_VISIBILITY
    ~lock_guard() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();}

private:
    lock_guard(lock_guard const&) _LIBCPP_EQUAL_DELETE;
    lock_guard& operator=(lock_guard const&) _LIBCPP_EQUAL_DELETE;
};

template <class _Mutex>
class _LIBCPP_TEMPLATE_VIS unique_lock
{
public:
    typedef _Mutex mutex_type;

private:
    mutex_type* __m_;
    bool __owns_;

public:
    _LIBCPP_INLINE_VISIBILITY
    unique_lock() _NOEXCEPT : __m_(nullptr), __owns_(false) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit unique_lock(mutex_type& __m)
        : __m_(_VSTD::addressof(__m)), __owns_(true) {__m_->lock();}
    _LIBCPP_INLINE_VISIBILITY
    unique_lock(mutex_type& __m, defer_lock_t) _NOEXCEPT
        : __m_(_VSTD::addressof(__m)), __owns_(false) {}
    _LIBCPP_INLINE_VISIBILITY
    unique_lock(mutex_type& __m, try_to_lock_t)
        : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock()) {}
    _LIBCPP_INLINE_VISIBILITY
    unique_lock(mutex_type& __m, adopt_lock_t)
        : __m_(_VSTD::addressof(__m)), __owns_(true) {}
    template <class _Clock, class _Duration>
    _LIBCPP_INLINE_VISIBILITY
        unique_lock(mutex_type& __m, const chrono::time_point<_Clock, _Duration>& __t)
            : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock_until(__t)) {}
    template <class _Rep, class _Period>
    _LIBCPP_INLINE_VISIBILITY
        unique_lock(mutex_type& __m, const chrono::duration<_Rep, _Period>& __d)
            : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock_for(__d)) {}
    _LIBCPP_INLINE_VISIBILITY
    ~unique_lock()
    {
        if (__owns_)
            __m_->unlock();
    }

private:
    unique_lock(unique_lock const&); // = delete;
    unique_lock& operator=(unique_lock const&); // = delete;

public:
    _LIBCPP_INLINE_VISIBILITY
    unique_lock(unique_lock&& __u) _NOEXCEPT
        : __m_(__u.__m_), __owns_(__u.__owns_)
        {__u.__m_ = nullptr; __u.__owns_ = false;}
    _LIBCPP_INLINE_VISIBILITY
    unique_lock& operator=(unique_lock&& __u) _NOEXCEPT
        {
            if (__owns_)
                __m_->unlock();
            __m_ = __u.__m_;
            __owns_ = __u.__owns_;
            __u.__m_ = nullptr;
            __u.__owns_ = false;
            return *this;
        }

    void lock();
    bool try_lock();

    template <class _Rep, class _Period>
        bool try_lock_for(const chrono::duration<_Rep, _Period>& __d);
    template <class _Clock, class _Duration>
        bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);

    void unlock();

    _LIBCPP_INLINE_VISIBILITY
    void swap(unique_lock& __u) _NOEXCEPT
    {
        _VSTD::swap(__m_, __u.__m_);
        _VSTD::swap(__owns_, __u.__owns_);
    }
    _LIBCPP_INLINE_VISIBILITY
    mutex_type* release() _NOEXCEPT
    {
        mutex_type* __m = __m_;
        __m_ = nullptr;
        __owns_ = false;
        return __m;
    }

    _LIBCPP_INLINE_VISIBILITY
    bool owns_lock() const _NOEXCEPT {return __owns_;}
    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const _NOEXCEPT {return __owns_;}
    _LIBCPP_INLINE_VISIBILITY
    mutex_type* mutex() const _NOEXCEPT {return __m_;}
};

template <class _Mutex>
void
unique_lock<_Mutex>::lock()
{
    if (__m_ == nullptr)
        __throw_system_error(EPERM, "unique_lock::lock: references null mutex");
    if (__owns_)
        __throw_system_error(EDEADLK, "unique_lock::lock: already locked");
    __m_->lock();
    __owns_ = true;
}

template <class _Mutex>
bool
unique_lock<_Mutex>::try_lock()
{
    if (__m_ == nullptr)
        __throw_system_error(EPERM, "unique_lock::try_lock: references null mutex");
    if (__owns_)
        __throw_system_error(EDEADLK, "unique_lock::try_lock: already locked");
    __owns_ = __m_->try_lock();
    return __owns_;
}

template <class _Mutex>
template <class _Rep, class _Period>
bool
unique_lock<_Mutex>::try_lock_for(const chrono::duration<_Rep, _Period>& __d)
{
    if (__m_ == nullptr)
        __throw_system_error(EPERM, "unique_lock::try_lock_for: references null mutex");
    if (__owns_)
        __throw_system_error(EDEADLK, "unique_lock::try_lock_for: already locked");
    __owns_ = __m_->try_lock_for(__d);
    return __owns_;
}

template <class _Mutex>
template <class _Clock, class _Duration>
bool
unique_lock<_Mutex>::try_lock_until(const chrono::time_point<_Clock, _Duration>& __t)
{
    if (__m_ == nullptr)
        __throw_system_error(EPERM, "unique_lock::try_lock_until: references null mutex");
    if (__owns_)
        __throw_system_error(EDEADLK, "unique_lock::try_lock_until: already locked");
    __owns_ = __m_->try_lock_until(__t);
    return __owns_;
}

template <class _Mutex>
void
unique_lock<_Mutex>::unlock()
{
    if (!__owns_)
        __throw_system_error(EPERM, "unique_lock::unlock: not locked");
    __m_->unlock();
    __owns_ = false;
}

template <class _Mutex>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT
    {__x.swap(__y);}

//enum class cv_status
_LIBCPP_DECLARE_STRONG_ENUM(cv_status)
{
    no_timeout,
    timeout
};
_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status)

class _LIBCPP_TYPE_VIS condition_variable
{
    __libcpp_condvar_t __cv_ = _LIBCPP_CONDVAR_INITIALIZER;
public:
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR condition_variable() _NOEXCEPT = default;

#ifdef _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION
    ~condition_variable() = default;
#else
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    ~condition_variable();
#endif
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

    condition_variable(const condition_variable&) = delete;
    condition_variable& operator=(const condition_variable&) = delete;

    void notify_one() _NOEXCEPT;
    void notify_all() _NOEXCEPT;

    void wait(unique_lock<mutex>& __lk) _NOEXCEPT;
    template <class _Predicate>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        void wait(unique_lock<mutex>& __lk, _Predicate __pred);

    template <class _Clock, class _Duration>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        cv_status
        wait_until(unique_lock<mutex>& __lk,
                   const chrono::time_point<_Clock, _Duration>& __t);

    template <class _Clock, class _Duration, class _Predicate>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        bool
        wait_until(unique_lock<mutex>& __lk,
                   const chrono::time_point<_Clock, _Duration>& __t,
                   _Predicate __pred);

    template <class _Rep, class _Period>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        cv_status
        wait_for(unique_lock<mutex>& __lk,
                 const chrono::duration<_Rep, _Period>& __d);

    template <class _Rep, class _Period, class _Predicate>
        bool
        _LIBCPP_INLINE_VISIBILITY
        wait_for(unique_lock<mutex>& __lk,
                 const chrono::duration<_Rep, _Period>& __d,
                 _Predicate __pred);

    typedef __libcpp_condvar_t* native_handle_type;
    _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__cv_;}

private:
    void __do_timed_wait(unique_lock<mutex>& __lk,
       chrono::time_point<chrono::system_clock, chrono::nanoseconds>) _NOEXCEPT;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_COND_CLOCKWAIT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    void __do_timed_wait(unique_lock<mutex>& __lk,
       chrono::time_point<chrono::steady_clock, chrono::nanoseconds>) _NOEXCEPT;
#endif
# 331 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    template <class _Clock>
    void __do_timed_wait(unique_lock<mutex>& __lk,
       chrono::time_point<_Clock, chrono::nanoseconds>) _NOEXCEPT;
};
#endif // !_LIBCPP_HAS_NO_THREADS
# 336 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

template <class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_floating_point<_Rep>::value,
    chrono::nanoseconds
>::type
__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d)
{
    using namespace chrono;
    using __ratio = ratio_divide<_Period, nano>;
    using __ns_rep = nanoseconds::rep;
    _Rep __result_float = __d.count() * __ratio::num / __ratio::den;

    _Rep __result_max = numeric_limits<__ns_rep>::max();
    if (__result_float >= __result_max) {
        return nanoseconds::max();
    }

    _Rep __result_min = numeric_limits<__ns_rep>::min();
    if (__result_float <= __result_min) {
        return nanoseconds::min();
    }

    return nanoseconds(static_cast<__ns_rep>(__result_float));
}

template <class _Rep, class _Period>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    !is_floating_point<_Rep>::value,
    chrono::nanoseconds
>::type
__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d)
{
    using namespace chrono;
    if (__d.count() == 0) {
        return nanoseconds(0);
    }

    using __ratio = ratio_divide<_Period, nano>;
    using __ns_rep = nanoseconds::rep;
    __ns_rep __result_max = numeric_limits<__ns_rep>::max();
    if (__d.count() > 0 && __d.count() > __result_max / __ratio::num) {
        return nanoseconds::max();
    }

    __ns_rep __result_min = numeric_limits<__ns_rep>::min();
    if (__d.count() < 0 && __d.count() < __result_min / __ratio::num) {
        return nanoseconds::min();
    }

    __ns_rep __result = __d.count() * __ratio::num / __ratio::den;
    if (__result == 0) {
        return nanoseconds(1);
    }

    return nanoseconds(__result);
}

#ifndef _LIBCPP_HAS_NO_THREADS
template <class _Predicate>
void
condition_variable::wait(unique_lock<mutex>& __lk, _Predicate __pred)
{
    while (!__pred())
        wait(__lk);
}

template <class _Clock, class _Duration>
cv_status
condition_variable::wait_until(unique_lock<mutex>& __lk,
                               const chrono::time_point<_Clock, _Duration>& __t)
{
    using namespace chrono;
    using __clock_tp_ns = time_point<_Clock, nanoseconds>;

    typename _Clock::time_point __now = _Clock::now();
    if (__t <= __now)
        return cv_status::timeout;

    __clock_tp_ns __t_ns = __clock_tp_ns(_VSTD::__safe_nanosecond_cast(__t.time_since_epoch()));

    __do_timed_wait(__lk, __t_ns);
    return _Clock::now() < __t ? cv_status::no_timeout : cv_status::timeout;
}

template <class _Clock, class _Duration, class _Predicate>
bool
condition_variable::wait_until(unique_lock<mutex>& __lk,
                   const chrono::time_point<_Clock, _Duration>& __t,
                   _Predicate __pred)
{
    while (!__pred())
    {
        if (wait_until(__lk, __t) == cv_status::timeout)
            return __pred();
    }
    return true;
}

template <class _Rep, class _Period>
cv_status
condition_variable::wait_for(unique_lock<mutex>& __lk,
                             const chrono::duration<_Rep, _Period>& __d)
{
    using namespace chrono;
    if (__d <= __d.zero())
        return cv_status::timeout;
    using __ns_rep = nanoseconds::rep;
    steady_clock::time_point __c_now = steady_clock::now();

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_COND_CLOCKWAIT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 451 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    using __clock_tp_ns = time_point<steady_clock, nanoseconds>;
    __ns_rep __now_count_ns = _VSTD::__safe_nanosecond_cast(__c_now.time_since_epoch()).count();
#else
# 454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
    using __clock_tp_ns = time_point<system_clock, nanoseconds>;
    __ns_rep __now_count_ns = _VSTD::__safe_nanosecond_cast(system_clock::now().time_since_epoch()).count();
#endif
# 457 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

    __ns_rep __d_ns_count = _VSTD::__safe_nanosecond_cast(__d).count();

    if (__now_count_ns > numeric_limits<__ns_rep>::max() - __d_ns_count) {
        __do_timed_wait(__lk, __clock_tp_ns::max());
    } else {
        __do_timed_wait(__lk, __clock_tp_ns(nanoseconds(__now_count_ns + __d_ns_count)));
    }

    return steady_clock::now() - __c_now < __d ? cv_status::no_timeout :
                                                 cv_status::timeout;
}

template <class _Rep, class _Period, class _Predicate>
inline
bool
condition_variable::wait_for(unique_lock<mutex>& __lk,
                             const chrono::duration<_Rep, _Period>& __d,
                             _Predicate __pred)
{
    return wait_until(__lk, chrono::steady_clock::now() + __d,
                      _VSTD::move(__pred));
}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_COND_CLOCKWAIT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
inline
void
condition_variable::__do_timed_wait(unique_lock<mutex>& __lk,
     chrono::time_point<chrono::steady_clock, chrono::nanoseconds> __tp) _NOEXCEPT
{
    using namespace chrono;
    if (!__lk.owns_lock())
        __throw_system_error(EPERM,
                            "condition_variable::timed wait: mutex not locked");
    nanoseconds __d = __tp.time_since_epoch();
    timespec __ts;
    seconds __s = duration_cast<seconds>(__d);
    using __ts_sec = decltype(__ts.tv_sec);
    const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max();
    if (__s.count() < __ts_sec_max)
    {
        __ts.tv_sec = static_cast<__ts_sec>(__s.count());
        __ts.tv_nsec = (__d - __s).count();
    }
    else
    {
        __ts.tv_sec = __ts_sec_max;
        __ts.tv_nsec = giga::num - 1;
    }
    int __ec = pthread_cond_clockwait(&__cv_, __lk.mutex()->native_handle(), CLOCK_MONOTONIC, &__ts);
    if (__ec != 0 && __ec != ETIMEDOUT)
        __throw_system_error(__ec, "condition_variable timed_wait failed");
}
#endif // _LIBCPP_HAS_COND_CLOCKWAIT
# 511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

template <class _Clock>
inline
void
condition_variable::__do_timed_wait(unique_lock<mutex>& __lk,
     chrono::time_point<_Clock, chrono::nanoseconds> __tp) _NOEXCEPT
{
    wait_for(__lk, __tp - _Clock::now());
}

#endif // !_LIBCPP_HAS_NO_THREADS
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___MUTEX_BASE
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__mutex_base" 3
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__threading_support>
#endif /* expanded by -frewrite-includes */
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <functional>
#endif /* expanded by -frewrite-includes */
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#ifndef _LIBCPP_CXX03_LANG
#if 0 /* expanded by -frewrite-includes */
# include <tuple>
#endif /* expanded by -frewrite-includes */
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#endif
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_HAS_NO_THREADS

class _LIBCPP_TYPE_VIS recursive_mutex
{
    __libcpp_recursive_mutex_t __m_;

public:
     recursive_mutex();
     ~recursive_mutex();

private:
    recursive_mutex(const recursive_mutex&); // = delete;
    recursive_mutex& operator=(const recursive_mutex&); // = delete;

public:
    void lock();
    bool try_lock() _NOEXCEPT;
    void unlock()  _NOEXCEPT;

    typedef __libcpp_recursive_mutex_t* native_handle_type;

    _LIBCPP_INLINE_VISIBILITY
    native_handle_type native_handle() {return &__m_;}
};

class _LIBCPP_TYPE_VIS timed_mutex
{
    mutex              __m_;
    condition_variable __cv_;
    bool               __locked_;
public:
     timed_mutex();
     ~timed_mutex();

private:
    timed_mutex(const timed_mutex&); // = delete;
    timed_mutex& operator=(const timed_mutex&); // = delete;

public:
    void lock();
    bool try_lock() _NOEXCEPT;
    template <class _Rep, class _Period>
        _LIBCPP_INLINE_VISIBILITY
        bool try_lock_for(const chrono::duration<_Rep, _Period>& __d)
            {return try_lock_until(chrono::steady_clock::now() + __d);}
    template <class _Clock, class _Duration>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);
    void unlock() _NOEXCEPT;
};

template <class _Clock, class _Duration>
bool
timed_mutex::try_lock_until(const chrono::time_point<_Clock, _Duration>& __t)
{
    using namespace chrono;
    unique_lock<mutex> __lk(__m_);
    bool no_timeout = _Clock::now() < __t;
    while (no_timeout && __locked_)
        no_timeout = __cv_.wait_until(__lk, __t) == cv_status::no_timeout;
    if (!__locked_)
    {
        __locked_ = true;
        return true;
    }
    return false;
}

class _LIBCPP_TYPE_VIS recursive_timed_mutex
{
    mutex              __m_;
    condition_variable __cv_;
    size_t             __count_;
    __thread_id        __id_;
public:
     recursive_timed_mutex();
     ~recursive_timed_mutex();

private:
    recursive_timed_mutex(const recursive_timed_mutex&); // = delete;
    recursive_timed_mutex& operator=(const recursive_timed_mutex&); // = delete;

public:
    void lock();
    bool try_lock() _NOEXCEPT;
    template <class _Rep, class _Period>
        _LIBCPP_INLINE_VISIBILITY
        bool try_lock_for(const chrono::duration<_Rep, _Period>& __d)
            {return try_lock_until(chrono::steady_clock::now() + __d);}
    template <class _Clock, class _Duration>
        _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
        bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);
    void unlock() _NOEXCEPT;
};

template <class _Clock, class _Duration>
bool
recursive_timed_mutex::try_lock_until(const chrono::time_point<_Clock, _Duration>& __t)
{
    using namespace chrono;
    __thread_id __id = this_thread::get_id();
    unique_lock<mutex> lk(__m_);
    if (__id == __id_)
    {
        if (__count_ == numeric_limits<size_t>::max())
            return false;
        ++__count_;
        return true;
    }
    bool no_timeout = _Clock::now() < __t;
    while (no_timeout && __count_ != 0)
        no_timeout = __cv_.wait_until(lk, __t) == cv_status::no_timeout;
    if (__count_ == 0)
    {
        __count_ = 1;
        __id_ = __id;
        return true;
    }
    return false;
}

template <class _L0, class _L1>
int
try_lock(_L0& __l0, _L1& __l1)
{
    unique_lock<_L0> __u0(__l0, try_to_lock);
    if (__u0.owns_lock())
    {
        if (__l1.try_lock())
        {
            __u0.release();
            return -1;
        }
        else
            return 1;
    }
    return 0;
}

#ifndef _LIBCPP_CXX03_LANG

template <class _L0, class _L1, class _L2, class... _L3>
int
try_lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3&... __l3)
{
    int __r = 0;
    unique_lock<_L0> __u0(__l0, try_to_lock);
    if (__u0.owns_lock())
    {
        __r = try_lock(__l1, __l2, __l3...);
        if (__r == -1)
            __u0.release();
        else
            ++__r;
    }
    return __r;
}

#endif // _LIBCPP_CXX03_LANG
# 370 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

template <class _L0, class _L1>
void
lock(_L0& __l0, _L1& __l1)
{
    while (true)
    {
        {
            unique_lock<_L0> __u0(__l0);
            if (__l1.try_lock())
            {
                __u0.release();
                break;
            }
        }
        __libcpp_thread_yield();
        {
            unique_lock<_L1> __u1(__l1);
            if (__l0.try_lock())
            {
                __u1.release();
                break;
            }
        }
        __libcpp_thread_yield();
    }
}

#ifndef _LIBCPP_CXX03_LANG

template <class _L0, class _L1, class _L2, class ..._L3>
void
__lock_first(int __i, _L0& __l0, _L1& __l1, _L2& __l2, _L3& ...__l3)
{
    while (true)
    {
        switch (__i)
        {
        case 0:
            {
                unique_lock<_L0> __u0(__l0);
                __i = try_lock(__l1, __l2, __l3...);
                if (__i == -1)
                {
                    __u0.release();
                    return;
                }
            }
            ++__i;
            __libcpp_thread_yield();
            break;
        case 1:
            {
                unique_lock<_L1> __u1(__l1);
                __i = try_lock(__l2, __l3..., __l0);
                if (__i == -1)
                {
                    __u1.release();
                    return;
                }
            }
            if (__i == sizeof...(_L3) + 1)
                __i = 0;
            else
                __i += 2;
            __libcpp_thread_yield();
            break;
        default:
            __lock_first(__i - 2, __l2, __l3..., __l0, __l1);
            return;
        }
    }
}

template <class _L0, class _L1, class _L2, class ..._L3>
inline _LIBCPP_INLINE_VISIBILITY
void
lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3& ...__l3)
{
    __lock_first(0, __l0, __l1, __l2, __l3...);
}

template <class _L0>
inline _LIBCPP_INLINE_VISIBILITY
void __unlock(_L0& __l0) {
    __l0.unlock();
}

template <class _L0, class _L1>
inline _LIBCPP_INLINE_VISIBILITY
void __unlock(_L0& __l0, _L1& __l1) {
    __l0.unlock();
    __l1.unlock();
}

template <class _L0, class _L1, class _L2, class ..._L3>
inline _LIBCPP_INLINE_VISIBILITY
void __unlock(_L0& __l0, _L1& __l1, _L2& __l2, _L3&... __l3) {
    __l0.unlock();
    __l1.unlock();
    _VSTD::__unlock(__l2, __l3...);
}

#endif // _LIBCPP_CXX03_LANG
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 476 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
template <class ..._Mutexes>
class _LIBCPP_TEMPLATE_VIS scoped_lock;

template <>
class _LIBCPP_TEMPLATE_VIS scoped_lock<> {
public:
    explicit scoped_lock() {}
    ~scoped_lock() = default;

    _LIBCPP_INLINE_VISIBILITY
    explicit scoped_lock(adopt_lock_t) {}

    scoped_lock(scoped_lock const&) = delete;
    scoped_lock& operator=(scoped_lock const&) = delete;
};

template <class _Mutex>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable) scoped_lock<_Mutex> {
public:
    typedef _Mutex  mutex_type;
private:
    mutex_type& __m_;
public:
    explicit scoped_lock(mutex_type & __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability(__m))
        : __m_(__m) {__m_.lock();}

    ~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();}

    _LIBCPP_INLINE_VISIBILITY
    explicit scoped_lock(adopt_lock_t, mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
        : __m_(__m) {}

    scoped_lock(scoped_lock const&) = delete;
    scoped_lock& operator=(scoped_lock const&) = delete;
};

template <class ..._MArgs>
class _LIBCPP_TEMPLATE_VIS scoped_lock
{
    static_assert(sizeof...(_MArgs) > 1, "At least 2 lock types required");
    typedef tuple<_MArgs&...> _MutexTuple;

public:
    _LIBCPP_INLINE_VISIBILITY
    explicit scoped_lock(_MArgs&... __margs)
      : __t_(__margs...)
    {
        _VSTD::lock(__margs...);
    }

    _LIBCPP_INLINE_VISIBILITY
    scoped_lock(adopt_lock_t, _MArgs&... __margs)
        : __t_(__margs...)
    {
    }

    _LIBCPP_INLINE_VISIBILITY
    ~scoped_lock() {
        typedef typename __make_tuple_indices<sizeof...(_MArgs)>::type _Indices;
        __unlock_unpack(_Indices{}, __t_);
    }

    scoped_lock(scoped_lock const&) = delete;
    scoped_lock& operator=(scoped_lock const&) = delete;

private:
    template <size_t ..._Indx>
    _LIBCPP_INLINE_VISIBILITY
    static void __unlock_unpack(__tuple_indices<_Indx...>, _MutexTuple& __mt) {
        _VSTD::__unlock(_VSTD::get<_Indx>(__mt)...);
    }

    _MutexTuple __t_;
};

#endif // _LIBCPP_STD_VER > 14
# 552 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
#endif // !_LIBCPP_HAS_NO_THREADS
# 553 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

struct _LIBCPP_TEMPLATE_VIS once_flag;

#ifndef _LIBCPP_CXX03_LANG

template<class _Callable, class... _Args>
_LIBCPP_INLINE_VISIBILITY
void call_once(once_flag&, _Callable&&, _Args&&...);

#else  // _LIBCPP_CXX03_LANG
# 563 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

template<class _Callable>
_LIBCPP_INLINE_VISIBILITY
void call_once(once_flag&, _Callable&);

template<class _Callable>
_LIBCPP_INLINE_VISIBILITY
void call_once(once_flag&, const _Callable&);

#endif // _LIBCPP_CXX03_LANG
# 573 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

struct _LIBCPP_TEMPLATE_VIS once_flag
{
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR
        once_flag() _NOEXCEPT : __state_(0) {}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_MICROSOFT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
   typedef uintptr_t _State_type;
#else
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
   typedef unsigned long _State_type;
#endif
# 585 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3


private:
    once_flag(const once_flag&); // = delete;
    once_flag& operator=(const once_flag&); // = delete;

    _State_type __state_;

#ifndef _LIBCPP_CXX03_LANG
    template<class _Callable, class... _Args>
    friend
    void call_once(once_flag&, _Callable&&, _Args&&...);
#else  // _LIBCPP_CXX03_LANG
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
    template<class _Callable>
    friend
    void call_once(once_flag&, _Callable&);

    template<class _Callable>
    friend
    void call_once(once_flag&, const _Callable&);
#endif // _LIBCPP_CXX03_LANG
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
};

#ifndef _LIBCPP_CXX03_LANG

template <class _Fp>
class __call_once_param
{
    _Fp& __f_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __call_once_param(_Fp& __f) : __f_(__f) {}

    _LIBCPP_INLINE_VISIBILITY
    void operator()()
    {
        typedef typename __make_tuple_indices<tuple_size<_Fp>::value, 1>::type _Index;
        __execute(_Index());
    }

private:
    template <size_t ..._Indices>
    _LIBCPP_INLINE_VISIBILITY
    void __execute(__tuple_indices<_Indices...>)
    {
        _VSTD::__invoke(_VSTD::get<0>(_VSTD::move(__f_)), _VSTD::get<_Indices>(_VSTD::move(__f_))...);
    }
};

#else
# 635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

template <class _Fp>
class __call_once_param
{
    _Fp& __f_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __call_once_param(_Fp& __f) : __f_(__f) {}

    _LIBCPP_INLINE_VISIBILITY
    void operator()()
    {
        __f_();
    }
};

#endif
# 652 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

template <class _Fp>
void _LIBCPP_INLINE_VISIBILITY
__call_once_proxy(void* __vp)
{
    __call_once_param<_Fp>* __p = static_cast<__call_once_param<_Fp>*>(__vp);
    (*__p)();
}

_LIBCPP_FUNC_VIS void __call_once(volatile once_flag::_State_type&, void*,
                                  void (*)(void*));

#ifndef _LIBCPP_CXX03_LANG

template<class _Callable, class... _Args>
inline _LIBCPP_INLINE_VISIBILITY
void
call_once(once_flag& __flag, _Callable&& __func, _Args&&... __args)
{
    if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
    {
        typedef tuple<_Callable&&, _Args&&...> _Gp;
        _Gp __f(_VSTD::forward<_Callable>(__func), _VSTD::forward<_Args>(__args)...);
        __call_once_param<_Gp> __p(__f);
        __call_once(__flag.__state_, &__p, &__call_once_proxy<_Gp>);
    }
}

#else  // _LIBCPP_CXX03_LANG
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

template<class _Callable>
inline _LIBCPP_INLINE_VISIBILITY
void
call_once(once_flag& __flag, _Callable& __func)
{
    if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
    {
        __call_once_param<_Callable> __p(__func);
        __call_once(__flag.__state_, &__p, &__call_once_proxy<_Callable>);
    }
}

template<class _Callable>
inline _LIBCPP_INLINE_VISIBILITY
void
call_once(once_flag& __flag, const _Callable& __func)
{
    if (__libcpp_acquire_load(&__flag.__state_) != ~once_flag::_State_type(0))
    {
        __call_once_param<const _Callable> __p(__func);
        __call_once(__flag.__state_, &__p, &__call_once_proxy<const _Callable>);
    }
}

#endif // _LIBCPP_CXX03_LANG
# 707 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_MUTEX
# 713 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/mutex" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <cctype>
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <locale.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 1 3
// -*- C++ -*-
//===---------------------------- locale.h --------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_LOCALE_H
#define _LIBCPP_LOCALE_H

/*
    locale.h synopsis

Macros:

    LC_ALL
    LC_COLLATE
    LC_CTYPE
    LC_MONETARY
    LC_NUMERIC
    LC_TIME

Types:

    lconv

Functions:

   setlocale
   localeconv

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_NO_LOCALIZATION)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
#   error "Localization is not supported by this configuration of libc++"
#endif
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
#if 0 /* expanded by -frewrite-includes */
#   pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <locale.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1991, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)locale.h	8.1 (Berkeley) 6/2/93
 * $FreeBSD$
 */

#ifndef _LOCALE_H_
#define _LOCALE_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4

struct lconv {
	char	*decimal_point;
	char	*thousands_sep;
	char	*grouping;
	char	*int_curr_symbol;
	char	*currency_symbol;
	char	*mon_decimal_point;
	char	*mon_thousands_sep;
	char	*mon_grouping;
	char	*positive_sign;
	char	*negative_sign;
	char	int_frac_digits;
	char	frac_digits;
	char	p_cs_precedes;
	char	p_sep_by_space;
	char	n_cs_precedes;
	char	n_sep_by_space;
	char	p_sign_posn;
	char	n_sign_posn;
	char	int_p_cs_precedes;
	char	int_n_cs_precedes;
	char	int_p_sep_by_space;
	char	int_n_sep_by_space;
	char	int_p_sign_posn;
	char	int_n_sign_posn;
};

#define	LC_ALL		0
#define	LC_COLLATE	1
#define	LC_CTYPE	2
#define	LC_MONETARY	3
#define	LC_NUMERIC	4
#define	LC_TIME		5
#define	LC_MESSAGES	6

#define	_LC_LAST	7		/* marks end */

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4

__BEGIN_DECLS
struct lconv	*localeconv(void);
char		*setlocale(int, const char *);

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_locale.h>
#endif /* expanded by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_locale.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _XLOCALE_LOCALE_H
#define _XLOCALE_LOCALE_H

/* Bit shifting order of LC_*_MASK should match XLC_* and LC_* order. */
#define LC_COLLATE_MASK  (1<<0)
#define LC_CTYPE_MASK    (1<<1)
#define LC_MONETARY_MASK (1<<2)
#define LC_NUMERIC_MASK  (1<<3)
#define LC_TIME_MASK     (1<<4)
#define LC_MESSAGES_MASK (1<<5)
#define LC_ALL_MASK      (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | \
			  LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK)
#define LC_VERSION_MASK  (1<<6)
#define LC_GLOBAL_LOCALE ((locale_t)-1)

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_locale.h" 3 4

locale_t	 duplocale(locale_t base);
void		 freelocale(locale_t loc);
locale_t	 newlocale(int mask, const char *locale, locale_t base);
const char	*querylocale(int mask, locale_t loc);
locale_t	 uselocale(locale_t loc);

#endif /* _XLOCALE_LOCALE_H */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_locale.h" 3 4
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 2 3 4
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
__END_DECLS


#endif /* _LOCALE_H_ */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/locale.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 2 3

#endif // _LIBCPP_LOCALE_H
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale.h" 3
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 2 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <cstring>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/win32/locale_win32.h>
#endif /* expanded by -frewrite-includes */
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__NuttX__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/nuttx/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_AIX) || defined(__MVS__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/ibm/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__ANDROID__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/android/locale_bionic.h>
#endif /* expanded by -frewrite-includes */
# 30 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <xlocale.h>
#endif /* expanded by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/solaris/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_NEWLIB_VERSION)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/newlib/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__OpenBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/openbsd/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif (defined(__APPLE__)      || defined(__FreeBSD__) \
    || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <xlocale.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _XLOCALE_H_
#define _XLOCALE_H_

#if 0 /* expanded by -frewrite-includes */
#include <locale.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
__BEGIN_DECLS
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_locale.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _STRING_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_string.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4

/*
 * This file is included from both string.h and xlocale.h.  We need to expose
 * the declarations unconditionally if we are included from xlocale.h, but only
 * if we are in POSIX2008 mode if included from string.h.
 */

#ifndef _XLOCALE_STRING1_H
#define _XLOCALE_STRING1_H

/*
 * POSIX2008 functions
 */
int	 strcoll_l(const char *, const char *, locale_t);
char	*strerror_l(int num, locale_t);
size_t	 strxfrm_l(char *, const char *, size_t, locale_t);
#endif /* _XLOCALE_STRING1_H */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4

/*
 * xlocale extensions
 */
#ifdef _XLOCALE_H_
#ifndef _XLOCALE_STRING2_H
#define _XLOCALE_STRING2_H
char	*strcasestr_l(const char *, const char *, locale_t);

#endif /* _XLOCALE_STRING2_H */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4
#endif /* _XLOCALE_H_ */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_string.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _INTTYPES_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_inttypes.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _MONETARY_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_monetary.h>
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _STDLIB_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdlib.h>
#endif /* expanded by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_stdlib.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

/*
 * Extended locale versions of the locale-aware functions from stdlib.h.
 *
 * Include <stdlib.h> before <xlocale.h> to expose these.
 */
double			 atof_l(const char *, locale_t);
int			 atoi_l(const char *, locale_t);
long			 atol_l(const char *, locale_t);
long long		 atoll_l(const char *, locale_t);
int			 mblen_l(const char *, size_t, locale_t);
size_t			 mbstowcs_l(wchar_t * __restrict,
			    const char * __restrict, size_t, locale_t);
int			 mbtowc_l(wchar_t * __restrict,
			    const char * __restrict, size_t, locale_t);
double			 strtod_l(const char *, char **, locale_t);
float			 strtof_l(const char *, char **, locale_t);
long			 strtol_l(const char *, char **, int, locale_t);
long double		 strtold_l(const char *, char **, locale_t);
long long		 strtoll_l(const char *, char **, int, locale_t);
unsigned long		 strtoul_l(const char *, char **, int, locale_t);
unsigned long long	 strtoull_l(const char *, char **, int, locale_t);
size_t			 wcstombs_l(char * __restrict,
			    const wchar_t * __restrict, size_t, locale_t);
int			 wctomb_l(char *, wchar_t, locale_t);

int			 ___mb_cur_max_l(locale_t);
#define MB_CUR_MAX_L(x) ((size_t)___mb_cur_max_l(x))

# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _TIME_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_time.h>
#endif /* expanded by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4

/*
 * This file is included from both locale.h and xlocale.h.  We need to expose
 * the declarations unconditionally if we are included from xlocale.h, but only
 * if we are in POSIX2008 mode if included from locale.h.
 */
#ifndef _XLOCALE_LOCALE1_H
#define _XLOCALE_LOCALE1_H

size_t	 strftime_l(char * __restrict, size_t, const char * __restrict,
	    const struct tm * __restrict, locale_t) __strftimelike(3, 0);

#endif /* _XLOCALE_LOCALE1_H */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4

#ifdef _XLOCALE_H_
#ifndef _XLOCALE_LOCALE2_H
#define _XLOCALE_LOCALE2_H

char	*strptime_l(const char * __restrict, const char * __restrict,
           struct tm * __restrict, locale_t);

#endif /* _XLOCALE_LOCALE2_H */
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4
#endif /* _XLOCALE_H_ */
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_time.h" 3 4
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 60 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _LANGINFO_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_langinfo.h>
#endif /* expanded by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
#endif
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _CTYPE_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_ctype.h>
#endif /* expanded by -frewrite-includes */
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */


#if 0 /* disabled by -frewrite-includes */
#if	(defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
#define _XLOCALE_WCTYPE_H
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#define _XLOCALE_CTYPE_H
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_RUN_FUNCTIONS_DEFINED
#define _XLOCALE_RUN_FUNCTIONS_DEFINED 1
unsigned long	 ___runetype_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___tolower_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___toupper_l(__ct_rune_t, locale_t) __pure;
_RuneLocale	*__runes_for_locale(locale_t, int*);
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_INLINE
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* GNU89 inline has nonstandard semantics. */
#define _XLOCALE_INLINE extern __inline
#else
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Hack to work around people who define inline away */
#ifdef inline
#define _XLOCALE_INLINE static __inline
#else
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Define with C++ / C99 compatible semantics */
#define _XLOCALE_INLINE inline
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* _XLOCALE_INLINE */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return ((__c < 0 || __c >= _CACHED_RUNES) ? ___runetype_l(__c, __loc) :
	        runes->__runetype[__c]) & __f;
}

_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__maskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(fname, cat) \
		_XLOCALE_INLINE int isw##fname##_l(int, locale_t);\
		_XLOCALE_INLINE int isw##fname##_l(int __c, locale_t __l)\
		{ return __istype_l(__c, cat, __l); }
#else
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return (__c < 0 || __c >= __limit) ? 0 :
	       runes->__runetype[__c] & __f;
}

_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__sbmaskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(__fname, __cat) \
		_XLOCALE_INLINE int is##__fname##_l(int, locale_t); \
		_XLOCALE_INLINE int is##__fname##_l(int __c, locale_t __l)\
		{ return __sbistype_l(__c, __cat, __l); }
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
XLOCALE_ISCTYPE(digit, _CTYPE_D)
XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)
XLOCALE_ISCTYPE(rune, 0xFFFFFF00L)
XLOCALE_ISCTYPE(space, _CTYPE_S)
XLOCALE_ISCTYPE(special, _CTYPE_T)
XLOCALE_ISCTYPE(upper, _CTYPE_U)
XLOCALE_ISCTYPE(xdigit, _CTYPE_X)
#undef XLOCALE_ISCTYPE

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int towlower_l(int, locale_t);
_XLOCALE_INLINE int __wcwidth_l(__ct_rune_t, locale_t);
_XLOCALE_INLINE int towupper_l(int, locale_t);

_XLOCALE_INLINE int towlower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___tolower_l(__c, __l) :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int towupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___toupper_l(__c, __l) :
	       __runes->__mapupper[__c];
}
_XLOCALE_INLINE int
__wcwidth_l(__ct_rune_t _c, locale_t __l)
{
	unsigned int _x;

	if (_c == 0)
		return (0);
	_x = (unsigned int)__maskrune_l(_c, _CTYPE_SWM|_CTYPE_R, __l);
	if ((_x & _CTYPE_SWM) != 0)
		return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
	return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}
int iswctype_l(wint_t __wc, wctype_t __charclass, locale_t __l);
wctype_t wctype_l(const char *property, locale_t __l);
wint_t towctrans_l(wint_t __wc, wctrans_t desc, locale_t __l);
wint_t nextwctype_l(wint_t __wc, wctype_t wct, locale_t __l);
wctrans_t wctrans_l(const char *__charclass, locale_t __l);
#undef _XLOCALE_WCTYPES
#else
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int digittoint_l(int, locale_t);
_XLOCALE_INLINE int tolower_l(int, locale_t);
_XLOCALE_INLINE int toupper_l(int, locale_t);

_XLOCALE_INLINE int digittoint_l(int __c, locale_t __l)
{ return __sbmaskrune_l((__c), 0xFF, __l); }

_XLOCALE_INLINE int tolower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int toupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__mapupper[__c];
}
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* (defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H)) */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
# 67 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _WCTYPE_H_
#define _XLOCALE_WCTYPES 1
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_ctype.h>
#endif /* expanded by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */


#if 0 /* disabled by -frewrite-includes */
#if	(defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
#define _XLOCALE_WCTYPE_H
#else
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#define _XLOCALE_CTYPE_H
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_RUN_FUNCTIONS_DEFINED
#define _XLOCALE_RUN_FUNCTIONS_DEFINED 1
unsigned long	 ___runetype_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___tolower_l(__ct_rune_t, locale_t) __pure;
__ct_rune_t	 ___toupper_l(__ct_rune_t, locale_t) __pure;
_RuneLocale	*__runes_for_locale(locale_t, int*);
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifndef _XLOCALE_INLINE
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* GNU89 inline has nonstandard semantics. */
#define _XLOCALE_INLINE extern __inline
#else
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Hack to work around people who define inline away */
#ifdef inline
#define _XLOCALE_INLINE static __inline
#else
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
/* Define with C++ / C99 compatible semantics */
#define _XLOCALE_INLINE inline
#endif
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* _XLOCALE_INLINE */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__maskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return ((__c < 0 || __c >= _CACHED_RUNES) ? ___runetype_l(__c, __loc) :
	        runes->__runetype[__c]) & __f;
}

_XLOCALE_INLINE int
__istype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__maskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(fname, cat) \
		_XLOCALE_INLINE int isw##fname##_l(int, locale_t);\
		_XLOCALE_INLINE int isw##fname##_l(int __c, locale_t __l)\
		{ return __istype_l(__c, cat, __l); }
#else
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);

_XLOCALE_INLINE int
__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	int __limit;
	_RuneLocale *runes = __runes_for_locale(__loc, &__limit);
	return (__c < 0 || __c >= __limit) ? 0 :
	       runes->__runetype[__c] & __f;
}

_XLOCALE_INLINE int
__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{
	return (!!__sbmaskrune_l(__c, __f, __loc));
}

#define XLOCALE_ISCTYPE(__fname, __cat) \
		_XLOCALE_INLINE int is##__fname##_l(int, locale_t); \
		_XLOCALE_INLINE int is##__fname##_l(int __c, locale_t __l)\
		{ return __sbistype_l(__c, __cat, __l); }
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4

XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
XLOCALE_ISCTYPE(digit, _CTYPE_D)
XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)
XLOCALE_ISCTYPE(rune, 0xFFFFFF00L)
XLOCALE_ISCTYPE(space, _CTYPE_S)
XLOCALE_ISCTYPE(special, _CTYPE_T)
XLOCALE_ISCTYPE(upper, _CTYPE_U)
XLOCALE_ISCTYPE(xdigit, _CTYPE_X)
#undef XLOCALE_ISCTYPE

#ifdef _XLOCALE_WCTYPES
_XLOCALE_INLINE int towlower_l(int, locale_t);
_XLOCALE_INLINE int __wcwidth_l(__ct_rune_t, locale_t);
_XLOCALE_INLINE int towupper_l(int, locale_t);

_XLOCALE_INLINE int towlower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___tolower_l(__c, __l) :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int towupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= _CACHED_RUNES) ? ___toupper_l(__c, __l) :
	       __runes->__mapupper[__c];
}
_XLOCALE_INLINE int
__wcwidth_l(__ct_rune_t _c, locale_t __l)
{
	unsigned int _x;

	if (_c == 0)
		return (0);
	_x = (unsigned int)__maskrune_l(_c, _CTYPE_SWM|_CTYPE_R, __l);
	if ((_x & _CTYPE_SWM) != 0)
		return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
	return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}
int iswctype_l(wint_t __wc, wctype_t __charclass, locale_t __l);
wctype_t wctype_l(const char *property, locale_t __l);
wint_t towctrans_l(wint_t __wc, wctrans_t desc, locale_t __l);
wint_t nextwctype_l(wint_t __wc, wctype_t wct, locale_t __l);
wctrans_t wctrans_l(const char *__charclass, locale_t __l);
#undef _XLOCALE_WCTYPES
#else
# 182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
_XLOCALE_INLINE int digittoint_l(int, locale_t);
_XLOCALE_INLINE int tolower_l(int, locale_t);
_XLOCALE_INLINE int toupper_l(int, locale_t);

_XLOCALE_INLINE int digittoint_l(int __c, locale_t __l)
{ return __sbmaskrune_l((__c), 0xFF, __l); }

_XLOCALE_INLINE int tolower_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__maplower[__c];
}
_XLOCALE_INLINE int toupper_l(int __c, locale_t __l)
{
	int __limit;
	_RuneLocale *__runes = __runes_for_locale(__l, &__limit);
	return (__c < 0 || __c >= __limit) ? __c :
	       __runes->__mapupper[__c];
}
#endif
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
#endif /* (defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_WCTYPE_H)) || \
	(!defined(_XLOCALE_WCTYPES) && !defined(_XLOCALE_CTYPE_H)) */
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_ctype.h" 3 4
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _STDIO_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdio.h>
#endif /* expanded by -frewrite-includes */
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_stdio.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

int	 asprintf_l(char **, locale_t, const char *, ...) __printflike(3, 4);
int	 dprintf_l(int, locale_t, const char * __restrict, ...)
	    __printflike(3, 4);
int	 fprintf_l(FILE * __restrict, locale_t, const char * __restrict, ...)
	    __printflike(3, 4);
int	 fscanf_l(FILE * __restrict, locale_t, const char * __restrict, ...)
	    __scanflike(3, 4);
int	 printf_l(locale_t, const char * __restrict, ...) __printflike(2, 3);
int	 scanf_l(locale_t, const char * __restrict, ...) __scanflike(2, 3);
int	 snprintf_l(char * __restrict, size_t, locale_t,
	    const char * __restrict, ...) __printflike(4, 5);
int	 sprintf_l(char * __restrict, locale_t, const char * __restrict, ...)
	    __printflike(3, 4);
int	 sscanf_l(const char * __restrict, locale_t, const char * __restrict,
	    ...) __scanflike(3, 4);
int	 vfprintf_l(FILE * __restrict, locale_t, const char * __restrict,
	    __va_list) __printflike(3, 0);
int	 vprintf_l(locale_t, const char * __restrict, __va_list)
	    __printflike(2, 0);
int	 vsprintf_l(char * __restrict, locale_t, const char * __restrict,
	    __va_list) __printflike(3, 0);
int	 vfscanf_l(FILE * __restrict, locale_t, const char * __restrict,
	    __va_list) __scanflike(3, 0);
int	 vscanf_l(locale_t, const char * __restrict, __va_list)
	    __scanflike(2, 0);
int	 vsnprintf_l(char * __restrict, size_t, locale_t,
	    const char * __restrict, __va_list) __printflike(4, 0);
int	 vsscanf_l(const char * __restrict, locale_t, const char * __restrict,
	    __va_list) __scanflike(3, 0);
int	 vdprintf_l(int, locale_t, const char * __restrict, __va_list)
	    __printflike(3, 0);
int	 vasprintf_l(char **, locale_t, const char *, __va_list)
	    __printflike(3, 0);
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4

#ifdef _WCHAR_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_wchar.h>
#endif /* expanded by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 2011, 2012 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct	_xlocale *locale_t;
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4

#ifndef _XLOCALE_WCHAR1_H
#define _XLOCALE_WCHAR1_H
int			 wcscasecmp_l(const wchar_t *, const wchar_t *,
			   locale_t);
int			 wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t,
			   locale_t);
int			 wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
size_t			 wcsxfrm_l(wchar_t * __restrict,
			   const wchar_t * __restrict, size_t, locale_t);

#endif /* _XLOCALE_WCHAR1_H */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4

/*
 * Only declare the non-POSIX functions if we're included from xlocale.h.
 */

#ifdef _XLOCALE_H_
#ifndef _XLOCALE_WCHAR2_H
#define _XLOCALE_WCHAR2_H

wint_t			 btowc_l(int, locale_t);
wint_t			 fgetwc_l(FILE *, locale_t);
wchar_t			*fgetws_l(wchar_t * __restrict, int, FILE * __restrict,
			    locale_t);
wint_t			 fputwc_l(wchar_t, FILE *, locale_t);
int			 fputws_l(const wchar_t * __restrict, FILE * __restrict,
			   locale_t);
int			 fwprintf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, ...);
int			 fwscanf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, ...);
wint_t			 getwc_l(FILE *, locale_t);
wint_t			 getwchar_l(locale_t);
size_t			 mbrlen_l(const char * __restrict, size_t,
			   mbstate_t * __restrict, locale_t);
size_t			 mbrtowc_l(wchar_t * __restrict,
			    const char * __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
int			 mbsinit_l(const mbstate_t *, locale_t);
size_t			 mbsrtowcs_l(wchar_t * __restrict,
			    const char ** __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
wint_t			 putwc_l(wchar_t, FILE *, locale_t);
wint_t			 putwchar_l(wchar_t, locale_t);
int			 swprintf_l(wchar_t * __restrict, size_t n, locale_t,
			    const wchar_t * __restrict, ...);
int			 swscanf_l(const wchar_t * __restrict, locale_t,
			   const wchar_t * __restrict, ...);
wint_t			 ungetwc_l(wint_t, FILE *, locale_t);
int			 vfwprintf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vswprintf_l(wchar_t * __restrict, size_t n, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vwprintf_l(locale_t, const wchar_t * __restrict,
			    __va_list);
size_t			 wcrtomb_l(char * __restrict, wchar_t,
			    mbstate_t * __restrict, locale_t);
size_t			 wcsftime_l(wchar_t * __restrict, size_t,
			    const wchar_t * __restrict,
			    const struct tm * __restrict, locale_t);
size_t			 wcsrtombs_l(char * __restrict,
			    const wchar_t ** __restrict, size_t,
			    mbstate_t * __restrict, locale_t);
double			 wcstod_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long			 wcstol_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
unsigned long		 wcstoul_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
int			 wcswidth_l(const wchar_t *, size_t, locale_t);
int			 wctob_l(wint_t, locale_t);
int			 wcwidth_l(wchar_t, locale_t);
int			 wprintf_l(locale_t, const wchar_t * __restrict, ...);
int			 wscanf_l(locale_t, const wchar_t * __restrict, ...);
int			 vfwscanf_l(FILE * __restrict, locale_t,
			    const wchar_t * __restrict, __va_list);
int			 vswscanf_l(const wchar_t * __restrict, locale_t,
			    const wchar_t *__restrict, __va_list);
int			 vwscanf_l(locale_t, const wchar_t * __restrict,
			    __va_list);
float			 wcstof_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long double		 wcstold_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, locale_t);
long long		 wcstoll_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
unsigned long long	 wcstoull_l(const wchar_t * __restrict,
			    wchar_t ** __restrict, int, locale_t);
size_t			 mbsnrtowcs_l(wchar_t * __restrict,
			    const char ** __restrict, size_t, size_t,
			    mbstate_t * __restrict, locale_t);
size_t			 wcsnrtombs_l(char * __restrict,
			    const wchar_t ** __restrict, size_t, size_t,
			    mbstate_t * __restrict, locale_t);

#endif /* _XLOCALE_WCHAR_H */
# 135 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4
#endif /* _XLOCALE_H_ */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale/_wchar.h" 3 4
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 2 3 4
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4



struct lconv	*localeconv_l(locale_t);
__END_DECLS

#endif
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/xlocale.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 2 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__Fuchsia__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/fuchsia/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__wasi__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
// WASI libc uses musl's locales support.
#if 0 /* expanded by -frewrite-includes */
# include <__support/musl/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_HAS_MUSL_LIBC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
# include <__support/musl/xlocale.h>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#endif
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_LOCALE__L_EXTENSIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
struct __libcpp_locale_guard {
  _LIBCPP_INLINE_VISIBILITY
  __libcpp_locale_guard(locale_t& __loc) : __old_loc_(uselocale(__loc)) {}

  _LIBCPP_INLINE_VISIBILITY
  ~__libcpp_locale_guard() {
    if (__old_loc_)
      uselocale(__old_loc_);
  }

  locale_t __old_loc_;
private:
  __libcpp_locale_guard(__libcpp_locale_guard const&);
  __libcpp_locale_guard& operator=(__libcpp_locale_guard const&);
};
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
struct __libcpp_locale_guard {
    __libcpp_locale_guard(locale_t __l) :
        __status(_configthreadlocale(_ENABLE_PER_THREAD_LOCALE)) {
      // Setting the locale can be expensive even when the locale given is
      // already the current locale, so do an explicit check to see if the
      // current locale is already the one we want.
      const char* __lc = __setlocale(nullptr);
      // If every category is the same, the locale string will simply be the
      // locale name, otherwise it will be a semicolon-separated string listing
      // each category.  In the second case, we know at least one category won't
      // be what we want, so we only have to check the first case.
      if (_VSTD::strcmp(__l.__get_locale(), __lc) != 0) {
        __locale_all = _strdup(__lc);
        if (__locale_all == nullptr)
          __throw_bad_alloc();
        __setlocale(__l.__get_locale());
      }
    }
    ~__libcpp_locale_guard() {
      // The CRT documentation doesn't explicitly say, but setlocale() does the
      // right thing when given a semicolon-separated list of locale settings
      // for the different categories in the same format as returned by
      // setlocale(LC_ALL, nullptr).
      if (__locale_all != nullptr) {
        __setlocale(__locale_all);
        free(__locale_all);
      }
      _configthreadlocale(__status);
    }
    static const char* __setlocale(const char* __locale) {
      const char* __new_locale = setlocale(LC_ALL, __locale);
      if (__new_locale == nullptr)
        __throw_bad_alloc();
      return __new_locale;
    }
    int __status;
    char* __locale_all = nullptr;
};
#endif
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

class _LIBCPP_TYPE_VIS locale;

template <class _Facet>
_LIBCPP_INLINE_VISIBILITY
bool
has_facet(const locale&) _NOEXCEPT;

template <class _Facet>
_LIBCPP_INLINE_VISIBILITY
const _Facet&
use_facet(const locale&);

class _LIBCPP_TYPE_VIS locale
{
public:
    // types:
    class _LIBCPP_TYPE_VIS facet;
    class _LIBCPP_TYPE_VIS id;

    typedef int category;
    _LIBCPP_AVAILABILITY_LOCALE_CATEGORY
    static const category // values assigned here are for exposition only
        none     = 0,
        collate  = LC_COLLATE_MASK,
        ctype    = LC_CTYPE_MASK,
        monetary = LC_MONETARY_MASK,
        numeric  = LC_NUMERIC_MASK,
        time     = LC_TIME_MASK,
        messages = LC_MESSAGES_MASK,
        all = collate | ctype | monetary | numeric | time | messages;

    // construct/copy/destroy:
    locale()  _NOEXCEPT;
    locale(const locale&)  _NOEXCEPT;
    explicit locale(const char*);
    explicit locale(const string&);
    locale(const locale&, const char*, category);
    locale(const locale&, const string&, category);
    template <class _Facet>
        _LIBCPP_INLINE_VISIBILITY locale(const locale&, _Facet*);
    locale(const locale&, const locale&, category);

    ~locale();

    const locale& operator=(const locale&)  _NOEXCEPT;

    template <class _Facet>
      _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
      locale combine(const locale&) const;

    // locale operations:
    string name() const;
    bool operator==(const locale&) const;
    bool operator!=(const locale& __y) const {return !(*this == __y);}
    template <class _CharT, class _Traits, class _Allocator>
      _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
      bool operator()(const basic_string<_CharT, _Traits, _Allocator>&,
                      const basic_string<_CharT, _Traits, _Allocator>&) const;

    // global locale objects:
    static locale global(const locale&);
    static const locale& classic();

private:
    class __imp;
    __imp* __locale_;

    void __install_ctor(const locale&, facet*, long);
    static locale& __global();
    bool has_facet(id&) const;
    const facet* use_facet(id&) const;

    template <class _Facet> friend bool has_facet(const locale&)  _NOEXCEPT;
    template <class _Facet> friend const _Facet& use_facet(const locale&);
};

class _LIBCPP_TYPE_VIS locale::facet
    : public __shared_count
{
protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit facet(size_t __refs = 0)
        : __shared_count(static_cast<long>(__refs)-1) {}

    virtual ~facet();

//    facet(const facet&) = delete;     // effectively done in __shared_count
//    void operator=(const facet&) = delete;
private:
    virtual void __on_zero_shared() _NOEXCEPT;
};

class _LIBCPP_TYPE_VIS locale::id
{
    once_flag      __flag_;
    int32_t        __id_;

    static int32_t __next_id;
public:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR id() :__id_(0) {}
private:
    void __init();
    void operator=(const id&); // = delete;
    id(const id&); // = delete;
public:  // only needed for tests
    long __get();

    friend class locale;
    friend class locale::__imp;
};

template <class _Facet>
inline _LIBCPP_INLINE_VISIBILITY
locale::locale(const locale& __other, _Facet* __f)
{
    __install_ctor(__other, __f, __f ? __f->id.__get() : 0);
}

template <class _Facet>
locale
locale::combine(const locale& __other) const
{
    if (!_VSTD::has_facet<_Facet>(__other))
        __throw_runtime_error("locale::combine: locale missing facet");

    return locale(*this, &const_cast<_Facet&>(_VSTD::use_facet<_Facet>(__other)));
}

template <class _Facet>
inline _LIBCPP_INLINE_VISIBILITY
bool
has_facet(const locale& __l)  _NOEXCEPT
{
    return __l.has_facet(_Facet::id);
}

template <class _Facet>
inline _LIBCPP_INLINE_VISIBILITY
const _Facet&
use_facet(const locale& __l)
{
    return static_cast<const _Facet&>(*__l.use_facet(_Facet::id));
}

// template <class _CharT> class collate;

template <class _CharT>
class _LIBCPP_TEMPLATE_VIS collate
    : public locale::facet
{
public:
    typedef _CharT char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit collate(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    int compare(const char_type* __lo1, const char_type* __hi1,
                const char_type* __lo2, const char_type* __hi2) const
    {
        return do_compare(__lo1, __hi1, __lo2, __hi2);
    }

    // FIXME(EricWF): The _LIBCPP_ALWAYS_INLINE is needed on Windows to work
    // around a dllimport bug that expects an external instantiation.
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_ALWAYS_INLINE
    string_type transform(const char_type* __lo, const char_type* __hi) const
    {
        return do_transform(__lo, __hi);
    }

    _LIBCPP_INLINE_VISIBILITY
    long hash(const char_type* __lo, const char_type* __hi) const
    {
        return do_hash(__lo, __hi);
    }

    static locale::id id;

protected:
    ~collate();
    virtual int do_compare(const char_type* __lo1, const char_type* __hi1,
                           const char_type* __lo2, const char_type* __hi2) const;
    virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const
        {return string_type(__lo, __hi);}
    virtual long do_hash(const char_type* __lo, const char_type* __hi) const;
};

template <class _CharT> locale::id collate<_CharT>::id;

template <class _CharT>
collate<_CharT>::~collate()
{
}

template <class _CharT>
int
collate<_CharT>::do_compare(const char_type* __lo1, const char_type* __hi1,
                            const char_type* __lo2, const char_type* __hi2) const
{
    for (; __lo2 != __hi2; ++__lo1, ++__lo2)
    {
        if (__lo1 == __hi1 || *__lo1 < *__lo2)
            return -1;
        if (*__lo2 < *__lo1)
            return 1;
    }
    return __lo1 != __hi1;
}

template <class _CharT>
long
collate<_CharT>::do_hash(const char_type* __lo, const char_type* __hi) const
{
    size_t __h = 0;
    const size_t __sr = __CHAR_BIT__ * sizeof(size_t) - 8;
    const size_t __mask = size_t(0xF) << (__sr + 4);
    for(const char_type* __p = __lo; __p != __hi; ++__p)
    {
        __h = (__h << 4) + static_cast<size_t>(*__p);
        size_t __g = __h & __mask;
        __h ^= __g | (__g >> __sr);
    }
    return static_cast<long>(__h);
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate<wchar_t>)

// template <class CharT> class collate_byname;

template <class _CharT> class _LIBCPP_TEMPLATE_VIS collate_byname;

template <>
class _LIBCPP_TYPE_VIS collate_byname<char>
    : public collate<char>
{
    locale_t __l;
public:
    typedef char char_type;
    typedef basic_string<char_type> string_type;

    explicit collate_byname(const char* __n, size_t __refs = 0);
    explicit collate_byname(const string& __n, size_t __refs = 0);

protected:
    ~collate_byname();
    virtual int do_compare(const char_type* __lo1, const char_type* __hi1,
                           const char_type* __lo2, const char_type* __hi2) const;
    virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const;
};

template <>
class _LIBCPP_TYPE_VIS collate_byname<wchar_t>
    : public collate<wchar_t>
{
    locale_t __l;
public:
    typedef wchar_t char_type;
    typedef basic_string<char_type> string_type;

    explicit collate_byname(const char* __n, size_t __refs = 0);
    explicit collate_byname(const string& __n, size_t __refs = 0);

protected:
    ~collate_byname();

    virtual int do_compare(const char_type* __lo1, const char_type* __hi1,
                           const char_type* __lo2, const char_type* __hi2) const;
    virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const;
};

template <class _CharT, class _Traits, class _Allocator>
bool
locale::operator()(const basic_string<_CharT, _Traits, _Allocator>& __x,
                   const basic_string<_CharT, _Traits, _Allocator>& __y) const
{
    return _VSTD::use_facet<_VSTD::collate<_CharT> >(*this).compare(
                                       __x.data(), __x.data() + __x.size(),
                                       __y.data(), __y.data() + __y.size()) < 0;
}

// template <class charT> class ctype

class _LIBCPP_TYPE_VIS ctype_base
{
public:
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 404 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned long mask;
    static const mask space  = 1<<0;
    static const mask print  = 1<<1;
    static const mask cntrl  = 1<<2;
    static const mask upper  = 1<<3;
    static const mask lower  = 1<<4;
    static const mask alpha  = 1<<5;
    static const mask digit  = 1<<6;
    static const mask punct  = 1<<7;
    static const mask xdigit = 1<<8;
    static const mask blank  = 1<<9;
#if 0 /* disabled by -frewrite-includes */
#if defined(__BIONIC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    // Historically this was a part of regex_traits rather than ctype_base. The
    // historical value of the constant is preserved for ABI compatibility.
    static const mask __regex_word = 0x8000;
#else
# 420 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask __regex_word = 1<<10;
#endif // defined(__BIONIC__)
# 422 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GLIBC__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 423 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned short mask;
    static const mask space  = _ISspace;
    static const mask print  = _ISprint;
    static const mask cntrl  = _IScntrl;
    static const mask upper  = _ISupper;
    static const mask lower  = _ISlower;
    static const mask alpha  = _ISalpha;
    static const mask digit  = _ISdigit;
    static const mask punct  = _ISpunct;
    static const mask xdigit = _ISxdigit;
    static const mask blank  = _ISblank;
#if 0 /* disabled by -frewrite-includes */
#if defined(__mips__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 435 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask __regex_word = static_cast<mask>(_ISbit(15));
#else
# 437 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask __regex_word = 0x80;
#endif
# 439 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_LIBCPP_MSVCRT_LIKE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 440 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned short mask;
    static const mask space  = _SPACE;
    static const mask print  = _BLANK|_PUNCT|_ALPHA|_DIGIT;
    static const mask cntrl  = _CONTROL;
    static const mask upper  = _UPPER;
    static const mask lower  = _LOWER;
    static const mask alpha  = _ALPHA;
    static const mask digit  = _DIGIT;
    static const mask punct  = _PUNCT;
    static const mask xdigit = _HEX;
    static const mask blank  = _BLANK;
    static const mask __regex_word = 0x80;
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__EMSCRIPTEN__) || defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# ifdef __APPLE__
    typedef __uint32_t mask;
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__FreeBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 457 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned long mask;
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__EMSCRIPTEN__) || defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned short mask;
# endif
# 461 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask space  = _CTYPE_S;
    static const mask print  = _CTYPE_R;
    static const mask cntrl  = _CTYPE_C;
    static const mask upper  = _CTYPE_U;
    static const mask lower  = _CTYPE_L;
    static const mask alpha  = _CTYPE_A;
    static const mask digit  = _CTYPE_D;
    static const mask punct  = _CTYPE_P;
    static const mask xdigit = _CTYPE_X;

#if 0 /* disabled by -frewrite-includes */
# if defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 472 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask blank  = _CTYPE_BL;
    // NetBSD defines classes up to 0x2000
    // see sys/ctype_bits.h, _CTYPE_Q
    static const mask __regex_word = 0x8000;
# else
# 477 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask blank  = _CTYPE_B;
    static const mask __regex_word = 0x80;
# endif
# 480 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__sun__) || defined(_AIX)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 481 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    typedef unsigned int mask;
    static const mask space  = _ISSPACE;
    static const mask print  = _ISPRINT;
    static const mask cntrl  = _ISCNTRL;
    static const mask upper  = _ISUPPER;
    static const mask lower  = _ISLOWER;
    static const mask alpha  = _ISALPHA;
    static const mask digit  = _ISDIGIT;
    static const mask punct  = _ISPUNCT;
    static const mask xdigit = _ISXDIGIT;
    static const mask blank  = _ISBLANK;
    static const mask __regex_word = 0x80;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_NEWLIB_VERSION)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    // Same type as Newlib's _ctype_ array in newlib/libc/include/ctype.h.
    typedef char mask;
    static const mask space  = _S;
    static const mask print  = _P | _U | _L | _N | _B;
    static const mask cntrl  = _C;
    static const mask upper  = _U;
    static const mask lower  = _L;
    static const mask alpha  = _U | _L;
    static const mask digit  = _N;
    static const mask punct  = _P;
    static const mask xdigit = _X | _N;
    static const mask blank  = _B;
    static const mask __regex_word = 0x80;
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_ALPHA
# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_XDIGIT
#else
# 511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# error unknown rune table for this platform -- do you mean to define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE?
#endif
# 513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const mask alnum  = alpha | digit;
    static const mask graph  = alnum | punct;

    _LIBCPP_INLINE_VISIBILITY ctype_base() {}
};

template <class _CharT> class _LIBCPP_TEMPLATE_VIS ctype;

template <>
class _LIBCPP_TYPE_VIS ctype<wchar_t>
    : public locale::facet,
      public ctype_base
{
public:
    typedef wchar_t char_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit ctype(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    bool is(mask __m, char_type __c) const
    {
        return do_is(__m, __c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const
    {
        return do_is(__low, __high, __vec);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* scan_is(mask __m, const char_type* __low, const char_type* __high) const
    {
        return do_scan_is(__m, __low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const
    {
        return do_scan_not(__m, __low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type toupper(char_type __c) const
    {
        return do_toupper(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* toupper(char_type* __low, const char_type* __high) const
    {
        return do_toupper(__low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type tolower(char_type __c) const
    {
        return do_tolower(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* tolower(char_type* __low, const char_type* __high) const
    {
        return do_tolower(__low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type widen(char __c) const
    {
        return do_widen(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char* widen(const char* __low, const char* __high, char_type* __to) const
    {
        return do_widen(__low, __high, __to);
    }

    _LIBCPP_INLINE_VISIBILITY
    char narrow(char_type __c, char __dfault) const
    {
        return do_narrow(__c, __dfault);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const
    {
        return do_narrow(__low, __high, __dfault, __to);
    }

    static locale::id id;

protected:
    ~ctype();
    virtual bool do_is(mask __m, char_type __c) const;
    virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const;
    virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const;
    virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const;
    virtual char_type do_toupper(char_type) const;
    virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const;
    virtual char_type do_tolower(char_type) const;
    virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const;
    virtual char_type do_widen(char) const;
    virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const;
    virtual char do_narrow(char_type, char __dfault) const;
    virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const;
};

template <>
class _LIBCPP_TYPE_VIS ctype<char>
    : public locale::facet, public ctype_base
{
    const mask* __tab_;
    bool        __del_;
public:
    typedef char char_type;

    explicit ctype(const mask* __tab = nullptr, bool __del = false, size_t __refs = 0);

    _LIBCPP_INLINE_VISIBILITY
    bool is(mask __m, char_type __c) const
    {
        return isascii(__c) ? (__tab_[static_cast<int>(__c)] & __m) !=0 : false;
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const
    {
        for (; __low != __high; ++__low, ++__vec)
            *__vec = isascii(*__low) ? __tab_[static_cast<int>(*__low)] : 0;
        return __low;
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* scan_is (mask __m, const char_type* __low, const char_type* __high) const
    {
        for (; __low != __high; ++__low)
            if (isascii(*__low) && (__tab_[static_cast<int>(*__low)] & __m))
                break;
        return __low;
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const
    {
        for (; __low != __high; ++__low)
            if (!(isascii(*__low) && (__tab_[static_cast<int>(*__low)] & __m)))
                break;
        return __low;
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type toupper(char_type __c) const
    {
        return do_toupper(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* toupper(char_type* __low, const char_type* __high) const
    {
        return do_toupper(__low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type tolower(char_type __c) const
    {
        return do_tolower(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char_type* tolower(char_type* __low, const char_type* __high) const
    {
        return do_tolower(__low, __high);
    }

    _LIBCPP_INLINE_VISIBILITY
    char_type widen(char __c) const
    {
        return do_widen(__c);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char* widen(const char* __low, const char* __high, char_type* __to) const
    {
        return do_widen(__low, __high, __to);
    }

    _LIBCPP_INLINE_VISIBILITY
    char narrow(char_type __c, char __dfault) const
    {
        return do_narrow(__c, __dfault);
    }

    _LIBCPP_INLINE_VISIBILITY
    const char* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const
    {
        return do_narrow(__low, __high, __dfault, __to);
    }

    static locale::id id;

#ifdef _CACHED_RUNES
    static const size_t table_size = _CACHED_RUNES;
#else
# 719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const size_t table_size = 256;  // FIXME: Don't hardcode this.
#endif
# 721 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    _LIBCPP_INLINE_VISIBILITY const mask* table() const  _NOEXCEPT {return __tab_;}
    static const mask* classic_table()  _NOEXCEPT;
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBC__) || defined(__EMSCRIPTEN__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 724 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const int* __classic_upper_table() _NOEXCEPT;
    static const int* __classic_lower_table() _NOEXCEPT;
#endif
# 727 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
    static const short* __classic_upper_table() _NOEXCEPT;
    static const short* __classic_lower_table() _NOEXCEPT;
#endif
# 731 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

protected:
    ~ctype();
    virtual char_type do_toupper(char_type __c) const;
    virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const;
    virtual char_type do_tolower(char_type __c) const;
    virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const;
    virtual char_type do_widen(char __c) const;
    virtual const char* do_widen(const char* __low, const char* __high, char_type* __to) const;
    virtual char do_narrow(char_type __c, char __dfault) const;
    virtual const char* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const;
};

// template <class CharT> class ctype_byname;

template <class _CharT> class _LIBCPP_TEMPLATE_VIS ctype_byname;

template <>
class _LIBCPP_TYPE_VIS ctype_byname<char>
    : public ctype<char>
{
    locale_t __l;

public:
    explicit ctype_byname(const char*, size_t = 0);
    explicit ctype_byname(const string&, size_t = 0);

protected:
    ~ctype_byname();
    virtual char_type do_toupper(char_type) const;
    virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const;
    virtual char_type do_tolower(char_type) const;
    virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const;
};

template <>
class _LIBCPP_TYPE_VIS ctype_byname<wchar_t>
    : public ctype<wchar_t>
{
    locale_t __l;

public:
    explicit ctype_byname(const char*, size_t = 0);
    explicit ctype_byname(const string&, size_t = 0);

protected:
    ~ctype_byname();
    virtual bool do_is(mask __m, char_type __c) const;
    virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const;
    virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const;
    virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const;
    virtual char_type do_toupper(char_type) const;
    virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const;
    virtual char_type do_tolower(char_type) const;
    virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const;
    virtual char_type do_widen(char) const;
    virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const;
    virtual char do_narrow(char_type, char __dfault) const;
    virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const;
};

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isspace(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isprint(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
iscntrl(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isupper(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
islower(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isalpha(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isdigit(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
ispunct(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isxdigit(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isalnum(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
bool
isgraph(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
_CharT
toupper(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).toupper(__c);
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
_CharT
tolower(_CharT __c, const locale& __loc)
{
    return use_facet<ctype<_CharT> >(__loc).tolower(__c);
}

// codecvt_base

class _LIBCPP_TYPE_VIS codecvt_base
{
public:
    _LIBCPP_INLINE_VISIBILITY codecvt_base() {}
    enum result {ok, partial, error, noconv};
};

// template <class internT, class externT, class stateT> class codecvt;

template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_TEMPLATE_VIS codecvt;

// template <> class codecvt<char, char, mbstate_t>

template <>
class _LIBCPP_TYPE_VIS codecvt<char, char, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
public:
    typedef char      intern_type;
    typedef char      extern_type;
    typedef mbstate_t state_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(const char*, size_t __refs = 0)
        : locale::facet(__refs) {}

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

// template <> class codecvt<wchar_t, char, mbstate_t>

template <>
class _LIBCPP_TYPE_VIS codecvt<wchar_t, char, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
    locale_t __l;
public:
    typedef wchar_t   intern_type;
    typedef char      extern_type;
    typedef mbstate_t state_type;

    explicit codecvt(size_t __refs = 0);

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    explicit codecvt(const char*, size_t __refs = 0);

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

// template <> class codecvt<char16_t, char, mbstate_t> // deprecated in C++20

template <>
class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_TYPE_VIS codecvt<char16_t, char, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
public:
    typedef char16_t  intern_type;
    typedef char      extern_type;
    typedef mbstate_t state_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(const char*, size_t __refs = 0)
        : locale::facet(__refs) {}

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

#ifndef _LIBCPP_HAS_NO_CHAR8_T

// template <> class codecvt<char16_t, char8_t, mbstate_t> // C++20

template <>
class _LIBCPP_TYPE_VIS codecvt<char16_t, char8_t, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
public:
    typedef char16_t  intern_type;
    typedef char8_t   extern_type;
    typedef mbstate_t state_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(const char*, size_t __refs = 0)
        : locale::facet(__refs) {}

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

#endif
# 1253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

// template <> class codecvt<char32_t, char, mbstate_t> // deprecated in C++20

template <>
class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_TYPE_VIS codecvt<char32_t, char, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
public:
    typedef char32_t  intern_type;
    typedef char      extern_type;
    typedef mbstate_t state_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(const char*, size_t __refs = 0)
        : locale::facet(__refs) {}

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

#ifndef _LIBCPP_HAS_NO_CHAR8_T

// template <> class codecvt<char32_t, char8_t, mbstate_t> // C++20

template <>
class _LIBCPP_TYPE_VIS codecvt<char32_t, char8_t, mbstate_t>
    : public locale::facet,
      public codecvt_base
{
public:
    typedef char32_t  intern_type;
    typedef char8_t   extern_type;
    typedef mbstate_t state_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    result out(state_type& __st,
               const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
               extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result unshift(state_type& __st,
                   extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const
    {
        return do_unshift(__st, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    result in(state_type& __st,
              const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
              intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const
    {
        return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt);
    }

    _LIBCPP_INLINE_VISIBILITY
    int encoding() const  _NOEXCEPT
    {
        return do_encoding();
    }

    _LIBCPP_INLINE_VISIBILITY
    bool always_noconv() const  _NOEXCEPT
    {
        return do_always_noconv();
    }

    _LIBCPP_INLINE_VISIBILITY
    int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
    {
        return do_length(__st, __frm, __end, __mx);
    }

    _LIBCPP_INLINE_VISIBILITY
    int max_length() const  _NOEXCEPT
    {
        return do_max_length();
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt(const char*, size_t __refs = 0)
        : locale::facet(__refs) {}

    ~codecvt();

    virtual result do_out(state_type& __st,
                          const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt,
                          extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual result do_in(state_type& __st,
                         const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt,
                         intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const;
    virtual result do_unshift(state_type& __st,
                              extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const;
    virtual int do_encoding() const  _NOEXCEPT;
    virtual bool do_always_noconv() const  _NOEXCEPT;
    virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
    virtual int do_max_length() const  _NOEXCEPT;
};

#endif
# 1429 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

// template <class _InternT, class _ExternT, class _StateT> class codecvt_byname

template <class _InternT, class _ExternT, class _StateT>
class _LIBCPP_TEMPLATE_VIS codecvt_byname
    : public codecvt<_InternT, _ExternT, _StateT>
{
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt_byname(const char* __nm, size_t __refs = 0)
        : codecvt<_InternT, _ExternT, _StateT>(__nm, __refs) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit codecvt_byname(const string& __nm, size_t __refs = 0)
        : codecvt<_InternT, _ExternT, _StateT>(__nm.c_str(), __refs) {}
protected:
    ~codecvt_byname();
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <class _InternT, class _ExternT, class _StateT>
codecvt_byname<_InternT, _ExternT, _StateT>::~codecvt_byname()
{
}
_LIBCPP_SUPPRESS_DEPRECATED_POP

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char, char, mbstate_t>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<wchar_t, char, mbstate_t>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char16_t, char, mbstate_t>) // deprecated in C++20
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char32_t, char, mbstate_t>) // deprecated in C++20
#ifndef _LIBCPP_HAS_NO_CHAR8_T
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char16_t, char8_t, mbstate_t>) // C++20
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char32_t, char8_t, mbstate_t>) // C++20
#endif
# 1462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3

template <size_t _Np>
struct __narrow_to_utf8
{
    template <class _OutputIterator, class _CharT>
    _OutputIterator
    operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const;
};

template <>
struct __narrow_to_utf8<8>
{
    template <class _OutputIterator, class _CharT>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const
    {
        for (; __wb < __we; ++__wb, ++__s)
            *__s = *__wb;
        return __s;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TYPE_VIS __narrow_to_utf8<16>
    : public codecvt<char16_t, char, mbstate_t>
{
    _LIBCPP_INLINE_VISIBILITY
    __narrow_to_utf8() : codecvt<char16_t, char, mbstate_t>(1) {}
_LIBCPP_SUPPRESS_DEPRECATED_POP

    ~__narrow_to_utf8();

    template <class _OutputIterator, class _CharT>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const
    {
        result __r = ok;
        mbstate_t __mb;
        while (__wb < __we && __r != error)
        {
            const int __sz = 32;
            char __buf[__sz];
            char* __bn;
            const char16_t* __wn = (const char16_t*)__wb;
            __r = do_out(__mb, (const char16_t*)__wb, (const char16_t*)__we, __wn,
                         __buf, __buf+__sz, __bn);
            if (__r == codecvt_base::error || __wn == (const char16_t*)__wb)
                __throw_runtime_error("locale not supported");
            for (const char* __p = __buf; __p < __bn; ++__p, ++__s)
                *__s = *__p;
            __wb = (const _CharT*)__wn;
        }
        return __s;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TYPE_VIS __narrow_to_utf8<32>
    : public codecvt<char32_t, char, mbstate_t>
{
    _LIBCPP_INLINE_VISIBILITY
    __narrow_to_utf8() : codecvt<char32_t, char, mbstate_t>(1) {}
_LIBCPP_SUPPRESS_DEPRECATED_POP

    ~__narrow_to_utf8();

    template <class _OutputIterator, class _CharT>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const
    {
        result __r = ok;
        mbstate_t __mb;
        while (__wb < __we && __r != error)
        {
            const int __sz = 32;
            char __buf[__sz];
            char* __bn;
            const char32_t* __wn = (const char32_t*)__wb;
            __r = do_out(__mb, (const char32_t*)__wb, (const char32_t*)__we, __wn,
                         __buf, __buf+__sz, __bn);
            if (__r == codecvt_base::error || __wn == (const char32_t*)__wb)
                __throw_runtime_error("locale not supported");
            for (const char* __p = __buf; __p < __bn; ++__p, ++__s)
                *__s = *__p;
            __wb = (const _CharT*)__wn;
        }
        return __s;
    }
};

template <size_t _Np>
struct __widen_from_utf8
{
    template <class _OutputIterator>
    _OutputIterator
    operator()(_OutputIterator __s, const char* __nb, const char* __ne) const;
};

template <>
struct __widen_from_utf8<8>
{
    template <class _OutputIterator>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const char* __nb, const char* __ne) const
    {
        for (; __nb < __ne; ++__nb, ++__s)
            *__s = *__nb;
        return __s;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TYPE_VIS __widen_from_utf8<16>
    : public codecvt<char16_t, char, mbstate_t>
{
    _LIBCPP_INLINE_VISIBILITY
    __widen_from_utf8() : codecvt<char16_t, char, mbstate_t>(1) {}
_LIBCPP_SUPPRESS_DEPRECATED_POP

    ~__widen_from_utf8();

    template <class _OutputIterator>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const char* __nb, const char* __ne) const
    {
        result __r = ok;
        mbstate_t __mb;
        while (__nb < __ne && __r != error)
        {
            const int __sz = 32;
            char16_t __buf[__sz];
            char16_t* __bn;
            const char* __nn = __nb;
            __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn,
                        __buf, __buf+__sz, __bn);
            if (__r == codecvt_base::error || __nn == __nb)
                __throw_runtime_error("locale not supported");
            for (const char16_t* __p = __buf; __p < __bn; ++__p, ++__s)
                *__s = *__p;
            __nb = __nn;
        }
        return __s;
    }
};

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
template <>
struct _LIBCPP_TYPE_VIS __widen_from_utf8<32>
    : public codecvt<char32_t, char, mbstate_t>
{
    _LIBCPP_INLINE_VISIBILITY
    __widen_from_utf8() : codecvt<char32_t, char, mbstate_t>(1) {}
_LIBCPP_SUPPRESS_DEPRECATED_POP

    ~__widen_from_utf8();

    template <class _OutputIterator>
    _LIBCPP_INLINE_VISIBILITY
    _OutputIterator
    operator()(_OutputIterator __s, const char* __nb, const char* __ne) const
    {
        result __r = ok;
        mbstate_t __mb;
        while (__nb < __ne && __r != error)
        {
            const int __sz = 32;
            char32_t __buf[__sz];
            char32_t* __bn;
            const char* __nn = __nb;
            __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn,
                        __buf, __buf+__sz, __bn);
            if (__r == codecvt_base::error || __nn == __nb)
                __throw_runtime_error("locale not supported");
            for (const char32_t* __p = __buf; __p < __bn; ++__p, ++__s)
                *__s = *__p;
            __nb = __nn;
        }
        return __s;
    }
};

// template <class charT> class numpunct

template <class _CharT> class _LIBCPP_TEMPLATE_VIS numpunct;

template <>
class _LIBCPP_TYPE_VIS numpunct<char>
    : public locale::facet
{
public:
    typedef char char_type;
    typedef basic_string<char_type> string_type;

    explicit numpunct(size_t __refs = 0);

    _LIBCPP_INLINE_VISIBILITY char_type decimal_point() const {return do_decimal_point();}
    _LIBCPP_INLINE_VISIBILITY char_type thousands_sep() const {return do_thousands_sep();}
    _LIBCPP_INLINE_VISIBILITY string grouping() const         {return do_grouping();}
    _LIBCPP_INLINE_VISIBILITY string_type truename() const    {return do_truename();}
    _LIBCPP_INLINE_VISIBILITY string_type falsename() const   {return do_falsename();}

    static locale::id id;

protected:
    ~numpunct();
    virtual char_type do_decimal_point() const;
    virtual char_type do_thousands_sep() const;
    virtual string do_grouping() const;
    virtual string_type do_truename() const;
    virtual string_type do_falsename() const;

    char_type __decimal_point_;
    char_type __thousands_sep_;
    string __grouping_;
};

template <>
class _LIBCPP_TYPE_VIS numpunct<wchar_t>
    : public locale::facet
{
public:
    typedef wchar_t char_type;
    typedef basic_string<char_type> string_type;

    explicit numpunct(size_t __refs = 0);

    _LIBCPP_INLINE_VISIBILITY char_type decimal_point() const {return do_decimal_point();}
    _LIBCPP_INLINE_VISIBILITY char_type thousands_sep() const {return do_thousands_sep();}
    _LIBCPP_INLINE_VISIBILITY string grouping() const         {return do_grouping();}
    _LIBCPP_INLINE_VISIBILITY string_type truename() const    {return do_truename();}
    _LIBCPP_INLINE_VISIBILITY string_type falsename() const   {return do_falsename();}

    static locale::id id;

protected:
    ~numpunct();
    virtual char_type do_decimal_point() const;
    virtual char_type do_thousands_sep() const;
    virtual string do_grouping() const;
    virtual string_type do_truename() const;
    virtual string_type do_falsename() const;

    char_type __decimal_point_;
    char_type __thousands_sep_;
    string __grouping_;
};

// template <class charT> class numpunct_byname

template <class _CharT> class _LIBCPP_TEMPLATE_VIS numpunct_byname;

template <>
class _LIBCPP_TYPE_VIS numpunct_byname<char>
: public numpunct<char>
{
public:
    typedef char char_type;
    typedef basic_string<char_type> string_type;

    explicit numpunct_byname(const char* __nm, size_t __refs = 0);
    explicit numpunct_byname(const string& __nm, size_t __refs = 0);

protected:
    ~numpunct_byname();

private:
    void __init(const char*);
};

template <>
class _LIBCPP_TYPE_VIS numpunct_byname<wchar_t>
: public numpunct<wchar_t>
{
public:
    typedef wchar_t char_type;
    typedef basic_string<char_type> string_type;

    explicit numpunct_byname(const char* __nm, size_t __refs = 0);
    explicit numpunct_byname(const string& __nm, size_t __refs = 0);

protected:
    ~numpunct_byname();

private:
    void __init(const char*);
};

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___LOCALE
# 1760 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__locale" 3
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 215 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#if 0 /* expanded by -frewrite-includes */
#include <system_error>
#endif /* expanded by -frewrite-includes */
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#if 0 /* expanded by -frewrite-includes */
#include <atomic>     // for __xindex_
#endif /* expanded by -frewrite-includes */
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#endif
# 221 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
#endif
# 225 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

_LIBCPP_BEGIN_NAMESPACE_STD

typedef ptrdiff_t streamsize;

class _LIBCPP_TYPE_VIS ios_base
{
public:
    class _LIBCPP_EXCEPTION_ABI failure;

    typedef unsigned int fmtflags;
    static const fmtflags boolalpha   = 0x0001;
    static const fmtflags dec         = 0x0002;
    static const fmtflags fixed       = 0x0004;
    static const fmtflags hex         = 0x0008;
    static const fmtflags internal    = 0x0010;
    static const fmtflags left        = 0x0020;
    static const fmtflags oct         = 0x0040;
    static const fmtflags right       = 0x0080;
    static const fmtflags scientific  = 0x0100;
    static const fmtflags showbase    = 0x0200;
    static const fmtflags showpoint   = 0x0400;
    static const fmtflags showpos     = 0x0800;
    static const fmtflags skipws      = 0x1000;
    static const fmtflags unitbuf     = 0x2000;
    static const fmtflags uppercase   = 0x4000;
    static const fmtflags adjustfield = left | right | internal;
    static const fmtflags basefield   = dec | oct | hex;
    static const fmtflags floatfield  = scientific | fixed;

    typedef unsigned int iostate;
    static const iostate badbit  = 0x1;
    static const iostate eofbit  = 0x2;
    static const iostate failbit = 0x4;
    static const iostate goodbit = 0x0;

    typedef unsigned int openmode;
    static const openmode app    = 0x01;
    static const openmode ate    = 0x02;
    static const openmode binary = 0x04;
    static const openmode in     = 0x08;
    static const openmode out    = 0x10;
    static const openmode trunc  = 0x20;

    enum seekdir {beg, cur, end};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    typedef iostate      io_state;
    typedef openmode     open_mode;
    typedef seekdir      seek_dir;

    typedef _VSTD::streamoff streamoff;
    typedef _VSTD::streampos streampos;
#endif
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

    class _LIBCPP_TYPE_VIS Init;

    // 27.5.2.2 fmtflags state:
    _LIBCPP_INLINE_VISIBILITY fmtflags flags() const;
    _LIBCPP_INLINE_VISIBILITY fmtflags flags(fmtflags __fmtfl);
    _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl);
    _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl, fmtflags __mask);
    _LIBCPP_INLINE_VISIBILITY void unsetf(fmtflags __mask);

    _LIBCPP_INLINE_VISIBILITY streamsize precision() const;
    _LIBCPP_INLINE_VISIBILITY streamsize precision(streamsize __prec);
    _LIBCPP_INLINE_VISIBILITY streamsize width() const;
    _LIBCPP_INLINE_VISIBILITY streamsize width(streamsize __wide);

    // 27.5.2.3 locales:
    locale imbue(const locale& __loc);
    locale getloc() const;

    // 27.5.2.5 storage:
    static int xalloc();
    long& iword(int __index);
    void*& pword(int __index);

    // destructor
    virtual ~ios_base();

    // 27.5.2.6 callbacks;
    enum event { erase_event, imbue_event, copyfmt_event };
    typedef void (*event_callback)(event, ios_base&, int __index);
    void register_callback(event_callback __fn, int __index);

private:
    ios_base(const ios_base&); // = delete;
    ios_base& operator=(const ios_base&); // = delete;

public:
    static bool sync_with_stdio(bool __sync = true);

    _LIBCPP_INLINE_VISIBILITY iostate rdstate() const;
    void clear(iostate __state = goodbit);
    _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state);

    _LIBCPP_INLINE_VISIBILITY bool good() const;
    _LIBCPP_INLINE_VISIBILITY bool eof() const;
    _LIBCPP_INLINE_VISIBILITY bool fail() const;
    _LIBCPP_INLINE_VISIBILITY bool bad() const;

    _LIBCPP_INLINE_VISIBILITY iostate exceptions() const;
    _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate);

    void __set_badbit_and_consider_rethrow();
    void __set_failbit_and_consider_rethrow();

    _LIBCPP_INLINE_VISIBILITY
    void __setstate_nothrow(iostate __state)
    {
        if (__rdbuf_)
            __rdstate_ |= __state;
        else
            __rdstate_ |= __state | ios_base::badbit;
    }

protected:
    _LIBCPP_INLINE_VISIBILITY
    ios_base() {// purposefully does no initialization
               }

    void init(void* __sb);
    _LIBCPP_INLINE_VISIBILITY void* rdbuf() const {return __rdbuf_;}

    _LIBCPP_INLINE_VISIBILITY
    void rdbuf(void* __sb)
    {
        __rdbuf_ = __sb;
        clear();
    }

    void __call_callbacks(event);
    void copyfmt(const ios_base&);
    void move(ios_base&);
    void swap(ios_base&) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    void set_rdbuf(void* __sb)
    {
        __rdbuf_ = __sb;
    }

private:
    // All data members must be scalars
    fmtflags        __fmtflags_;
    streamsize      __precision_;
    streamsize      __width_;
    iostate         __rdstate_;
    iostate         __exceptions_;
    void*           __rdbuf_;
    void*           __loc_;
    event_callback* __fn_;
    int*            __index_;
    size_t          __event_size_;
    size_t          __event_cap_;
// TODO(EricWF): Enable this for both Clang and GCC. Currently it is only
// enabled with clang.
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_NO_THREADS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    static atomic<int> __xindex_;
#else
# 386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    static int      __xindex_;
#endif
# 388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    long*           __iarray_;
    size_t          __iarray_size_;
    size_t          __iarray_cap_;
    void**          __parray_;
    size_t          __parray_size_;
    size_t          __parray_cap_;
};

//enum class io_errc
_LIBCPP_DECLARE_STRONG_ENUM(io_errc)
{
    stream = 1
};
_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc)

template <>
struct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc> : public true_type { };

#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
template <>
struct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc::__lx> : public true_type { };
#endif
# 410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

_LIBCPP_FUNC_VIS
const error_category& iostream_category() _NOEXCEPT;

inline _LIBCPP_INLINE_VISIBILITY
error_code
make_error_code(io_errc __e) _NOEXCEPT
{
    return error_code(static_cast<int>(__e), iostream_category());
}

inline _LIBCPP_INLINE_VISIBILITY
error_condition
make_error_condition(io_errc __e) _NOEXCEPT
{
    return error_condition(static_cast<int>(__e), iostream_category());
}

class _LIBCPP_EXCEPTION_ABI ios_base::failure
    : public system_error
{
public:
    explicit failure(const string& __msg, const error_code& __ec = io_errc::stream);
    explicit failure(const char* __msg, const error_code& __ec = io_errc::stream);
    failure(const failure&) _NOEXCEPT = default;
    virtual ~failure() _NOEXCEPT;
};

_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
void __throw_failure(char const* __msg) {
#ifndef _LIBCPP_NO_EXCEPTIONS
    throw ios_base::failure(__msg);
#else
# 443 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    ((void)__msg);
    _VSTD::abort();
#endif
# 446 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
}

class _LIBCPP_TYPE_VIS ios_base::Init
{
public:
    Init();
    ~Init();
};

// fmtflags

inline _LIBCPP_INLINE_VISIBILITY
ios_base::fmtflags
ios_base::flags() const
{
    return __fmtflags_;
}

inline _LIBCPP_INLINE_VISIBILITY
ios_base::fmtflags
ios_base::flags(fmtflags __fmtfl)
{
    fmtflags __r = __fmtflags_;
    __fmtflags_ = __fmtfl;
    return __r;
}

inline _LIBCPP_INLINE_VISIBILITY
ios_base::fmtflags
ios_base::setf(fmtflags __fmtfl)
{
    fmtflags __r = __fmtflags_;
    __fmtflags_ |= __fmtfl;
    return __r;
}

inline _LIBCPP_INLINE_VISIBILITY
void
ios_base::unsetf(fmtflags __mask)
{
    __fmtflags_ &= ~__mask;
}

inline _LIBCPP_INLINE_VISIBILITY
ios_base::fmtflags
ios_base::setf(fmtflags __fmtfl, fmtflags __mask)
{
    fmtflags __r = __fmtflags_;
    unsetf(__mask);
    __fmtflags_ |= __fmtfl & __mask;
    return __r;
}

// precision

inline _LIBCPP_INLINE_VISIBILITY
streamsize
ios_base::precision() const
{
    return __precision_;
}

inline _LIBCPP_INLINE_VISIBILITY
streamsize
ios_base::precision(streamsize __prec)
{
    streamsize __r = __precision_;
    __precision_ = __prec;
    return __r;
}

// width

inline _LIBCPP_INLINE_VISIBILITY
streamsize
ios_base::width() const
{
    return __width_;
}

inline _LIBCPP_INLINE_VISIBILITY
streamsize
ios_base::width(streamsize __wide)
{
    streamsize __r = __width_;
    __width_ = __wide;
    return __r;
}

// iostate

inline _LIBCPP_INLINE_VISIBILITY
ios_base::iostate
ios_base::rdstate() const
{
    return __rdstate_;
}

inline _LIBCPP_INLINE_VISIBILITY
void
ios_base::setstate(iostate __state)
{
    clear(__rdstate_ | __state);
}

inline _LIBCPP_INLINE_VISIBILITY
bool
ios_base::good() const
{
    return __rdstate_ == 0;
}

inline _LIBCPP_INLINE_VISIBILITY
bool
ios_base::eof() const
{
    return (__rdstate_ & eofbit) != 0;
}

inline _LIBCPP_INLINE_VISIBILITY
bool
ios_base::fail() const
{
    return (__rdstate_ & (failbit | badbit)) != 0;
}

inline _LIBCPP_INLINE_VISIBILITY
bool
ios_base::bad() const
{
    return (__rdstate_ & badbit) != 0;
}

inline _LIBCPP_INLINE_VISIBILITY
ios_base::iostate
ios_base::exceptions() const
{
    return __exceptions_;
}

inline _LIBCPP_INLINE_VISIBILITY
void
ios_base::exceptions(iostate __iostate)
{
    __exceptions_ = __iostate;
    clear(__rdstate_);
}

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_ios
    : public ios_base
{
public:
    // types:
    typedef _CharT char_type;
    typedef _Traits traits_type;

    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    static_assert((is_same<_CharT, typename traits_type::char_type>::value),
                  "traits_type::char_type must be the same type as CharT");

#ifdef _LIBCPP_CXX03_LANG
    // Preserve the ability to compare with literal 0,
    // and implicitly convert to bool, but not implicitly convert to int.
    _LIBCPP_INLINE_VISIBILITY
    operator void*() const {return fail() ? nullptr : (void*)this;}
#else
# 616 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const {return !fail();}
#endif
# 619 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3

    _LIBCPP_INLINE_VISIBILITY bool operator!() const    {return  fail();}
    _LIBCPP_INLINE_VISIBILITY iostate rdstate() const   {return ios_base::rdstate();}
    _LIBCPP_INLINE_VISIBILITY void clear(iostate __state = goodbit) {ios_base::clear(__state);}
    _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state) {ios_base::setstate(__state);}
    _LIBCPP_INLINE_VISIBILITY bool good() const {return ios_base::good();}
    _LIBCPP_INLINE_VISIBILITY bool eof() const  {return ios_base::eof();}
    _LIBCPP_INLINE_VISIBILITY bool fail() const {return ios_base::fail();}
    _LIBCPP_INLINE_VISIBILITY bool bad() const  {return ios_base::bad();}

    _LIBCPP_INLINE_VISIBILITY iostate exceptions() const {return ios_base::exceptions();}
    _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);}

    // 27.5.4.1 Constructor/destructor:
    _LIBCPP_INLINE_VISIBILITY
    explicit basic_ios(basic_streambuf<char_type,traits_type>* __sb);
    virtual ~basic_ios();

    // 27.5.4.2 Members:
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<char_type, traits_type>* tie() const;
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<char_type, traits_type>* tie(basic_ostream<char_type, traits_type>* __tiestr);

    _LIBCPP_INLINE_VISIBILITY
    basic_streambuf<char_type, traits_type>* rdbuf() const;
    _LIBCPP_INLINE_VISIBILITY
    basic_streambuf<char_type, traits_type>* rdbuf(basic_streambuf<char_type, traits_type>* __sb);

    basic_ios& copyfmt(const basic_ios& __rhs);

    _LIBCPP_INLINE_VISIBILITY
    char_type fill() const;
    _LIBCPP_INLINE_VISIBILITY
    char_type fill(char_type __ch);

    _LIBCPP_INLINE_VISIBILITY
    locale imbue(const locale& __loc);

    _LIBCPP_INLINE_VISIBILITY
    char narrow(char_type __c, char __dfault) const;
    _LIBCPP_INLINE_VISIBILITY
    char_type widen(char __c) const;

protected:
    _LIBCPP_INLINE_VISIBILITY
    basic_ios() {// purposefully does no initialization
                }
    _LIBCPP_INLINE_VISIBILITY
    void init(basic_streambuf<char_type, traits_type>* __sb);

    _LIBCPP_INLINE_VISIBILITY
    void move(basic_ios& __rhs);
    _LIBCPP_INLINE_VISIBILITY
    void move(basic_ios&& __rhs) {move(__rhs);}
    _LIBCPP_INLINE_VISIBILITY
    void swap(basic_ios& __rhs) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void set_rdbuf(basic_streambuf<char_type, traits_type>* __sb);
private:
    basic_ostream<char_type, traits_type>* __tie_;
    mutable int_type __fill_;
};

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_ios<_CharT, _Traits>::basic_ios(basic_streambuf<char_type,traits_type>* __sb)
{
    init(__sb);
}

template <class _CharT, class _Traits>
basic_ios<_CharT, _Traits>::~basic_ios()
{
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
void
basic_ios<_CharT, _Traits>::init(basic_streambuf<char_type, traits_type>* __sb)
{
    ios_base::init(__sb);
    __tie_ = nullptr;
    __fill_ = traits_type::eof();
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>*
basic_ios<_CharT, _Traits>::tie() const
{
    return __tie_;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>*
basic_ios<_CharT, _Traits>::tie(basic_ostream<char_type, traits_type>* __tiestr)
{
    basic_ostream<char_type, traits_type>* __r = __tie_;
    __tie_ = __tiestr;
    return __r;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_streambuf<_CharT, _Traits>*
basic_ios<_CharT, _Traits>::rdbuf() const
{
    return static_cast<basic_streambuf<char_type, traits_type>*>(ios_base::rdbuf());
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_streambuf<_CharT, _Traits>*
basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<char_type, traits_type>* __sb)
{
    basic_streambuf<char_type, traits_type>* __r = rdbuf();
    ios_base::rdbuf(__sb);
    return __r;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
locale
basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
{
    locale __r = getloc();
    ios_base::imbue(__loc);
    if (rdbuf())
        rdbuf()->pubimbue(__loc);
    return __r;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
char
basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const
{
    return use_facet<ctype<char_type> >(getloc()).narrow(__c, __dfault);
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
_CharT
basic_ios<_CharT, _Traits>::widen(char __c) const
{
    return use_facet<ctype<char_type> >(getloc()).widen(__c);
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
_CharT
basic_ios<_CharT, _Traits>::fill() const
{
    if (traits_type::eq_int_type(traits_type::eof(), __fill_))
        __fill_ = widen(' ');
    return __fill_;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
_CharT
basic_ios<_CharT, _Traits>::fill(char_type __ch)
{
    char_type __r = __fill_;
    __fill_ = __ch;
    return __r;
}

template <class _CharT, class _Traits>
basic_ios<_CharT, _Traits>&
basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
{
    if (this != &__rhs)
    {
        __call_callbacks(erase_event);
        ios_base::copyfmt(__rhs);
        __tie_ = __rhs.__tie_;
        __fill_ = __rhs.__fill_;
        __call_callbacks(copyfmt_event);
        exceptions(__rhs.exceptions());
    }
    return *this;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
void
basic_ios<_CharT, _Traits>::move(basic_ios& __rhs)
{
    ios_base::move(__rhs);
    __tie_ = __rhs.__tie_;
    __rhs.__tie_ = nullptr;
    __fill_ = __rhs.__fill_;
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
void
basic_ios<_CharT, _Traits>::swap(basic_ios& __rhs) _NOEXCEPT
{
    ios_base::swap(__rhs);
    _VSTD::swap(__tie_, __rhs.__tie_);
    _VSTD::swap(__fill_, __rhs.__fill_);
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
void
basic_ios<_CharT, _Traits>::set_rdbuf(basic_streambuf<char_type, traits_type>* __sb)
{
    ios_base::set_rdbuf(__sb);
}

inline
ios_base&
boolalpha(ios_base& __str)
{
    __str.setf(ios_base::boolalpha);
    return __str;
}

inline
ios_base&
noboolalpha(ios_base& __str)
{
    __str.unsetf(ios_base::boolalpha);
    return __str;
}

inline
ios_base&
showbase(ios_base& __str)
{
    __str.setf(ios_base::showbase);
    return __str;
}

inline
ios_base&
noshowbase(ios_base& __str)
{
    __str.unsetf(ios_base::showbase);
    return __str;
}

inline
ios_base&
showpoint(ios_base& __str)
{
    __str.setf(ios_base::showpoint);
    return __str;
}

inline
ios_base&
noshowpoint(ios_base& __str)
{
    __str.unsetf(ios_base::showpoint);
    return __str;
}

inline
ios_base&
showpos(ios_base& __str)
{
    __str.setf(ios_base::showpos);
    return __str;
}

inline
ios_base&
noshowpos(ios_base& __str)
{
    __str.unsetf(ios_base::showpos);
    return __str;
}

inline
ios_base&
skipws(ios_base& __str)
{
    __str.setf(ios_base::skipws);
    return __str;
}

inline
ios_base&
noskipws(ios_base& __str)
{
    __str.unsetf(ios_base::skipws);
    return __str;
}

inline
ios_base&
uppercase(ios_base& __str)
{
    __str.setf(ios_base::uppercase);
    return __str;
}

inline
ios_base&
nouppercase(ios_base& __str)
{
    __str.unsetf(ios_base::uppercase);
    return __str;
}

inline
ios_base&
unitbuf(ios_base& __str)
{
    __str.setf(ios_base::unitbuf);
    return __str;
}

inline
ios_base&
nounitbuf(ios_base& __str)
{
    __str.unsetf(ios_base::unitbuf);
    return __str;
}

inline
ios_base&
internal(ios_base& __str)
{
    __str.setf(ios_base::internal, ios_base::adjustfield);
    return __str;
}

inline
ios_base&
left(ios_base& __str)
{
    __str.setf(ios_base::left, ios_base::adjustfield);
    return __str;
}

inline
ios_base&
right(ios_base& __str)
{
    __str.setf(ios_base::right, ios_base::adjustfield);
    return __str;
}

inline
ios_base&
dec(ios_base& __str)
{
    __str.setf(ios_base::dec, ios_base::basefield);
    return __str;
}

inline
ios_base&
hex(ios_base& __str)
{
    __str.setf(ios_base::hex, ios_base::basefield);
    return __str;
}

inline
ios_base&
oct(ios_base& __str)
{
    __str.setf(ios_base::oct, ios_base::basefield);
    return __str;
}

inline
ios_base&
fixed(ios_base& __str)
{
    __str.setf(ios_base::fixed, ios_base::floatfield);
    return __str;
}

inline
ios_base&
scientific(ios_base& __str)
{
    __str.setf(ios_base::scientific, ios_base::floatfield);
    return __str;
}

inline
ios_base&
hexfloat(ios_base& __str)
{
    __str.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
    return __str;
}

inline
ios_base&
defaultfloat(ios_base& __str)
{
    __str.unsetf(ios_base::floatfield);
    return __str;
}

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_IOS
# 1029 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ios" 3
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <istream>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 1 3
// -*- C++ -*-
//===--------------------------- istream ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_ISTREAM
#define _LIBCPP_ISTREAM

/*
    istream synopsis

template <class charT, class traits = char_traits<charT> >
class basic_istream
    : virtual public basic_ios<charT,traits>
{
public:
    // types (inherited from basic_ios (27.5.4)):
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // 27.7.1.1.1 Constructor/destructor:
    explicit basic_istream(basic_streambuf<char_type, traits_type>* sb);
    basic_istream(basic_istream&& rhs);
    virtual ~basic_istream();

    // 27.7.1.1.2 Assign/swap:
    basic_istream& operator=(basic_istream&& rhs);
    void swap(basic_istream& rhs);

    // 27.7.1.1.3 Prefix/suffix:
    class sentry;

    // 27.7.1.2 Formatted input:
    basic_istream& operator>>(basic_istream& (*pf)(basic_istream&));
    basic_istream& operator>>(basic_ios<char_type, traits_type>&
                              (*pf)(basic_ios<char_type, traits_type>&));
    basic_istream& operator>>(ios_base& (*pf)(ios_base&));
    basic_istream& operator>>(basic_streambuf<char_type, traits_type>* sb);
    basic_istream& operator>>(bool& n);
    basic_istream& operator>>(short& n);
    basic_istream& operator>>(unsigned short& n);
    basic_istream& operator>>(int& n);
    basic_istream& operator>>(unsigned int& n);
    basic_istream& operator>>(long& n);
    basic_istream& operator>>(unsigned long& n);
    basic_istream& operator>>(long long& n);
    basic_istream& operator>>(unsigned long long& n);
    basic_istream& operator>>(float& f);
    basic_istream& operator>>(double& f);
    basic_istream& operator>>(long double& f);
    basic_istream& operator>>(void*& p);

    // 27.7.1.3 Unformatted input:
    streamsize gcount() const;
    int_type get();
    basic_istream& get(char_type& c);
    basic_istream& get(char_type* s, streamsize n);
    basic_istream& get(char_type* s, streamsize n, char_type delim);
    basic_istream& get(basic_streambuf<char_type,traits_type>& sb);
    basic_istream& get(basic_streambuf<char_type,traits_type>& sb, char_type delim);

    basic_istream& getline(char_type* s, streamsize n);
    basic_istream& getline(char_type* s, streamsize n, char_type delim);

    basic_istream& ignore(streamsize n = 1, int_type delim = traits_type::eof());
    int_type peek();
    basic_istream& read (char_type* s, streamsize n);
    streamsize readsome(char_type* s, streamsize n);

    basic_istream& putback(char_type c);
    basic_istream& unget();
    int sync();

    pos_type tellg();
    basic_istream& seekg(pos_type);
    basic_istream& seekg(off_type, ios_base::seekdir);
protected:
    basic_istream(const basic_istream& rhs) = delete;
    basic_istream(basic_istream&& rhs);
    // 27.7.2.1.2 Assign/swap:
    basic_istream& operator=(const basic_istream& rhs) = delete;
    basic_istream& operator=(basic_istream&& rhs);
    void swap(basic_istream& rhs);
};

// 27.7.1.2.3 character extraction templates:
template<class charT, class traits>
  basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&, charT&);

template<class traits>
  basic_istream<char,traits>& operator>>(basic_istream<char,traits>&, unsigned char&);

template<class traits>
  basic_istream<char,traits>& operator>>(basic_istream<char,traits>&, signed char&);

template<class charT, class traits>
  basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&, charT*);

template<class traits>
  basic_istream<char,traits>& operator>>(basic_istream<char,traits>&, unsigned char*);

template<class traits>
  basic_istream<char,traits>& operator>>(basic_istream<char,traits>&, signed char*);

template <class charT, class traits>
  void
  swap(basic_istream<charT, traits>& x, basic_istream<charT, traits>& y);

typedef basic_istream<char> istream;
typedef basic_istream<wchar_t> wistream;

template <class charT, class traits = char_traits<charT> >
class basic_iostream :
    public basic_istream<charT,traits>,
    public basic_ostream<charT,traits>
{
public:
    // types:
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // constructor/destructor
    explicit basic_iostream(basic_streambuf<char_type, traits_type>* sb);
    basic_iostream(basic_iostream&& rhs);
    virtual ~basic_iostream();

    // assign/swap
    basic_iostream& operator=(basic_iostream&& rhs);
    void swap(basic_iostream& rhs);
};

template <class charT, class traits>
  void
  swap(basic_iostream<charT, traits>& x, basic_iostream<charT, traits>& y);

typedef basic_iostream<char> iostream;
typedef basic_iostream<wchar_t> wiostream;

template <class charT, class traits>
  basic_istream<charT,traits>&
  ws(basic_istream<charT,traits>& is);

// rvalue stream extraction
template <class Stream, class T>
  Stream&& operator>>(Stream&& is, T&& x);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 162 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
#if 0 /* expanded by -frewrite-includes */
#include <ostream>
#endif /* expanded by -frewrite-includes */
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 1 3
// -*- C++ -*-
//===-------------------------- ostream -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_OSTREAM
#define _LIBCPP_OSTREAM

/*
    ostream synopsis

template <class charT, class traits = char_traits<charT> >
class basic_ostream
    : virtual public basic_ios<charT,traits>
{
public:
    // types (inherited from basic_ios (27.5.4)):
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // 27.7.2.2 Constructor/destructor:
    explicit basic_ostream(basic_streambuf<char_type,traits>* sb);
    basic_ostream(basic_ostream&& rhs);
    virtual ~basic_ostream();

    // 27.7.2.3 Assign/swap
    basic_ostream& operator=(const basic_ostream& rhs) = delete; // C++14
    basic_ostream& operator=(basic_ostream&& rhs);
    void swap(basic_ostream& rhs);

    // 27.7.2.4 Prefix/suffix:
    class sentry;

    // 27.7.2.6 Formatted output:
    basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&));
    basic_ostream& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT,traits>&));
    basic_ostream& operator<<(ios_base& (*pf)(ios_base&));
    basic_ostream& operator<<(bool n);
    basic_ostream& operator<<(short n);
    basic_ostream& operator<<(unsigned short n);
    basic_ostream& operator<<(int n);
    basic_ostream& operator<<(unsigned int n);
    basic_ostream& operator<<(long n);
    basic_ostream& operator<<(unsigned long n);
    basic_ostream& operator<<(long long n);
    basic_ostream& operator<<(unsigned long long n);
    basic_ostream& operator<<(float f);
    basic_ostream& operator<<(double f);
    basic_ostream& operator<<(long double f);
    basic_ostream& operator<<(const void* p);
    basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb);
    basic_ostream& operator<<(nullptr_t);

    // 27.7.2.7 Unformatted output:
    basic_ostream& put(char_type c);
    basic_ostream& write(const char_type* s, streamsize n);
    basic_ostream& flush();

    // 27.7.2.5 seeks:
    pos_type tellp();
    basic_ostream& seekp(pos_type);
    basic_ostream& seekp(off_type, ios_base::seekdir);
protected:
    basic_ostream(const basic_ostream& rhs) = delete;
    basic_ostream(basic_ostream&& rhs);
    // 27.7.3.3 Assign/swap
    basic_ostream& operator=(basic_ostream& rhs) = delete;
    basic_ostream& operator=(const basic_ostream&& rhs);
    void swap(basic_ostream& rhs);
};

// 27.7.2.6.4 character inserters

template<class charT, class traits>
  basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, charT);

template<class charT, class traits>
  basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, char);

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, char);

// signed and unsigned

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, signed char);

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, unsigned char);

// NTBS
template<class charT, class traits>
  basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*);

template<class charT, class traits>
  basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const char*);

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const char*);

// signed and unsigned
template<class traits>
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const signed char*);

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const unsigned char*);

// swap:
template <class charT, class traits>
  void swap(basic_ostream<charT, traits>& x, basic_ostream<charT, traits>& y);

template <class charT, class traits>
  basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);

template <class charT, class traits>
  basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os);

template <class charT, class traits>
  basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os);

// rvalue stream insertion
template <class Stream, class T>
  Stream&& operator<<(Stream&& os, const T& x);

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 136 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#if 0 /* expanded by -frewrite-includes */
#include <bitset>
#endif /* expanded by -frewrite-includes */
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 1 3
// -*- C++ -*-
//===---------------------------- bitset ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_BITSET
#define _LIBCPP_BITSET

/*
    bitset synopsis

namespace std
{

namespace std {

template <size_t N>
class bitset
{
public:
    // bit reference:
    class reference
    {
        friend class bitset;
        reference() noexcept;
    public:
        ~reference() noexcept;
        reference& operator=(bool x) noexcept;           // for b[i] = x;
        reference& operator=(const reference&) noexcept; // for b[i] = b[j];
        bool operator~() const noexcept;                 // flips the bit
        operator bool() const noexcept;                  // for x = b[i];
        reference& flip() noexcept;                      // for b[i].flip();
    };

    // 23.3.5.1 constructors:
    constexpr bitset() noexcept;
    constexpr bitset(unsigned long long val) noexcept;
    template <class charT>
        explicit bitset(const charT* str,
                        typename basic_string<charT>::size_type n = basic_string<charT>::npos,
                        charT zero = charT('0'), charT one = charT('1'));
    template<class charT, class traits, class Allocator>
        explicit bitset(const basic_string<charT,traits,Allocator>& str,
                        typename basic_string<charT,traits,Allocator>::size_type pos = 0,
                        typename basic_string<charT,traits,Allocator>::size_type n =
                                 basic_string<charT,traits,Allocator>::npos,
                        charT zero = charT('0'), charT one = charT('1'));

    // 23.3.5.2 bitset operations:
    bitset& operator&=(const bitset& rhs) noexcept;
    bitset& operator|=(const bitset& rhs) noexcept;
    bitset& operator^=(const bitset& rhs) noexcept;
    bitset& operator<<=(size_t pos) noexcept;
    bitset& operator>>=(size_t pos) noexcept;
    bitset& set() noexcept;
    bitset& set(size_t pos, bool val = true);
    bitset& reset() noexcept;
    bitset& reset(size_t pos);
    bitset operator~() const noexcept;
    bitset& flip() noexcept;
    bitset& flip(size_t pos);

    // element access:
    constexpr bool operator[](size_t pos) const; // for b[i];
    reference operator[](size_t pos);            // for b[i];
    unsigned long to_ulong() const;
    unsigned long long to_ullong() const;
    template <class charT, class traits, class Allocator>
        basic_string<charT, traits, Allocator> to_string(charT zero = charT('0'), charT one = charT('1')) const;
    template <class charT, class traits>
        basic_string<charT, traits, allocator<charT> > to_string(charT zero = charT('0'), charT one = charT('1')) const;
    template <class charT>
        basic_string<charT, char_traits<charT>, allocator<charT> > to_string(charT zero = charT('0'), charT one = charT('1')) const;
    basic_string<char, char_traits<char>, allocator<char> > to_string(char zero = '0', char one = '1') const;
    size_t count() const noexcept;
    constexpr size_t size() const noexcept;
    bool operator==(const bitset& rhs) const noexcept;
    bool operator!=(const bitset& rhs) const noexcept;
    bool test(size_t pos) const;
    bool all() const noexcept;
    bool any() const noexcept;
    bool none() const noexcept;
    bitset operator<<(size_t pos) const noexcept;
    bitset operator>>(size_t pos) const noexcept;
};

// 23.3.5.3 bitset operators:
template <size_t N>
bitset<N> operator&(const bitset<N>&, const bitset<N>&) noexcept;

template <size_t N>
bitset<N> operator|(const bitset<N>&, const bitset<N>&) noexcept;

template <size_t N>
bitset<N> operator^(const bitset<N>&, const bitset<N>&) noexcept;

template <class charT, class traits, size_t N>
basic_istream<charT, traits>&
operator>>(basic_istream<charT, traits>& is, bitset<N>& x);

template <class charT, class traits, size_t N>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x);

template <size_t N> struct hash<std::bitset<N>>;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <__bit_reference>
#endif /* expanded by -frewrite-includes */
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___BIT_REFERENCE
#define _LIBCPP___BIT_REFERENCE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
#if 0 /* expanded by -frewrite-includes */
#include <__bits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Cp, bool _IsConst, typename _Cp::__storage_type = 0> class __bit_iterator;
template <class _Cp> class __bit_const_reference;

template <class _Tp>
struct __has_storage_type
{
    static const bool value = false;
};

template <class _Cp, bool = __has_storage_type<_Cp>::value>
class __bit_reference
{
    typedef typename _Cp::__storage_type    __storage_type;
    typedef typename _Cp::__storage_pointer __storage_pointer;

    __storage_pointer __seg_;
    __storage_type    __mask_;

    friend typename _Cp::__self;

    friend class __bit_const_reference<_Cp>;
    friend class __bit_iterator<_Cp, false>;
public:
    _LIBCPP_INLINE_VISIBILITY
    __bit_reference(const __bit_reference&) = default;

    _LIBCPP_INLINE_VISIBILITY operator bool() const _NOEXCEPT
        {return static_cast<bool>(*__seg_ & __mask_);}
    _LIBCPP_INLINE_VISIBILITY bool operator ~() const _NOEXCEPT
        {return !static_cast<bool>(*this);}

    _LIBCPP_INLINE_VISIBILITY
    __bit_reference& operator=(bool __x) _NOEXCEPT
    {
        if (__x)
            *__seg_ |= __mask_;
        else
            *__seg_ &= ~__mask_;
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT
        {return operator=(static_cast<bool>(__x));}

    _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {*__seg_ ^= __mask_;}
    _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, false> operator&() const _NOEXCEPT
        {return __bit_iterator<_Cp, false>(__seg_, static_cast<unsigned>(__libcpp_ctz(__mask_)));}
private:
    _LIBCPP_INLINE_VISIBILITY
    __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT
        : __seg_(__s), __mask_(__m) {}
};

template <class _Cp>
class __bit_reference<_Cp, false>
{
};

template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT
{
    bool __t = __x;
    __x = __y;
    __y = __t;
}

template <class _Cp, class _Dp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT
{
    bool __t = __x;
    __x = __y;
    __y = __t;
}

template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT
{
    bool __t = __x;
    __x = __y;
    __y = __t;
}

template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT
{
    bool __t = __x;
    __x = __y;
    __y = __t;
}

template <class _Cp>
class __bit_const_reference
{
    typedef typename _Cp::__storage_type          __storage_type;
    typedef typename _Cp::__const_storage_pointer __storage_pointer;

    __storage_pointer        __seg_;
    __storage_type __mask_;

    friend typename _Cp::__self;
    friend class __bit_iterator<_Cp, true>;
public:
    _LIBCPP_INLINE_VISIBILITY
    __bit_const_reference(const __bit_const_reference&) = default;

    _LIBCPP_INLINE_VISIBILITY
    __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT
        : __seg_(__x.__seg_), __mask_(__x.__mask_) {}

    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT
        {return static_cast<bool>(*__seg_ & __mask_);}

    _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, true> operator&() const _NOEXCEPT
        {return __bit_iterator<_Cp, true>(__seg_, static_cast<unsigned>(__libcpp_ctz(__mask_)));}
private:
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR
    __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT
        : __seg_(__s), __mask_(__m) {}

    __bit_const_reference& operator=(const __bit_const_reference&) = delete;
};

// find

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, _IsConst>
__find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, _IsConst> _It;
    typedef typename _It::__storage_type __storage_type;
    static const int __bits_per_word = _It::__bits_per_word;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        __storage_type __b = *__first.__seg_ & __m;
        if (__b)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(__b)));
        if (__n == __dn)
            return __first + __n;
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word)
        if (*__first.__seg_)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(*__first.__seg_)));
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __storage_type __b = *__first.__seg_ & __m;
        if (__b)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(__b)));
    }
    return _It(__first.__seg_, static_cast<unsigned>(__n));
}

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, _IsConst>
__find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, _IsConst> _It;
    typedef typename _It::__storage_type __storage_type;
    const int __bits_per_word = _It::__bits_per_word;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        __storage_type __b = ~*__first.__seg_ & __m;
        if (__b)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(__b)));
        if (__n == __dn)
            return __first + __n;
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word)
    {
        __storage_type __b = ~*__first.__seg_;
        if (__b)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(__b)));
    }
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __storage_type __b = ~*__first.__seg_ & __m;
        if (__b)
            return _It(__first.__seg_, static_cast<unsigned>(_VSTD::__libcpp_ctz(__b)));
    }
    return _It(__first.__seg_, static_cast<unsigned>(__n));
}

template <class _Cp, bool _IsConst, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<_Cp, _IsConst>
find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_)
{
    if (static_cast<bool>(__value_))
        return _VSTD::__find_bool_true(__first, static_cast<typename _Cp::size_type>(__last - __first));
    return _VSTD::__find_bool_false(__first, static_cast<typename _Cp::size_type>(__last - __first));
}

// count

template <class _Cp, bool _IsConst>
typename __bit_iterator<_Cp, _IsConst>::difference_type
__count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, _IsConst> _It;
    typedef typename _It::__storage_type __storage_type;
    typedef typename _It::difference_type difference_type;
    const int __bits_per_word = _It::__bits_per_word;
    difference_type __r = 0;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        __r = _VSTD::__libcpp_popcount(*__first.__seg_ & __m);
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word)
        __r += _VSTD::__libcpp_popcount(*__first.__seg_);
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __r += _VSTD::__libcpp_popcount(*__first.__seg_ & __m);
    }
    return __r;
}

template <class _Cp, bool _IsConst>
typename __bit_iterator<_Cp, _IsConst>::difference_type
__count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, _IsConst> _It;
    typedef typename _It::__storage_type __storage_type;
    typedef typename _It::difference_type difference_type;
    const int __bits_per_word = _It::__bits_per_word;
    difference_type __r = 0;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        __r = _VSTD::__libcpp_popcount(~*__first.__seg_ & __m);
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word)
        __r += _VSTD::__libcpp_popcount(~*__first.__seg_);
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __r += _VSTD::__libcpp_popcount(~*__first.__seg_ & __m);
    }
    return __r;
}

template <class _Cp, bool _IsConst, class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
typename __bit_iterator<_Cp, _IsConst>::difference_type
count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_)
{
    if (static_cast<bool>(__value_))
        return _VSTD::__count_bool_true(__first, static_cast<typename _Cp::size_type>(__last - __first));
    return _VSTD::__count_bool_false(__first, static_cast<typename _Cp::size_type>(__last - __first));
}

// fill_n

template <class _Cp>
void
__fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, false> _It;
    typedef typename _It::__storage_type __storage_type;
    const int __bits_per_word = _It::__bits_per_word;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        *__first.__seg_ &= ~__m;
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    __storage_type __nw = __n / __bits_per_word;
    _VSTD::memset(_VSTD::__to_address(__first.__seg_), 0, __nw * sizeof(__storage_type));
    __n -= __nw * __bits_per_word;
    // do last partial word
    if (__n > 0)
    {
        __first.__seg_ += __nw;
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        *__first.__seg_ &= ~__m;
    }
}

template <class _Cp>
void
__fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n)
{
    typedef __bit_iterator<_Cp, false> _It;
    typedef typename _It::__storage_type __storage_type;
    const int __bits_per_word = _It::__bits_per_word;
    // do first partial word
    if (__first.__ctz_ != 0)
    {
        __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_);
        __storage_type __dn = _VSTD::min(__clz_f, __n);
        __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
        *__first.__seg_ |= __m;
        __n -= __dn;
        ++__first.__seg_;
    }
    // do middle whole words
    __storage_type __nw = __n / __bits_per_word;
    _VSTD::memset(_VSTD::__to_address(__first.__seg_), -1, __nw * sizeof(__storage_type));
    __n -= __nw * __bits_per_word;
    // do last partial word
    if (__n > 0)
    {
        __first.__seg_ += __nw;
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        *__first.__seg_ |= __m;
    }
}

template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
void
fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value_)
{
    if (__n > 0)
    {
        if (__value_)
            _VSTD::__fill_n_true(__first, __n);
        else
            _VSTD::__fill_n_false(__first, __n);
    }
}

// fill

template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
void
fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value_)
{
    _VSTD::fill_n(__first, static_cast<typename _Cp::size_type>(__last - __first), __value_);
}

// copy

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, false>
__copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last,
                                                     __bit_iterator<_Cp, false> __result)
{
    typedef __bit_iterator<_Cp, _IsConst> _In;
    typedef  typename _In::difference_type difference_type;
    typedef typename _In::__storage_type __storage_type;
    const int __bits_per_word = _In::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__first.__ctz_ != 0)
        {
            unsigned __clz = __bits_per_word - __first.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn));
            __storage_type __b = *__first.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b;
            __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_)  % __bits_per_word);
            ++__first.__seg_;
            // __first.__ctz_ = 0;
        }
        // __first.__ctz_ == 0;
        // do middle words
        __storage_type __nw = __n / __bits_per_word;
        _VSTD::memmove(_VSTD::__to_address(__result.__seg_),
                       _VSTD::__to_address(__first.__seg_),
                       __nw * sizeof(__storage_type));
        __n -= __nw * __bits_per_word;
        __result.__seg_ += __nw;
        // do last word
        if (__n > 0)
        {
            __first.__seg_ += __nw;
            __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
            __storage_type __b = *__first.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b;
            __result.__ctz_ = static_cast<unsigned>(__n);
        }
    }
    return __result;
}

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, false>
__copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last,
                                                       __bit_iterator<_Cp, false> __result)
{
    typedef __bit_iterator<_Cp, _IsConst> _In;
    typedef  typename _In::difference_type difference_type;
    typedef typename _In::__storage_type __storage_type;
    static const int __bits_per_word = _In::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__first.__ctz_ != 0)
        {
            unsigned __clz_f = __bits_per_word - __first.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz_f), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
            __storage_type __b = *__first.__seg_ & __m;
            unsigned __clz_r = __bits_per_word - __result.__ctz_;
            __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r);
            __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn));
            *__result.__seg_ &= ~__m;
            if (__result.__ctz_ > __first.__ctz_)
                *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_);
            else
                *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_);
            __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__ddn + __result.__ctz_)  % __bits_per_word);
            __dn -= __ddn;
            if (__dn > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __dn);
                *__result.__seg_ &= ~__m;
                *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn);
                __result.__ctz_ = static_cast<unsigned>(__dn);
            }
            ++__first.__seg_;
            // __first.__ctz_ = 0;
        }
        // __first.__ctz_ == 0;
        // do middle words
        unsigned __clz_r = __bits_per_word - __result.__ctz_;
        __storage_type __m = ~__storage_type(0) << __result.__ctz_;
        for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_)
        {
            __storage_type __b = *__first.__seg_;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b << __result.__ctz_;
            ++__result.__seg_;
            *__result.__seg_ &= __m;
            *__result.__seg_ |= __b >> __clz_r;
        }
        // do last word
        if (__n > 0)
        {
            __m = ~__storage_type(0) >> (__bits_per_word - __n);
            __storage_type __b = *__first.__seg_ & __m;
            __storage_type __dn = _VSTD::min(__n, static_cast<difference_type>(__clz_r));
            __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn));
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b << __result.__ctz_;
            __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_)  % __bits_per_word);
            __n -= __dn;
            if (__n > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __n);
                *__result.__seg_ &= ~__m;
                *__result.__seg_ |= __b >> __dn;
                __result.__ctz_ = static_cast<unsigned>(__n);
            }
        }
    }
    return __result;
}

template <class _Cp, bool _IsConst>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<_Cp, false>
copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result)
{
    if (__first.__ctz_ == __result.__ctz_)
        return _VSTD::__copy_aligned(__first, __last, __result);
    return _VSTD::__copy_unaligned(__first, __last, __result);
}

// copy_backward

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, false>
__copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last,
                                                     __bit_iterator<_Cp, false> __result)
{
    typedef __bit_iterator<_Cp, _IsConst> _In;
    typedef  typename _In::difference_type difference_type;
    typedef typename _In::__storage_type __storage_type;
    const int __bits_per_word = _In::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__last.__ctz_ != 0)
        {
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__last.__ctz_), __n);
            __n -= __dn;
            unsigned __clz = __bits_per_word - __last.__ctz_;
            __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz);
            __storage_type __b = *__last.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b;
            __result.__ctz_ = static_cast<unsigned>(((-__dn & (__bits_per_word - 1)) +
                                                       __result.__ctz_)  % __bits_per_word);
            // __last.__ctz_ = 0
         }
        // __last.__ctz_ == 0 || __n == 0
        // __result.__ctz_ == 0 || __n == 0
        // do middle words
        __storage_type __nw = __n / __bits_per_word;
        __result.__seg_ -= __nw;
        __last.__seg_ -= __nw;
        _VSTD::memmove(_VSTD::__to_address(__result.__seg_),
                       _VSTD::__to_address(__last.__seg_),
                       __nw * sizeof(__storage_type));
        __n -= __nw * __bits_per_word;
        // do last word
        if (__n > 0)
        {
            __storage_type __m = ~__storage_type(0) << (__bits_per_word - __n);
            __storage_type __b = *--__last.__seg_ & __m;
            *--__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b;
            __result.__ctz_ = static_cast<unsigned>(-__n & (__bits_per_word - 1));
        }
    }
    return __result;
}

template <class _Cp, bool _IsConst>
__bit_iterator<_Cp, false>
__copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last,
                                                       __bit_iterator<_Cp, false> __result)
{
    typedef __bit_iterator<_Cp, _IsConst> _In;
    typedef  typename _In::difference_type difference_type;
    typedef typename _In::__storage_type __storage_type;
    const int __bits_per_word = _In::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__last.__ctz_ != 0)
        {
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__last.__ctz_), __n);
            __n -= __dn;
            unsigned __clz_l = __bits_per_word - __last.__ctz_;
            __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_l);
            __storage_type __b = *__last.__seg_ & __m;
            unsigned __clz_r = __bits_per_word - __result.__ctz_;
            __storage_type __ddn = _VSTD::min(__dn, static_cast<difference_type>(__result.__ctz_));
            if (__ddn > 0)
            {
                __m = (~__storage_type(0) << (__result.__ctz_ - __ddn)) & (~__storage_type(0) >> __clz_r);
                *__result.__seg_ &= ~__m;
                if (__result.__ctz_ > __last.__ctz_)
                    *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_);
                else
                    *__result.__seg_ |= __b >> (__last.__ctz_ - __result.__ctz_);
                __result.__ctz_ = static_cast<unsigned>(((-__ddn & (__bits_per_word - 1)) +
                                                         __result.__ctz_)  % __bits_per_word);
                __dn -= __ddn;
            }
            if (__dn > 0)
            {
                // __result.__ctz_ == 0
                --__result.__seg_;
                __result.__ctz_ = static_cast<unsigned>(-__dn & (__bits_per_word - 1));
                __m = ~__storage_type(0) << __result.__ctz_;
                *__result.__seg_ &= ~__m;
                __last.__ctz_ -= __dn + __ddn;
                *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_);
            }
            // __last.__ctz_ = 0
         }
        // __last.__ctz_ == 0 || __n == 0
        // __result.__ctz_ != 0 || __n == 0
        // do middle words
        unsigned __clz_r = __bits_per_word - __result.__ctz_;
        __storage_type __m = ~__storage_type(0) >> __clz_r;
        for (; __n >= __bits_per_word; __n -= __bits_per_word)
        {
            __storage_type __b = *--__last.__seg_;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b >> __clz_r;
            *--__result.__seg_ &= __m;
            *__result.__seg_ |= __b << __result.__ctz_;
        }
        // do last word
        if (__n > 0)
        {
            __m = ~__storage_type(0) << (__bits_per_word - __n);
            __storage_type __b = *--__last.__seg_ & __m;
            __clz_r = __bits_per_word - __result.__ctz_;
            __storage_type __dn = _VSTD::min(__n, static_cast<difference_type>(__result.__ctz_));
            __m = (~__storage_type(0) << (__result.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_r);
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b >> (__bits_per_word - __result.__ctz_);
            __result.__ctz_ = static_cast<unsigned>(((-__dn & (__bits_per_word - 1)) +
                                                     __result.__ctz_)  % __bits_per_word);
            __n -= __dn;
            if (__n > 0)
            {
                // __result.__ctz_ == 0
                --__result.__seg_;
                __result.__ctz_ = static_cast<unsigned>(-__n & (__bits_per_word - 1));
                __m = ~__storage_type(0) << __result.__ctz_;
                *__result.__seg_ &= ~__m;
                *__result.__seg_ |= __b << (__result.__ctz_ - (__bits_per_word - __n - __dn));
            }
        }
    }
    return __result;
}

template <class _Cp, bool _IsConst>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<_Cp, false>
copy_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result)
{
    if (__last.__ctz_ == __result.__ctz_)
        return _VSTD::__copy_backward_aligned(__first, __last, __result);
    return _VSTD::__copy_backward_unaligned(__first, __last, __result);
}

// move

template <class _Cp, bool _IsConst>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<_Cp, false>
move(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result)
{
    return _VSTD::copy(__first, __last, __result);
}

// move_backward

template <class _Cp, bool _IsConst>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<_Cp, false>
move_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result)
{
    return _VSTD::copy_backward(__first, __last, __result);
}

// swap_ranges

template <class __C1, class __C2>
__bit_iterator<__C2, false>
__swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last,
                      __bit_iterator<__C2, false> __result)
{
    typedef __bit_iterator<__C1, false> _I1;
    typedef  typename _I1::difference_type difference_type;
    typedef typename _I1::__storage_type __storage_type;
    const int __bits_per_word = _I1::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__first.__ctz_ != 0)
        {
            unsigned __clz = __bits_per_word - __first.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn));
            __storage_type __b1 = *__first.__seg_ & __m;
            *__first.__seg_ &= ~__m;
            __storage_type __b2 = *__result.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b1;
            *__first.__seg_  |= __b2;
            __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_)  % __bits_per_word);
            ++__first.__seg_;
            // __first.__ctz_ = 0;
        }
        // __first.__ctz_ == 0;
        // do middle words
        for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_, ++__result.__seg_)
            swap(*__first.__seg_, *__result.__seg_);
        // do last word
        if (__n > 0)
        {
            __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
            __storage_type __b1 = *__first.__seg_ & __m;
            *__first.__seg_ &= ~__m;
            __storage_type __b2 = *__result.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b1;
            *__first.__seg_  |= __b2;
            __result.__ctz_ = static_cast<unsigned>(__n);
        }
    }
    return __result;
}

template <class __C1, class __C2>
__bit_iterator<__C2, false>
__swap_ranges_unaligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last,
                        __bit_iterator<__C2, false> __result)
{
    typedef __bit_iterator<__C1, false> _I1;
    typedef  typename _I1::difference_type difference_type;
    typedef typename _I1::__storage_type __storage_type;
    const int __bits_per_word = _I1::__bits_per_word;
    difference_type __n = __last - __first;
    if (__n > 0)
    {
        // do first word
        if (__first.__ctz_ != 0)
        {
            unsigned __clz_f = __bits_per_word - __first.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz_f), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
            __storage_type __b1 = *__first.__seg_ & __m;
            *__first.__seg_ &= ~__m;
            unsigned __clz_r = __bits_per_word - __result.__ctz_;
            __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r);
            __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn));
            __storage_type __b2 = *__result.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            if (__result.__ctz_ > __first.__ctz_)
            {
                unsigned __s = __result.__ctz_ - __first.__ctz_;
                *__result.__seg_ |= __b1 << __s;
                *__first.__seg_  |= __b2 >> __s;
            }
            else
            {
                unsigned __s = __first.__ctz_ - __result.__ctz_;
                *__result.__seg_ |= __b1 >> __s;
                *__first.__seg_  |= __b2 << __s;
            }
            __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__ddn + __result.__ctz_)  % __bits_per_word);
            __dn -= __ddn;
            if (__dn > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __dn);
                __b2 = *__result.__seg_ & __m;
                *__result.__seg_ &= ~__m;
                unsigned __s = __first.__ctz_ + __ddn;
                *__result.__seg_ |= __b1 >> __s;
                *__first.__seg_  |= __b2 << __s;
                __result.__ctz_ = static_cast<unsigned>(__dn);
            }
            ++__first.__seg_;
            // __first.__ctz_ = 0;
        }
        // __first.__ctz_ == 0;
        // do middle words
        __storage_type __m = ~__storage_type(0) << __result.__ctz_;
        unsigned __clz_r = __bits_per_word - __result.__ctz_;
        for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_)
        {
            __storage_type __b1 = *__first.__seg_;
            __storage_type __b2 = *__result.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b1 << __result.__ctz_;
            *__first.__seg_  = __b2 >> __result.__ctz_;
            ++__result.__seg_;
            __b2 = *__result.__seg_ & ~__m;
            *__result.__seg_ &= __m;
            *__result.__seg_ |= __b1 >> __clz_r;
            *__first.__seg_  |= __b2 << __clz_r;
        }
        // do last word
        if (__n > 0)
        {
            __m = ~__storage_type(0) >> (__bits_per_word - __n);
            __storage_type __b1 = *__first.__seg_ & __m;
            *__first.__seg_ &= ~__m;
            __storage_type __dn = _VSTD::min<__storage_type>(__n, __clz_r);
            __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn));
            __storage_type __b2 = *__result.__seg_ & __m;
            *__result.__seg_ &= ~__m;
            *__result.__seg_ |= __b1 << __result.__ctz_;
            *__first.__seg_  |= __b2 >> __result.__ctz_;
            __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
            __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_)  % __bits_per_word);
            __n -= __dn;
            if (__n > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __n);
                __b2 = *__result.__seg_ & __m;
                *__result.__seg_ &= ~__m;
                *__result.__seg_ |= __b1 >> __dn;
                *__first.__seg_  |= __b2 << __dn;
                __result.__ctz_ = static_cast<unsigned>(__n);
            }
        }
    }
    return __result;
}

template <class __C1, class __C2>
inline _LIBCPP_INLINE_VISIBILITY
__bit_iterator<__C2, false>
swap_ranges(__bit_iterator<__C1, false> __first1, __bit_iterator<__C1, false> __last1,
            __bit_iterator<__C2, false> __first2)
{
    if (__first1.__ctz_ == __first2.__ctz_)
        return _VSTD::__swap_ranges_aligned(__first1, __last1, __first2);
    return _VSTD::__swap_ranges_unaligned(__first1, __last1, __first2);
}

// rotate

template <class _Cp>
struct __bit_array
{
    typedef typename _Cp::difference_type difference_type;
    typedef typename _Cp::__storage_type  __storage_type;
    typedef typename _Cp::__storage_pointer __storage_pointer;
    typedef typename _Cp::iterator        iterator;
    static const unsigned __bits_per_word = _Cp::__bits_per_word;
    static const unsigned _Np = 4;

    difference_type __size_;
    __storage_type __word_[_Np];

    _LIBCPP_INLINE_VISIBILITY static difference_type capacity()
        {return static_cast<difference_type>(_Np * __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY explicit __bit_array(difference_type __s) : __size_(__s) {}
    _LIBCPP_INLINE_VISIBILITY iterator begin()
    {
        return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0);
    }
    _LIBCPP_INLINE_VISIBILITY iterator end()
    {
        return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word,
                                                  static_cast<unsigned>(__size_ % __bits_per_word));
    }
};

template <class _Cp>
__bit_iterator<_Cp, false>
rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last)
{
    typedef __bit_iterator<_Cp, false> _I1;
    typedef  typename _I1::difference_type difference_type;
    difference_type __d1 = __middle - __first;
    difference_type __d2 = __last - __middle;
    _I1 __r = __first + __d2;
    while (__d1 != 0 && __d2 != 0)
    {
        if (__d1 <= __d2)
        {
            if (__d1 <= __bit_array<_Cp>::capacity())
            {
                __bit_array<_Cp> __b(__d1);
                _VSTD::copy(__first, __middle, __b.begin());
                _VSTD::copy(__b.begin(), __b.end(), _VSTD::copy(__middle, __last, __first));
                break;
            }
            else
            {
                __bit_iterator<_Cp, false> __mp = _VSTD::swap_ranges(__first, __middle, __middle);
                __first = __middle;
                __middle = __mp;
                __d2 -= __d1;
            }
        }
        else
        {
            if (__d2 <= __bit_array<_Cp>::capacity())
            {
                __bit_array<_Cp> __b(__d2);
                _VSTD::copy(__middle, __last, __b.begin());
                _VSTD::copy_backward(__b.begin(), __b.end(), _VSTD::copy_backward(__first, __middle, __last));
                break;
            }
            else
            {
                __bit_iterator<_Cp, false> __mp = __first + __d2;
                _VSTD::swap_ranges(__first, __mp, __middle);
                __first = __mp;
                __d1 -= __d2;
            }
        }
    }
    return __r;
}

// equal

template <class _Cp, bool _IC1, bool _IC2>
bool
__equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1,
                  __bit_iterator<_Cp, _IC2> __first2)
{
    typedef __bit_iterator<_Cp, _IC1> _It;
    typedef  typename _It::difference_type difference_type;
    typedef typename _It::__storage_type __storage_type;
    static const int __bits_per_word = _It::__bits_per_word;
    difference_type __n = __last1 - __first1;
    if (__n > 0)
    {
        // do first word
        if (__first1.__ctz_ != 0)
        {
            unsigned __clz_f = __bits_per_word - __first1.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz_f), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn));
            __storage_type __b = *__first1.__seg_ & __m;
            unsigned __clz_r = __bits_per_word - __first2.__ctz_;
            __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r);
            __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn));
            if (__first2.__ctz_ > __first1.__ctz_)
            {
                if ((*__first2.__seg_ & __m) != (__b << (__first2.__ctz_ - __first1.__ctz_)))
                    return false;
            }
            else
            {
                if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ - __first2.__ctz_)))
                    return false;
            }
            __first2.__seg_ += (__ddn + __first2.__ctz_) / __bits_per_word;
            __first2.__ctz_ = static_cast<unsigned>((__ddn + __first2.__ctz_)  % __bits_per_word);
            __dn -= __ddn;
            if (__dn > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __dn);
                if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ + __ddn)))
                    return false;
                __first2.__ctz_ = static_cast<unsigned>(__dn);
            }
            ++__first1.__seg_;
            // __first1.__ctz_ = 0;
        }
        // __first1.__ctz_ == 0;
        // do middle words
        unsigned __clz_r = __bits_per_word - __first2.__ctz_;
        __storage_type __m = ~__storage_type(0) << __first2.__ctz_;
        for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_)
        {
            __storage_type __b = *__first1.__seg_;
            if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_))
                return false;
            ++__first2.__seg_;
            if ((*__first2.__seg_ & ~__m) != (__b >> __clz_r))
                return false;
        }
        // do last word
        if (__n > 0)
        {
            __m = ~__storage_type(0) >> (__bits_per_word - __n);
            __storage_type __b = *__first1.__seg_ & __m;
            __storage_type __dn = _VSTD::min(__n, static_cast<difference_type>(__clz_r));
            __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn));
            if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_))
                return false;
            __first2.__seg_ += (__dn + __first2.__ctz_) / __bits_per_word;
            __first2.__ctz_ = static_cast<unsigned>((__dn + __first2.__ctz_)  % __bits_per_word);
            __n -= __dn;
            if (__n > 0)
            {
                __m = ~__storage_type(0) >> (__bits_per_word - __n);
                if ((*__first2.__seg_ & __m) != (__b >> __dn))
                    return false;
            }
        }
    }
    return true;
}

template <class _Cp, bool _IC1, bool _IC2>
bool
__equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1,
                __bit_iterator<_Cp, _IC2> __first2)
{
    typedef __bit_iterator<_Cp, _IC1> _It;
    typedef  typename _It::difference_type difference_type;
    typedef typename _It::__storage_type __storage_type;
    static const int __bits_per_word = _It::__bits_per_word;
    difference_type __n = __last1 - __first1;
    if (__n > 0)
    {
        // do first word
        if (__first1.__ctz_ != 0)
        {
            unsigned __clz = __bits_per_word - __first1.__ctz_;
            difference_type __dn = _VSTD::min(static_cast<difference_type>(__clz), __n);
            __n -= __dn;
            __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz - __dn));
            if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m))
                return false;
            ++__first2.__seg_;
            ++__first1.__seg_;
            // __first1.__ctz_ = 0;
            // __first2.__ctz_ = 0;
        }
        // __first1.__ctz_ == 0;
        // __first2.__ctz_ == 0;
        // do middle words
        for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_)
            if (*__first2.__seg_ != *__first1.__seg_)
                return false;
        // do last word
        if (__n > 0)
        {
            __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
            if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m))
                return false;
        }
    }
    return true;
}

template <class _Cp, bool _IC1, bool _IC2>
inline _LIBCPP_INLINE_VISIBILITY
bool
equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2)
{
    if (__first1.__ctz_ == __first2.__ctz_)
        return _VSTD::__equal_aligned(__first1, __last1, __first2);
    return _VSTD::__equal_unaligned(__first1, __last1, __first2);
}

template <class _Cp, bool _IsConst,
          typename _Cp::__storage_type>
class __bit_iterator
{
public:
    typedef typename _Cp::difference_type                                                          difference_type;
    typedef bool                                                                                  value_type;
    typedef __bit_iterator                                                                        pointer;
    typedef typename conditional<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >::type reference;
    typedef random_access_iterator_tag                                                            iterator_category;

private:
    typedef typename _Cp::__storage_type                                           __storage_type;
    typedef typename conditional<_IsConst, typename _Cp::__const_storage_pointer,
                                           typename _Cp::__storage_pointer>::type  __storage_pointer;
    static const unsigned __bits_per_word = _Cp::__bits_per_word;

    __storage_pointer __seg_;
    unsigned          __ctz_;

public:
    _LIBCPP_INLINE_VISIBILITY __bit_iterator() _NOEXCEPT
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
    : __seg_(nullptr), __ctz_(0)
#endif
# 1115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
    {}

    // When _IsConst=false, this is the copy constructor.
    // It is non-trivial. Making it trivial would break ABI.
    // When _IsConst=true, this is a converting constructor;
    // the copy and move constructors are implicitly generated
    // and trivial.
    _LIBCPP_INLINE_VISIBILITY
    __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT
        : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {}

    // When _IsConst=false, we have a user-provided copy constructor,
    // so we must also provide a copy assignment operator because
    // the implicit generation of a defaulted one is deprecated.
    // When _IsConst=true, the assignment operators are
    // implicitly generated and trivial.
    _LIBCPP_INLINE_VISIBILITY
    __bit_iterator& operator=(const _If<_IsConst, struct __private_nat, __bit_iterator>& __it) {
        __seg_ = __it.__seg_;
        __ctz_ = __it.__ctz_;
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT
        {return reference(__seg_, __storage_type(1) << __ctz_);}

    _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator++()
    {
        if (__ctz_ != __bits_per_word-1)
            ++__ctz_;
        else
        {
            __ctz_ = 0;
            ++__seg_;
        }
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator operator++(int)
    {
        __bit_iterator __tmp = *this;
        ++(*this);
        return __tmp;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator--()
    {
        if (__ctz_ != 0)
            --__ctz_;
        else
        {
            __ctz_ = __bits_per_word - 1;
            --__seg_;
        }
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator operator--(int)
    {
        __bit_iterator __tmp = *this;
        --(*this);
        return __tmp;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator+=(difference_type __n)
    {
        if (__n >= 0)
            __seg_ += (__n + __ctz_) / __bits_per_word;
        else
            __seg_ += static_cast<difference_type>(__n - __bits_per_word + __ctz_ + 1)
                    / static_cast<difference_type>(__bits_per_word);
        __n &= (__bits_per_word - 1);
        __ctz_ = static_cast<unsigned>((__n + __ctz_)  % __bits_per_word);
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator-=(difference_type __n)
    {
        return *this += -__n;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator operator+(difference_type __n) const
    {
        __bit_iterator __t(*this);
        __t += __n;
        return __t;
    }

    _LIBCPP_INLINE_VISIBILITY __bit_iterator operator-(difference_type __n) const
    {
        __bit_iterator __t(*this);
        __t -= __n;
        return __t;
    }

    _LIBCPP_INLINE_VISIBILITY
    friend __bit_iterator operator+(difference_type __n, const __bit_iterator& __it) {return __it + __n;}

    _LIBCPP_INLINE_VISIBILITY
    friend difference_type operator-(const __bit_iterator& __x, const __bit_iterator& __y)
        {return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_;}

    _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const {return *(*this + __n);}

    _LIBCPP_INLINE_VISIBILITY friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y)
        {return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_;}

    _LIBCPP_INLINE_VISIBILITY friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y)
        {return !(__x == __y);}

    _LIBCPP_INLINE_VISIBILITY friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y)
        {return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_);}

    _LIBCPP_INLINE_VISIBILITY friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y)
        {return __y < __x;}

    _LIBCPP_INLINE_VISIBILITY friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y)
        {return !(__y < __x);}

    _LIBCPP_INLINE_VISIBILITY friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y)
        {return !(__x < __y);}

private:
    _LIBCPP_INLINE_VISIBILITY
    __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT
        : __seg_(__s), __ctz_(__ctz) {}

    friend typename _Cp::__self;

    friend class __bit_reference<_Cp>;
    friend class __bit_const_reference<_Cp>;
    friend class __bit_iterator<_Cp, true>;
    template <class _Dp> friend struct __bit_array;
    template <class _Dp> friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n);
    template <class _Dp> friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first,
                                                                                  __bit_iterator<_Dp, _IC> __last,
                                                                                  __bit_iterator<_Dp, false> __result);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first,
                                                                                    __bit_iterator<_Dp, _IC> __last,
                                                                                    __bit_iterator<_Dp, false> __result);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first,
                                                                        __bit_iterator<_Dp, _IC> __last,
                                                                        __bit_iterator<_Dp, false> __result);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first,
                                                                                           __bit_iterator<_Dp, _IC> __last,
                                                                                           __bit_iterator<_Dp, false> __result);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first,
                                                                                             __bit_iterator<_Dp, _IC> __last,
                                                                                             __bit_iterator<_Dp, false> __result);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first,
                                                                                 __bit_iterator<_Dp, _IC> __last,
                                                                                 __bit_iterator<_Dp, false> __result);
    template <class __C1, class __C2>friend __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false>,
                                                                                           __bit_iterator<__C1, false>,
                                                                                           __bit_iterator<__C2, false>);
    template <class __C1, class __C2>friend __bit_iterator<__C2, false> __swap_ranges_unaligned(__bit_iterator<__C1, false>,
                                                                                             __bit_iterator<__C1, false>,
                                                                                             __bit_iterator<__C2, false>);
    template <class __C1, class __C2>friend __bit_iterator<__C2, false> swap_ranges(__bit_iterator<__C1, false>,
                                                                                 __bit_iterator<__C1, false>,
                                                                                 __bit_iterator<__C2, false>);
    template <class _Dp> friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>,
                                                                __bit_iterator<_Dp, false>,
                                                                __bit_iterator<_Dp, false>);
    template <class _Dp, bool _IC1, bool _IC2> friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>,
                                                    __bit_iterator<_Dp, _IC1>,
                                                    __bit_iterator<_Dp, _IC2>);
    template <class _Dp, bool _IC1, bool _IC2> friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>,
                                                      __bit_iterator<_Dp, _IC1>,
                                                      __bit_iterator<_Dp, _IC2>);
    template <class _Dp, bool _IC1, bool _IC2> friend bool equal(__bit_iterator<_Dp, _IC1>,
                                                                __bit_iterator<_Dp, _IC1>,
                                                                __bit_iterator<_Dp, _IC2>);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>,
                                                                          typename _Dp::size_type);
    template <class _Dp, bool _IC> friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>,
                                                                           typename _Dp::size_type);
    template <class _Dp, bool _IC> friend typename __bit_iterator<_Dp, _IC>::difference_type
                   __count_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type);
    template <class _Dp, bool _IC> friend typename __bit_iterator<_Dp, _IC>::difference_type
                   __count_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type);
};

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___BIT_REFERENCE
# 1304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bit_reference" 3
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <climits>
#endif /* expanded by -frewrite-includes */
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstddef>
#endif /* expanded by -frewrite-includes */
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 121 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 122 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 126 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#endif
# 127 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 129 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 130 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <size_t _N_words, size_t _Size>
class __bitset;

template <size_t _N_words, size_t _Size>
struct __has_storage_type<__bitset<_N_words, _Size> >
{
    static const bool value = true;
};

template <size_t _N_words, size_t _Size>
class __bitset
{
public:
    typedef ptrdiff_t              difference_type;
    typedef size_t                 size_type;
    typedef size_type              __storage_type;
protected:
    typedef __bitset __self;
    typedef       __storage_type*  __storage_pointer;
    typedef const __storage_type*  __const_storage_pointer;
    static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);

    friend class __bit_reference<__bitset>;
    friend class __bit_const_reference<__bitset>;
    friend class __bit_iterator<__bitset, false>;
    friend class __bit_iterator<__bitset, true>;
    friend struct __bit_array<__bitset>;

    __storage_type __first_[_N_words];

    typedef __bit_reference<__bitset>                  reference;
    typedef __bit_const_reference<__bitset>            const_reference;
    typedef __bit_iterator<__bitset, false>            iterator;
    typedef __bit_iterator<__bitset, true>             const_iterator;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long __v) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t __pos) _NOEXCEPT
        {return reference(__first_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t __pos) const _NOEXCEPT
        {return const_reference(__first_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t __pos) _NOEXCEPT
        {return iterator(__first_ + __pos / __bits_per_word, __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t __pos) const _NOEXCEPT
        {return const_iterator(__first_ + __pos / __bits_per_word, __pos % __bits_per_word);}

    _LIBCPP_INLINE_VISIBILITY
    void operator&=(const __bitset& __v) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void operator|=(const __bitset& __v) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void operator^=(const __bitset& __v) _NOEXCEPT;

    void flip() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY unsigned long to_ulong() const
        {return to_ulong(integral_constant<bool, _Size < sizeof(unsigned long) * CHAR_BIT>());}
    _LIBCPP_INLINE_VISIBILITY unsigned long long to_ullong() const
        {return to_ullong(integral_constant<bool, _Size < sizeof(unsigned long long) * CHAR_BIT>());}

    bool all() const _NOEXCEPT;
    bool any() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_t __hash_code() const _NOEXCEPT;
private:
#ifdef _LIBCPP_CXX03_LANG
    void __init(unsigned long long __v, false_type) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void __init(unsigned long long __v, true_type) _NOEXCEPT;
#endif // _LIBCPP_CXX03_LANG
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
    unsigned long to_ulong(false_type) const;
    _LIBCPP_INLINE_VISIBILITY
    unsigned long to_ulong(true_type) const;
    unsigned long long to_ullong(false_type) const;
    _LIBCPP_INLINE_VISIBILITY
    unsigned long long to_ullong(true_type) const;
    _LIBCPP_INLINE_VISIBILITY
    unsigned long long to_ullong(true_type, false_type) const;
    unsigned long long to_ullong(true_type, true_type) const;
};

template <size_t _N_words, size_t _Size>
inline
_LIBCPP_CONSTEXPR
__bitset<_N_words, _Size>::__bitset() _NOEXCEPT
#ifndef _LIBCPP_CXX03_LANG
    : __first_{0}
#endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
{
#ifdef _LIBCPP_CXX03_LANG
    _VSTD::fill_n(__first_, _N_words, __storage_type(0));
#endif
# 228 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
}

#ifdef _LIBCPP_CXX03_LANG

template <size_t _N_words, size_t _Size>
void
__bitset<_N_words, _Size>::__init(unsigned long long __v, false_type) _NOEXCEPT
{
    __storage_type __t[sizeof(unsigned long long) / sizeof(__storage_type)];
    size_t __sz = _Size;
    for (size_t __i = 0; __i < sizeof(__t)/sizeof(__t[0]); ++__i, __v >>= __bits_per_word, __sz -= __bits_per_word )
        if ( __sz < __bits_per_word)
            __t[__i] = static_cast<__storage_type>(__v) & ( 1ULL << __sz ) - 1;
        else
            __t[__i] = static_cast<__storage_type>(__v);

    _VSTD::copy(__t, __t + sizeof(__t)/sizeof(__t[0]), __first_);
    _VSTD::fill(__first_ + sizeof(__t)/sizeof(__t[0]), __first_ + sizeof(__first_)/sizeof(__first_[0]),
               __storage_type(0));
}

template <size_t _N_words, size_t _Size>
inline _LIBCPP_INLINE_VISIBILITY
void
__bitset<_N_words, _Size>::__init(unsigned long long __v, true_type) _NOEXCEPT
{
    __first_[0] = __v;
    if (_Size < __bits_per_word)
        __first_[0] &= ( 1ULL << _Size ) - 1;

    _VSTD::fill(__first_ + 1, __first_ + sizeof(__first_)/sizeof(__first_[0]), __storage_type(0));
}

#endif // _LIBCPP_CXX03_LANG
# 262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3

template <size_t _N_words, size_t _Size>
inline
_LIBCPP_CONSTEXPR
__bitset<_N_words, _Size>::__bitset(unsigned long long __v) _NOEXCEPT
#ifndef _LIBCPP_CXX03_LANG
#if 0 /* disabled by -frewrite-includes */
#if __SIZEOF_SIZE_T__ == 8
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
    : __first_{__v}
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __SIZEOF_SIZE_T__ == 4
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
    : __first_{static_cast<__storage_type>(__v),
                _Size >= 2 * __bits_per_word ? static_cast<__storage_type>(__v >> __bits_per_word)
                : static_cast<__storage_type>((__v >> __bits_per_word) & (__storage_type(1) << (_Size - __bits_per_word)) - 1)}
#else
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#error This constructor has not been ported to this platform
#endif
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
#endif
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
{
#ifdef _LIBCPP_CXX03_LANG
    __init(__v, integral_constant<bool, sizeof(unsigned long long) == sizeof(__storage_type)>());
#endif
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
}

template <size_t _N_words, size_t _Size>
inline
void
__bitset<_N_words, _Size>::operator&=(const __bitset& __v) _NOEXCEPT
{
    for (size_type __i = 0; __i < _N_words; ++__i)
        __first_[__i] &= __v.__first_[__i];
}

template <size_t _N_words, size_t _Size>
inline
void
__bitset<_N_words, _Size>::operator|=(const __bitset& __v) _NOEXCEPT
{
    for (size_type __i = 0; __i < _N_words; ++__i)
        __first_[__i] |= __v.__first_[__i];
}

template <size_t _N_words, size_t _Size>
inline
void
__bitset<_N_words, _Size>::operator^=(const __bitset& __v) _NOEXCEPT
{
    for (size_type __i = 0; __i < _N_words; ++__i)
        __first_[__i] ^= __v.__first_[__i];
}

template <size_t _N_words, size_t _Size>
void
__bitset<_N_words, _Size>::flip() _NOEXCEPT
{
    // do middle whole words
    size_type __n = _Size;
    __storage_pointer __p = __first_;
    for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
        *__p = ~*__p;
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __storage_type __b = *__p & __m;
        *__p &= ~__m;
        *__p |= ~__b & __m;
    }
}

template <size_t _N_words, size_t _Size>
unsigned long
__bitset<_N_words, _Size>::to_ulong(false_type) const
{
    const_iterator __e = __make_iter(_Size);
    const_iterator __i = _VSTD::find(__make_iter(sizeof(unsigned long) * CHAR_BIT), __e, true);
    if (__i != __e)
        __throw_overflow_error("bitset to_ulong overflow error");

    return __first_[0];
}

template <size_t _N_words, size_t _Size>
inline
unsigned long
__bitset<_N_words, _Size>::to_ulong(true_type) const
{
    return __first_[0];
}

template <size_t _N_words, size_t _Size>
unsigned long long
__bitset<_N_words, _Size>::to_ullong(false_type) const
{
    const_iterator __e = __make_iter(_Size);
    const_iterator __i = _VSTD::find(__make_iter(sizeof(unsigned long long) * CHAR_BIT), __e, true);
    if (__i != __e)
        __throw_overflow_error("bitset to_ullong overflow error");

    return to_ullong(true_type());
}

template <size_t _N_words, size_t _Size>
inline
unsigned long long
__bitset<_N_words, _Size>::to_ullong(true_type) const
{
    return to_ullong(true_type(), integral_constant<bool, sizeof(__storage_type) < sizeof(unsigned long long)>());
}

template <size_t _N_words, size_t _Size>
inline
unsigned long long
__bitset<_N_words, _Size>::to_ullong(true_type, false_type) const
{
    return __first_[0];
}

template <size_t _N_words, size_t _Size>
unsigned long long
__bitset<_N_words, _Size>::to_ullong(true_type, true_type) const
{
    unsigned long long __r = __first_[0];
    for (size_t __i = 1; __i < sizeof(unsigned long long) / sizeof(__storage_type); ++__i)
        __r |= static_cast<unsigned long long>(__first_[__i]) << (sizeof(__storage_type) * CHAR_BIT);
    return __r;
}

template <size_t _N_words, size_t _Size>
bool
__bitset<_N_words, _Size>::all() const _NOEXCEPT
{
    // do middle whole words
    size_type __n = _Size;
    __const_storage_pointer __p = __first_;
    for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
        if (~*__p)
            return false;
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        if (~*__p & __m)
            return false;
    }
    return true;
}

template <size_t _N_words, size_t _Size>
bool
__bitset<_N_words, _Size>::any() const _NOEXCEPT
{
    // do middle whole words
    size_type __n = _Size;
    __const_storage_pointer __p = __first_;
    for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
        if (*__p)
            return true;
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        if (*__p & __m)
            return true;
    }
    return false;
}

template <size_t _N_words, size_t _Size>
inline
size_t
__bitset<_N_words, _Size>::__hash_code() const _NOEXCEPT
{
    size_t __h = 0;
    for (size_type __i = 0; __i < _N_words; ++__i)
        __h ^= __first_[__i];
    return __h;
}

template <size_t _Size>
class __bitset<1, _Size>
{
public:
    typedef ptrdiff_t              difference_type;
    typedef size_t                 size_type;
    typedef size_type              __storage_type;
protected:
    typedef __bitset __self;
    typedef       __storage_type*  __storage_pointer;
    typedef const __storage_type*  __const_storage_pointer;
    static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);

    friend class __bit_reference<__bitset>;
    friend class __bit_const_reference<__bitset>;
    friend class __bit_iterator<__bitset, false>;
    friend class __bit_iterator<__bitset, true>;
    friend struct __bit_array<__bitset>;

    __storage_type __first_;

    typedef __bit_reference<__bitset>                  reference;
    typedef __bit_const_reference<__bitset>            const_reference;
    typedef __bit_iterator<__bitset, false>            iterator;
    typedef __bit_iterator<__bitset, true>             const_iterator;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long __v) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t __pos) _NOEXCEPT
        {return reference(&__first_, __storage_type(1) << __pos);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t __pos) const _NOEXCEPT
        {return const_reference(&__first_, __storage_type(1) << __pos);}
    _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t __pos) _NOEXCEPT
        {return iterator(&__first_ + __pos / __bits_per_word, __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t __pos) const _NOEXCEPT
        {return const_iterator(&__first_ + __pos / __bits_per_word, __pos % __bits_per_word);}

    _LIBCPP_INLINE_VISIBILITY
    void operator&=(const __bitset& __v) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void operator|=(const __bitset& __v) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    void operator^=(const __bitset& __v) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    void flip() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    unsigned long to_ulong() const;
    _LIBCPP_INLINE_VISIBILITY
    unsigned long long to_ullong() const;

    _LIBCPP_INLINE_VISIBILITY
    bool all() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bool any() const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    size_t __hash_code() const _NOEXCEPT;
};

template <size_t _Size>
inline
_LIBCPP_CONSTEXPR
__bitset<1, _Size>::__bitset() _NOEXCEPT
    : __first_(0)
{
}

template <size_t _Size>
inline
_LIBCPP_CONSTEXPR
__bitset<1, _Size>::__bitset(unsigned long long __v) _NOEXCEPT
    : __first_(
        _Size == __bits_per_word ? static_cast<__storage_type>(__v)
                                 : static_cast<__storage_type>(__v) & ((__storage_type(1) << _Size) - 1)
    )
{
}

template <size_t _Size>
inline
void
__bitset<1, _Size>::operator&=(const __bitset& __v) _NOEXCEPT
{
    __first_ &= __v.__first_;
}

template <size_t _Size>
inline
void
__bitset<1, _Size>::operator|=(const __bitset& __v) _NOEXCEPT
{
    __first_ |= __v.__first_;
}

template <size_t _Size>
inline
void
__bitset<1, _Size>::operator^=(const __bitset& __v) _NOEXCEPT
{
    __first_ ^= __v.__first_;
}

template <size_t _Size>
inline
void
__bitset<1, _Size>::flip() _NOEXCEPT
{
    __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size);
    __first_ = ~__first_;
    __first_ &= __m;
}

template <size_t _Size>
inline
unsigned long
__bitset<1, _Size>::to_ulong() const
{
    return __first_;
}

template <size_t _Size>
inline
unsigned long long
__bitset<1, _Size>::to_ullong() const
{
    return __first_;
}

template <size_t _Size>
inline
bool
__bitset<1, _Size>::all() const _NOEXCEPT
{
    __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size);
    return !(~__first_ & __m);
}

template <size_t _Size>
inline
bool
__bitset<1, _Size>::any() const _NOEXCEPT
{
    __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size);
    return __first_ & __m;
}

template <size_t _Size>
inline
size_t
__bitset<1, _Size>::__hash_code() const _NOEXCEPT
{
    return __first_;
}

template <>
class __bitset<0, 0>
{
public:
    typedef ptrdiff_t              difference_type;
    typedef size_t                 size_type;
    typedef size_type              __storage_type;
protected:
    typedef __bitset __self;
    typedef       __storage_type*  __storage_pointer;
    typedef const __storage_type*  __const_storage_pointer;
    static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);

    friend class __bit_reference<__bitset>;
    friend class __bit_const_reference<__bitset>;
    friend class __bit_iterator<__bitset, false>;
    friend class __bit_iterator<__bitset, true>;
    friend struct __bit_array<__bitset>;

    typedef __bit_reference<__bitset>                  reference;
    typedef __bit_const_reference<__bitset>            const_reference;
    typedef __bit_iterator<__bitset, false>            iterator;
    typedef __bit_iterator<__bitset, true>             const_iterator;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t) _NOEXCEPT
        {return reference(nullptr, 1);}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t) const _NOEXCEPT
        {return const_reference(nullptr, 1);}
    _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t) _NOEXCEPT
        {return iterator(nullptr, 0);}
    _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t) const _NOEXCEPT
        {return const_iterator(nullptr, 0);}

    _LIBCPP_INLINE_VISIBILITY void operator&=(const __bitset&) _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY void operator|=(const __bitset&) _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY void operator^=(const __bitset&) _NOEXCEPT {}

    _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {}

    _LIBCPP_INLINE_VISIBILITY unsigned long to_ulong() const {return 0;}
    _LIBCPP_INLINE_VISIBILITY unsigned long long to_ullong() const {return 0;}

    _LIBCPP_INLINE_VISIBILITY bool all() const _NOEXCEPT {return true;}
    _LIBCPP_INLINE_VISIBILITY bool any() const _NOEXCEPT {return false;}

    _LIBCPP_INLINE_VISIBILITY size_t __hash_code() const _NOEXCEPT {return 0;}
};

inline
_LIBCPP_CONSTEXPR
__bitset<0, 0>::__bitset() _NOEXCEPT
{
}

inline
_LIBCPP_CONSTEXPR
__bitset<0, 0>::__bitset(unsigned long long) _NOEXCEPT
{
}

template <size_t _Size> class _LIBCPP_TEMPLATE_VIS bitset;
template <size_t _Size> struct hash<bitset<_Size> >;

template <size_t _Size>
class _LIBCPP_TEMPLATE_VIS bitset
    : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size>
{
public:
    static const unsigned __n_words = _Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1;
    typedef __bitset<__n_words, _Size> base;

public:
    typedef typename base::reference       reference;
    typedef typename base::const_reference const_reference;

    // 23.3.5.1 constructors:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bitset() _NOEXCEPT {}
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
        bitset(unsigned long long __v) _NOEXCEPT : base(__v) {}
    template<class _CharT, class = _EnableIf<_IsCharLikeType<_CharT>::value> >
        explicit bitset(const _CharT* __str,
                        typename basic_string<_CharT>::size_type __n = basic_string<_CharT>::npos,
                        _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'));
    template<class _CharT, class _Traits, class _Allocator>
        explicit bitset(const basic_string<_CharT,_Traits,_Allocator>& __str,
                        typename basic_string<_CharT,_Traits,_Allocator>::size_type __pos = 0,
                        typename basic_string<_CharT,_Traits,_Allocator>::size_type __n =
                                (basic_string<_CharT,_Traits,_Allocator>::npos),
                        _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'));

    // 23.3.5.2 bitset operations:
    _LIBCPP_INLINE_VISIBILITY
    bitset& operator&=(const bitset& __rhs) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bitset& operator|=(const bitset& __rhs) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bitset& operator^=(const bitset& __rhs) _NOEXCEPT;
    bitset& operator<<=(size_t __pos) _NOEXCEPT;
    bitset& operator>>=(size_t __pos) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bitset& set() _NOEXCEPT;
    bitset& set(size_t __pos, bool __val = true);
    _LIBCPP_INLINE_VISIBILITY
    bitset& reset() _NOEXCEPT;
    bitset& reset(size_t __pos);
    _LIBCPP_INLINE_VISIBILITY
    bitset  operator~() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bitset& flip() _NOEXCEPT;
    bitset& flip(size_t __pos);

    // element access:
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
                              const_reference operator[](size_t __p) const {return base::__make_ref(__p);}
    _LIBCPP_INLINE_VISIBILITY       reference operator[](size_t __p)       {return base::__make_ref(__p);}
    _LIBCPP_INLINE_VISIBILITY
    unsigned long to_ulong() const;
    _LIBCPP_INLINE_VISIBILITY
    unsigned long long to_ullong() const;
    template <class _CharT, class _Traits, class _Allocator>
        basic_string<_CharT, _Traits, _Allocator> to_string(_CharT __zero = _CharT('0'),
                                                            _CharT __one = _CharT('1')) const;
    template <class _CharT, class _Traits>
        _LIBCPP_INLINE_VISIBILITY
        basic_string<_CharT, _Traits, allocator<_CharT> > to_string(_CharT __zero = _CharT('0'),
                                                                    _CharT __one = _CharT('1')) const;
    template <class _CharT>
        _LIBCPP_INLINE_VISIBILITY
        basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > to_string(_CharT __zero = _CharT('0'),
                                                                                _CharT __one = _CharT('1')) const;
    _LIBCPP_INLINE_VISIBILITY
    basic_string<char, char_traits<char>, allocator<char> > to_string(char __zero = '0',
                                                                      char __one = '1') const;
    _LIBCPP_INLINE_VISIBILITY
    size_t count() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR size_t size() const _NOEXCEPT {return _Size;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const bitset& __rhs) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const bitset& __rhs) const _NOEXCEPT;
    bool test(size_t __pos) const;
    _LIBCPP_INLINE_VISIBILITY
    bool all() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bool any() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY bool none() const _NOEXCEPT {return !any();}
    _LIBCPP_INLINE_VISIBILITY
    bitset operator<<(size_t __pos) const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    bitset operator>>(size_t __pos) const _NOEXCEPT;

private:

    _LIBCPP_INLINE_VISIBILITY
    size_t __hash_code() const _NOEXCEPT {return base::__hash_code();}

    friend struct hash<bitset>;
};

template <size_t _Size>
template<class _CharT, class>
bitset<_Size>::bitset(const _CharT* __str,
                      typename basic_string<_CharT>::size_type __n,
                      _CharT __zero, _CharT __one)
{
    size_t __rlen = _VSTD::min(__n, char_traits<_CharT>::length(__str));
    for (size_t __i = 0; __i < __rlen; ++__i)
        if (__str[__i] != __zero && __str[__i] != __one)
            __throw_invalid_argument("bitset string ctor has invalid argument");

    size_t _Mp = _VSTD::min(__rlen, _Size);
    size_t __i = 0;
    for (; __i < _Mp; ++__i)
    {
        _CharT __c = __str[_Mp - 1 - __i];
        (*this)[__i] = (__c == __one);
    }
    _VSTD::fill(base::__make_iter(__i), base::__make_iter(_Size), false);
}

template <size_t _Size>
template<class _CharT, class _Traits, class _Allocator>
bitset<_Size>::bitset(const basic_string<_CharT,_Traits,_Allocator>& __str,
       typename basic_string<_CharT,_Traits,_Allocator>::size_type __pos,
       typename basic_string<_CharT,_Traits,_Allocator>::size_type __n,
       _CharT __zero, _CharT __one)
{
    if (__pos > __str.size())
        __throw_out_of_range("bitset string pos out of range");

    size_t __rlen = _VSTD::min(__n, __str.size() - __pos);
    for (size_t __i = __pos; __i < __pos + __rlen; ++__i)
        if (!_Traits::eq(__str[__i], __zero) && !_Traits::eq(__str[__i], __one))
            __throw_invalid_argument("bitset string ctor has invalid argument");

    size_t _Mp = _VSTD::min(__rlen, _Size);
    size_t __i = 0;
    for (; __i < _Mp; ++__i)
    {
        _CharT __c = __str[__pos + _Mp - 1 - __i];
        (*this)[__i] = _Traits::eq(__c, __one);
    }
    _VSTD::fill(base::__make_iter(__i), base::__make_iter(_Size), false);
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::operator&=(const bitset& __rhs) _NOEXCEPT
{
    base::operator&=(__rhs);
    return *this;
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::operator|=(const bitset& __rhs) _NOEXCEPT
{
    base::operator|=(__rhs);
    return *this;
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::operator^=(const bitset& __rhs) _NOEXCEPT
{
    base::operator^=(__rhs);
    return *this;
}

template <size_t _Size>
bitset<_Size>&
bitset<_Size>::operator<<=(size_t __pos) _NOEXCEPT
{
    __pos = _VSTD::min(__pos, _Size);
    _VSTD::copy_backward(base::__make_iter(0), base::__make_iter(_Size - __pos), base::__make_iter(_Size));
    _VSTD::fill_n(base::__make_iter(0), __pos, false);
    return *this;
}

template <size_t _Size>
bitset<_Size>&
bitset<_Size>::operator>>=(size_t __pos) _NOEXCEPT
{
    __pos = _VSTD::min(__pos, _Size);
    _VSTD::copy(base::__make_iter(__pos), base::__make_iter(_Size), base::__make_iter(0));
    _VSTD::fill_n(base::__make_iter(_Size - __pos), __pos, false);
    return *this;
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::set() _NOEXCEPT
{
    _VSTD::fill_n(base::__make_iter(0), _Size, true);
    return *this;
}

template <size_t _Size>
bitset<_Size>&
bitset<_Size>::set(size_t __pos, bool __val)
{
    if (__pos >= _Size)
        __throw_out_of_range("bitset set argument out of range");

    (*this)[__pos] = __val;
    return *this;
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::reset() _NOEXCEPT
{
    _VSTD::fill_n(base::__make_iter(0), _Size, false);
    return *this;
}

template <size_t _Size>
bitset<_Size>&
bitset<_Size>::reset(size_t __pos)
{
    if (__pos >= _Size)
        __throw_out_of_range("bitset reset argument out of range");

    (*this)[__pos] = false;
    return *this;
}

template <size_t _Size>
inline
bitset<_Size>
bitset<_Size>::operator~() const _NOEXCEPT
{
    bitset __x(*this);
    __x.flip();
    return __x;
}

template <size_t _Size>
inline
bitset<_Size>&
bitset<_Size>::flip() _NOEXCEPT
{
    base::flip();
    return *this;
}

template <size_t _Size>
bitset<_Size>&
bitset<_Size>::flip(size_t __pos)
{
    if (__pos >= _Size)
        __throw_out_of_range("bitset flip argument out of range");

    reference r = base::__make_ref(__pos);
    r = ~r;
    return *this;
}

template <size_t _Size>
inline
unsigned long
bitset<_Size>::to_ulong() const
{
    return base::to_ulong();
}

template <size_t _Size>
inline
unsigned long long
bitset<_Size>::to_ullong() const
{
    return base::to_ullong();
}

template <size_t _Size>
template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
bitset<_Size>::to_string(_CharT __zero, _CharT __one) const
{
    basic_string<_CharT, _Traits, _Allocator> __r(_Size, __zero);
    for (size_t __i = 0; __i < _Size; ++__i)
    {
        if ((*this)[__i])
            __r[_Size - 1 - __i] = __one;
    }
    return __r;
}

template <size_t _Size>
template <class _CharT, class _Traits>
inline
basic_string<_CharT, _Traits, allocator<_CharT> >
bitset<_Size>::to_string(_CharT __zero, _CharT __one) const
{
    return to_string<_CharT, _Traits, allocator<_CharT> >(__zero, __one);
}

template <size_t _Size>
template <class _CharT>
inline
basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> >
bitset<_Size>::to_string(_CharT __zero, _CharT __one) const
{
    return to_string<_CharT, char_traits<_CharT>, allocator<_CharT> >(__zero, __one);
}

template <size_t _Size>
inline
basic_string<char, char_traits<char>, allocator<char> >
bitset<_Size>::to_string(char __zero, char __one) const
{
    return to_string<char, char_traits<char>, allocator<char> >(__zero, __one);
}

template <size_t _Size>
inline
size_t
bitset<_Size>::count() const _NOEXCEPT
{
    return static_cast<size_t>(_VSTD::__count_bool_true(base::__make_iter(0), _Size));
}

template <size_t _Size>
inline
bool
bitset<_Size>::operator==(const bitset& __rhs) const _NOEXCEPT
{
    return _VSTD::equal(base::__make_iter(0), base::__make_iter(_Size), __rhs.__make_iter(0));
}

template <size_t _Size>
inline
bool
bitset<_Size>::operator!=(const bitset& __rhs) const _NOEXCEPT
{
    return !(*this == __rhs);
}

template <size_t _Size>
bool
bitset<_Size>::test(size_t __pos) const
{
    if (__pos >= _Size)
        __throw_out_of_range("bitset test argument out of range");

    return (*this)[__pos];
}

template <size_t _Size>
inline
bool
bitset<_Size>::all() const _NOEXCEPT
{
    return base::all();
}

template <size_t _Size>
inline
bool
bitset<_Size>::any() const _NOEXCEPT
{
    return base::any();
}

template <size_t _Size>
inline
bitset<_Size>
bitset<_Size>::operator<<(size_t __pos) const _NOEXCEPT
{
    bitset __r = *this;
    __r <<= __pos;
    return __r;
}

template <size_t _Size>
inline
bitset<_Size>
bitset<_Size>::operator>>(size_t __pos) const _NOEXCEPT
{
    bitset __r = *this;
    __r >>= __pos;
    return __r;
}

template <size_t _Size>
inline _LIBCPP_INLINE_VISIBILITY
bitset<_Size>
operator&(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
{
    bitset<_Size> __r = __x;
    __r &= __y;
    return __r;
}

template <size_t _Size>
inline _LIBCPP_INLINE_VISIBILITY
bitset<_Size>
operator|(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
{
    bitset<_Size> __r = __x;
    __r |= __y;
    return __r;
}

template <size_t _Size>
inline _LIBCPP_INLINE_VISIBILITY
bitset<_Size>
operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
{
    bitset<_Size> __r = __x;
    __r ^= __y;
    return __r;
}

template <size_t _Size>
struct _LIBCPP_TEMPLATE_VIS hash<bitset<_Size> >
    : public unary_function<bitset<_Size>, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const bitset<_Size>& __bs) const _NOEXCEPT
        {return __bs.__hash_code();}
};

template <class _CharT, class _Traits, size_t _Size>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x);

template <class _CharT, class _Traits, size_t _Size>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x);

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_BITSET
# 1104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/bitset" 3
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <ios>
#endif /* expanded by -frewrite-includes */
# 138 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#if 0 /* expanded by -frewrite-includes */
#include <locale>
#endif /* expanded by -frewrite-includes */
# 140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 1 3
// -*- C++ -*-
//===-------------------------- locale ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_LOCALE
#define _LIBCPP_LOCALE

/*
    locale synopsis

namespace std
{

class locale
{
public:
    // types:
    class facet;
    class id;

    typedef int category;
    static const category // values assigned here are for exposition only
        none     = 0x000,
        collate  = 0x010,
        ctype    = 0x020,
        monetary = 0x040,
        numeric  = 0x080,
        time     = 0x100,
        messages = 0x200,
        all = collate | ctype | monetary | numeric | time | messages;

    // construct/copy/destroy:
    locale() noexcept;
    locale(const locale& other) noexcept;
    explicit locale(const char* std_name);
    explicit locale(const string& std_name);
    locale(const locale& other, const char* std_name, category);
    locale(const locale& other, const string& std_name, category);
    template <class Facet> locale(const locale& other, Facet* f);
    locale(const locale& other, const locale& one, category);

    ~locale(); // not virtual

    const locale& operator=(const locale& other) noexcept;

    template <class Facet> locale combine(const locale& other) const;

    // locale operations:
    basic_string<char> name() const;
    bool operator==(const locale& other) const;
    bool operator!=(const locale& other) const;
    template <class charT, class Traits, class Allocator>
      bool operator()(const basic_string<charT,Traits,Allocator>& s1,
                      const basic_string<charT,Traits,Allocator>& s2) const;

    // global locale objects:
    static locale global(const locale&);
    static const locale& classic();
};

template <class Facet> const Facet& use_facet(const locale&);
template <class Facet> bool has_facet(const locale&) noexcept;

// 22.3.3, convenience interfaces:
template <class charT> bool isspace (charT c, const locale& loc);
template <class charT> bool isprint (charT c, const locale& loc);
template <class charT> bool iscntrl (charT c, const locale& loc);
template <class charT> bool isupper (charT c, const locale& loc);
template <class charT> bool islower (charT c, const locale& loc);
template <class charT> bool isalpha (charT c, const locale& loc);
template <class charT> bool isdigit (charT c, const locale& loc);
template <class charT> bool ispunct (charT c, const locale& loc);
template <class charT> bool isxdigit(charT c, const locale& loc);
template <class charT> bool isalnum (charT c, const locale& loc);
template <class charT> bool isgraph (charT c, const locale& loc);
template <class charT> charT toupper(charT c, const locale& loc);
template <class charT> charT tolower(charT c, const locale& loc);

template<class Codecvt, class Elem = wchar_t,
         class Wide_alloc = allocator<Elem>,
         class Byte_alloc = allocator<char>>
class wstring_convert
{
public:
    typedef basic_string<char, char_traits<char>, Byte_alloc> byte_string;
    typedef basic_string<Elem, char_traits<Elem>, Wide_alloc> wide_string;
    typedef typename Codecvt::state_type                      state_type;
    typedef typename wide_string::traits_type::int_type       int_type;

    wstring_convert(Codecvt* pcvt = new Codecvt);          // before C++14
    explicit wstring_convert(Codecvt* pcvt = new Codecvt); // before C++20
    wstring_convert() : wstring_convert(new Codecvt) {}    // C++20
    explicit wstring_convert(Codecvt* pcvt);               // C++20

    wstring_convert(Codecvt* pcvt, state_type state);
    explicit wstring_convert(const byte_string& byte_err,           // explicit in C++14
                    const wide_string& wide_err = wide_string());
    wstring_convert(const wstring_convert&) = delete;               // C++14
    wstring_convert & operator=(const wstring_convert &) = delete;  // C++14
    ~wstring_convert();

    wide_string from_bytes(char byte);
    wide_string from_bytes(const char* ptr);
    wide_string from_bytes(const byte_string& str);
    wide_string from_bytes(const char* first, const char* last);

    byte_string to_bytes(Elem wchar);
    byte_string to_bytes(const Elem* wptr);
    byte_string to_bytes(const wide_string& wstr);
    byte_string to_bytes(const Elem* first, const Elem* last);

    size_t converted() const; // noexcept in C++14
    state_type state() const;
};

template <class Codecvt, class Elem = wchar_t, class Tr = char_traits<Elem>>
class wbuffer_convert
    : public basic_streambuf<Elem, Tr>
{
public:
    typedef typename Tr::state_type state_type;

    wbuffer_convert(streambuf* bytebuf = 0, Codecvt* pcvt = new Codecvt,
                    state_type state = state_type());          // before C++14
    explicit wbuffer_convert(streambuf* bytebuf = nullptr, Codecvt* pcvt = new Codecvt,
                            state_type state = state_type()); // before C++20
    wbuffer_convert() : wbuffer_convert(nullptr) {} // C++20
    explicit wbuffer_convert(streambuf* bytebuf, Codecvt* pcvt = new Codecvt,
                            state_type state = state_type()); // C++20

    wbuffer_convert(const wbuffer_convert&) = delete;               // C++14
    wbuffer_convert & operator=(const wbuffer_convert &) = delete;  // C++14
    ~wbuffer_convert();                                             // C++14

    streambuf* rdbuf() const;
    streambuf* rdbuf(streambuf* bytebuf);

    state_type state() const;
};

// 22.4.1 and 22.4.1.3, ctype:
class ctype_base;
template <class charT> class ctype;
template <> class ctype<char>; // specialization
template <class charT> class ctype_byname;
template <> class ctype_byname<char>; // specialization

class codecvt_base;
template <class internT, class externT, class stateT> class codecvt;
template <class internT, class externT, class stateT> class codecvt_byname;

// 22.4.2 and 22.4.3, numeric:
template <class charT, class InputIterator> class num_get;
template <class charT, class OutputIterator> class num_put;
template <class charT> class numpunct;
template <class charT> class numpunct_byname;

// 22.4.4, col lation:
template <class charT> class collate;
template <class charT> class collate_byname;

// 22.4.5, date and time:
class time_base;
template <class charT, class InputIterator> class time_get;
template <class charT, class InputIterator> class time_get_byname;
template <class charT, class OutputIterator> class time_put;
template <class charT, class OutputIterator> class time_put_byname;

// 22.4.6, money:
class money_base;
template <class charT, class InputIterator> class money_get;
template <class charT, class OutputIterator> class money_put;
template <class charT, bool Intl> class moneypunct;
template <class charT, bool Intl> class moneypunct_byname;

// 22.4.7, message retrieval:
class messages_base;
template <class charT> class messages;
template <class charT> class messages_byname;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <__locale>
#endif /* expanded by -frewrite-includes */
# 192 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#ifndef __APPLE__
#if 0 /* expanded by -frewrite-includes */
# include <cstdarg>
#endif /* expanded by -frewrite-includes */
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 1 3
// -*- C++ -*-
//===--------------------------- cstdarg ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_CSTDARG
#define _LIBCPP_CSTDARG

/*
    cstdarg synopsis

Macros:

    type va_arg(va_list ap, type);
    void va_copy(va_list dest, va_list src);  // C99
    void va_end(va_list ap);
    void va_start(va_list ap, parmN);

namespace std
{

Types:

    va_list

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdarg.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdarg.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-2-Clause
 *
 * Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _MACHINE_STDARG_H_
#define	_MACHINE_STDARG_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_stdarg.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdarg.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 2002 David E. O'Brien.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _SYS__STDARG_H_
#define _SYS__STDARG_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4

#ifndef _VA_LIST_DECLARED
  #define _VA_LIST_DECLARED
  typedef __va_list       va_list;
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4

#ifdef __GNUCLIKE_BUILTIN_STDARG
  #define	va_start(ap, last)	__builtin_va_start((ap), (last))
  #define	va_arg(ap, type)	__builtin_va_arg((ap), type)
  #define	__va_copy(dest, src)	__builtin_va_copy((dest), (src))
  
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
    #define	va_copy(dest, src)	__va_copy(dest, src)
  #endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
  #define	va_end(ap)		__builtin_va_end(ap)
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4

#endif /* ! _SYS__STDARG_H_ */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/_stdarg.h" 3 4
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdarg.h" 2 3 4

#ifndef va_start
  #error this file needs to be ported to your compiler
#endif
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdarg.h" 3 4

#endif /* !_MACHINE_STDARG_H_ */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/stdarg.h" 3 4
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
#endif
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3

_LIBCPP_BEGIN_NAMESPACE_STD

using ::va_list _LIBCPP_USING_IF_EXISTS;

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_CSTDARG
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/cstdarg" 3
# 196 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 2 3
#endif
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdio>
#endif /* expanded by -frewrite-includes */
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 198 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <ctime>
#endif /* expanded by -frewrite-includes */
# 199 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <ios>
#endif /* expanded by -frewrite-includes */
# 200 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 201 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 202 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <streambuf>
#endif /* expanded by -frewrite-includes */
# 204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 1 3
// -*- C++ -*-
//===------------------------- streambuf ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_STREAMBUF
#define _LIBCPP_STREAMBUF

/*
    streambuf synopsis

namespace std
{

template <class charT, class traits = char_traits<charT> >
class basic_streambuf
{
public:
    // types:
    typedef charT char_type;
    typedef traits traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    virtual ~basic_streambuf();

    // 27.6.2.2.1 locales:
    locale pubimbue(const locale& loc);
    locale getloc() const;

    // 27.6.2.2.2 buffer and positioning:
    basic_streambuf* pubsetbuf(char_type* s, streamsize n);
    pos_type pubseekoff(off_type off, ios_base::seekdir way,
                        ios_base::openmode which = ios_base::in | ios_base::out);
    pos_type pubseekpos(pos_type sp,
                        ios_base::openmode which = ios_base::in | ios_base::out);
    int pubsync();

    // Get and put areas:
    // 27.6.2.2.3 Get area:
    streamsize in_avail();
    int_type snextc();
    int_type sbumpc();
    int_type sgetc();
    streamsize sgetn(char_type* s, streamsize n);

    // 27.6.2.2.4 Putback:
    int_type sputbackc(char_type c);
    int_type sungetc();

    // 27.6.2.2.5 Put area:
    int_type sputc(char_type c);
    streamsize sputn(const char_type* s, streamsize n);

protected:
    basic_streambuf();
    basic_streambuf(const basic_streambuf& rhs);
    basic_streambuf& operator=(const basic_streambuf& rhs);
    void swap(basic_streambuf& rhs);

    // 27.6.2.3.2 Get area:
    char_type* eback() const;
    char_type* gptr() const;
    char_type* egptr() const;
    void gbump(int n);
    void setg(char_type* gbeg, char_type* gnext, char_type* gend);

    // 27.6.2.3.3 Put area:
    char_type* pbase() const;
    char_type* pptr() const;
    char_type* epptr() const;
    void pbump(int n);
    void setp(char_type* pbeg, char_type* pend);

    // 27.6.2.4 virtual functions:
    // 27.6.2.4.1 Locales:
    virtual void imbue(const locale& loc);

    // 27.6.2.4.2 Buffer management and positioning:
    virtual basic_streambuf* setbuf(char_type* s, streamsize n);
    virtual pos_type seekoff(off_type off, ios_base::seekdir way,
                             ios_base::openmode which = ios_base::in | ios_base::out);
    virtual pos_type seekpos(pos_type sp,
                             ios_base::openmode which = ios_base::in | ios_base::out);
    virtual int sync();

    // 27.6.2.4.3 Get area:
    virtual streamsize showmanyc();
    virtual streamsize xsgetn(char_type* s, streamsize n);
    virtual int_type underflow();
    virtual int_type uflow();

    // 27.6.2.4.4 Putback:
    virtual int_type pbackfail(int_type c = traits_type::eof());

    // 27.6.2.4.5 Put area:
    virtual streamsize xsputn(const char_type* s, streamsize n);
    virtual int_type overflow (int_type c = traits_type::eof());
};

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 110 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
#if 0 /* expanded by -frewrite-includes */
#include <ios>
#endif /* expanded by -frewrite-includes */
# 111 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd>
#endif /* expanded by -frewrite-includes */
# 112 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
#endif
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 119 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_streambuf
{
public:
    // types:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    static_assert((is_same<_CharT, typename traits_type::char_type>::value),
                  "traits_type::char_type must be the same type as CharT");

    virtual ~basic_streambuf();

    // 27.6.2.2.1 locales:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    locale pubimbue(const locale& __loc) {
        imbue(__loc);
        locale __r = __loc_;
        __loc_ = __loc;
        return __r;
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    locale getloc() const { return __loc_; }

    // 27.6.2.2.2 buffer and positioning:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_streambuf* pubsetbuf(char_type* __s, streamsize __n)
    { return setbuf(__s, __n); }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    pos_type pubseekoff(off_type __off, ios_base::seekdir __way,
                        ios_base::openmode __which = ios_base::in | ios_base::out)
    { return seekoff(__off, __way, __which); }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    pos_type pubseekpos(pos_type __sp,
                        ios_base::openmode __which = ios_base::in | ios_base::out)
    { return seekpos(__sp, __which); }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int pubsync() { return sync(); }

    // Get and put areas:
    // 27.6.2.2.3 Get area:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    streamsize in_avail() {
        if (__ninp_ < __einp_)
            return static_cast<streamsize>(__einp_ - __ninp_);
        return showmanyc();
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type snextc() {
        if (sbumpc() == traits_type::eof())
            return traits_type::eof();
        return sgetc();
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type sbumpc() {
        if (__ninp_ == __einp_)
            return uflow();
        return traits_type::to_int_type(*__ninp_++);
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type sgetc() {
        if (__ninp_ == __einp_)
            return underflow();
        return traits_type::to_int_type(*__ninp_);
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    streamsize sgetn(char_type* __s, streamsize __n)
    { return xsgetn(__s, __n); }

    // 27.6.2.2.4 Putback:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type sputbackc(char_type __c) {
        if (__binp_ == __ninp_ || !traits_type::eq(__c, __ninp_[-1]))
            return pbackfail(traits_type::to_int_type(__c));
        return traits_type::to_int_type(*--__ninp_);
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type sungetc() {
        if (__binp_ == __ninp_)
          return pbackfail();
        return traits_type::to_int_type(*--__ninp_);
    }

    // 27.6.2.2.5 Put area:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    int_type sputc(char_type __c) {
        if (__nout_ == __eout_)
            return overflow(traits_type::to_int_type(__c));
        *__nout_++ = __c;
        return traits_type::to_int_type(__c);
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    streamsize sputn(const char_type* __s, streamsize __n)
    { return xsputn(__s, __n); }

protected:
    basic_streambuf();
    basic_streambuf(const basic_streambuf& __rhs);
    basic_streambuf& operator=(const basic_streambuf& __rhs);
    void swap(basic_streambuf& __rhs);

    // 27.6.2.3.2 Get area:
    _LIBCPP_INLINE_VISIBILITY char_type* eback() const {return __binp_;}
    _LIBCPP_INLINE_VISIBILITY char_type* gptr()  const {return __ninp_;}
    _LIBCPP_INLINE_VISIBILITY char_type* egptr() const {return __einp_;}

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void gbump(int __n) { __ninp_ += __n; }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) {
        __binp_ = __gbeg;
        __ninp_ = __gnext;
        __einp_ = __gend;
    }

    // 27.6.2.3.3 Put area:
    _LIBCPP_INLINE_VISIBILITY char_type* pbase() const {return __bout_;}
    _LIBCPP_INLINE_VISIBILITY char_type* pptr()  const {return __nout_;}
    _LIBCPP_INLINE_VISIBILITY char_type* epptr() const {return __eout_;}

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void pbump(int __n) { __nout_ += __n; }

    _LIBCPP_INLINE_VISIBILITY
    void __pbump(streamsize __n) { __nout_ += __n; }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void setp(char_type* __pbeg, char_type* __pend) {
        __bout_ = __nout_ = __pbeg;
        __eout_ = __pend;
    }

    // 27.6.2.4 virtual functions:
    // 27.6.2.4.1 Locales:
    virtual void imbue(const locale& __loc);

    // 27.6.2.4.2 Buffer management and positioning:
    virtual basic_streambuf* setbuf(char_type* __s, streamsize __n);
    virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
                             ios_base::openmode __which = ios_base::in | ios_base::out);
    virtual pos_type seekpos(pos_type __sp,
                             ios_base::openmode __which = ios_base::in | ios_base::out);
    virtual int sync();

    // 27.6.2.4.3 Get area:
    virtual streamsize showmanyc();
    virtual streamsize xsgetn(char_type* __s, streamsize __n);
    virtual int_type underflow();
    virtual int_type uflow();

    // 27.6.2.4.4 Putback:
    virtual int_type pbackfail(int_type __c = traits_type::eof());

    // 27.6.2.4.5 Put area:
    virtual streamsize xsputn(const char_type* __s, streamsize __n);
    virtual int_type overflow(int_type __c = traits_type::eof());

private:
    locale __loc_;
    char_type* __binp_;
    char_type* __ninp_;
    char_type* __einp_;
    char_type* __bout_;
    char_type* __nout_;
    char_type* __eout_;
};

template <class _CharT, class _Traits>
basic_streambuf<_CharT, _Traits>::~basic_streambuf()
{
}

template <class _CharT, class _Traits>
basic_streambuf<_CharT, _Traits>::basic_streambuf()
    : __binp_(nullptr),
      __ninp_(nullptr),
      __einp_(nullptr),
      __bout_(nullptr),
      __nout_(nullptr),
      __eout_(nullptr)
{
}

template <class _CharT, class _Traits>
basic_streambuf<_CharT, _Traits>::basic_streambuf(const basic_streambuf& __sb)
    : __loc_(__sb.__loc_),
      __binp_(__sb.__binp_),
      __ninp_(__sb.__ninp_),
      __einp_(__sb.__einp_),
      __bout_(__sb.__bout_),
      __nout_(__sb.__nout_),
      __eout_(__sb.__eout_)
{
}

template <class _CharT, class _Traits>
basic_streambuf<_CharT, _Traits>&
basic_streambuf<_CharT, _Traits>::operator=(const basic_streambuf& __sb)
{
    __loc_ = __sb.__loc_;
    __binp_ = __sb.__binp_;
    __ninp_ = __sb.__ninp_;
    __einp_ = __sb.__einp_;
    __bout_ = __sb.__bout_;
    __nout_ = __sb.__nout_;
    __eout_ = __sb.__eout_;
    return *this;
}

template <class _CharT, class _Traits>
void
basic_streambuf<_CharT, _Traits>::swap(basic_streambuf& __sb)
{
    _VSTD::swap(__loc_, __sb.__loc_);
    _VSTD::swap(__binp_, __sb.__binp_);
    _VSTD::swap(__ninp_, __sb.__ninp_);
    _VSTD::swap(__einp_, __sb.__einp_);
    _VSTD::swap(__bout_, __sb.__bout_);
    _VSTD::swap(__nout_, __sb.__nout_);
    _VSTD::swap(__eout_, __sb.__eout_);
}

template <class _CharT, class _Traits>
void
basic_streambuf<_CharT, _Traits>::imbue(const locale&)
{
}

template <class _CharT, class _Traits>
basic_streambuf<_CharT, _Traits>*
basic_streambuf<_CharT, _Traits>::setbuf(char_type*, streamsize)
{
    return this;
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::pos_type
basic_streambuf<_CharT, _Traits>::seekoff(off_type, ios_base::seekdir,
                                          ios_base::openmode)
{
    return pos_type(off_type(-1));
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::pos_type
basic_streambuf<_CharT, _Traits>::seekpos(pos_type, ios_base::openmode)
{
    return pos_type(off_type(-1));
}

template <class _CharT, class _Traits>
int
basic_streambuf<_CharT, _Traits>::sync()
{
    return 0;
}

template <class _CharT, class _Traits>
streamsize
basic_streambuf<_CharT, _Traits>::showmanyc()
{
    return 0;
}

template <class _CharT, class _Traits>
streamsize
basic_streambuf<_CharT, _Traits>::xsgetn(char_type* __s, streamsize __n)
{
    const int_type __eof = traits_type::eof();
    int_type __c;
    streamsize __i = 0;
    while(__i < __n)
    {
        if (__ninp_ < __einp_)
        {
            const streamsize __len = _VSTD::min(static_cast<streamsize>(INT_MAX),
                                _VSTD::min(__einp_ - __ninp_, __n - __i));
            traits_type::copy(__s, __ninp_, __len);
            __s +=  __len;
            __i +=  __len;
            this->gbump(__len);
        }
        else if ((__c = uflow()) != __eof)
        {
            *__s = traits_type::to_char_type(__c);
            ++__s;
            ++__i;
        }
        else
            break;
    }
    return __i;
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::int_type
basic_streambuf<_CharT, _Traits>::underflow()
{
    return traits_type::eof();
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::int_type
basic_streambuf<_CharT, _Traits>::uflow()
{
    if (underflow() == traits_type::eof())
        return traits_type::eof();
    return traits_type::to_int_type(*__ninp_++);
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::int_type
basic_streambuf<_CharT, _Traits>::pbackfail(int_type)
{
    return traits_type::eof();
}

template <class _CharT, class _Traits>
streamsize
basic_streambuf<_CharT, _Traits>::xsputn(const char_type* __s, streamsize __n)
{
    streamsize __i = 0;
    int_type __eof = traits_type::eof();
    while( __i < __n)
    {
        if (__nout_ >= __eout_)
        {
            if (overflow(traits_type::to_int_type(*__s)) == __eof)
                break;
            ++__s;
            ++__i;
        }
        else
        {
            streamsize __chunk_size = _VSTD::min(__eout_ - __nout_, __n - __i);
            traits_type::copy(__nout_, __s, __chunk_size);
            __nout_ += __chunk_size;
            __s     += __chunk_size;
            __i     += __chunk_size;
        }
    }
    return __i;
}

template <class _CharT, class _Traits>
typename basic_streambuf<_CharT, _Traits>::int_type
basic_streambuf<_CharT, _Traits>::overflow(int_type)
{
    return traits_type::eof();
}

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<wchar_t>)

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios<wchar_t>)

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_STREAMBUF
# 499 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/streambuf" 3
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 206 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

#if 0 /* disabled by -frewrite-includes */
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 208 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
// Most unix variants have catopen.  These are the specific ones that don't.
#if 0 /* disabled by -frewrite-includes */
#  if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#    define _LIBCPP_HAS_CATOPEN 1
#if 0 /* expanded by -frewrite-includes */
#    include <nl_types.h>
#endif /* expanded by -frewrite-includes */
# 211 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 1 3 4
/*	$NetBSD: nl_types.h,v 1.9 2000/10/03 19:53:32 sommerfeld Exp $	*/

/*-
 * SPDX-License-Identifier: BSD-2-Clause-NetBSD
 *
 * Copyright (c) 1996 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by J.T. Conklin.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _NL_TYPES_H_
#define _NL_TYPES_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4

#ifdef _NLS_PRIVATE
/*
 * MESSAGE CATALOG FILE FORMAT.
 *
 * The NetBSD/FreeBSD message catalog format is similar to the format used by
 * Svr4 systems.  The differences are:
 *   * fixed byte order (big endian)
 *   * fixed data field sizes
 *
 * A message catalog contains four data types: a catalog header, one
 * or more set headers, one or more message headers, and one or more
 * text strings.
 */

#define _NLS_MAGIC	0xff88ff89

struct _nls_cat_hdr {
	int32_t __magic;
	int32_t __nsets;
	int32_t __mem;
	int32_t __msg_hdr_offset;
	int32_t __msg_txt_offset;
} ;

struct _nls_set_hdr {
	int32_t __setno;	/* set number: 0 < x <= NL_SETMAX */
	int32_t __nmsgs;	/* number of messages in the set  */
	int32_t __index;	/* index of first msg_hdr in msg_hdr table */
} ;

struct _nls_msg_hdr {
	int32_t __msgno;	/* msg number: 0 < x <= NL_MSGMAX */
	int32_t __msglen;
	int32_t __offset;
} ;

#endif	/* _NLS_PRIVATE */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4

#define	NL_SETD		0
#define	NL_CAT_LOCALE	1

typedef struct __nl_cat_d {
	void	*__data;
	int	__size;
} *nl_catd;

#ifndef _NL_ITEM_DECLARED
typedef	__nl_item	nl_item;
#define	_NL_ITEM_DECLARED
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4

__BEGIN_DECLS
nl_catd  catopen(const char *, int);
char    *catgets(nl_catd, int, int, const char *) __format_arg(4);
int	 catclose(nl_catd);
__END_DECLS

#endif	/* _NL_TYPES_H_ */
# 100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/nl_types.h" 3 4
# 212 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 2 3
#  endif
# 213 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#endif
# 214 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

#ifdef _LIBCPP_LOCALE__L_EXTENSIONS
#if 0 /* expanded by -frewrite-includes */
#include <__bsd_locale_defaults.h>
#endif /* expanded by -frewrite-includes */
# 216 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bsd_locale_defaults.h" 1 3
// -*- C++ -*-
//===---------------------- __bsd_locale_defaults.h -----------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// The BSDs have lots of *_l functions.  We don't want to define those symbols
// on other platforms though, for fear of conflicts with user code.  So here,
// we will define the mapping from an internal macro to the real BSD symbol.
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H
#define _LIBCPP_BSD_LOCALE_DEFAULTS_H

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bsd_locale_defaults.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bsd_locale_defaults.h" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bsd_locale_defaults.h" 3

#define __libcpp_mb_cur_max_l(loc)                          MB_CUR_MAX_L(loc)
#define __libcpp_btowc_l(ch, loc)                           btowc_l(ch, loc)
#define __libcpp_wctob_l(wch, loc)                          wctob_l(wch, loc)
#define __libcpp_wcsnrtombs_l(dst, src, nwc, len, ps, loc)  wcsnrtombs_l(dst, src, nwc, len, ps, loc)
#define __libcpp_wcrtomb_l(src, wc, ps, loc)                wcrtomb_l(src, wc, ps, loc)
#define __libcpp_mbsnrtowcs_l(dst, src, nms, len, ps, loc)  mbsnrtowcs_l(dst, src, nms, len, ps, loc)
#define __libcpp_mbrtowc_l(pwc, s, n, ps, l)                mbrtowc_l(pwc, s, n, ps, l)
#define __libcpp_mbtowc_l(pwc, pmb, max, l)                 mbtowc_l(pwc, pmb, max, l)
#define __libcpp_mbrlen_l(s, n, ps, l)                      mbrlen_l(s, n, ps, l)
#define __libcpp_localeconv_l(l)                            localeconv_l(l)
#define __libcpp_mbsrtowcs_l(dest, src, len, ps, l)         mbsrtowcs_l(dest, src, len, ps, l)
#define __libcpp_snprintf_l(...)                            snprintf_l(__VA_ARGS__)
#define __libcpp_asprintf_l(...)                            asprintf_l(__VA_ARGS__)
#define __libcpp_sscanf_l(...)                              sscanf_l(__VA_ARGS__)

#endif // _LIBCPP_BSD_LOCALE_DEFAULTS_H
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__bsd_locale_defaults.h" 3
# 217 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 2 3
#else
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#include <__bsd_locale_fallbacks.h>
#endif /* expanded by -frewrite-includes */
# 218 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#endif
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 223 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#endif
# 224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 227 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if defined(__APPLE__) || defined(__FreeBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#  define _LIBCPP_GET_C_LOCALE 0
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__CloudABI__) || defined(__NetBSD__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#  define _LIBCPP_GET_C_LOCALE LC_C_LOCALE
#else
# 236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
#  define _LIBCPP_GET_C_LOCALE __cloc()
   // Get the C locale object
   _LIBCPP_FUNC_VIS locale_t __cloc();
#define __cloc_defined
#endif
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

// __scan_keyword
// Scans [__b, __e) until a match is found in the basic_strings range
//  [__kb, __ke) or until it can be shown that there is no match in [__kb, __ke).
//  __b will be incremented (visibly), consuming CharT until a match is found
//  or proved to not exist.  A keyword may be "", in which will match anything.
//  If one keyword is a prefix of another, and the next CharT in the input
//  might match another keyword, the algorithm will attempt to find the longest
//  matching keyword.  If the longer matching keyword ends up not matching, then
//  no keyword match is found.  If no keyword match is found, __ke is returned
//  and failbit is set in __err.
//  Else an iterator pointing to the matching keyword is found.  If more than
//  one keyword matches, an iterator to the first matching keyword is returned.
//  If on exit __b == __e, eofbit is set in __err.  If __case_sensitive is false,
//  __ct is used to force to lower case before comparing characters.
//  Examples:
//  Keywords:  "a", "abb"
//  If the input is "a", the first keyword matches and eofbit is set.
//  If the input is "abc", no match is found and "ab" are consumed.
template <class _InputIterator, class _ForwardIterator, class _Ctype>
_LIBCPP_HIDDEN
_ForwardIterator
__scan_keyword(_InputIterator& __b, _InputIterator __e,
               _ForwardIterator __kb, _ForwardIterator __ke,
               const _Ctype& __ct, ios_base::iostate& __err,
               bool __case_sensitive = true)
{
    typedef typename iterator_traits<_InputIterator>::value_type _CharT;
    size_t __nkw = static_cast<size_t>(_VSTD::distance(__kb, __ke));
    const unsigned char __doesnt_match = '\0';
    const unsigned char __might_match = '\1';
    const unsigned char __does_match = '\2';
    unsigned char __statbuf[100];
    unsigned char* __status = __statbuf;
    unique_ptr<unsigned char, void(*)(void*)> __stat_hold(nullptr, free);
    if (__nkw > sizeof(__statbuf))
    {
        __status = (unsigned char*)malloc(__nkw);
        if (__status == nullptr)
            __throw_bad_alloc();
        __stat_hold.reset(__status);
    }
    size_t __n_might_match = __nkw;  // At this point, any keyword might match
    size_t __n_does_match = 0;       // but none of them definitely do
    // Initialize all statuses to __might_match, except for "" keywords are __does_match
    unsigned char* __st = __status;
    for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st)
    {
        if (!__ky->empty())
            *__st = __might_match;
        else
        {
            *__st = __does_match;
            --__n_might_match;
            ++__n_does_match;
        }
    }
    // While there might be a match, test keywords against the next CharT
    for (size_t __indx = 0; __b != __e && __n_might_match > 0; ++__indx)
    {
        // Peek at the next CharT but don't consume it
        _CharT __c = *__b;
        if (!__case_sensitive)
            __c = __ct.toupper(__c);
        bool __consume = false;
        // For each keyword which might match, see if the __indx character is __c
        // If a match if found, consume __c
        // If a match is found, and that is the last character in the keyword,
        //    then that keyword matches.
        // If the keyword doesn't match this character, then change the keyword
        //    to doesn't match
        __st = __status;
        for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st)
        {
            if (*__st == __might_match)
            {
                _CharT __kc = (*__ky)[__indx];
                if (!__case_sensitive)
                    __kc = __ct.toupper(__kc);
                if (__c == __kc)
                {
                    __consume = true;
                    if (__ky->size() == __indx+1)
                    {
                        *__st = __does_match;
                        --__n_might_match;
                        ++__n_does_match;
                    }
                }
                else
                {
                    *__st = __doesnt_match;
                    --__n_might_match;
                }
            }
        }
        // consume if we matched a character
        if (__consume)
        {
            ++__b;
            // If we consumed a character and there might be a matched keyword that
            //   was marked matched on a previous iteration, then such keywords
            //   which are now marked as not matching.
            if (__n_might_match + __n_does_match > 1)
            {
                __st = __status;
                for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st)
                {
                    if (*__st == __does_match && __ky->size() != __indx+1)
                    {
                        *__st = __doesnt_match;
                        --__n_does_match;
                    }
                }
            }
        }
    }
    // We've exited the loop because we hit eof and/or we have no more "might matches".
    if (__b == __e)
        __err |= ios_base::eofbit;
    // Return the first matching result
    for (__st = __status; __kb != __ke; ++__kb, (void) ++__st)
        if (*__st == __does_match)
            break;
    if (__kb == __ke)
        __err |= ios_base::failbit;
    return __kb;
}

struct _LIBCPP_TYPE_VIS __num_get_base
{
    static const int __num_get_buf_sz = 40;

    static int __get_base(ios_base&);
    static const char __src[33];
};

_LIBCPP_FUNC_VIS
void __check_grouping(const string& __grouping, unsigned* __g, unsigned* __g_end,
                      ios_base::iostate& __err);

template <class _CharT>
struct __num_get
    : protected __num_get_base
{
    static string __stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point,
                                      _CharT& __thousands_sep);

    static int __stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp,
                                   char* __a, char*& __a_end,
                                   _CharT __decimal_point, _CharT __thousands_sep,
                                   const string& __grouping, unsigned* __g,
                                   unsigned*& __g_end, unsigned& __dc, _CharT* __atoms);
#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
    static string __stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep);
    static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
                  unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
                  unsigned* __g, unsigned*& __g_end, _CharT* __atoms);

#else
# 401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    static string __stage2_int_prep(ios_base& __iob, _CharT& __thousands_sep)
    {
        locale __loc = __iob.getloc();
        const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
        __thousands_sep = __np.thousands_sep();
        return __np.grouping();
    }

    const _CharT* __do_widen(ios_base& __iob, _CharT* __atoms) const
    {
      return __do_widen_p(__iob, __atoms);
    }


    static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
                  unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
                  unsigned* __g, unsigned*& __g_end, const _CharT* __atoms);
private:
    template<typename T>
    const T* __do_widen_p(ios_base& __iob, T* __atoms) const
    {
      locale __loc = __iob.getloc();
      use_facet<ctype<T> >(__loc).widen(__src, __src + 26, __atoms);
      return __atoms;
    }

    const char* __do_widen_p(ios_base& __iob, char* __atoms) const
    {
      (void)__iob;
      (void)__atoms;
      return __src;
    }
#endif
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
};

#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
template <class _CharT>
string
__num_get<_CharT>::__stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep)
{
    locale __loc = __iob.getloc();
    use_facet<ctype<_CharT> >(__loc).widen(__src, __src + 26, __atoms);
    const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
    __thousands_sep = __np.thousands_sep();
    return __np.grouping();
}
#endif
# 448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

template <class _CharT>
string
__num_get<_CharT>::__stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point,
                    _CharT& __thousands_sep)
{
    locale __loc = __iob.getloc();
    use_facet<ctype<_CharT> >(__loc).widen(__src, __src + 32, __atoms);
    const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
    __decimal_point = __np.decimal_point();
    __thousands_sep = __np.thousands_sep();
    return __np.grouping();
}

template <class _CharT>
int
#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
__num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
                  unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
                  unsigned* __g, unsigned*& __g_end, _CharT* __atoms)
#else
# 469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
__num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
                  unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
                  unsigned* __g, unsigned*& __g_end, const _CharT* __atoms)

#endif
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
{
    if (__a_end == __a && (__ct == __atoms[24] || __ct == __atoms[25]))
    {
        *__a_end++ = __ct == __atoms[24] ? '+' : '-';
        __dc = 0;
        return 0;
    }
    if (__grouping.size() != 0 && __ct == __thousands_sep)
    {
        if (__g_end-__g < __num_get_buf_sz)
        {
            *__g_end++ = __dc;
            __dc = 0;
        }
        return 0;
    }
    ptrdiff_t __f = find(__atoms, __atoms + 26, __ct) - __atoms;
    if (__f >= 24)
        return -1;
    switch (__base)
    {
    case 8:
    case 10:
        if (__f >= __base)
            return -1;
        break;
    case 16:
        if (__f < 22)
            break;
        if (__a_end != __a && __a_end - __a <= 2 && __a_end[-1] == '0')
        {
            __dc = 0;
            *__a_end++ = __src[__f];
            return 0;
        }
        return -1;
    }
    *__a_end++ = __src[__f];
    ++__dc;
    return 0;
}

template <class _CharT>
int
__num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp, char* __a, char*& __a_end,
                    _CharT __decimal_point, _CharT __thousands_sep, const string& __grouping,
                    unsigned* __g, unsigned*& __g_end, unsigned& __dc, _CharT* __atoms)
{
    if (__ct == __decimal_point)
    {
        if (!__in_units)
            return -1;
        __in_units = false;
        *__a_end++ = '.';
        if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz)
            *__g_end++ = __dc;
        return 0;
    }
    if (__ct == __thousands_sep && __grouping.size() != 0)
    {
        if (!__in_units)
            return -1;
        if (__g_end-__g < __num_get_buf_sz)
        {
            *__g_end++ = __dc;
            __dc = 0;
        }
        return 0;
    }
    ptrdiff_t __f = find(__atoms, __atoms + 32, __ct) - __atoms;
    if (__f >= 32)
        return -1;
    char __x = __src[__f];
    if (__x == '-' || __x == '+')
    {
        if (__a_end == __a || (__a_end[-1] & 0x5F) == (__exp & 0x7F))
        {
            *__a_end++ = __x;
            return 0;
        }
        return -1;
    }
    if (__x == 'x' || __x == 'X')
        __exp = 'P';
    else if ((__x & 0x5F) == __exp)
    {
        __exp |= (char) 0x80;
        if (__in_units)
        {
            __in_units = false;
            if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz)
                *__g_end++ = __dc;
        }
    }
    *__a_end++ = __x;
    if (__f >= 22)
        return 0;
    ++__dc;
    return 0;
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_get<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_get<wchar_t>)

template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS num_get
    : public locale::facet,
      private __num_get<_CharT>
{
public:
    typedef _CharT char_type;
    typedef _InputIterator iter_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit num_get(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, bool& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, long& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, long long& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, unsigned short& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, unsigned int& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, unsigned long& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, unsigned long long& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, float& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, double& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, long double& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, void*& __v) const
    {
        return do_get(__b, __e, __iob, __err, __v);
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~num_get() {}

    template <class _Fp>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    iter_type __do_get_floating_point
                            (iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, _Fp& __v) const;

    template <class _Signed>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    iter_type __do_get_signed
                            (iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, _Signed& __v) const;

    template <class _Unsigned>
    _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
    iter_type __do_get_unsigned
                            (iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, _Unsigned& __v) const;


    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, bool& __v) const;

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, long& __v) const
    { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, long long& __v) const
    { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, unsigned short& __v) const
    { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, unsigned int& __v) const
    { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, unsigned long& __v) const
    { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, unsigned long long& __v) const
    { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, float& __v) const
    { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, double& __v) const
    { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, long double& __v) const
    { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }

    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, void*& __v) const;
};

template <class _CharT, class _InputIterator>
locale::id
num_get<_CharT, _InputIterator>::id;

template <class _Tp>
_LIBCPP_HIDDEN _Tp
__num_get_signed_integral(const char* __a, const char* __a_end,
                          ios_base::iostate& __err, int __base)
{
    if (__a != __a_end)
    {
        typename remove_reference<decltype(errno)>::type __save_errno = errno;
        errno = 0;
        char *__p2;
        long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
        typename remove_reference<decltype(errno)>::type __current_errno = errno;
        if (__current_errno == 0)
            errno = __save_errno;
        if (__p2 != __a_end)
        {
            __err = ios_base::failbit;
            return 0;
        }
        else if (__current_errno == ERANGE         ||
                 __ll < numeric_limits<_Tp>::min() ||
                 numeric_limits<_Tp>::max() < __ll)
        {
            __err = ios_base::failbit;
            if (__ll > 0)
                return numeric_limits<_Tp>::max();
            else
                return numeric_limits<_Tp>::min();
        }
        return static_cast<_Tp>(__ll);
    }
    __err = ios_base::failbit;
    return 0;
}

template <class _Tp>
_LIBCPP_HIDDEN _Tp
__num_get_unsigned_integral(const char* __a, const char* __a_end,
                            ios_base::iostate& __err, int __base)
{
    if (__a != __a_end)
    {
        const bool __negate = *__a == '-';
        if (__negate && ++__a == __a_end) {
          __err = ios_base::failbit;
          return 0;
        }
        typename remove_reference<decltype(errno)>::type __save_errno = errno;
        errno = 0;
        char *__p2;
        unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
        typename remove_reference<decltype(errno)>::type __current_errno = errno;
        if (__current_errno == 0)
            errno = __save_errno;
        if (__p2 != __a_end)
        {
            __err = ios_base::failbit;
            return 0;
        }
        else if (__current_errno == ERANGE || numeric_limits<_Tp>::max() < __ll)
        {
            __err = ios_base::failbit;
            return numeric_limits<_Tp>::max();
        }
        _Tp __res = static_cast<_Tp>(__ll);
        if (__negate) __res = -__res;
        return __res;
    }
    __err = ios_base::failbit;
    return 0;
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
_Tp __do_strtod(const char* __a, char** __p2);

template <>
inline _LIBCPP_INLINE_VISIBILITY
float __do_strtod<float>(const char* __a, char** __p2) {
    return strtof_l(__a, __p2, _LIBCPP_GET_C_LOCALE);
}

template <>
inline _LIBCPP_INLINE_VISIBILITY
double __do_strtod<double>(const char* __a, char** __p2) {
    return strtod_l(__a, __p2, _LIBCPP_GET_C_LOCALE);
}

template <>
inline _LIBCPP_INLINE_VISIBILITY
long double __do_strtod<long double>(const char* __a, char** __p2) {
    return strtold_l(__a, __p2, _LIBCPP_GET_C_LOCALE);
}

template <class _Tp>
_LIBCPP_HIDDEN
_Tp
__num_get_float(const char* __a, const char* __a_end, ios_base::iostate& __err)
{
    if (__a != __a_end)
    {
        typename remove_reference<decltype(errno)>::type __save_errno = errno;
        errno = 0;
        char *__p2;
        _Tp __ld = __do_strtod<_Tp>(__a, &__p2);
        typename remove_reference<decltype(errno)>::type __current_errno = errno;
        if (__current_errno == 0)
            errno = __save_errno;
        if (__p2 != __a_end)
        {
            __err = ios_base::failbit;
            return 0;
        }
        else if (__current_errno == ERANGE)
            __err = ios_base::failbit;
        return __ld;
    }
    __err = ios_base::failbit;
    return 0;
}

template <class _CharT, class _InputIterator>
_InputIterator
num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
                                        ios_base& __iob,
                                        ios_base::iostate& __err,
                                        bool& __v) const
{
    if ((__iob.flags() & ios_base::boolalpha) == 0)
    {
        long __lv = -1;
        __b = do_get(__b, __e, __iob, __err, __lv);
        switch (__lv)
        {
        case 0:
            __v = false;
            break;
        case 1:
            __v = true;
            break;
        default:
            __v = true;
            __err = ios_base::failbit;
            break;
        }
        return __b;
    }
    const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__iob.getloc());
    const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__iob.getloc());
    typedef typename numpunct<_CharT>::string_type string_type;
    const string_type __names[2] = {__np.truename(), __np.falsename()};
    const string_type* __i = _VSTD::__scan_keyword(__b, __e, __names, __names+2,
                                                   __ct, __err);
    __v = __i == __names;
    return __b;
}

// signed

template <class _CharT, class _InputIterator>
template <class _Signed>
_InputIterator
num_get<_CharT, _InputIterator>::__do_get_signed(iter_type __b, iter_type __e,
                                        ios_base& __iob,
                                        ios_base::iostate& __err,
                                        _Signed& __v) const
{
    // Stage 1
    int __base = this->__get_base(__iob);
    // Stage 2
    char_type __thousands_sep;
    const int __atoms_size = 26;
#ifdef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
    char_type __atoms1[__atoms_size];
    const char_type *__atoms = this->__do_widen(__iob, __atoms1);
    string __grouping = this->__stage2_int_prep(__iob, __thousands_sep);
#else
# 917 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    char_type __atoms[__atoms_size];
    string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
#endif
# 920 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    string __buf;
    __buf.resize(__buf.capacity());
    char* __a = &__buf[0];
    char* __a_end = __a;
    unsigned __g[__num_get_base::__num_get_buf_sz];
    unsigned* __g_end = __g;
    unsigned __dc = 0;
    for (; __b != __e; ++__b)
    {
        if (__a_end == __a + __buf.size())
        {
            size_t __tmp = __buf.size();
            __buf.resize(2*__buf.size());
            __buf.resize(__buf.capacity());
            __a = &__buf[0];
            __a_end = __a + __tmp;
        }
        if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
                                    __thousands_sep, __grouping, __g, __g_end,
                                    __atoms))
            break;
    }
    if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
        *__g_end++ = __dc;
    // Stage 3
    __v = __num_get_signed_integral<_Signed>(__a, __a_end, __err, __base);
    // Digit grouping checked
    __check_grouping(__grouping, __g, __g_end, __err);
    // EOF checked
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

// unsigned

template <class _CharT, class _InputIterator>
template <class _Unsigned>
_InputIterator
num_get<_CharT, _InputIterator>::__do_get_unsigned(iter_type __b, iter_type __e,
                                        ios_base& __iob,
                                        ios_base::iostate& __err,
                                        _Unsigned& __v) const
{
    // Stage 1
    int __base = this->__get_base(__iob);
    // Stage 2
    char_type __thousands_sep;
    const int __atoms_size = 26;
#ifdef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
    char_type __atoms1[__atoms_size];
    const char_type *__atoms = this->__do_widen(__iob, __atoms1);
    string __grouping = this->__stage2_int_prep(__iob, __thousands_sep);
#else
# 974 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    char_type __atoms[__atoms_size];
    string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
#endif
# 977 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    string __buf;
    __buf.resize(__buf.capacity());
    char* __a = &__buf[0];
    char* __a_end = __a;
    unsigned __g[__num_get_base::__num_get_buf_sz];
    unsigned* __g_end = __g;
    unsigned __dc = 0;
    for (; __b != __e; ++__b)
    {
        if (__a_end == __a + __buf.size())
        {
            size_t __tmp = __buf.size();
            __buf.resize(2*__buf.size());
            __buf.resize(__buf.capacity());
            __a = &__buf[0];
            __a_end = __a + __tmp;
        }
        if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
                                    __thousands_sep, __grouping, __g, __g_end,
                                    __atoms))
            break;
    }
    if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
        *__g_end++ = __dc;
    // Stage 3
    __v = __num_get_unsigned_integral<_Unsigned>(__a, __a_end, __err, __base);
    // Digit grouping checked
    __check_grouping(__grouping, __g, __g_end, __err);
    // EOF checked
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

// floating point

template <class _CharT, class _InputIterator>
template <class _Fp>
_InputIterator
num_get<_CharT, _InputIterator>::__do_get_floating_point(iter_type __b, iter_type __e,
                                        ios_base& __iob,
                                        ios_base::iostate& __err,
                                        _Fp& __v) const
{
    // Stage 1, nothing to do
    // Stage 2
    char_type __atoms[32];
    char_type __decimal_point;
    char_type __thousands_sep;
    string __grouping = this->__stage2_float_prep(__iob, __atoms,
                                                  __decimal_point,
                                                  __thousands_sep);
    string __buf;
    __buf.resize(__buf.capacity());
    char* __a = &__buf[0];
    char* __a_end = __a;
    unsigned __g[__num_get_base::__num_get_buf_sz];
    unsigned* __g_end = __g;
    unsigned __dc = 0;
    bool __in_units = true;
    char __exp = 'E';
    for (; __b != __e; ++__b)
    {
        if (__a_end == __a + __buf.size())
        {
            size_t __tmp = __buf.size();
            __buf.resize(2*__buf.size());
            __buf.resize(__buf.capacity());
            __a = &__buf[0];
            __a_end = __a + __tmp;
        }
        if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end,
                                      __decimal_point, __thousands_sep,
                                      __grouping, __g, __g_end,
                                      __dc, __atoms))
            break;
    }
    if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz)
        *__g_end++ = __dc;
    // Stage 3
    __v = __num_get_float<_Fp>(__a, __a_end, __err);
    // Digit grouping checked
    __check_grouping(__grouping, __g, __g_end, __err);
    // EOF checked
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

template <class _CharT, class _InputIterator>
_InputIterator
num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
                                        ios_base& __iob,
                                        ios_base::iostate& __err,
                                        void*& __v) const
{
    // Stage 1
    int __base = 16;
    // Stage 2
    char_type __atoms[26];
    char_type __thousands_sep = 0;
    string __grouping;
    use_facet<ctype<_CharT> >(__iob.getloc()).widen(__num_get_base::__src,
                                                    __num_get_base::__src + 26, __atoms);
    string __buf;
    __buf.resize(__buf.capacity());
    char* __a = &__buf[0];
    char* __a_end = __a;
    unsigned __g[__num_get_base::__num_get_buf_sz];
    unsigned* __g_end = __g;
    unsigned __dc = 0;
    for (; __b != __e; ++__b)
    {
        if (__a_end == __a + __buf.size())
        {
            size_t __tmp = __buf.size();
            __buf.resize(2*__buf.size());
            __buf.resize(__buf.capacity());
            __a = &__buf[0];
            __a_end = __a + __tmp;
        }
        if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
                                    __thousands_sep, __grouping,
                                    __g, __g_end, __atoms))
            break;
    }
    // Stage 3
    __buf.resize(__a_end - __a);
    if (__libcpp_sscanf_l(__buf.c_str(), _LIBCPP_GET_C_LOCALE, "%p", &__v) != 1)
        __err = ios_base::failbit;
    // EOF checked
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_get<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_get<wchar_t>)

struct _LIBCPP_TYPE_VIS __num_put_base
{
protected:
    static void __format_int(char* __fmt, const char* __len, bool __signd,
                             ios_base::fmtflags __flags);
    static bool __format_float(char* __fmt, const char* __len,
                               ios_base::fmtflags __flags);
    static char* __identify_padding(char* __nb, char* __ne,
                                    const ios_base& __iob);
};

template <class _CharT>
struct __num_put
    : protected __num_put_base
{
    static void __widen_and_group_int(char* __nb, char* __np, char* __ne,
                                      _CharT* __ob, _CharT*& __op, _CharT*& __oe,
                                      const locale& __loc);
    static void __widen_and_group_float(char* __nb, char* __np, char* __ne,
                                        _CharT* __ob, _CharT*& __op, _CharT*& __oe,
                                        const locale& __loc);
};

template <class _CharT>
void
__num_put<_CharT>::__widen_and_group_int(char* __nb, char* __np, char* __ne,
                                         _CharT* __ob, _CharT*& __op, _CharT*& __oe,
                                         const locale& __loc)
{
    const ctype<_CharT>&    __ct = use_facet<ctype<_CharT> >   (__loc);
    const numpunct<_CharT>& __npt = use_facet<numpunct<_CharT> >(__loc);
    string __grouping = __npt.grouping();
    if (__grouping.empty())
    {
        __ct.widen(__nb, __ne, __ob);
        __oe = __ob + (__ne - __nb);
    }
    else
    {
        __oe = __ob;
        char* __nf = __nb;
        if (*__nf == '-' || *__nf == '+')
            *__oe++ = __ct.widen(*__nf++);
        if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' ||
                                                   __nf[1] == 'X'))
        {
            *__oe++ = __ct.widen(*__nf++);
            *__oe++ = __ct.widen(*__nf++);
        }
        reverse(__nf, __ne);
        _CharT __thousands_sep = __npt.thousands_sep();
        unsigned __dc = 0;
        unsigned __dg = 0;
        for (char* __p = __nf; __p < __ne; ++__p)
        {
            if (static_cast<unsigned>(__grouping[__dg]) > 0 &&
                __dc == static_cast<unsigned>(__grouping[__dg]))
            {
                *__oe++ = __thousands_sep;
                __dc = 0;
                if (__dg < __grouping.size()-1)
                    ++__dg;
            }
            *__oe++ = __ct.widen(*__p);
            ++__dc;
        }
        reverse(__ob + (__nf - __nb), __oe);
    }
    if (__np == __ne)
        __op = __oe;
    else
        __op = __ob + (__np - __nb);
}

template <class _CharT>
void
__num_put<_CharT>::__widen_and_group_float(char* __nb, char* __np, char* __ne,
                                           _CharT* __ob, _CharT*& __op, _CharT*& __oe,
                                           const locale& __loc)
{
    const ctype<_CharT>&    __ct = use_facet<ctype<_CharT> >   (__loc);
    const numpunct<_CharT>& __npt = use_facet<numpunct<_CharT> >(__loc);
    string __grouping = __npt.grouping();
    __oe = __ob;
    char* __nf = __nb;
    if (*__nf == '-' || *__nf == '+')
        *__oe++ = __ct.widen(*__nf++);
    char* __ns;
    if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' ||
                                               __nf[1] == 'X'))
    {
        *__oe++ = __ct.widen(*__nf++);
        *__oe++ = __ct.widen(*__nf++);
        for (__ns = __nf; __ns < __ne; ++__ns)
            if (!isxdigit_l(*__ns, _LIBCPP_GET_C_LOCALE))
                break;
    }
    else
    {
        for (__ns = __nf; __ns < __ne; ++__ns)
            if (!isdigit_l(*__ns, _LIBCPP_GET_C_LOCALE))
                break;
    }
    if (__grouping.empty())
    {
        __ct.widen(__nf, __ns, __oe);
        __oe += __ns - __nf;
    }
    else
    {
        reverse(__nf, __ns);
        _CharT __thousands_sep = __npt.thousands_sep();
        unsigned __dc = 0;
        unsigned __dg = 0;
        for (char* __p = __nf; __p < __ns; ++__p)
        {
            if (__grouping[__dg] > 0 && __dc == static_cast<unsigned>(__grouping[__dg]))
            {
                *__oe++ = __thousands_sep;
                __dc = 0;
                if (__dg < __grouping.size()-1)
                    ++__dg;
            }
            *__oe++ = __ct.widen(*__p);
            ++__dc;
        }
        reverse(__ob + (__nf - __nb), __oe);
    }
    for (__nf = __ns; __nf < __ne; ++__nf)
    {
        if (*__nf == '.')
        {
            *__oe++ = __npt.decimal_point();
            ++__nf;
            break;
        }
        else
            *__oe++ = __ct.widen(*__nf);
    }
    __ct.widen(__nf, __ne, __oe);
    __oe += __ne - __nf;
    if (__np == __ne)
        __op = __oe;
    else
        __op = __ob + (__np - __nb);
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_put<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_put<wchar_t>)

template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS num_put
    : public locale::facet,
      private __num_put<_CharT>
{
public:
    typedef _CharT char_type;
    typedef _OutputIterator iter_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit num_put(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  bool __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  long __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  long long __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  unsigned long __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  unsigned long long __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  double __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  long double __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  const void* __v) const
    {
        return do_put(__s, __iob, __fl, __v);
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~num_put() {}

    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             bool __v) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             long __v) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             long long __v) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             unsigned long) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             unsigned long long) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             double __v) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             long double __v) const;
    virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
                             const void* __v) const;
};

template <class _CharT, class _OutputIterator>
locale::id
num_put<_CharT, _OutputIterator>::id;

template <class _CharT, class _OutputIterator>
_LIBCPP_HIDDEN
_OutputIterator
__pad_and_output(_OutputIterator __s,
                 const _CharT* __ob, const _CharT* __op, const _CharT* __oe,
                 ios_base& __iob, _CharT __fl)
{
    streamsize __sz = __oe - __ob;
    streamsize __ns = __iob.width();
    if (__ns > __sz)
        __ns -= __sz;
    else
        __ns = 0;
    for (;__ob < __op; ++__ob, ++__s)
        *__s = *__ob;
    for (; __ns; --__ns, ++__s)
        *__s = __fl;
    for (; __ob < __oe; ++__ob, ++__s)
        *__s = *__ob;
    __iob.width(0);
    return __s;
}

template <class _CharT, class _Traits>
_LIBCPP_HIDDEN
ostreambuf_iterator<_CharT, _Traits>
__pad_and_output(ostreambuf_iterator<_CharT, _Traits> __s,
                 const _CharT* __ob, const _CharT* __op, const _CharT* __oe,
                 ios_base& __iob, _CharT __fl)
{
    if (__s.__sbuf_ == nullptr)
        return __s;
    streamsize __sz = __oe - __ob;
    streamsize __ns = __iob.width();
    if (__ns > __sz)
        __ns -= __sz;
    else
        __ns = 0;
    streamsize __np = __op - __ob;
    if (__np > 0)
    {
        if (__s.__sbuf_->sputn(__ob, __np) != __np)
        {
            __s.__sbuf_ = nullptr;
            return __s;
        }
    }
    if (__ns > 0)
    {
        basic_string<_CharT, _Traits> __sp(__ns, __fl);
        if (__s.__sbuf_->sputn(__sp.data(), __ns) != __ns)
        {
            __s.__sbuf_ = nullptr;
            return __s;
        }
    }
    __np = __oe - __op;
    if (__np > 0)
    {
        if (__s.__sbuf_->sputn(__op, __np) != __np)
        {
            __s.__sbuf_ = nullptr;
            return __s;
        }
    }
    __iob.width(0);
    return __s;
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, bool __v) const
{
    if ((__iob.flags() & ios_base::boolalpha) == 0)
        return do_put(__s, __iob, __fl, (unsigned long)__v);
    const numpunct<char_type>& __np = use_facet<numpunct<char_type> >(__iob.getloc());
    typedef typename numpunct<char_type>::string_type string_type;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    string_type __tmp(__v ? __np.truename() : __np.falsename());
    string_type __nm = _VSTD::move(__tmp);
#else
# 1445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    string_type __nm = __v ? __np.truename() : __np.falsename();
#endif
# 1447 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    for (typename string_type::iterator __i = __nm.begin(); __i != __nm.end(); ++__i, ++__s)
        *__s = *__i;
    return __s;
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, long __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[6] = {'%', 0};
    const char* __len = "l";
    this->__format_int(__fmt+1, __len, true, __iob.flags());
    // Worst case is octal, with showbase enabled. Note that octal is always
    // printed as an unsigned value.
    _LIBCPP_CONSTEXPR const unsigned __nbuf
        = (numeric_limits<unsigned long>::digits / 3)        // 1 char per 3 bits
        + ((numeric_limits<unsigned long>::digits % 3) != 0) // round up
        + 2; // base prefix + terminating null character
    char __nar[__nbuf];
    int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
    char* __ne = __nar + __nc;
    char* __np = this->__identify_padding(__nar, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, long long __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[8] = {'%', 0};
    const char* __len = "ll";
    this->__format_int(__fmt+1, __len, true, __iob.flags());
    // Worst case is octal, with showbase enabled. Note that octal is always
    // printed as an unsigned value.
    _LIBCPP_CONSTEXPR const unsigned __nbuf
        = (numeric_limits<unsigned long long>::digits / 3)        // 1 char per 3 bits
        + ((numeric_limits<unsigned long long>::digits % 3) != 0) // round up
        + 2; // base prefix + terminating null character
    char __nar[__nbuf];
    int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
    char* __ne = __nar + __nc;
    char* __np = this->__identify_padding(__nar, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, unsigned long __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[6] = {'%', 0};
    const char* __len = "l";
    this->__format_int(__fmt+1, __len, false, __iob.flags());
    // Worst case is octal, with showbase enabled.
    _LIBCPP_CONSTEXPR const unsigned __nbuf
        = (numeric_limits<unsigned long>::digits / 3)        // 1 char per 3 bits
        + ((numeric_limits<unsigned long>::digits % 3) != 0) // round up
        + 2; // base prefix + terminating null character
    char __nar[__nbuf];
    int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
    char* __ne = __nar + __nc;
    char* __np = this->__identify_padding(__nar, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, unsigned long long __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[8] = {'%', 0};
    const char* __len = "ll";
    this->__format_int(__fmt+1, __len, false, __iob.flags());
    // Worst case is octal, with showbase enabled.
    _LIBCPP_CONSTEXPR const unsigned __nbuf
        = (numeric_limits<unsigned long long>::digits / 3)        // 1 char per 3 bits
        + ((numeric_limits<unsigned long long>::digits % 3) != 0) // round up
        + 2; // base prefix + terminating null character
    char __nar[__nbuf];
    int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
    char* __ne = __nar + __nc;
    char* __np = this->__identify_padding(__nar, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, double __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[8] = {'%', 0};
    const char* __len = "";
    bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags());
    const unsigned __nbuf = 30;
    char __nar[__nbuf];
    char* __nb = __nar;
    int __nc;
    if (__specify_precision)
        __nc = __libcpp_snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt,
                                   (int)__iob.precision(), __v);
    else
        __nc = __libcpp_snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v);
    unique_ptr<char, void(*)(void*)> __nbh(nullptr, free);
    if (__nc > static_cast<int>(__nbuf-1))
    {
        if (__specify_precision)
            __nc = __libcpp_asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v);
        else
            __nc = __libcpp_asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v);
        if (__nc == -1)
            __throw_bad_alloc();
        __nbh.reset(__nb);
    }
    char* __ne = __nb + __nc;
    char* __np = this->__identify_padding(__nb, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __ob = __o;
    unique_ptr<char_type, void(*)(void*)> __obh(0, free);
    if (__nb != __nar)
    {
        __ob = (char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
        if (__ob == 0)
            __throw_bad_alloc();
        __obh.reset(__ob);
    }
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl);
    return __s;
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, long double __v) const
{
    // Stage 1 - Get number in narrow char
    char __fmt[8] = {'%', 0};
    const char* __len = "L";
    bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags());
    const unsigned __nbuf = 30;
    char __nar[__nbuf];
    char* __nb = __nar;
    int __nc;
    if (__specify_precision)
        __nc = __libcpp_snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt,
                                   (int)__iob.precision(), __v);
    else
        __nc = __libcpp_snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v);
    unique_ptr<char, void(*)(void*)> __nbh(nullptr, free);
    if (__nc > static_cast<int>(__nbuf-1))
    {
        if (__specify_precision)
            __nc = __libcpp_asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v);
        else
            __nc = __libcpp_asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v);
        if (__nc == -1)
            __throw_bad_alloc();
        __nbh.reset(__nb);
    }
    char* __ne = __nb + __nc;
    char* __np = this->__identify_padding(__nb, __ne, __iob);
    // Stage 2 - Widen __nar while adding thousands separators
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __ob = __o;
    unique_ptr<char_type, void(*)(void*)> __obh(0, free);
    if (__nb != __nar)
    {
        __ob = (char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
        if (__ob == 0)
            __throw_bad_alloc();
        __obh.reset(__ob);
    }
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc());
    // [__o, __oe) contains thousands_sep'd wide number
    // Stage 3 & 4
    __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl);
    return __s;
}

template <class _CharT, class _OutputIterator>
_OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                         char_type __fl, const void* __v) const
{
    // Stage 1 - Get pointer in narrow char
    char __fmt[6] = "%p";
    const unsigned __nbuf = 20;
    char __nar[__nbuf];
    int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
    char* __ne = __nar + __nc;
    char* __np = this->__identify_padding(__nar, __ne, __iob);
    // Stage 2 - Widen __nar
    char_type __o[2*(__nbuf-1) - 1];
    char_type* __op;  // pad here
    char_type* __oe;  // end of output
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    __ct.widen(__nar, __ne, __o);
    __oe = __o + (__ne - __nar);
    if (__np == __ne)
        __op = __oe;
    else
        __op = __o + (__np - __nar);
    // [__o, __oe) contains wide number
    // Stage 3 & 4
    return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put<wchar_t>)

template <class _CharT, class _InputIterator>
_LIBCPP_HIDDEN
int
__get_up_to_n_digits(_InputIterator& __b, _InputIterator __e,
                     ios_base::iostate& __err, const ctype<_CharT>& __ct, int __n)
{
    // Precondition:  __n >= 1
    if (__b == __e)
    {
        __err |= ios_base::eofbit | ios_base::failbit;
        return 0;
    }
    // get first digit
    _CharT __c = *__b;
    if (!__ct.is(ctype_base::digit, __c))
    {
        __err |= ios_base::failbit;
        return 0;
    }
    int __r = __ct.narrow(__c, 0) - '0';
    for (++__b, (void) --__n; __b != __e && __n > 0; ++__b, (void) --__n)
    {
        // get next digit
        __c = *__b;
        if (!__ct.is(ctype_base::digit, __c))
            return __r;
        __r = __r * 10 + __ct.narrow(__c, 0) - '0';
    }
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __r;
}

class _LIBCPP_TYPE_VIS time_base
{
public:
    enum dateorder {no_order, dmy, mdy, ymd, ydm};
};

template <class _CharT>
class _LIBCPP_TEMPLATE_VIS __time_get_c_storage
{
protected:
    typedef basic_string<_CharT> string_type;

    virtual const string_type* __weeks() const;
    virtual const string_type* __months() const;
    virtual const string_type* __am_pm() const;
    virtual const string_type& __c() const;
    virtual const string_type& __r() const;
    virtual const string_type& __x() const;
    virtual const string_type& __X() const;

    _LIBCPP_INLINE_VISIBILITY
    ~__time_get_c_storage() {}
};

template <> _LIBCPP_FUNC_VIS const string* __time_get_c_storage<char>::__weeks() const;
template <> _LIBCPP_FUNC_VIS const string* __time_get_c_storage<char>::__months() const;
template <> _LIBCPP_FUNC_VIS const string* __time_get_c_storage<char>::__am_pm() const;
template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__c() const;
template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__r() const;
template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__x() const;
template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__X() const;

template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__weeks() const;
template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__months() const;
template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__am_pm() const;
template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__c() const;
template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__r() const;
template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__x() const;
template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__X() const;

template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS time_get
    : public locale::facet,
      public time_base,
      private __time_get_c_storage<_CharT>
{
public:
    typedef _CharT                  char_type;
    typedef _InputIterator          iter_type;
    typedef time_base::dateorder    dateorder;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit time_get(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    dateorder date_order() const
    {
        return this->do_date_order();
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get_time(iter_type __b, iter_type __e, ios_base& __iob,
                       ios_base::iostate& __err, tm* __tm) const
    {
        return do_get_time(__b, __e, __iob, __err, __tm);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get_date(iter_type __b, iter_type __e, ios_base& __iob,
                       ios_base::iostate& __err, tm* __tm) const
    {
        return do_get_date(__b, __e, __iob, __err, __tm);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get_weekday(iter_type __b, iter_type __e, ios_base& __iob,
                          ios_base::iostate& __err, tm* __tm) const
    {
        return do_get_weekday(__b, __e, __iob, __err, __tm);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get_monthname(iter_type __b, iter_type __e, ios_base& __iob,
                            ios_base::iostate& __err, tm* __tm) const
    {
        return do_get_monthname(__b, __e, __iob, __err, __tm);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get_year(iter_type __b, iter_type __e, ios_base& __iob,
                       ios_base::iostate& __err, tm* __tm) const
    {
        return do_get_year(__b, __e, __iob, __err, __tm);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, tm *__tm,
                  char __fmt, char __mod = 0) const
    {
        return do_get(__b, __e, __iob, __err, __tm, __fmt, __mod);
    }

    iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
                  ios_base::iostate& __err, tm* __tm,
                  const char_type* __fmtb, const char_type* __fmte) const;

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~time_get() {}

    virtual dateorder do_date_order() const;
    virtual iter_type do_get_time(iter_type __b, iter_type __e, ios_base& __iob,
                                  ios_base::iostate& __err, tm* __tm) const;
    virtual iter_type do_get_date(iter_type __b, iter_type __e, ios_base& __iob,
                                  ios_base::iostate& __err, tm* __tm) const;
    virtual iter_type do_get_weekday(iter_type __b, iter_type __e, ios_base& __iob,
                                     ios_base::iostate& __err, tm* __tm) const;
    virtual iter_type do_get_monthname(iter_type __b, iter_type __e, ios_base& __iob,
                                       ios_base::iostate& __err, tm* __tm) const;
    virtual iter_type do_get_year(iter_type __b, iter_type __e, ios_base& __iob,
                                  ios_base::iostate& __err, tm* __tm) const;
    virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
                             ios_base::iostate& __err, tm* __tm,
                             char __fmt, char __mod) const;
private:
    void __get_white_space(iter_type& __b, iter_type __e,
                           ios_base::iostate& __err, const ctype<char_type>& __ct) const;
    void __get_percent(iter_type& __b, iter_type __e, ios_base::iostate& __err,
                       const ctype<char_type>& __ct) const;

    void __get_weekdayname(int& __m,
                           iter_type& __b, iter_type __e,
                           ios_base::iostate& __err,
                           const ctype<char_type>& __ct) const;
    void __get_monthname(int& __m,
                         iter_type& __b, iter_type __e,
                         ios_base::iostate& __err,
                         const ctype<char_type>& __ct) const;
    void __get_day(int& __d,
                   iter_type& __b, iter_type __e,
                   ios_base::iostate& __err,
                   const ctype<char_type>& __ct) const;
    void __get_month(int& __m,
                     iter_type& __b, iter_type __e,
                     ios_base::iostate& __err,
                     const ctype<char_type>& __ct) const;
    void __get_year(int& __y,
                   iter_type& __b, iter_type __e,
                   ios_base::iostate& __err,
                   const ctype<char_type>& __ct) const;
    void __get_year4(int& __y,
                    iter_type& __b, iter_type __e,
                    ios_base::iostate& __err,
                    const ctype<char_type>& __ct) const;
    void __get_hour(int& __d,
                    iter_type& __b, iter_type __e,
                    ios_base::iostate& __err,
                    const ctype<char_type>& __ct) const;
    void __get_12_hour(int& __h,
                       iter_type& __b, iter_type __e,
                       ios_base::iostate& __err,
                       const ctype<char_type>& __ct) const;
    void __get_am_pm(int& __h,
                     iter_type& __b, iter_type __e,
                     ios_base::iostate& __err,
                     const ctype<char_type>& __ct) const;
    void __get_minute(int& __m,
                      iter_type& __b, iter_type __e,
                      ios_base::iostate& __err,
                      const ctype<char_type>& __ct) const;
    void __get_second(int& __s,
                      iter_type& __b, iter_type __e,
                      ios_base::iostate& __err,
                      const ctype<char_type>& __ct) const;
    void __get_weekday(int& __w,
                       iter_type& __b, iter_type __e,
                       ios_base::iostate& __err,
                       const ctype<char_type>& __ct) const;
    void __get_day_year_num(int& __w,
                            iter_type& __b, iter_type __e,
                            ios_base::iostate& __err,
                            const ctype<char_type>& __ct) const;
};

template <class _CharT, class _InputIterator>
locale::id
time_get<_CharT, _InputIterator>::id;

// time_get primitives

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_weekdayname(int& __w,
                                                    iter_type& __b, iter_type __e,
                                                    ios_base::iostate& __err,
                                                    const ctype<char_type>& __ct) const
{
    // Note:  ignoring case comes from the POSIX strptime spec
    const string_type* __wk = this->__weeks();
    ptrdiff_t __i = _VSTD::__scan_keyword(__b, __e, __wk, __wk+14, __ct, __err, false) - __wk;
    if (__i < 14)
        __w = __i % 7;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_monthname(int& __m,
                                                  iter_type& __b, iter_type __e,
                                                  ios_base::iostate& __err,
                                                  const ctype<char_type>& __ct) const
{
    // Note:  ignoring case comes from the POSIX strptime spec
    const string_type* __month = this->__months();
    ptrdiff_t __i = _VSTD::__scan_keyword(__b, __e, __month, __month+24, __ct, __err, false) - __month;
    if (__i < 24)
        __m = __i % 12;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_day(int& __d,
                                            iter_type& __b, iter_type __e,
                                            ios_base::iostate& __err,
                                            const ctype<char_type>& __ct) const
{
    int __t = _VSTD::__get_up_to_n_digits(__b, __e, __err, __ct, 2);
    if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 31)
        __d = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_month(int& __m,
                                              iter_type& __b, iter_type __e,
                                              ios_base::iostate& __err,
                                              const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2) - 1;
    if (!(__err & ios_base::failbit) && __t <= 11)
        __m = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_year(int& __y,
                                             iter_type& __b, iter_type __e,
                                             ios_base::iostate& __err,
                                             const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4);
    if (!(__err & ios_base::failbit))
    {
        if (__t < 69)
            __t += 2000;
        else if (69 <= __t && __t <= 99)
            __t += 1900;
        __y = __t - 1900;
    }
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_year4(int& __y,
                                              iter_type& __b, iter_type __e,
                                              ios_base::iostate& __err,
                                              const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4);
    if (!(__err & ios_base::failbit))
        __y = __t - 1900;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_hour(int& __h,
                                             iter_type& __b, iter_type __e,
                                             ios_base::iostate& __err,
                                             const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
    if (!(__err & ios_base::failbit) && __t <= 23)
        __h = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_12_hour(int& __h,
                                                iter_type& __b, iter_type __e,
                                                ios_base::iostate& __err,
                                                const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
    if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 12)
        __h = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_minute(int& __m,
                                               iter_type& __b, iter_type __e,
                                               ios_base::iostate& __err,
                                               const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
    if (!(__err & ios_base::failbit) && __t <= 59)
        __m = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_second(int& __s,
                                               iter_type& __b, iter_type __e,
                                               ios_base::iostate& __err,
                                               const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
    if (!(__err & ios_base::failbit) && __t <= 60)
        __s = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_weekday(int& __w,
                                                iter_type& __b, iter_type __e,
                                                ios_base::iostate& __err,
                                                const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 1);
    if (!(__err & ios_base::failbit) && __t <= 6)
        __w = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_day_year_num(int& __d,
                                                     iter_type& __b, iter_type __e,
                                                     ios_base::iostate& __err,
                                                     const ctype<char_type>& __ct) const
{
    int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 3);
    if (!(__err & ios_base::failbit) && __t <= 365)
        __d = __t;
    else
        __err |= ios_base::failbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_white_space(iter_type& __b, iter_type __e,
                                                    ios_base::iostate& __err,
                                                    const ctype<char_type>& __ct) const
{
    for (; __b != __e && __ct.is(ctype_base::space, *__b); ++__b)
        ;
    if (__b == __e)
        __err |= ios_base::eofbit;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_am_pm(int& __h,
                                              iter_type& __b, iter_type __e,
                                              ios_base::iostate& __err,
                                              const ctype<char_type>& __ct) const
{
    const string_type* __ap = this->__am_pm();
    if (__ap[0].size() + __ap[1].size() == 0)
    {
        __err |= ios_base::failbit;
        return;
    }
    ptrdiff_t __i = _VSTD::__scan_keyword(__b, __e, __ap, __ap+2, __ct, __err, false) - __ap;
    if (__i == 0 && __h == 12)
        __h = 0;
    else if (__i == 1 && __h < 12)
        __h += 12;
}

template <class _CharT, class _InputIterator>
void
time_get<_CharT, _InputIterator>::__get_percent(iter_type& __b, iter_type __e,
                                                ios_base::iostate& __err,
                                                const ctype<char_type>& __ct) const
{
    if (__b == __e)
    {
        __err |= ios_base::eofbit | ios_base::failbit;
        return;
    }
    if (__ct.narrow(*__b, 0) != '%')
        __err |= ios_base::failbit;
    else if(++__b == __e)
        __err |= ios_base::eofbit;
}

// time_get end primitives

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::get(iter_type __b, iter_type __e,
                                      ios_base& __iob,
                                      ios_base::iostate& __err, tm* __tm,
                                      const char_type* __fmtb, const char_type* __fmte) const
{
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    __err = ios_base::goodbit;
    while (__fmtb != __fmte && __err == ios_base::goodbit)
    {
        if (__b == __e)
        {
            __err = ios_base::failbit;
            break;
        }
        if (__ct.narrow(*__fmtb, 0) == '%')
        {
            if (++__fmtb == __fmte)
            {
                __err = ios_base::failbit;
                break;
            }
            char __cmd = __ct.narrow(*__fmtb, 0);
            char __opt = '\0';
            if (__cmd == 'E' || __cmd == '0')
            {
                if (++__fmtb == __fmte)
                {
                    __err = ios_base::failbit;
                    break;
                }
                __opt = __cmd;
                __cmd = __ct.narrow(*__fmtb, 0);
            }
            __b = do_get(__b, __e, __iob, __err, __tm, __cmd, __opt);
            ++__fmtb;
        }
        else if (__ct.is(ctype_base::space, *__fmtb))
        {
            for (++__fmtb; __fmtb != __fmte && __ct.is(ctype_base::space, *__fmtb); ++__fmtb)
                ;
            for (        ;    __b != __e    && __ct.is(ctype_base::space, *__b);    ++__b)
                ;
        }
        else if (__ct.toupper(*__b) == __ct.toupper(*__fmtb))
        {
            ++__b;
            ++__fmtb;
        }
        else
            __err = ios_base::failbit;
    }
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

template <class _CharT, class _InputIterator>
typename time_get<_CharT, _InputIterator>::dateorder
time_get<_CharT, _InputIterator>::do_date_order() const
{
    return mdy;
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get_time(iter_type __b, iter_type __e,
                                              ios_base& __iob,
                                              ios_base::iostate& __err,
                                              tm* __tm) const
{
    const char_type __fmt[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'};
    return get(__b, __e, __iob, __err, __tm, __fmt, __fmt + sizeof(__fmt)/sizeof(__fmt[0]));
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get_date(iter_type __b, iter_type __e,
                                              ios_base& __iob,
                                              ios_base::iostate& __err,
                                              tm* __tm) const
{
    const string_type& __fmt = this->__x();
    return get(__b, __e, __iob, __err, __tm, __fmt.data(), __fmt.data() + __fmt.size());
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get_weekday(iter_type __b, iter_type __e,
                                                 ios_base& __iob,
                                                 ios_base::iostate& __err,
                                                 tm* __tm) const
{
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
    return __b;
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get_monthname(iter_type __b, iter_type __e,
                                                   ios_base& __iob,
                                                   ios_base::iostate& __err,
                                                   tm* __tm) const
{
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    __get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
    return __b;
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get_year(iter_type __b, iter_type __e,
                                              ios_base& __iob,
                                              ios_base::iostate& __err,
                                              tm* __tm) const
{
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    __get_year(__tm->tm_year, __b, __e, __err, __ct);
    return __b;
}

template <class _CharT, class _InputIterator>
_InputIterator
time_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
                                         ios_base& __iob,
                                         ios_base::iostate& __err, tm* __tm,
                                         char __fmt, char) const
{
    __err = ios_base::goodbit;
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    switch (__fmt)
    {
    case 'a':
    case 'A':
        __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
        break;
    case 'b':
    case 'B':
    case 'h':
        __get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
        break;
    case 'c':
        {
        const string_type& __fm = this->__c();
        __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size());
        }
        break;
    case 'd':
    case 'e':
        __get_day(__tm->tm_mday, __b, __e, __err, __ct);
        break;
    case 'D':
        {
        const char_type __fm[] = {'%', 'm', '/', '%', 'd', '/', '%', 'y'};
        __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
        }
        break;
    case 'F':
        {
        const char_type __fm[] = {'%', 'Y', '-', '%', 'm', '-', '%', 'd'};
        __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
        }
        break;
    case 'H':
        __get_hour(__tm->tm_hour, __b, __e, __err, __ct);
        break;
    case 'I':
        __get_12_hour(__tm->tm_hour, __b, __e, __err, __ct);
        break;
    case 'j':
        __get_day_year_num(__tm->tm_yday, __b, __e, __err, __ct);
        break;
    case 'm':
        __get_month(__tm->tm_mon, __b, __e, __err, __ct);
        break;
    case 'M':
        __get_minute(__tm->tm_min, __b, __e, __err, __ct);
        break;
    case 'n':
    case 't':
        __get_white_space(__b, __e, __err, __ct);
        break;
    case 'p':
        __get_am_pm(__tm->tm_hour, __b, __e, __err, __ct);
        break;
    case 'r':
        {
        const char_type __fm[] = {'%', 'I', ':', '%', 'M', ':', '%', 'S', ' ', '%', 'p'};
        __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
        }
        break;
    case 'R':
        {
        const char_type __fm[] = {'%', 'H', ':', '%', 'M'};
        __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
        }
        break;
    case 'S':
        __get_second(__tm->tm_sec, __b, __e, __err, __ct);
        break;
    case 'T':
        {
        const char_type __fm[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'};
        __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
        }
        break;
    case 'w':
        __get_weekday(__tm->tm_wday, __b, __e, __err, __ct);
        break;
    case 'x':
        return do_get_date(__b, __e, __iob, __err, __tm);
    case 'X':
        {
        const string_type& __fm = this->__X();
        __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size());
        }
        break;
    case 'y':
        __get_year(__tm->tm_year, __b, __e, __err, __ct);
        break;
    case 'Y':
        __get_year4(__tm->tm_year, __b, __e, __err, __ct);
        break;
    case '%':
        __get_percent(__b, __e, __err, __ct);
        break;
    default:
        __err |= ios_base::failbit;
    }
    return __b;
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get<wchar_t>)

class _LIBCPP_TYPE_VIS __time_get
{
protected:
    locale_t __loc_;

    __time_get(const char* __nm);
    __time_get(const string& __nm);
    ~__time_get();
};

template <class _CharT>
class _LIBCPP_TEMPLATE_VIS __time_get_storage
    : public __time_get
{
protected:
    typedef basic_string<_CharT> string_type;

    string_type __weeks_[14];
    string_type __months_[24];
    string_type __am_pm_[2];
    string_type __c_;
    string_type __r_;
    string_type __x_;
    string_type __X_;

    explicit __time_get_storage(const char* __nm);
    explicit __time_get_storage(const string& __nm);

    _LIBCPP_INLINE_VISIBILITY ~__time_get_storage() {}

    time_base::dateorder __do_date_order() const;

private:
    void init(const ctype<_CharT>&);
    string_type __analyze(char __fmt, const ctype<_CharT>&);
};

#define _LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(_CharT) \
template <> _LIBCPP_FUNC_VIS time_base::dateorder __time_get_storage<_CharT>::__do_date_order() const; \
template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const char*); \
template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const string&); \
template <> _LIBCPP_FUNC_VIS void __time_get_storage<_CharT>::init(const ctype<_CharT>&); \
template <> _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::string_type __time_get_storage<_CharT>::__analyze(char, const ctype<_CharT>&); \
extern template _LIBCPP_FUNC_VIS time_base::dateorder __time_get_storage<_CharT>::__do_date_order() const; \
extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const char*); \
extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::__time_get_storage(const string&); \
extern template _LIBCPP_FUNC_VIS void __time_get_storage<_CharT>::init(const ctype<_CharT>&); \
extern template _LIBCPP_FUNC_VIS __time_get_storage<_CharT>::string_type __time_get_storage<_CharT>::__analyze(char, const ctype<_CharT>&); \
/**/

_LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(char)
_LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION(wchar_t)
#undef _LIBCPP_TIME_GET_STORAGE_EXPLICIT_INSTANTIATION

template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS time_get_byname
    : public time_get<_CharT, _InputIterator>,
      private __time_get_storage<_CharT>
{
public:
    typedef time_base::dateorder    dateorder;
    typedef _InputIterator          iter_type;
    typedef _CharT                  char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit time_get_byname(const char* __nm, size_t __refs = 0)
        : time_get<_CharT, _InputIterator>(__refs),
          __time_get_storage<_CharT>(__nm) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit time_get_byname(const string& __nm, size_t __refs = 0)
        : time_get<_CharT, _InputIterator>(__refs),
          __time_get_storage<_CharT>(__nm) {}

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~time_get_byname() {}

    _LIBCPP_INLINE_VISIBILITY
    virtual dateorder do_date_order() const {return this->__do_date_order();}
private:
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type* __weeks() const  {return this->__weeks_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type* __months() const {return this->__months_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type* __am_pm() const  {return this->__am_pm_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type& __c() const      {return this->__c_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type& __r() const      {return this->__r_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type& __x() const      {return this->__x_;}
    _LIBCPP_INLINE_VISIBILITY
    virtual const string_type& __X() const      {return this->__X_;}
};

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get_byname<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get_byname<wchar_t>)

class _LIBCPP_TYPE_VIS __time_put
{
    locale_t __loc_;
protected:
    _LIBCPP_INLINE_VISIBILITY __time_put() : __loc_(_LIBCPP_GET_C_LOCALE) {}
    __time_put(const char* __nm);
    __time_put(const string& __nm);
    ~__time_put();
    void __do_put(char* __nb, char*& __ne, const tm* __tm,
                  char __fmt, char __mod) const;
    void __do_put(wchar_t* __wb, wchar_t*& __we, const tm* __tm,
                  char __fmt, char __mod) const;
};

template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS time_put
    : public locale::facet,
      private __time_put
{
public:
    typedef _CharT char_type;
    typedef _OutputIterator iter_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit time_put(size_t __refs = 0)
        : locale::facet(__refs) {}

    iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const tm* __tm,
                  const char_type* __pb, const char_type* __pe) const;

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
                  const tm* __tm, char __fmt, char __mod = 0) const
    {
        return do_put(__s, __iob, __fl, __tm, __fmt, __mod);
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~time_put() {}
    virtual iter_type do_put(iter_type __s, ios_base&, char_type, const tm* __tm,
                             char __fmt, char __mod) const;

    _LIBCPP_INLINE_VISIBILITY
    explicit time_put(const char* __nm, size_t __refs)
        : locale::facet(__refs),
          __time_put(__nm) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit time_put(const string& __nm, size_t __refs)
        : locale::facet(__refs),
          __time_put(__nm) {}
};

template <class _CharT, class _OutputIterator>
locale::id
time_put<_CharT, _OutputIterator>::id;

template <class _CharT, class _OutputIterator>
_OutputIterator
time_put<_CharT, _OutputIterator>::put(iter_type __s, ios_base& __iob,
                                       char_type __fl, const tm* __tm,
                                       const char_type* __pb,
                                       const char_type* __pe) const
{
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
    for (; __pb != __pe; ++__pb)
    {
        if (__ct.narrow(*__pb, 0) == '%')
        {
            if (++__pb == __pe)
            {
                *__s++ = __pb[-1];
                break;
            }
            char __mod = 0;
            char __fmt = __ct.narrow(*__pb, 0);
            if (__fmt == 'E' || __fmt == 'O')
            {
                if (++__pb == __pe)
                {
                    *__s++ = __pb[-2];
                    *__s++ = __pb[-1];
                    break;
                }
                __mod = __fmt;
                __fmt = __ct.narrow(*__pb, 0);
            }
            __s = do_put(__s, __iob, __fl, __tm, __fmt, __mod);
        }
        else
            *__s++ = *__pb;
    }
    return __s;
}

template <class _CharT, class _OutputIterator>
_OutputIterator
time_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base&,
                                          char_type, const tm* __tm,
                                          char __fmt, char __mod) const
{
    char_type __nar[100];
    char_type* __nb = __nar;
    char_type* __ne = __nb + 100;
    __do_put(__nb, __ne, __tm, __fmt, __mod);
    return _VSTD::copy(__nb, __ne, __s);
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put<wchar_t>)

template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS time_put_byname
    : public time_put<_CharT, _OutputIterator>
{
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit time_put_byname(const char* __nm, size_t __refs = 0)
        : time_put<_CharT, _OutputIterator>(__nm, __refs) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit time_put_byname(const string& __nm, size_t __refs = 0)
        : time_put<_CharT, _OutputIterator>(__nm, __refs) {}

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~time_put_byname() {}
};

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname<wchar_t>)

// money_base

class _LIBCPP_TYPE_VIS money_base
{
public:
    enum part {none, space, symbol, sign, value};
    struct pattern {char field[4];};

    _LIBCPP_INLINE_VISIBILITY money_base() {}
};

// moneypunct

template <class _CharT, bool _International = false>
class _LIBCPP_TEMPLATE_VIS moneypunct
    : public locale::facet,
      public money_base
{
public:
    typedef _CharT                  char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit moneypunct(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY char_type   decimal_point() const {return do_decimal_point();}
    _LIBCPP_INLINE_VISIBILITY char_type   thousands_sep() const {return do_thousands_sep();}
    _LIBCPP_INLINE_VISIBILITY string      grouping()      const {return do_grouping();}
    _LIBCPP_INLINE_VISIBILITY string_type curr_symbol()   const {return do_curr_symbol();}
    _LIBCPP_INLINE_VISIBILITY string_type positive_sign() const {return do_positive_sign();}
    _LIBCPP_INLINE_VISIBILITY string_type negative_sign() const {return do_negative_sign();}
    _LIBCPP_INLINE_VISIBILITY int         frac_digits()   const {return do_frac_digits();}
    _LIBCPP_INLINE_VISIBILITY pattern     pos_format()    const {return do_pos_format();}
    _LIBCPP_INLINE_VISIBILITY pattern     neg_format()    const {return do_neg_format();}

    static locale::id id;
    static const bool intl = _International;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~moneypunct() {}

    virtual char_type   do_decimal_point() const {return numeric_limits<char_type>::max();}
    virtual char_type   do_thousands_sep() const {return numeric_limits<char_type>::max();}
    virtual string      do_grouping()      const {return string();}
    virtual string_type do_curr_symbol()   const {return string_type();}
    virtual string_type do_positive_sign() const {return string_type();}
    virtual string_type do_negative_sign() const {return string_type(1, '-');}
    virtual int         do_frac_digits()   const {return 0;}
    virtual pattern     do_pos_format()    const
        {pattern __p = {{symbol, sign, none, value}}; return __p;}
    virtual pattern     do_neg_format()    const
        {pattern __p = {{symbol, sign, none, value}}; return __p;}
};

template <class _CharT, bool _International>
locale::id
moneypunct<_CharT, _International>::id;

template <class _CharT, bool _International>
const bool
moneypunct<_CharT, _International>::intl;

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<char, false>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<char, true>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<wchar_t, false>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<wchar_t, true>)

// moneypunct_byname

template <class _CharT, bool _International = false>
class _LIBCPP_TEMPLATE_VIS moneypunct_byname
    : public moneypunct<_CharT, _International>
{
public:
    typedef money_base::pattern  pattern;
    typedef _CharT                  char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit moneypunct_byname(const char* __nm, size_t __refs = 0)
        : moneypunct<_CharT, _International>(__refs) {init(__nm);}

    _LIBCPP_INLINE_VISIBILITY
    explicit moneypunct_byname(const string& __nm, size_t __refs = 0)
        : moneypunct<_CharT, _International>(__refs) {init(__nm.c_str());}

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~moneypunct_byname() {}

    virtual char_type   do_decimal_point() const {return __decimal_point_;}
    virtual char_type   do_thousands_sep() const {return __thousands_sep_;}
    virtual string      do_grouping()      const {return __grouping_;}
    virtual string_type do_curr_symbol()   const {return __curr_symbol_;}
    virtual string_type do_positive_sign() const {return __positive_sign_;}
    virtual string_type do_negative_sign() const {return __negative_sign_;}
    virtual int         do_frac_digits()   const {return __frac_digits_;}
    virtual pattern     do_pos_format()    const {return __pos_format_;}
    virtual pattern     do_neg_format()    const {return __neg_format_;}

private:
    char_type   __decimal_point_;
    char_type   __thousands_sep_;
    string      __grouping_;
    string_type __curr_symbol_;
    string_type __positive_sign_;
    string_type __negative_sign_;
    int         __frac_digits_;
    pattern     __pos_format_;
    pattern     __neg_format_;

    void init(const char*);
};

template<> _LIBCPP_FUNC_VIS void moneypunct_byname<char, false>::init(const char*);
template<> _LIBCPP_FUNC_VIS void moneypunct_byname<char, true>::init(const char*);
template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, false>::init(const char*);
template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, true>::init(const char*);

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<char, false>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<char, true>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<wchar_t, false>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<wchar_t, true>)

// money_get

template <class _CharT>
class __money_get
{
protected:
    typedef _CharT                  char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY __money_get() {}

    static void __gather_info(bool __intl, const locale& __loc,
                              money_base::pattern& __pat, char_type& __dp,
                              char_type& __ts, string& __grp,
                              string_type& __sym, string_type& __psn,
                              string_type& __nsn, int& __fd);
};

template <class _CharT>
void
__money_get<_CharT>::__gather_info(bool __intl, const locale& __loc,
                                   money_base::pattern& __pat, char_type& __dp,
                                   char_type& __ts, string& __grp,
                                   string_type& __sym, string_type& __psn,
                                   string_type& __nsn, int& __fd)
{
    if (__intl)
    {
        const moneypunct<char_type, true>& __mp =
            use_facet<moneypunct<char_type, true> >(__loc);
        __pat = __mp.neg_format();
        __nsn = __mp.negative_sign();
        __psn = __mp.positive_sign();
        __dp = __mp.decimal_point();
        __ts = __mp.thousands_sep();
        __grp = __mp.grouping();
        __sym = __mp.curr_symbol();
        __fd = __mp.frac_digits();
    }
    else
    {
        const moneypunct<char_type, false>& __mp =
            use_facet<moneypunct<char_type, false> >(__loc);
        __pat = __mp.neg_format();
        __nsn = __mp.negative_sign();
        __psn = __mp.positive_sign();
        __dp = __mp.decimal_point();
        __ts = __mp.thousands_sep();
        __grp = __mp.grouping();
        __sym = __mp.curr_symbol();
        __fd = __mp.frac_digits();
    }
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_get<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_get<wchar_t>)

template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS money_get
    : public locale::facet,
      private __money_get<_CharT>
{
public:
    typedef _CharT                  char_type;
    typedef _InputIterator          iter_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit money_get(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob,
                  ios_base::iostate& __err, long double& __v) const
    {
        return do_get(__b, __e, __intl, __iob, __err, __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob,
                  ios_base::iostate& __err, string_type& __v) const
    {
        return do_get(__b, __e, __intl, __iob, __err, __v);
    }

    static locale::id id;

protected:

    _LIBCPP_INLINE_VISIBILITY
    ~money_get() {}

    virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl,
                             ios_base& __iob, ios_base::iostate& __err,
                             long double& __v) const;
    virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl,
                             ios_base& __iob, ios_base::iostate& __err,
                             string_type& __v) const;

private:
    static bool __do_get(iter_type& __b, iter_type __e,
                         bool __intl, const locale& __loc,
                         ios_base::fmtflags __flags, ios_base::iostate& __err,
                         bool& __neg, const ctype<char_type>& __ct,
                         unique_ptr<char_type, void(*)(void*)>& __wb,
                         char_type*& __wn, char_type* __we);
};

template <class _CharT, class _InputIterator>
locale::id
money_get<_CharT, _InputIterator>::id;

_LIBCPP_FUNC_VIS void __do_nothing(void*);

template <class _Tp>
_LIBCPP_HIDDEN
void
__double_or_nothing(unique_ptr<_Tp, void(*)(void*)>& __b, _Tp*& __n, _Tp*& __e)
{
    bool __owns = __b.get_deleter() != __do_nothing;
    size_t __cur_cap = static_cast<size_t>(__e-__b.get()) * sizeof(_Tp);
    size_t __new_cap = __cur_cap < numeric_limits<size_t>::max() / 2 ?
                       2 * __cur_cap : numeric_limits<size_t>::max();
    if (__new_cap == 0)
        __new_cap = sizeof(_Tp);
    size_t __n_off = static_cast<size_t>(__n - __b.get());
    _Tp* __t = (_Tp*)realloc(__owns ? __b.get() : 0, __new_cap);
    if (__t == 0)
        __throw_bad_alloc();
    if (__owns)
        __b.release();
    __b = unique_ptr<_Tp, void(*)(void*)>(__t, free);
    __new_cap /= sizeof(_Tp);
    __n = __b.get() + __n_off;
    __e = __b.get() + __new_cap;
}

// true == success
template <class _CharT, class _InputIterator>
bool
money_get<_CharT, _InputIterator>::__do_get(iter_type& __b, iter_type __e,
                                            bool __intl, const locale& __loc,
                                            ios_base::fmtflags __flags,
                                            ios_base::iostate& __err,
                                            bool& __neg,
                                            const ctype<char_type>& __ct,
                                            unique_ptr<char_type, void(*)(void*)>& __wb,
                                            char_type*& __wn, char_type* __we)
{
    const unsigned __bz = 100;
    unsigned __gbuf[__bz];
    unique_ptr<unsigned, void(*)(void*)> __gb(__gbuf, __do_nothing);
    unsigned* __gn = __gb.get();
    unsigned* __ge = __gn + __bz;
    money_base::pattern __pat;
    char_type __dp;
    char_type __ts;
    string __grp;
    string_type __sym;
    string_type __psn;
    string_type __nsn;
    // Capture the spaces read into money_base::{space,none} so they
    // can be compared to initial spaces in __sym.
    string_type __spaces;
    int __fd;
    __money_get<_CharT>::__gather_info(__intl, __loc, __pat, __dp, __ts, __grp,
                                       __sym, __psn, __nsn, __fd);
    const string_type* __trailing_sign = 0;
    __wn = __wb.get();
    for (unsigned __p = 0; __p < 4 && __b != __e; ++__p)
    {
        switch (__pat.field[__p])
        {
        case money_base::space:
            if (__p != 3)
            {
                if (__ct.is(ctype_base::space, *__b))
                    __spaces.push_back(*__b++);
                else
                {
                    __err |= ios_base::failbit;
                    return false;
                }
            }
            _LIBCPP_FALLTHROUGH();
        case money_base::none:
            if (__p != 3)
            {
                while (__b != __e && __ct.is(ctype_base::space, *__b))
                    __spaces.push_back(*__b++);
            }
            break;
        case money_base::sign:
            if (__psn.size() + __nsn.size() > 0)
            {
                if (__psn.size() == 0 || __nsn.size() == 0)
                {   // sign is optional
                    if (__psn.size() > 0)
                    {   // __nsn.size() == 0
                        if (*__b == __psn[0])
                        {
                            ++__b;
                            if (__psn.size() > 1)
                                __trailing_sign = &__psn;
                        }
                        else
                            __neg = true;
                    }
                    else if (*__b == __nsn[0])  // __nsn.size() > 0 &&  __psn.size() == 0
                    {
                        ++__b;
                        __neg = true;
                        if (__nsn.size() > 1)
                            __trailing_sign = &__nsn;
                    }
                }
                else  // sign is required
                {
                    if (*__b == __psn[0])
                    {
                        ++__b;
                        if (__psn.size() > 1)
                            __trailing_sign = &__psn;
                    }
                    else if (*__b == __nsn[0])
                    {
                        ++__b;
                        __neg = true;
                        if (__nsn.size() > 1)
                            __trailing_sign = &__nsn;
                    }
                    else
                    {
                        __err |= ios_base::failbit;
                        return false;
                    }
                }
            }
            break;
        case money_base::symbol:
            {
            bool __more_needed = __trailing_sign ||
                                 (__p < 2)       ||
                                 (__p == 2 && __pat.field[3] != static_cast<char>(money_base::none));
            bool __sb = (__flags & ios_base::showbase) != 0;
            if (__sb || __more_needed)
            {
                typename string_type::const_iterator __sym_space_end = __sym.begin();
                if (__p > 0 && (__pat.field[__p - 1] == money_base::none ||
                                __pat.field[__p - 1] == money_base::space)) {
                    // Match spaces we've already read against spaces at
                    // the beginning of __sym.
                    while (__sym_space_end != __sym.end() &&
                           __ct.is(ctype_base::space, *__sym_space_end))
                        ++__sym_space_end;
                    const size_t __num_spaces = __sym_space_end - __sym.begin();
                    if (__num_spaces > __spaces.size() ||
                        !equal(__spaces.end() - __num_spaces, __spaces.end(),
                               __sym.begin())) {
                        // No match. Put __sym_space_end back at the
                        // beginning of __sym, which will prevent a
                        // match in the next loop.
                        __sym_space_end = __sym.begin();
                    }
                }
                typename string_type::const_iterator __sym_curr_char = __sym_space_end;
                while (__sym_curr_char != __sym.end() && __b != __e &&
                       *__b == *__sym_curr_char) {
                    ++__b;
                    ++__sym_curr_char;
                }
                if (__sb && __sym_curr_char != __sym.end())
                {
                    __err |= ios_base::failbit;
                    return false;
                }
            }
            }
            break;
        case money_base::value:
            {
            unsigned __ng = 0;
            for (; __b != __e; ++__b)
            {
                char_type __c = *__b;
                if (__ct.is(ctype_base::digit, __c))
                {
                    if (__wn == __we)
                        __double_or_nothing(__wb, __wn, __we);
                    *__wn++ = __c;
                    ++__ng;
                }
                else if (__grp.size() > 0 && __ng > 0 && __c == __ts)
                {
                    if (__gn == __ge)
                        __double_or_nothing(__gb, __gn, __ge);
                    *__gn++ = __ng;
                    __ng = 0;
                }
                else
                    break;
            }
            if (__gb.get() != __gn && __ng > 0)
            {
                if (__gn == __ge)
                    __double_or_nothing(__gb, __gn, __ge);
                *__gn++ = __ng;
            }
            if (__fd > 0)
            {
                if (__b == __e || *__b != __dp)
                {
                    __err |= ios_base::failbit;
                    return false;
                }
                for (++__b; __fd > 0; --__fd, ++__b)
                {
                    if (__b == __e || !__ct.is(ctype_base::digit, *__b))
                    {
                        __err |= ios_base::failbit;
                        return false;
                    }
                    if (__wn == __we)
                        __double_or_nothing(__wb, __wn, __we);
                    *__wn++ = *__b;
                }
            }
            if (__wn == __wb.get())
            {
                __err |= ios_base::failbit;
                return false;
            }
            }
            break;
        }
    }
    if (__trailing_sign)
    {
        for (unsigned __i = 1; __i < __trailing_sign->size(); ++__i, ++__b)
        {
            if (__b == __e || *__b != (*__trailing_sign)[__i])
            {
                __err |= ios_base::failbit;
                return false;
            }
        }
    }
    if (__gb.get() != __gn)
    {
        ios_base::iostate __et = ios_base::goodbit;
        __check_grouping(__grp, __gb.get(), __gn, __et);
        if (__et)
        {
            __err |= ios_base::failbit;
            return false;
        }
    }
    return true;
}

template <class _CharT, class _InputIterator>
_InputIterator
money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
                                          bool __intl, ios_base& __iob,
                                          ios_base::iostate& __err,
                                          long double& __v) const
{
    const int __bz = 100;
    char_type __wbuf[__bz];
    unique_ptr<char_type, void(*)(void*)> __wb(__wbuf, __do_nothing);
    char_type* __wn;
    char_type* __we = __wbuf + __bz;
    locale __loc = __iob.getloc();
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
    bool __neg = false;
    if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct,
                 __wb, __wn, __we))
    {
        const char __src[] = "0123456789";
        char_type __atoms[sizeof(__src)-1];
        __ct.widen(__src, __src + (sizeof(__src)-1), __atoms);
        char __nbuf[__bz];
        char* __nc = __nbuf;
        unique_ptr<char, void(*)(void*)> __h(nullptr, free);
        if (__wn - __wb.get() > __bz-2)
        {
            __h.reset((char*)malloc(static_cast<size_t>(__wn - __wb.get() + 2)));
            if (__h.get() == nullptr)
                __throw_bad_alloc();
            __nc = __h.get();
        }
        if (__neg)
            *__nc++ = '-';
        for (const char_type* __w = __wb.get(); __w < __wn; ++__w, ++__nc)
            *__nc = __src[find(__atoms, _VSTD::end(__atoms), *__w) - __atoms];
        *__nc = char();
        if (sscanf(__nbuf, "%Lf", &__v) != 1)
            __throw_runtime_error("money_get error");
    }
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

template <class _CharT, class _InputIterator>
_InputIterator
money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
                                          bool __intl, ios_base& __iob,
                                          ios_base::iostate& __err,
                                          string_type& __v) const
{
    const int __bz = 100;
    char_type __wbuf[__bz];
    unique_ptr<char_type, void(*)(void*)> __wb(__wbuf, __do_nothing);
    char_type* __wn;
    char_type* __we = __wbuf + __bz;
    locale __loc = __iob.getloc();
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
    bool __neg = false;
    if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct,
                 __wb, __wn, __we))
    {
        __v.clear();
        if (__neg)
            __v.push_back(__ct.widen('-'));
        char_type __z = __ct.widen('0');
        char_type* __w;
        for (__w = __wb.get(); __w < __wn-1; ++__w)
            if (*__w != __z)
                break;
        __v.append(__w, __wn);
    }
    if (__b == __e)
        __err |= ios_base::eofbit;
    return __b;
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_get<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_get<wchar_t>)

// money_put

template <class _CharT>
class __money_put
{
protected:
    typedef _CharT                  char_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY __money_put() {}

    static void __gather_info(bool __intl, bool __neg, const locale& __loc,
                              money_base::pattern& __pat, char_type& __dp,
                              char_type& __ts, string& __grp,
                              string_type& __sym, string_type& __sn,
                              int& __fd);
    static void __format(char_type* __mb, char_type*& __mi, char_type*& __me,
                         ios_base::fmtflags __flags,
                         const char_type* __db, const char_type* __de,
                         const ctype<char_type>& __ct, bool __neg,
                         const money_base::pattern& __pat, char_type __dp,
                         char_type __ts, const string& __grp,
                         const string_type& __sym, const string_type& __sn,
                         int __fd);
};

template <class _CharT>
void
__money_put<_CharT>::__gather_info(bool __intl, bool __neg, const locale& __loc,
                                   money_base::pattern& __pat, char_type& __dp,
                                   char_type& __ts, string& __grp,
                                   string_type& __sym, string_type& __sn,
                                   int& __fd)
{
    if (__intl)
    {
        const moneypunct<char_type, true>& __mp =
            use_facet<moneypunct<char_type, true> >(__loc);
        if (__neg)
        {
            __pat = __mp.neg_format();
            __sn = __mp.negative_sign();
        }
        else
        {
            __pat = __mp.pos_format();
            __sn = __mp.positive_sign();
        }
        __dp = __mp.decimal_point();
        __ts = __mp.thousands_sep();
        __grp = __mp.grouping();
        __sym = __mp.curr_symbol();
        __fd = __mp.frac_digits();
    }
    else
    {
        const moneypunct<char_type, false>& __mp =
            use_facet<moneypunct<char_type, false> >(__loc);
        if (__neg)
        {
            __pat = __mp.neg_format();
            __sn = __mp.negative_sign();
        }
        else
        {
            __pat = __mp.pos_format();
            __sn = __mp.positive_sign();
        }
        __dp = __mp.decimal_point();
        __ts = __mp.thousands_sep();
        __grp = __mp.grouping();
        __sym = __mp.curr_symbol();
        __fd = __mp.frac_digits();
    }
}

template <class _CharT>
void
__money_put<_CharT>::__format(char_type* __mb, char_type*& __mi, char_type*& __me,
                              ios_base::fmtflags __flags,
                              const char_type* __db, const char_type* __de,
                              const ctype<char_type>& __ct, bool __neg,
                              const money_base::pattern& __pat, char_type __dp,
                              char_type __ts, const string& __grp,
                              const string_type& __sym, const string_type& __sn,
                              int __fd)
{
    __me = __mb;
    for (unsigned __p = 0; __p < 4; ++__p)
    {
        switch (__pat.field[__p])
        {
        case money_base::none:
            __mi = __me;
            break;
        case money_base::space:
            __mi = __me;
            *__me++ = __ct.widen(' ');
            break;
        case money_base::sign:
            if (!__sn.empty())
                *__me++ = __sn[0];
            break;
        case money_base::symbol:
            if (!__sym.empty() && (__flags & ios_base::showbase))
                __me = _VSTD::copy(__sym.begin(), __sym.end(), __me);
            break;
        case money_base::value:
            {
            // remember start of value so we can reverse it
            char_type* __t = __me;
            // find beginning of digits
            if (__neg)
                ++__db;
            // find end of digits
            const char_type* __d;
            for (__d = __db; __d < __de; ++__d)
                if (!__ct.is(ctype_base::digit, *__d))
                    break;
            // print fractional part
            if (__fd > 0)
            {
                int __f;
                for (__f = __fd; __d > __db && __f > 0; --__f)
                    *__me++ = *--__d;
                char_type __z = __f > 0 ? __ct.widen('0') : char_type();
                for (; __f > 0; --__f)
                    *__me++ = __z;
                *__me++ = __dp;
            }
            // print units part
            if (__d == __db)
            {
                *__me++ = __ct.widen('0');
            }
            else
            {
                unsigned __ng = 0;
                unsigned __ig = 0;
                unsigned __gl = __grp.empty() ? numeric_limits<unsigned>::max()
                                              : static_cast<unsigned>(__grp[__ig]);
                while (__d != __db)
                {
                    if (__ng == __gl)
                    {
                        *__me++ = __ts;
                        __ng = 0;
                        if (++__ig < __grp.size())
                            __gl = __grp[__ig] == numeric_limits<char>::max() ?
                                        numeric_limits<unsigned>::max() :
                                        static_cast<unsigned>(__grp[__ig]);
                    }
                    *__me++ = *--__d;
                    ++__ng;
                }
            }
            // reverse it
            reverse(__t, __me);
            }
            break;
        }
    }
    // print rest of sign, if any
    if (__sn.size() > 1)
        __me = _VSTD::copy(__sn.begin()+1, __sn.end(), __me);
    // set alignment
    if ((__flags & ios_base::adjustfield) == ios_base::left)
        __mi = __me;
    else if ((__flags & ios_base::adjustfield) != ios_base::internal)
        __mi = __mb;
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_put<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_put<wchar_t>)

template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
class _LIBCPP_TEMPLATE_VIS money_put
    : public locale::facet,
      private __money_put<_CharT>
{
public:
    typedef _CharT                  char_type;
    typedef _OutputIterator         iter_type;
    typedef basic_string<char_type> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit money_put(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl,
                  long double __units) const
    {
        return do_put(__s, __intl, __iob, __fl, __units);
    }

    _LIBCPP_INLINE_VISIBILITY
    iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl,
                  const string_type& __digits) const
    {
        return do_put(__s, __intl, __iob, __fl, __digits);
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~money_put() {}

    virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob,
                             char_type __fl, long double __units) const;
    virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob,
                             char_type __fl, const string_type& __digits) const;
};

template <class _CharT, class _OutputIterator>
locale::id
money_put<_CharT, _OutputIterator>::id;

template <class _CharT, class _OutputIterator>
_OutputIterator
money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl,
                                           ios_base& __iob, char_type __fl,
                                           long double __units) const
{
    // convert to char
    const size_t __bs = 100;
    char __buf[__bs];
    char* __bb = __buf;
    char_type __digits[__bs];
    char_type* __db = __digits;
    int __n = snprintf(__bb, __bs, "%.0Lf", __units);
    unique_ptr<char, void(*)(void*)> __hn(nullptr, free);
    unique_ptr<char_type, void(*)(void*)> __hd(0, free);
    // secure memory for digit storage
    if (static_cast<size_t>(__n) > __bs-1)
    {
        __n = __libcpp_asprintf_l(&__bb, _LIBCPP_GET_C_LOCALE, "%.0Lf", __units);
        if (__n == -1)
            __throw_bad_alloc();
        __hn.reset(__bb);
        __hd.reset((char_type*)malloc(static_cast<size_t>(__n) * sizeof(char_type)));
        if (__hd == nullptr)
            __throw_bad_alloc();
        __db = __hd.get();
    }
    // gather info
    locale __loc = __iob.getloc();
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
    __ct.widen(__bb, __bb + __n, __db);
    bool __neg = __n > 0 && __bb[0] == '-';
    money_base::pattern __pat;
    char_type __dp;
    char_type __ts;
    string __grp;
    string_type __sym;
    string_type __sn;
    int __fd;
    this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
    // secure memory for formatting
    char_type __mbuf[__bs];
    char_type* __mb = __mbuf;
    unique_ptr<char_type, void(*)(void*)> __hw(0, free);
    size_t __exn = __n > __fd ?
                   (static_cast<size_t>(__n) - static_cast<size_t>(__fd)) * 2 +
                    __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 1
                 : __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 2;
    if (__exn > __bs)
    {
        __hw.reset((char_type*)malloc(__exn * sizeof(char_type)));
        __mb = __hw.get();
        if (__mb == 0)
            __throw_bad_alloc();
    }
    // format
    char_type* __mi;
    char_type* __me;
    this->__format(__mb, __mi, __me, __iob.flags(),
                   __db, __db + __n, __ct,
                   __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
    return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl);
}

template <class _CharT, class _OutputIterator>
_OutputIterator
money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl,
                                           ios_base& __iob, char_type __fl,
                                           const string_type& __digits) const
{
    // gather info
    locale __loc = __iob.getloc();
    const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
    bool __neg = __digits.size() > 0 && __digits[0] == __ct.widen('-');
    money_base::pattern __pat;
    char_type __dp;
    char_type __ts;
    string __grp;
    string_type __sym;
    string_type __sn;
    int __fd;
    this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
    // secure memory for formatting
    char_type __mbuf[100];
    char_type* __mb = __mbuf;
    unique_ptr<char_type, void(*)(void*)> __h(0, free);
    size_t __exn = static_cast<int>(__digits.size()) > __fd ?
                   (__digits.size() - static_cast<size_t>(__fd)) * 2 +
                    __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 1
                 : __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 2;
    if (__exn > 100)
    {
        __h.reset((char_type*)malloc(__exn * sizeof(char_type)));
        __mb = __h.get();
        if (__mb == 0)
            __throw_bad_alloc();
    }
    // format
    char_type* __mi;
    char_type* __me;
    this->__format(__mb, __mi, __me, __iob.flags(),
                   __digits.data(), __digits.data() + __digits.size(), __ct,
                   __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
    return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl);
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put<wchar_t>)

// messages

class _LIBCPP_TYPE_VIS messages_base
{
public:
    typedef ptrdiff_t catalog;

    _LIBCPP_INLINE_VISIBILITY messages_base() {}
};

template <class _CharT>
class _LIBCPP_TEMPLATE_VIS messages
    : public locale::facet,
      public messages_base
{
public:
    typedef _CharT               char_type;
    typedef basic_string<_CharT> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit messages(size_t __refs = 0)
        : locale::facet(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    catalog open(const basic_string<char>& __nm, const locale& __loc) const
    {
        return do_open(__nm, __loc);
    }

    _LIBCPP_INLINE_VISIBILITY
    string_type get(catalog __c, int __set, int __msgid,
                    const string_type& __dflt) const
    {
        return do_get(__c, __set, __msgid, __dflt);
    }

    _LIBCPP_INLINE_VISIBILITY
    void close(catalog __c) const
    {
        do_close(__c);
    }

    static locale::id id;

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~messages() {}

    virtual catalog do_open(const basic_string<char>&, const locale&) const;
    virtual string_type do_get(catalog, int __set, int __msgid,
                               const string_type& __dflt) const;
    virtual void do_close(catalog) const;
};

template <class _CharT>
locale::id
messages<_CharT>::id;

template <class _CharT>
typename messages<_CharT>::catalog
messages<_CharT>::do_open(const basic_string<char>& __nm, const locale&) const
{
#ifdef _LIBCPP_HAS_CATOPEN
    catalog __cat = (catalog)catopen(__nm.c_str(), NL_CAT_LOCALE);
    if (__cat != -1)
        __cat = static_cast<catalog>((static_cast<size_t>(__cat) >> 1));
    return __cat;
#else // !_LIBCPP_HAS_CATOPEN
# 3581 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    (void)__nm;
    return -1;
#endif // _LIBCPP_HAS_CATOPEN
# 3584 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
}

template <class _CharT>
typename messages<_CharT>::string_type
messages<_CharT>::do_get(catalog __c, int __set, int __msgid,
                         const string_type& __dflt) const
{
#ifdef _LIBCPP_HAS_CATOPEN
    string __ndflt;
    __narrow_to_utf8<sizeof(char_type)*__CHAR_BIT__>()(back_inserter(__ndflt),
                                                       __dflt.c_str(),
                                                       __dflt.c_str() + __dflt.size());
    if (__c != -1)
        __c <<= 1;
    nl_catd __cat = (nl_catd)__c;
    char* __n = catgets(__cat, __set, __msgid, __ndflt.c_str());
    string_type __w;
    __widen_from_utf8<sizeof(char_type)*__CHAR_BIT__>()(back_inserter(__w),
                                                        __n, __n + _VSTD::strlen(__n));
    return __w;
#else // !_LIBCPP_HAS_CATOPEN
# 3605 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    (void)__c;
    (void)__set;
    (void)__msgid;
    return __dflt;
#endif // _LIBCPP_HAS_CATOPEN
# 3610 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
}

template <class _CharT>
void
messages<_CharT>::do_close(catalog __c) const
{
#ifdef _LIBCPP_HAS_CATOPEN
    if (__c != -1)
        __c <<= 1;
    nl_catd __cat = (nl_catd)__c;
    catclose(__cat);
#else // !_LIBCPP_HAS_CATOPEN
# 3622 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    (void)__c;
#endif // _LIBCPP_HAS_CATOPEN
# 3624 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
}

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages<wchar_t>)

template <class _CharT>
class _LIBCPP_TEMPLATE_VIS messages_byname
    : public messages<_CharT>
{
public:
    typedef messages_base::catalog catalog;
    typedef basic_string<_CharT> string_type;

    _LIBCPP_INLINE_VISIBILITY
    explicit messages_byname(const char*, size_t __refs = 0)
        : messages<_CharT>(__refs) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit messages_byname(const string&, size_t __refs = 0)
        : messages<_CharT>(__refs) {}

protected:
    _LIBCPP_INLINE_VISIBILITY
    ~messages_byname() {}
};

_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname<char>)
_LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname<wchar_t>)

template<class _Codecvt, class _Elem = wchar_t,
         class _Wide_alloc = allocator<_Elem>,
         class _Byte_alloc = allocator<char> >
class _LIBCPP_TEMPLATE_VIS wstring_convert
{
public:
    typedef basic_string<char, char_traits<char>, _Byte_alloc>   byte_string;
    typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string;
    typedef typename _Codecvt::state_type                        state_type;
    typedef typename wide_string::traits_type::int_type          int_type;

private:
    byte_string __byte_err_string_;
    wide_string __wide_err_string_;
    _Codecvt* __cvtptr_;
    state_type __cvtstate_;
    size_t __cvtcount_;

    wstring_convert(const wstring_convert& __wc);
    wstring_convert& operator=(const wstring_convert& __wc);
public:
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    wstring_convert() : wstring_convert(new _Codecvt) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit wstring_convert(_Codecvt* __pcvt);
#else
# 3680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_EXPLICIT_AFTER_CXX11
    wstring_convert(_Codecvt* __pcvt = new _Codecvt);
#endif
# 3684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

    _LIBCPP_INLINE_VISIBILITY
    wstring_convert(_Codecvt* __pcvt, state_type __state);
    _LIBCPP_EXPLICIT_AFTER_CXX11 wstring_convert(const byte_string& __byte_err,
                    const wide_string& __wide_err = wide_string());
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    wstring_convert(wstring_convert&& __wc);
#endif
# 3693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    ~wstring_convert();

    _LIBCPP_INLINE_VISIBILITY
    wide_string from_bytes(char __byte)
        {return from_bytes(&__byte, &__byte+1);}
    _LIBCPP_INLINE_VISIBILITY
    wide_string from_bytes(const char* __ptr)
        {return from_bytes(__ptr, __ptr + char_traits<char>::length(__ptr));}
    _LIBCPP_INLINE_VISIBILITY
    wide_string from_bytes(const byte_string& __str)
        {return from_bytes(__str.data(), __str.data() + __str.size());}
    wide_string from_bytes(const char* __first, const char* __last);

    _LIBCPP_INLINE_VISIBILITY
    byte_string to_bytes(_Elem __wchar)
        {return to_bytes(&__wchar, &__wchar+1);}
    _LIBCPP_INLINE_VISIBILITY
    byte_string to_bytes(const _Elem* __wptr)
        {return to_bytes(__wptr, __wptr + char_traits<_Elem>::length(__wptr));}
    _LIBCPP_INLINE_VISIBILITY
    byte_string to_bytes(const wide_string& __wstr)
        {return to_bytes(__wstr.data(), __wstr.data() + __wstr.size());}
    byte_string to_bytes(const _Elem* __first, const _Elem* __last);

    _LIBCPP_INLINE_VISIBILITY
    size_t converted() const _NOEXCEPT {return __cvtcount_;}
    _LIBCPP_INLINE_VISIBILITY
    state_type state() const {return __cvtstate_;}
};

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
inline
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    wstring_convert(_Codecvt* __pcvt)
        : __cvtptr_(__pcvt), __cvtstate_(), __cvtcount_(0)
{
}

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
inline
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    wstring_convert(_Codecvt* __pcvt, state_type __state)
        : __cvtptr_(__pcvt), __cvtstate_(__state), __cvtcount_(0)
{
}

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    wstring_convert(const byte_string& __byte_err, const wide_string& __wide_err)
        : __byte_err_string_(__byte_err), __wide_err_string_(__wide_err),
          __cvtstate_(), __cvtcount_(0)
{
    __cvtptr_ = new _Codecvt;
}

#ifndef _LIBCPP_CXX03_LANG

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
inline
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    wstring_convert(wstring_convert&& __wc)
        : __byte_err_string_(_VSTD::move(__wc.__byte_err_string_)),
          __wide_err_string_(_VSTD::move(__wc.__wide_err_string_)),
          __cvtptr_(__wc.__cvtptr_),
          __cvtstate_(__wc.__cvtstate_), __cvtcount_(__wc.__cvtcount_)
{
    __wc.__cvtptr_ = nullptr;
}

#endif // _LIBCPP_CXX03_LANG
# 3763 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::~wstring_convert()
{
    delete __cvtptr_;
}

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::wide_string
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    from_bytes(const char* __frm, const char* __frm_end)
{
    __cvtcount_ = 0;
    if (__cvtptr_ != nullptr)
    {
        wide_string __ws(2*(__frm_end - __frm), _Elem());
        if (__frm != __frm_end)
            __ws.resize(__ws.capacity());
        codecvt_base::result __r = codecvt_base::ok;
        state_type __st = __cvtstate_;
        if (__frm != __frm_end)
        {
            _Elem* __to = &__ws[0];
            _Elem* __to_end = __to + __ws.size();
            const char* __frm_nxt;
            do
            {
                _Elem* __to_nxt;
                __r = __cvtptr_->in(__st, __frm, __frm_end, __frm_nxt,
                                          __to, __to_end, __to_nxt);
                __cvtcount_ += __frm_nxt - __frm;
                if (__frm_nxt == __frm)
                {
                    __r = codecvt_base::error;
                }
                else if (__r == codecvt_base::noconv)
                {
                    __ws.resize(__to - &__ws[0]);
                    // This only gets executed if _Elem is char
                    __ws.append((const _Elem*)__frm, (const _Elem*)__frm_end);
                    __frm = __frm_nxt;
                    __r = codecvt_base::ok;
                }
                else if (__r == codecvt_base::ok)
                {
                    __ws.resize(__to_nxt - &__ws[0]);
                    __frm = __frm_nxt;
                }
                else if (__r == codecvt_base::partial)
                {
                    ptrdiff_t __s = __to_nxt - &__ws[0];
                    __ws.resize(2 * __s);
                    __to = &__ws[0] + __s;
                    __to_end = &__ws[0] + __ws.size();
                    __frm = __frm_nxt;
                }
            } while (__r == codecvt_base::partial && __frm_nxt < __frm_end);
        }
        if (__r == codecvt_base::ok)
            return __ws;
    }

    if (__wide_err_string_.empty())
        __throw_range_error("wstring_convert: from_bytes error");

    return __wide_err_string_;
}

template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::byte_string
wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
    to_bytes(const _Elem* __frm, const _Elem* __frm_end)
{
    __cvtcount_ = 0;
    if (__cvtptr_ != nullptr)
    {
        byte_string __bs(2*(__frm_end - __frm), char());
        if (__frm != __frm_end)
            __bs.resize(__bs.capacity());
        codecvt_base::result __r = codecvt_base::ok;
        state_type __st = __cvtstate_;
        if (__frm != __frm_end)
        {
            char* __to = &__bs[0];
            char* __to_end = __to + __bs.size();
            const _Elem* __frm_nxt;
            do
            {
                char* __to_nxt;
                __r = __cvtptr_->out(__st, __frm, __frm_end, __frm_nxt,
                                           __to, __to_end, __to_nxt);
                __cvtcount_ += __frm_nxt - __frm;
                if (__frm_nxt == __frm)
                {
                    __r = codecvt_base::error;
                }
                else if (__r == codecvt_base::noconv)
                {
                    __bs.resize(__to - &__bs[0]);
                    // This only gets executed if _Elem is char
                    __bs.append((const char*)__frm, (const char*)__frm_end);
                    __frm = __frm_nxt;
                    __r = codecvt_base::ok;
                }
                else if (__r == codecvt_base::ok)
                {
                    __bs.resize(__to_nxt - &__bs[0]);
                    __frm = __frm_nxt;
                }
                else if (__r == codecvt_base::partial)
                {
                    ptrdiff_t __s = __to_nxt - &__bs[0];
                    __bs.resize(2 * __s);
                    __to = &__bs[0] + __s;
                    __to_end = &__bs[0] + __bs.size();
                    __frm = __frm_nxt;
                }
            } while (__r == codecvt_base::partial && __frm_nxt < __frm_end);
        }
        if (__r == codecvt_base::ok)
        {
            size_t __s = __bs.size();
            __bs.resize(__bs.capacity());
            char* __to = &__bs[0] + __s;
            char* __to_end = __to + __bs.size();
            do
            {
                char* __to_nxt;
                __r = __cvtptr_->unshift(__st, __to, __to_end, __to_nxt);
                if (__r == codecvt_base::noconv)
                {
                    __bs.resize(__to - &__bs[0]);
                    __r = codecvt_base::ok;
                }
                else if (__r == codecvt_base::ok)
                {
                    __bs.resize(__to_nxt - &__bs[0]);
                }
                else if (__r == codecvt_base::partial)
                {
                    ptrdiff_t __sp = __to_nxt - &__bs[0];
                    __bs.resize(2 * __sp);
                    __to = &__bs[0] + __sp;
                    __to_end = &__bs[0] + __bs.size();
                }
            } while (__r == codecvt_base::partial);
            if (__r == codecvt_base::ok)
                return __bs;
        }
    }

    if (__byte_err_string_.empty())
        __throw_range_error("wstring_convert: to_bytes error");

    return __byte_err_string_;
}

template <class _Codecvt, class _Elem = wchar_t, class _Tr = char_traits<_Elem> >
class _LIBCPP_TEMPLATE_VIS wbuffer_convert
    : public basic_streambuf<_Elem, _Tr>
{
public:
    // types:
    typedef _Elem                          char_type;
    typedef _Tr                            traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef typename _Codecvt::state_type  state_type;

private:
    char*       __extbuf_;
    const char* __extbufnext_;
    const char* __extbufend_;
    char __extbuf_min_[8];
    size_t __ebs_;
    char_type* __intbuf_;
    size_t __ibs_;
    streambuf* __bufptr_;
    _Codecvt* __cv_;
    state_type __st_;
    ios_base::openmode __cm_;
    bool __owns_eb_;
    bool __owns_ib_;
    bool __always_noconv_;

    wbuffer_convert(const wbuffer_convert&);
    wbuffer_convert& operator=(const wbuffer_convert&);

public:
#ifndef _LIBCPP_CXX03_LANG
    wbuffer_convert() : wbuffer_convert(nullptr) {}
    explicit wbuffer_convert(streambuf* __bytebuf,
                             _Codecvt* __pcvt = new _Codecvt,
                             state_type __state = state_type());
#else
# 3959 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
    _LIBCPP_EXPLICIT_AFTER_CXX11
    wbuffer_convert(streambuf* __bytebuf = nullptr,
                    _Codecvt* __pcvt = new _Codecvt,
                    state_type __state = state_type());
#endif
# 3964 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3

    ~wbuffer_convert();

    _LIBCPP_INLINE_VISIBILITY
    streambuf* rdbuf() const {return __bufptr_;}
    _LIBCPP_INLINE_VISIBILITY
    streambuf* rdbuf(streambuf* __bytebuf)
    {
        streambuf* __r = __bufptr_;
        __bufptr_ = __bytebuf;
        return __r;
    }

    _LIBCPP_INLINE_VISIBILITY
    state_type state() const {return __st_;}

protected:
    virtual int_type underflow();
    virtual int_type pbackfail(int_type __c = traits_type::eof());
    virtual int_type overflow (int_type __c = traits_type::eof());
    virtual basic_streambuf<char_type, traits_type>* setbuf(char_type* __s,
                                                            streamsize __n);
    virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
                             ios_base::openmode __wch = ios_base::in | ios_base::out);
    virtual pos_type seekpos(pos_type __sp,
                             ios_base::openmode __wch = ios_base::in | ios_base::out);
    virtual int sync();

private:
    bool __read_mode();
    void __write_mode();
    wbuffer_convert* __close();
};

template <class _Codecvt, class _Elem, class _Tr>
wbuffer_convert<_Codecvt, _Elem, _Tr>::
    wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt, state_type __state)
    : __extbuf_(nullptr),
      __extbufnext_(nullptr),
      __extbufend_(nullptr),
      __ebs_(0),
      __intbuf_(0),
      __ibs_(0),
      __bufptr_(__bytebuf),
      __cv_(__pcvt),
      __st_(__state),
      __cm_(0),
      __owns_eb_(false),
      __owns_ib_(false),
      __always_noconv_(__cv_ ? __cv_->always_noconv() : false)
{
    setbuf(0, 4096);
}

template <class _Codecvt, class _Elem, class _Tr>
wbuffer_convert<_Codecvt, _Elem, _Tr>::~wbuffer_convert()
{
    __close();
    delete __cv_;
    if (__owns_eb_)
        delete [] __extbuf_;
    if (__owns_ib_)
        delete [] __intbuf_;
}

template <class _Codecvt, class _Elem, class _Tr>
typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
wbuffer_convert<_Codecvt, _Elem, _Tr>::underflow()
{
    if (__cv_ == 0 || __bufptr_ == 0)
        return traits_type::eof();
    bool __initial = __read_mode();
    char_type __1buf;
    if (this->gptr() == 0)
        this->setg(&__1buf, &__1buf+1, &__1buf+1);
    const size_t __unget_sz = __initial ? 0 : min<size_t>((this->egptr() - this->eback()) / 2, 4);
    int_type __c = traits_type::eof();
    if (this->gptr() == this->egptr())
    {
        _VSTD::memmove(this->eback(), this->egptr() - __unget_sz, __unget_sz * sizeof(char_type));
        if (__always_noconv_)
        {
            streamsize __nmemb = static_cast<streamsize>(this->egptr() - this->eback() - __unget_sz);
            __nmemb = __bufptr_->sgetn((char*)this->eback() + __unget_sz, __nmemb);
            if (__nmemb != 0)
            {
                this->setg(this->eback(),
                           this->eback() + __unget_sz,
                           this->eback() + __unget_sz + __nmemb);
                __c = *this->gptr();
            }
        }
        else
        {
             _LIBCPP_ASSERT(!(__extbufnext_ == NULL && (__extbufend_ != __extbufnext_)), "underflow moving from NULL" );
             if (__extbufend_ != __extbufnext_)
                _VSTD::memmove(__extbuf_, __extbufnext_, __extbufend_ - __extbufnext_);
            __extbufnext_ = __extbuf_ + (__extbufend_ - __extbufnext_);
            __extbufend_ = __extbuf_ + (__extbuf_ == __extbuf_min_ ? sizeof(__extbuf_min_) : __ebs_);
            streamsize __nmemb = _VSTD::min(static_cast<streamsize>(this->egptr() - this->eback() - __unget_sz),
                                 static_cast<streamsize>(__extbufend_ - __extbufnext_));
            codecvt_base::result __r;
            // FIXME: Do we ever need to restore the state here?
            //state_type __svs = __st_;
            streamsize __nr = __bufptr_->sgetn(const_cast<char*>(__extbufnext_), __nmemb);
            if (__nr != 0)
            {
                __extbufend_ = __extbufnext_ + __nr;
                char_type*  __inext;
                __r = __cv_->in(__st_, __extbuf_, __extbufend_, __extbufnext_,
                                       this->eback() + __unget_sz,
                                       this->egptr(), __inext);
                if (__r == codecvt_base::noconv)
                {
                    this->setg((char_type*)__extbuf_, (char_type*)__extbuf_,
                               (char_type*) const_cast<char *>(__extbufend_));
                    __c = *this->gptr();
                }
                else if (__inext != this->eback() + __unget_sz)
                {
                    this->setg(this->eback(), this->eback() + __unget_sz, __inext);
                    __c = *this->gptr();
                }
            }
        }
    }
    else
        __c = *this->gptr();
    if (this->eback() == &__1buf)
        this->setg(0, 0, 0);
    return __c;
}

template <class _Codecvt, class _Elem, class _Tr>
typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
wbuffer_convert<_Codecvt, _Elem, _Tr>::pbackfail(int_type __c)
{
    if (__cv_ != 0 && __bufptr_ != 0 && this->eback() < this->gptr())
    {
        if (traits_type::eq_int_type(__c, traits_type::eof()))
        {
            this->gbump(-1);
            return traits_type::not_eof(__c);
        }
        if (traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]))
        {
            this->gbump(-1);
            *this->gptr() = traits_type::to_char_type(__c);
            return __c;
        }
    }
    return traits_type::eof();
}

template <class _Codecvt, class _Elem, class _Tr>
typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
wbuffer_convert<_Codecvt, _Elem, _Tr>::overflow(int_type __c)
{
    if (__cv_ == 0 || __bufptr_ == 0)
        return traits_type::eof();
    __write_mode();
    char_type __1buf;
    char_type* __pb_save = this->pbase();
    char_type* __epb_save = this->epptr();
    if (!traits_type::eq_int_type(__c, traits_type::eof()))
    {
        if (this->pptr() == 0)
            this->setp(&__1buf, &__1buf+1);
        *this->pptr() = traits_type::to_char_type(__c);
        this->pbump(1);
    }
    if (this->pptr() != this->pbase())
    {
        if (__always_noconv_)
        {
            streamsize __nmemb = static_cast<streamsize>(this->pptr() - this->pbase());
            if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb)
                return traits_type::eof();
        }
        else
        {
            char* __extbe = __extbuf_;
            codecvt_base::result __r;
            do
            {
                const char_type* __e;
                __r = __cv_->out(__st_, this->pbase(), this->pptr(), __e,
                                        __extbuf_, __extbuf_ + __ebs_, __extbe);
                if (__e == this->pbase())
                    return traits_type::eof();
                if (__r == codecvt_base::noconv)
                {
                    streamsize __nmemb = static_cast<size_t>(this->pptr() - this->pbase());
                    if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb)
                        return traits_type::eof();
                }
                else if (__r == codecvt_base::ok || __r == codecvt_base::partial)
                {
                    streamsize __nmemb = static_cast<size_t>(__extbe - __extbuf_);
                    if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb)
                        return traits_type::eof();
                    if (__r == codecvt_base::partial)
                    {
                        this->setp(const_cast<char_type *>(__e), this->pptr());
                        this->__pbump(this->epptr() - this->pbase());
                    }
                }
                else
                    return traits_type::eof();
            } while (__r == codecvt_base::partial);
        }
        this->setp(__pb_save, __epb_save);
    }
    return traits_type::not_eof(__c);
}

template <class _Codecvt, class _Elem, class _Tr>
basic_streambuf<_Elem, _Tr>*
wbuffer_convert<_Codecvt, _Elem, _Tr>::setbuf(char_type* __s, streamsize __n)
{
    this->setg(0, 0, 0);
    this->setp(0, 0);
    if (__owns_eb_)
        delete [] __extbuf_;
    if (__owns_ib_)
        delete [] __intbuf_;
    __ebs_ = __n;
    if (__ebs_ > sizeof(__extbuf_min_))
    {
        if (__always_noconv_ && __s)
        {
            __extbuf_ = (char*)__s;
            __owns_eb_ = false;
        }
        else
        {
            __extbuf_ = new char[__ebs_];
            __owns_eb_ = true;
        }
    }
    else
    {
        __extbuf_ = __extbuf_min_;
        __ebs_ = sizeof(__extbuf_min_);
        __owns_eb_ = false;
    }
    if (!__always_noconv_)
    {
        __ibs_ = max<streamsize>(__n, sizeof(__extbuf_min_));
        if (__s && __ibs_ >= sizeof(__extbuf_min_))
        {
            __intbuf_ = __s;
            __owns_ib_ = false;
        }
        else
        {
            __intbuf_ = new char_type[__ibs_];
            __owns_ib_ = true;
        }
    }
    else
    {
        __ibs_ = 0;
        __intbuf_ = 0;
        __owns_ib_ = false;
    }
    return this;
}

template <class _Codecvt, class _Elem, class _Tr>
typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type
wbuffer_convert<_Codecvt, _Elem, _Tr>::seekoff(off_type __off, ios_base::seekdir __way,
                                        ios_base::openmode __om)
{
    int __width = __cv_->encoding();
    if (__cv_ == 0 || __bufptr_ == 0 || (__width <= 0 && __off != 0) || sync())
        return pos_type(off_type(-1));
    // __width > 0 || __off == 0, now check __way
    if (__way != ios_base::beg && __way != ios_base::cur && __way != ios_base::end)
        return pos_type(off_type(-1));
    pos_type __r = __bufptr_->pubseekoff(__width * __off, __way, __om);
    __r.state(__st_);
    return __r;
}

template <class _Codecvt, class _Elem, class _Tr>
typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type
wbuffer_convert<_Codecvt, _Elem, _Tr>::seekpos(pos_type __sp, ios_base::openmode __wch)
{
    if (__cv_ == 0 || __bufptr_ == 0 || sync())
        return pos_type(off_type(-1));
    if (__bufptr_->pubseekpos(__sp, __wch) == pos_type(off_type(-1)))
        return pos_type(off_type(-1));
    return __sp;
}

template <class _Codecvt, class _Elem, class _Tr>
int
wbuffer_convert<_Codecvt, _Elem, _Tr>::sync()
{
    if (__cv_ == 0 || __bufptr_ == 0)
        return 0;
    if (__cm_ & ios_base::out)
    {
        if (this->pptr() != this->pbase())
            if (overflow() == traits_type::eof())
                return -1;
        codecvt_base::result __r;
        do
        {
            char* __extbe;
            __r = __cv_->unshift(__st_, __extbuf_, __extbuf_ + __ebs_, __extbe);
            streamsize __nmemb = static_cast<streamsize>(__extbe - __extbuf_);
            if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb)
                return -1;
        } while (__r == codecvt_base::partial);
        if (__r == codecvt_base::error)
            return -1;
        if (__bufptr_->pubsync())
            return -1;
    }
    else if (__cm_ & ios_base::in)
    {
        off_type __c;
        if (__always_noconv_)
            __c = this->egptr() - this->gptr();
        else
        {
            int __width = __cv_->encoding();
            __c = __extbufend_ - __extbufnext_;
            if (__width > 0)
                __c += __width * (this->egptr() - this->gptr());
            else
            {
                if (this->gptr() != this->egptr())
                {
                    reverse(this->gptr(), this->egptr());
                    codecvt_base::result __r;
                    const char_type* __e = this->gptr();
                    char* __extbe;
                    do
                    {
                        __r = __cv_->out(__st_, __e, this->egptr(), __e,
                                         __extbuf_, __extbuf_ + __ebs_, __extbe);
                        switch (__r)
                        {
                        case codecvt_base::noconv:
                            __c += this->egptr() - this->gptr();
                            break;
                        case codecvt_base::ok:
                        case codecvt_base::partial:
                            __c += __extbe - __extbuf_;
                            break;
                        default:
                            return -1;
                        }
                    } while (__r == codecvt_base::partial);
                }
            }
        }
        if (__bufptr_->pubseekoff(-__c, ios_base::cur, __cm_) == pos_type(off_type(-1)))
            return -1;
        this->setg(0, 0, 0);
        __cm_ = 0;
    }
    return 0;
}

template <class _Codecvt, class _Elem, class _Tr>
bool
wbuffer_convert<_Codecvt, _Elem, _Tr>::__read_mode()
{
    if (!(__cm_ & ios_base::in))
    {
        this->setp(0, 0);
        if (__always_noconv_)
            this->setg((char_type*)__extbuf_,
                       (char_type*)__extbuf_ + __ebs_,
                       (char_type*)__extbuf_ + __ebs_);
        else
            this->setg(__intbuf_, __intbuf_ + __ibs_, __intbuf_ + __ibs_);
        __cm_ = ios_base::in;
        return true;
    }
    return false;
}

template <class _Codecvt, class _Elem, class _Tr>
void
wbuffer_convert<_Codecvt, _Elem, _Tr>::__write_mode()
{
    if (!(__cm_ & ios_base::out))
    {
        this->setg(0, 0, 0);
        if (__ebs_ > sizeof(__extbuf_min_))
        {
            if (__always_noconv_)
                this->setp((char_type*)__extbuf_,
                           (char_type*)__extbuf_ + (__ebs_ - 1));
            else
                this->setp(__intbuf_, __intbuf_ + (__ibs_ - 1));
        }
        else
            this->setp(0, 0);
        __cm_ = ios_base::out;
    }
}

template <class _Codecvt, class _Elem, class _Tr>
wbuffer_convert<_Codecvt, _Elem, _Tr>*
wbuffer_convert<_Codecvt, _Elem, _Tr>::__close()
{
    wbuffer_convert* __rt = nullptr;
    if (__cv_ != nullptr && __bufptr_ != nullptr)
    {
        __rt = this;
        if ((__cm_ & ios_base::out) && sync())
            __rt = nullptr;
    }
    return __rt;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_LOCALE
# 4391 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/locale" 3
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <streambuf>
#endif /* expanded by -frewrite-includes */
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
#endif
# 147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_ostream
    : virtual public basic_ios<_CharT, _Traits>
{
public:
    // types (inherited from basic_ios (27.5.4)):
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // 27.7.2.2 Constructor/destructor:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb)
    { this->init(__sb); }
    virtual ~basic_ostream();
protected:
    inline _LIBCPP_INLINE_VISIBILITY
    basic_ostream(basic_ostream&& __rhs);

    // 27.7.2.3 Assign/swap
    inline _LIBCPP_INLINE_VISIBILITY
    basic_ostream& operator=(basic_ostream&& __rhs);

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void swap(basic_ostream& __rhs)
    { basic_ios<char_type, traits_type>::swap(__rhs); }

    basic_ostream           (const basic_ostream& __rhs) = delete;
    basic_ostream& operator=(const basic_ostream& __rhs) = delete;

public:
    // 27.7.2.4 Prefix/suffix:
    class _LIBCPP_TEMPLATE_VIS sentry;

    // 27.7.2.6 Formatted output:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
    { return __pf(*this); }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_ostream& operator<<(basic_ios<char_type, traits_type>&
                              (*__pf)(basic_ios<char_type,traits_type>&))
    { __pf(*this); return *this; }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_ostream& operator<<(ios_base& (*__pf)(ios_base&))
    { __pf(*this); return *this; }

    basic_ostream& operator<<(bool __n);
    basic_ostream& operator<<(short __n);
    basic_ostream& operator<<(unsigned short __n);
    basic_ostream& operator<<(int __n);
    basic_ostream& operator<<(unsigned int __n);
    basic_ostream& operator<<(long __n);
    basic_ostream& operator<<(unsigned long __n);
    basic_ostream& operator<<(long long __n);
    basic_ostream& operator<<(unsigned long long __n);
    basic_ostream& operator<<(float __f);
    basic_ostream& operator<<(double __f);
    basic_ostream& operator<<(long double __f);
    basic_ostream& operator<<(const void* __p);
    basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb);

    _LIBCPP_INLINE_VISIBILITY
    basic_ostream& operator<<(nullptr_t)
    { return *this << "nullptr"; }

    // 27.7.2.7 Unformatted output:
    basic_ostream& put(char_type __c);
    basic_ostream& write(const char_type* __s, streamsize __n);
    basic_ostream& flush();

    // 27.7.2.5 seeks:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    pos_type tellp();
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_ostream& seekp(pos_type __pos);
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);

protected:
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream() {}  // extension, intentially does not initialize
};

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_ostream<_CharT, _Traits>::sentry
{
    bool __ok_;
    basic_ostream<_CharT, _Traits>& __os_;

    sentry(const sentry&); // = delete;
    sentry& operator=(const sentry&); // = delete;

public:
    explicit sentry(basic_ostream<_CharT, _Traits>& __os);
    ~sentry();

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const {return __ok_;}
};

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os)
    : __ok_(false),
      __os_(__os)
{
    if (__os.good())
    {
        if (__os.tie())
            __os.tie()->flush();
        __ok_ = true;
    }
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>::sentry::~sentry()
{
    if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf)
                      && !uncaught_exception())
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
            if (__os_.rdbuf()->pubsync() == -1)
                __os_.setstate(ios_base::badbit);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    }
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs)
{
    this->move(__rhs);
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator=(basic_ostream&& __rhs)
{
    swap(__rhs);
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>::~basic_ostream()
{
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<char_type, traits_type>* __sb)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 315 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            if (__sb)
            {
#ifndef _LIBCPP_NO_EXCEPTIONS
                try
                {
#endif // _LIBCPP_NO_EXCEPTIONS
# 324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
                    typedef istreambuf_iterator<_CharT, _Traits> _Ip;
                    typedef ostreambuf_iterator<_CharT, _Traits> _Op;
                    _Ip __i(__sb);
                    _Ip __eof;
                    _Op __o(*this);
                    size_t __c = 0;
                    for (; __i != __eof; ++__i, ++__o, ++__c)
                    {
                        *__o = *__i;
                        if (__o.failed())
                            break;
                    }
                    if (__c == 0)
                        this->setstate(ios_base::failbit);
#ifndef _LIBCPP_NO_EXCEPTIONS
                }
                catch (...)
                {
                    this->__set_failbit_and_consider_rethrow();
                }
#endif // _LIBCPP_NO_EXCEPTIONS
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
            }
            else
                this->setstate(ios_base::badbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(bool __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 382 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(short __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 393 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield;
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(),
                        __flags == ios_base::oct || __flags == ios_base::hex ?
                        static_cast<long>(static_cast<unsigned short>(__n))  :
                        static_cast<long>(__n)).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 412 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(unsigned short __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 423 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 438 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(int __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield;
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(),
                        __flags == ios_base::oct || __flags == ios_base::hex ?
                        static_cast<long>(static_cast<unsigned int>(__n))  :
                        static_cast<long>(__n)).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 468 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(unsigned int __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 479 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(long __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(unsigned long __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 546 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(long long __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 557 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 572 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(unsigned long long __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(float __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 609 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), static_cast<double>(__n)).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 624 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(double __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(long double __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 661 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 676 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::operator<<(const void* __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
            const _Fp& __f = use_facet<_Fp>(this->getloc());
            if (__f.put(*this, *this, this->fill(), __n).failed())
                this->setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
__put_character_sequence(basic_ostream<_CharT, _Traits>& __os,
                          const _CharT* __str, size_t __len)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 714 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
        if (__s)
        {
            typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
            if (__pad_and_output(_Ip(__os),
                                 __str,
                                 (__os.flags() & ios_base::adjustfield) == ios_base::left ?
                                     __str + __len :
                                     __str,
                                 __str + __len,
                                 __os,
                                 __os.fill()).failed())
                __os.setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __os.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return __os;
}


template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c)
{
    return _VSTD::__put_character_sequence(__os, &__c, 1);
}

template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
        if (__s)
        {
            _CharT __c = __os.widen(__cn);
            typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
            if (__pad_and_output(_Ip(__os),
                                 &__c,
                                 (__os.flags() & ios_base::adjustfield) == ios_base::left ?
                                     &__c + 1 :
                                     &__c,
                                 &__c + 1,
                                 __os,
                                 __os.fill()).failed())
                __os.setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __os.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 776 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return __os;
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, char __c)
{
    return _VSTD::__put_character_sequence(__os, &__c, 1);
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, signed char __c)
{
    return _VSTD::__put_character_sequence(__os, (char *) &__c, 1);
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c)
{
    return _VSTD::__put_character_sequence(__os, (char *) &__c, 1);
}

template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str)
{
    return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str));
}

template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 815 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
        if (__s)
        {
            typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
            size_t __len = char_traits<char>::length(__strn);
            const int __bs = 100;
            _CharT __wbb[__bs];
            _CharT* __wb = __wbb;
            unique_ptr<_CharT, void(*)(void*)> __h(0, free);
            if (__len > __bs)
            {
                __wb = (_CharT*)malloc(__len*sizeof(_CharT));
                if (__wb == 0)
                    __throw_bad_alloc();
                __h.reset(__wb);
            }
            for (_CharT* __p = __wb; *__strn != '\0'; ++__strn, ++__p)
                *__p = __os.widen(*__strn);
            if (__pad_and_output(_Ip(__os),
                                 __wb,
                                 (__os.flags() & ios_base::adjustfield) == ios_base::left ?
                                     __wb + __len :
                                     __wb,
                                 __wb + __len,
                                 __os,
                                 __os.fill()).failed())
                __os.setstate(ios_base::badbit | ios_base::failbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __os.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 850 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return __os;
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, const char* __str)
{
    return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str));
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, const signed char* __str)
{
    const char *__s = (const char *) __str;
    return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s));
}

template<class _Traits>
basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str)
{
    const char *__s = (const char *) __str;
    return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s));
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::put(char_type __c)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 884 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __s(*this);
        if (__s)
        {
            typedef ostreambuf_iterator<_CharT, _Traits> _Op;
            _Op __o(*this);
            *__o = __c;
            if (__o.failed())
                this->setstate(ios_base::badbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 900 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 911 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        sentry __sen(*this);
        if (__sen && __n)
        {
            if (this->rdbuf()->sputn(__s, __n) != __n)
                this->setstate(ios_base::badbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 924 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::flush()
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 935 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
        if (this->rdbuf())
        {
            sentry __s(*this);
            if (__s)
            {
                if (this->rdbuf()->pubsync() == -1)
                    this->setstate(ios_base::badbit);
            }
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        this->__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 951 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
    return *this;
}

template <class _CharT, class _Traits>
typename basic_ostream<_CharT, _Traits>::pos_type
basic_ostream<_CharT, _Traits>::tellp()
{
    if (this->fail())
        return pos_type(-1);
    return this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::seekp(pos_type __pos)
{
    sentry __s(*this);
    if (!this->fail())
    {
        if (this->rdbuf()->pubseekpos(__pos, ios_base::out) == pos_type(-1))
            this->setstate(ios_base::failbit);
    }
    return *this;
}

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir)
{
    sentry __s(*this);
    if (!this->fail())
    {
        if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::out) == pos_type(-1))
            this->setstate(ios_base::failbit);
    }
    return *this;
}

template <class _CharT, class _Traits>
inline
basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os)
{
    __os.put(__os.widen('\n'));
    __os.flush();
    return __os;
}

template <class _CharT, class _Traits>
inline
basic_ostream<_CharT, _Traits>&
ends(basic_ostream<_CharT, _Traits>& __os)
{
    __os.put(_CharT());
    return __os;
}

template <class _CharT, class _Traits>
inline
basic_ostream<_CharT, _Traits>&
flush(basic_ostream<_CharT, _Traits>& __os)
{
    __os.flush();
    return __os;
}

template <class _Stream, class _Tp, class = void>
struct __is_ostreamable : false_type { };

template <class _Stream, class _Tp>
struct __is_ostreamable<_Stream, _Tp, decltype(
    declval<_Stream>() << declval<_Tp>(), void()
)> : true_type { };

template <class _Stream, class _Tp, class = typename enable_if<
    _And<is_base_of<ios_base, _Stream>,
         __is_ostreamable<_Stream&, const _Tp&> >::value
>::type>
_LIBCPP_INLINE_VISIBILITY
_Stream&& operator<<(_Stream&& __os, const _Tp& __x)
{
    __os << __x;
    return _VSTD::move(__os);
}

template<class _CharT, class _Traits, class _Allocator>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os,
           const basic_string<_CharT, _Traits, _Allocator>& __str)
{
    return _VSTD::__put_character_sequence(__os, __str.data(), __str.size());
}

template<class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os,
           basic_string_view<_CharT, _Traits> __sv)
{
    return _VSTD::__put_character_sequence(__os, __sv.data(), __sv.size());
}

template <class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec)
{
    return __os << __ec.category().name() << ':' << __ec.value();
}

template<class _CharT, class _Traits, class _Yp>
inline _LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p)
{
    return __os << __p.get();
}

template<class _CharT, class _Traits, class _Yp, class _Dp>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if
<
    is_same<void, typename __void_t<decltype((declval<basic_ostream<_CharT, _Traits>&>() << declval<typename unique_ptr<_Yp, _Dp>::pointer>()))>::type>::value,
    basic_ostream<_CharT, _Traits>&
>::type
operator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p)
{
    return __os << __p.get();
}

template <class _CharT, class _Traits, size_t _Size>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
{
    return __os << __x.template to_string<_CharT, _Traits>
                        (use_facet<ctype<_CharT> >(__os.getloc()).widen('0'),
                         use_facet<ctype<_CharT> >(__os.getloc()).widen('1'));
}

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>)

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_OSTREAM
# 1095 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/ostream" 3
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
#endif
# 169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 172 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_istream
    : virtual public basic_ios<_CharT, _Traits>
{
    streamsize __gc_;
public:
    // types (inherited from basic_ios (27.5.4)):
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // 27.7.1.1.1 Constructor/destructor:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    explicit basic_istream(basic_streambuf<char_type, traits_type>* __sb) : __gc_(0)
    { this->init(__sb); }
    virtual ~basic_istream();
protected:
    inline _LIBCPP_INLINE_VISIBILITY
    basic_istream(basic_istream&& __rhs);

    // 27.7.1.1.2 Assign/swap:
    inline _LIBCPP_INLINE_VISIBILITY
    basic_istream& operator=(basic_istream&& __rhs);

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void swap(basic_istream& __rhs) {
      _VSTD::swap(__gc_, __rhs.__gc_);
      basic_ios<char_type, traits_type>::swap(__rhs);
    }

    basic_istream           (const basic_istream& __rhs) = delete;
    basic_istream& operator=(const basic_istream& __rhs) = delete;
public:

    // 27.7.1.1.3 Prefix/suffix:
    class _LIBCPP_TEMPLATE_VIS sentry;

    // 27.7.1.2 Formatted input:
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&))
    { return __pf(*this); }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& operator>>(basic_ios<char_type, traits_type>&
                              (*__pf)(basic_ios<char_type, traits_type>&))
    { __pf(*this); return *this; }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& operator>>(ios_base& (*__pf)(ios_base&))
    { __pf(*this); return *this; }

    basic_istream& operator>>(basic_streambuf<char_type, traits_type>* __sb);
    basic_istream& operator>>(bool& __n);
    basic_istream& operator>>(short& __n);
    basic_istream& operator>>(unsigned short& __n);
    basic_istream& operator>>(int& __n);
    basic_istream& operator>>(unsigned int& __n);
    basic_istream& operator>>(long& __n);
    basic_istream& operator>>(unsigned long& __n);
    basic_istream& operator>>(long long& __n);
    basic_istream& operator>>(unsigned long long& __n);
    basic_istream& operator>>(float& __f);
    basic_istream& operator>>(double& __f);
    basic_istream& operator>>(long double& __f);
    basic_istream& operator>>(void*& __p);

    // 27.7.1.3 Unformatted input:
    _LIBCPP_INLINE_VISIBILITY
    streamsize gcount() const {return __gc_;}
    int_type get();

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& get(char_type& __c) {
      int_type __ch = get();
      if (__ch != traits_type::eof())
        __c = traits_type::to_char_type(__ch);
      return *this;
    }

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& get(char_type* __s, streamsize __n)
    { return get(__s, __n, this->widen('\n')); }

    basic_istream& get(char_type* __s, streamsize __n, char_type __dlm);

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& get(basic_streambuf<char_type, traits_type>& __sb)
    { return get(__sb, this->widen('\n')); }

    basic_istream& get(basic_streambuf<char_type, traits_type>& __sb, char_type __dlm);

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    basic_istream& getline(char_type* __s, streamsize __n)
    { return getline(__s, __n, this->widen('\n')); }

    basic_istream& getline(char_type* __s, streamsize __n, char_type __dlm);

    basic_istream& ignore(streamsize __n = 1, int_type __dlm = traits_type::eof());
    int_type peek();
    basic_istream& read (char_type* __s, streamsize __n);
    streamsize readsome(char_type* __s, streamsize __n);

    basic_istream& putback(char_type __c);
    basic_istream& unget();
    int sync();

    pos_type tellg();
    basic_istream& seekg(pos_type __pos);
    basic_istream& seekg(off_type __off, ios_base::seekdir __dir);
};

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_istream<_CharT, _Traits>::sentry
{
    bool __ok_;

    sentry(const sentry&); // = delete;
    sentry& operator=(const sentry&); // = delete;

public:
    explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
//    ~sentry() = default;

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const {return __ok_;}
};

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>::sentry::sentry(basic_istream<_CharT, _Traits>& __is,
                                               bool __noskipws)
    : __ok_(false)
{
    if (__is.good())
    {
        if (__is.tie())
            __is.tie()->flush();
        if (!__noskipws && (__is.flags() & ios_base::skipws))
        {
            typedef istreambuf_iterator<_CharT, _Traits> _Ip;
            const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
            _Ip __i(__is);
            _Ip __eof;
            for (; __i != __eof; ++__i)
                if (!__ct.is(__ct.space, *__i))
                    break;
            if (__i == __eof)
                __is.setstate(ios_base::failbit | ios_base::eofbit);
        }
        __ok_ = __is.good();
    }
    else
        __is.setstate(ios_base::failbit);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>::basic_istream(basic_istream&& __rhs)
    : __gc_(__rhs.__gc_)
{
    __rhs.__gc_ = 0;
    this->move(__rhs);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator=(basic_istream&& __rhs)
{
    swap(__rhs);
    return *this;
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>::~basic_istream()
{
}

template <class _Tp, class _CharT, class _Traits>
_LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
__input_arithmetic(basic_istream<_CharT, _Traits>& __is, _Tp& __n) {
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __s(__is);
    if (__s)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 365 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            typedef istreambuf_iterator<_CharT, _Traits> _Ip;
            typedef num_get<_CharT, _Ip> _Fp;
            use_facet<_Fp>(__is.getloc()).get(_Ip(__is), _Ip(), __is, __state, __n);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 380 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(unsigned short& __n)
{
    return _VSTD::__input_arithmetic<unsigned short>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(unsigned int& __n)
{
    return _VSTD::__input_arithmetic<unsigned int>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(long& __n)
{
    return _VSTD::__input_arithmetic<long>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(unsigned long& __n)
{
    return _VSTD::__input_arithmetic<unsigned long>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(long long& __n)
{
    return _VSTD::__input_arithmetic<long long>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(unsigned long long& __n)
{
    return _VSTD::__input_arithmetic<unsigned long long>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(float& __n)
{
    return _VSTD::__input_arithmetic<float>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(double& __n)
{
    return _VSTD::__input_arithmetic<double>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(long double& __n)
{
    return _VSTD::__input_arithmetic<long double>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(bool& __n)
{
    return _VSTD::__input_arithmetic<bool>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(void*& __n)
{
    return _VSTD::__input_arithmetic<void*>(*this, __n);
}

template <class _Tp, class _CharT, class _Traits>
_LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
__input_arithmetic_with_numeric_limits(basic_istream<_CharT, _Traits>& __is, _Tp& __n) {
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __s(__is);
    if (__s)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 474 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            typedef istreambuf_iterator<_CharT, _Traits> _Ip;
            typedef num_get<_CharT, _Ip> _Fp;
            long __temp;
            use_facet<_Fp>(__is.getloc()).get(_Ip(__is), _Ip(), __is, __state, __temp);
            if (__temp < numeric_limits<_Tp>::min())
            {
                __state |= ios_base::failbit;
                __n = numeric_limits<_Tp>::min();
            }
            else if (__temp > numeric_limits<_Tp>::max())
            {
                __state |= ios_base::failbit;
                __n = numeric_limits<_Tp>::max();
            }
            else
            {
                __n = static_cast<_Tp>(__temp);
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(short& __n)
{
    return _VSTD::__input_arithmetic_with_numeric_limits<short>(*this, __n);
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(int& __n)
{
    return _VSTD::__input_arithmetic_with_numeric_limits<int>(*this, __n);
}

template<class _CharT, class _Traits>
_LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
__input_c_string(basic_istream<_CharT, _Traits>& __is, _CharT* __p, size_t __n)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 536 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            _CharT* __s = __p;
            const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
            while (__s != __p + (__n-1))
            {
                typename _Traits::int_type __i = __is.rdbuf()->sgetc();
                if (_Traits::eq_int_type(__i, _Traits::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                _CharT __ch = _Traits::to_char_type(__i);
                if (__ct.is(__ct.space, __ch))
                    break;
                *__s++ = __ch;
                 __is.rdbuf()->sbumpc();
            }
            *__s = _CharT();
            __is.width(0);
            if (__s == __p)
               __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 568 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 574 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3

template<class _CharT, class _Traits, size_t _Np>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT (&__buf)[_Np])
{
    size_t __n = _Np;
    if (__is.width() > 0)
        __n = _VSTD::min(size_t(__is.width()), _Np);
    return _VSTD::__input_c_string(__is, __buf, __n);
}

template<class _Traits, size_t _Np>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, unsigned char (&__buf)[_Np])
{
    return __is >> (char(&)[_Np])__buf;
}

template<class _Traits, size_t _Np>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, signed char (&__buf)[_Np])
{
    return __is >> (char(&)[_Np])__buf;
}

#else
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3

template<class _CharT, class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT* __s)
{
    streamsize __n = __is.width();
    if (__n <= 0)
        __n = numeric_limits<streamsize>::max() / sizeof(_CharT) - 1;
    return _VSTD::__input_c_string(__is, __s, size_t(__n));
}

template<class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, unsigned char* __s)
{
    return __is >> (char*)__s;
}

template<class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, signed char* __s)
{
    return __is >> (char*)__s;
}

#endif // _LIBCPP_STD_VER > 17
# 632 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, _CharT& __c)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 645 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            typename _Traits::int_type __i = __is.rdbuf()->sbumpc();
            if (_Traits::eq_int_type(__i, _Traits::eof()))
                __state |= ios_base::eofbit | ios_base::failbit;
            else
                __c = _Traits::to_char_type(__i);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 662 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template<class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, unsigned char& __c)
{
    return __is >> (char&)__c;
}

template<class _Traits>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __is, signed char& __c)
{
    return __is >> (char&)__c;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::operator>>(basic_streambuf<char_type, traits_type>* __sb)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __s(*this, true);
    if (__s)
    {
        if (__sb)
        {
#ifndef _LIBCPP_NO_EXCEPTIONS
            try
            {
#endif // _LIBCPP_NO_EXCEPTIONS
# 698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
                while (true)
                {
                    typename traits_type::int_type __i = this->rdbuf()->sgetc();
                    if (traits_type::eq_int_type(__i, _Traits::eof()))
                    {
                       __state |= ios_base::eofbit;
                       break;
                    }
                    if (traits_type::eq_int_type(
                            __sb->sputc(traits_type::to_char_type(__i)),
                            traits_type::eof()))
                        break;
                    ++__gc_;
                    this->rdbuf()->sbumpc();
                }
                if (__gc_ == 0)
                   __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
            }
            catch (...)
            {
                __state |= ios_base::badbit;
                if (__gc_ == 0)
                    __state |= ios_base::failbit;

                this->__setstate_nothrow(__state);
                if (this->exceptions() & ios_base::failbit || this->exceptions() & ios_base::badbit)
                {
                    throw;
                }
            }
#endif // _LIBCPP_NO_EXCEPTIONS
# 730 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        }
        else
        {
            __state |= ios_base::failbit;
        }
        this->setstate(__state);
    }
    return *this;
}

template<class _CharT, class _Traits>
typename basic_istream<_CharT, _Traits>::int_type
basic_istream<_CharT, _Traits>::get()
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    int_type __r = traits_type::eof();
    sentry __s(*this, true);
    if (__s)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 754 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            __r = this->rdbuf()->sbumpc();
            if (traits_type::eq_int_type(__r, traits_type::eof()))
               __state |= ios_base::failbit | ios_base::eofbit;
            else
                __gc_ = 1;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            this->__setstate_nothrow(this->rdstate() | ios_base::badbit);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 770 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return __r;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::get(char_type* __s, streamsize __n, char_type __dlm)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
        if (__n > 0)
        {
#ifndef _LIBCPP_NO_EXCEPTIONS
            try
            {
#endif
# 790 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
                while (__gc_ < __n-1)
                {
                    int_type __i = this->rdbuf()->sgetc();
                    if (traits_type::eq_int_type(__i, traits_type::eof()))
                    {
                       __state |= ios_base::eofbit;
                       break;
                    }
                    char_type __ch = traits_type::to_char_type(__i);
                    if (traits_type::eq(__ch, __dlm))
                        break;
                    *__s++ = __ch;
                    ++__gc_;
                     this->rdbuf()->sbumpc();
                }
                if (__gc_ == 0)
                   __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
            }
            catch (...)
            {
                __state |= ios_base::badbit;
                this->__setstate_nothrow(__state);
                if (this->exceptions() & ios_base::badbit)
                {
                    if (__n > 0)
                        *__s = char_type();
                    throw;
                }
            }
#endif
# 821 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        }
        else
        {
            __state |= ios_base::failbit;
        }

        if (__n > 0)
            *__s = char_type();
        this->setstate(__state);
    }
    if (__n > 0)
        *__s = char_type();
    return *this;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::get(basic_streambuf<char_type, traits_type>& __sb,
                                    char_type __dlm)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 850 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            while (true)
            {
                typename traits_type::int_type __i = this->rdbuf()->sgetc();
                if (traits_type::eq_int_type(__i, traits_type::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                char_type __ch = traits_type::to_char_type(__i);
                if (traits_type::eq(__ch, __dlm))
                    break;
                if (traits_type::eq_int_type(__sb.sputc(__ch), traits_type::eof()))
                    break;
                ++__gc_;
                this->rdbuf()->sbumpc();
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            // according to the spec, exceptions here are caught but not rethrown
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 874 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        if (__gc_ == 0)
           __state |= ios_base::failbit;
        this->setstate(__state);
    }
    return *this;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n, char_type __dlm)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 894 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            while (true)
            {
                typename traits_type::int_type __i = this->rdbuf()->sgetc();
                if (traits_type::eq_int_type(__i, traits_type::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                char_type __ch = traits_type::to_char_type(__i);
                if (traits_type::eq(__ch, __dlm))
                {
                    this->rdbuf()->sbumpc();
                    ++__gc_;
                    break;
                }
                if (__gc_ >= __n-1)
                {
                    __state |= ios_base::failbit;
                    break;
                }
                *__s++ = __ch;
                this->rdbuf()->sbumpc();
                ++__gc_;
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                if (__n > 0)
                    *__s = char_type();
                if (__gc_ == 0)
                    __state |= ios_base::failbit;
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 934 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
    }
    if (__n > 0)
        *__s = char_type();
    if (__gc_ == 0)
        __state |= ios_base::failbit;
    this->setstate(__state);
    return *this;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __dlm)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 956 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (__n == numeric_limits<streamsize>::max())
            {
                while (true)
                {
                    typename traits_type::int_type __i = this->rdbuf()->sbumpc();
                    if (traits_type::eq_int_type(__i, traits_type::eof()))
                    {
                       __state |= ios_base::eofbit;
                       break;
                    }
                    ++__gc_;
                    if (traits_type::eq_int_type(__i, __dlm))
                        break;
                }
            }
            else
            {
                while (__gc_ < __n)
                {
                    typename traits_type::int_type __i = this->rdbuf()->sbumpc();
                    if (traits_type::eq_int_type(__i, traits_type::eof()))
                    {
                       __state |= ios_base::eofbit;
                       break;
                    }
                    ++__gc_;
                    if (traits_type::eq_int_type(__i, __dlm))
                        break;
                }
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 998 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return *this;
}

template<class _CharT, class _Traits>
typename basic_istream<_CharT, _Traits>::int_type
basic_istream<_CharT, _Traits>::peek()
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    int_type __r = traits_type::eof();
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1017 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            __r = this->rdbuf()->sgetc();
            if (traits_type::eq_int_type(__r, traits_type::eof()))
                __state |= ios_base::eofbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1032 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return __r;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1050 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            __gc_ = this->rdbuf()->sgetn(__s, __n);
            if (__gc_ != __n)
                __state |= ios_base::failbit | ios_base::eofbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1065 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
    }
    else
    {
        __state |= ios_base::failbit;
    }
    this->setstate(__state);
    return *this;
}

template<class _CharT, class _Traits>
streamsize
basic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __n)
{
    ios_base::iostate __state = ios_base::goodbit;
    __gc_ = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1087 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            streamsize __c = this->rdbuf()->in_avail();
            switch (__c)
            {
            case -1:
                __state |= ios_base::eofbit;
                break;
            case 0:
                break;
            default:
                __n = _VSTD::min(__c, __n);
                __gc_ = this->rdbuf()->sgetn(__s, __n);
                if (__gc_ != __n)
                    __state |= ios_base::failbit | ios_base::eofbit;
                break;
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
    }
    else
    {
        __state |= ios_base::failbit;
    }
    this->setstate(__state);
    return __gc_;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::putback(char_type __c)
{
    ios_base::iostate __state = this->rdstate() & ~ios_base::eofbit;
    __gc_ = 0;
    this->clear(__state);
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (this->rdbuf() == nullptr || this->rdbuf()->sputbackc(__c) == traits_type::eof())
                __state |= ios_base::badbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
    }
    else
    {
        __state |= ios_base::failbit;
    }
    this->setstate(__state);
    return *this;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::unget()
{
    ios_base::iostate __state = this->rdstate() & ~ios_base::eofbit;
    __gc_ = 0;
    this->clear(__state);
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1174 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (this->rdbuf() == nullptr || this->rdbuf()->sungetc() == traits_type::eof())
                __state |= ios_base::badbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1188 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
    }
    else
    {
        __state |= ios_base::failbit;
    }
    this->setstate(__state);
    return *this;
}

template<class _CharT, class _Traits>
int
basic_istream<_CharT, _Traits>::sync()
{
    ios_base::iostate __state = ios_base::goodbit;
    int __r = 0;
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (this->rdbuf() == nullptr)
                return -1;
            if (this->rdbuf()->pubsync() == -1)
            {
                __state |= ios_base::badbit;
                return -1;
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1229 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return __r;
}

template<class _CharT, class _Traits>
typename basic_istream<_CharT, _Traits>::pos_type
basic_istream<_CharT, _Traits>::tellg()
{
    ios_base::iostate __state = ios_base::goodbit;
    pos_type __r(-1);
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __r = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1260 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return __r;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::seekg(pos_type __pos)
{
    ios_base::iostate __state = this->rdstate() & ~ios_base::eofbit;
    this->clear(__state);
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (this->rdbuf()->pubseekpos(__pos, ios_base::in) == pos_type(-1))
                __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return *this;
}

template<class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir)
{
    ios_base::iostate __state = this->rdstate() & ~ios_base::eofbit;
    this->clear(__state);
    sentry __sen(*this, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::in) == pos_type(-1))
                __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            this->__setstate_nothrow(__state);
            if (this->exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        this->setstate(__state);
    }
    return *this;
}

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
ws(basic_istream<_CharT, _Traits>& __is)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1341 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
            while (true)
            {
                typename _Traits::int_type __i = __is.rdbuf()->sgetc();
                if (_Traits::eq_int_type(__i, _Traits::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                if (!__ct.is(__ct.space, _Traits::to_char_type(__i)))
                    break;
                __is.rdbuf()->sbumpc();
            }
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1366 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template <class _Stream, class _Tp, class = void>
struct __is_istreamable : false_type { };

template <class _Stream, class _Tp>
struct __is_istreamable<_Stream, _Tp, decltype(
    declval<_Stream>() >> declval<_Tp>(), void()
)> : true_type { };

template <class _Stream, class _Tp, class = typename enable_if<
    _And<is_base_of<ios_base, _Stream>,
         __is_istreamable<_Stream&, _Tp&&> >::value
>::type>
_LIBCPP_INLINE_VISIBILITY
_Stream&& operator>>(_Stream&& __is, _Tp&& __x)
{
    __is >> _VSTD::forward<_Tp>(__x);
    return _VSTD::move(__is);
}

template <class _CharT, class _Traits>
class _LIBCPP_TEMPLATE_VIS basic_iostream
    : public basic_istream<_CharT, _Traits>,
      public basic_ostream<_CharT, _Traits>
{
public:
    // types:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;

    // constructor/destructor
    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    explicit basic_iostream(basic_streambuf<char_type, traits_type>* __sb)
      : basic_istream<_CharT, _Traits>(__sb)
    {}

    virtual ~basic_iostream();
protected:
    inline _LIBCPP_INLINE_VISIBILITY
    basic_iostream(basic_iostream&& __rhs);

    // assign/swap
    inline _LIBCPP_INLINE_VISIBILITY
    basic_iostream& operator=(basic_iostream&& __rhs);

    inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
    void swap(basic_iostream& __rhs)
    { basic_istream<char_type, traits_type>::swap(__rhs); }
};

template <class _CharT, class _Traits>
basic_iostream<_CharT, _Traits>::basic_iostream(basic_iostream&& __rhs)
    : basic_istream<_CharT, _Traits>(_VSTD::move(__rhs))
{
}

template <class _CharT, class _Traits>
basic_iostream<_CharT, _Traits>&
basic_iostream<_CharT, _Traits>::operator=(basic_iostream&& __rhs)
{
    swap(__rhs);
    return *this;
}

template <class _CharT, class _Traits>
basic_iostream<_CharT, _Traits>::~basic_iostream()
{
}

template<class _CharT, class _Traits, class _Allocator>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is,
           basic_string<_CharT, _Traits, _Allocator>& __str)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 1455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            __str.clear();
            streamsize __n = __is.width();
            if (__n <= 0)
                __n = __str.max_size();
            if (__n <= 0)
                __n = numeric_limits<streamsize>::max();
            streamsize __c = 0;
            const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
            while (__c < __n)
            {
                typename _Traits::int_type __i = __is.rdbuf()->sgetc();
                if (_Traits::eq_int_type(__i, _Traits::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                _CharT __ch = _Traits::to_char_type(__i);
                if (__ct.is(__ct.space, __ch))
                    break;
                __str.push_back(__ch);
                ++__c;
                 __is.rdbuf()->sbumpc();
            }
            __is.width(0);
            if (__c == 0)
               __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 1493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template<class _CharT, class _Traits, class _Allocator>
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is, true);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 1511 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            __str.clear();
            streamsize __extr = 0;
            while (true)
            {
                typename _Traits::int_type __i = __is.rdbuf()->sbumpc();
                if (_Traits::eq_int_type(__i, _Traits::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                ++__extr;
                _CharT __ch = _Traits::to_char_type(__i);
                if (_Traits::eq(__ch, __dlm))
                    break;
                __str.push_back(__ch);
                if (__str.size() == __str.max_size())
                {
                    __state |= ios_base::failbit;
                    break;
                }
            }
            if (__extr == 0)
               __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 1546 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str)
{
    return getline(__is, __str, __is.widen('\n'));
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>&& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm)
{
    return getline(__is, __str, __dlm);
}

template<class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>&& __is,
        basic_string<_CharT, _Traits, _Allocator>& __str)
{
    return getline(__is, __str, __is.widen('\n'));
}

template <class _CharT, class _Traits, size_t _Size>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x)
{
    ios_base::iostate __state = ios_base::goodbit;
    typename basic_istream<_CharT, _Traits>::sentry __sen(__is);
    if (__sen)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif
# 1590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
            basic_string<_CharT, _Traits> __str;
            const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc());
            size_t __c = 0;
            _CharT __zero = __ct.widen('0');
            _CharT __one = __ct.widen('1');
            while (__c < _Size)
            {
                typename _Traits::int_type __i = __is.rdbuf()->sgetc();
                if (_Traits::eq_int_type(__i, _Traits::eof()))
                {
                   __state |= ios_base::eofbit;
                   break;
                }
                _CharT __ch = _Traits::to_char_type(__i);
                if (!_Traits::eq(__ch, __zero) && !_Traits::eq(__ch, __one))
                    break;
                __str.push_back(__ch);
                ++__c;
                 __is.rdbuf()->sbumpc();
            }
            __x = bitset<_Size>(__str);
            if (_Size > 0 && __c == 0)
               __state |= ios_base::failbit;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            __state |= ios_base::badbit;
            __is.__setstate_nothrow(__state);
            if (__is.exceptions() & ios_base::badbit)
            {
                throw;
            }
        }
#endif
# 1625 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
        __is.setstate(__state);
    }
    return __is;
}

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<wchar_t>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream<char>)

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_ISTREAM
# 1639 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/istream" 3
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <ostream>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
#if 0 /* expanded by -frewrite-includes */
#include <streambuf>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
#endif
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#ifndef _LIBCPP_HAS_NO_STDIN
extern _LIBCPP_FUNC_VIS istream cin;
extern _LIBCPP_FUNC_VIS wistream wcin;
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
#ifndef _LIBCPP_HAS_NO_STDOUT
extern _LIBCPP_FUNC_VIS ostream cout;
extern _LIBCPP_FUNC_VIS wostream wcout;
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iostream" 3
extern _LIBCPP_FUNC_VIS ostream cerr;
extern _LIBCPP_FUNC_VIS wostream wcerr;
extern _LIBCPP_FUNC_VIS ostream clog;
extern _LIBCPP_FUNC_VIS wostream wclog;

_LIBCPP_END_NAMESPACE_STD

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


// Google Mock - a framework for writing C++ mock classes.
//
// This is the main header file a user should include.

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_H_
#define GMOCK_INCLUDE_GMOCK_GMOCK_H_

// This file implements the following syntax:
//
//   ON_CALL(mock_object.Method(...))
//     .With(...) ?
//     .WillByDefault(...);
//
// where With() is optional and WillByDefault() must appear exactly
// once.
//
//   EXPECT_CALL(mock_object.Method(...))
//     .With(...) ?
//     .Times(...) ?
//     .InSequence(...) *
//     .WillOnce(...) *
//     .WillRepeatedly(...) ?
//     .RetiresOnSaturation() ? ;
//
// where all clauses are optional and WillOnce() can be repeated.

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


// Google Mock - a framework for writing C++ mock classes.
//
// This file implements some commonly used actions.

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
#define GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_

#ifndef _WIN32_WCE
#if 0 /* expanded by -frewrite-includes */
# include <errno.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"
#endif
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"

#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/gmock-actions.h"

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


// Google Mock - a framework for writing C++ mock classes.
//
// This file defines some utilities useful for implementing Google
// Mock.  They are subject to change without notice, so please DO NOT
// USE THEM IN USER CODE.

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_

#if 0 /* expanded by -frewrite-includes */
#include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 1 3
// -*- C++ -*-
//===---------------------------- stdio.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_FILE) || defined(__need___FILE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDIO_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#define _LIBCPP_STDIO_H

/*
    stdio.h synopsis

Macros:

    BUFSIZ
    EOF
    FILENAME_MAX
    FOPEN_MAX
    L_tmpnam
    NULL
    SEEK_CUR
    SEEK_END
    SEEK_SET
    TMP_MAX
    _IOFBF
    _IOLBF
    _IONBF
    stderr
    stdin
    stdout

Types:

FILE
fpos_t
size_t

int remove(const char* filename);
int rename(const char* old, const char* new);
FILE* tmpfile(void);
char* tmpnam(char* s);
int fclose(FILE* stream);
int fflush(FILE* stream);
FILE* fopen(const char* restrict filename, const char* restrict mode);
FILE* freopen(const char* restrict filename, const char * restrict mode,
              FILE * restrict stream);
void setbuf(FILE* restrict stream, char* restrict buf);
int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
int fprintf(FILE* restrict stream, const char* restrict format, ...);
int fscanf(FILE* restrict stream, const char * restrict format, ...);
int printf(const char* restrict format, ...);
int scanf(const char* restrict format, ...);
int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
int sprintf(char* restrict s, const char* restrict format, ...);
int sscanf(const char* restrict s, const char* restrict format, ...);
int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
int vprintf(const char* restrict format, va_list arg);
int vscanf(const char* restrict format, va_list arg);                          // C99
int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
              va_list arg);
int vsprintf(char* restrict s, const char* restrict format, va_list arg);
int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
int fgetc(FILE* stream);
char* fgets(char* restrict s, int n, FILE* restrict stream);
int fputc(int c, FILE* stream);
int fputs(const char* restrict s, FILE* restrict stream);
int getc(FILE* stream);
int getchar(void);
char* gets(char* s);  // removed in C++14
int putc(int c, FILE* stream);
int putchar(int c);
int puts(const char* s);
int ungetc(int c, FILE* stream);
size_t fread(void* restrict ptr, size_t size, size_t nmemb,
             FILE* restrict stream);
size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
              FILE* restrict stream);
int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
int fseek(FILE* stream, long offset, int whence);
int fsetpos(FILE*stream, const fpos_t* pos);
long ftell(FILE* stream);
void rewind(FILE* stream);
void clearerr(FILE* stream);
int feof(FILE* stream);
int ferror(FILE* stream);
void perror(const char* s);
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#ifdef __cplusplus

#undef getc
#undef putc
#undef clearerr
#undef feof
#undef ferror

#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#endif // _LIBCPP_STDIO_H
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <ostream>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
#if 0 /* expanded by -frewrite-includes */
#include "gmock/internal/gmock-generated-internal-utils.h"
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-internal-utils.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-generated-internal-utils.h" 1
// This file was GENERATED by command:
//     pump.py gmock-generated-internal-utils.h.pump
// DO NOT EDIT BY HAND!!!

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


// Google Mock - a framework for writing C++ mock classes.
//
// This file contains template meta-programming utility classes needed
// for implementing Google Mock.

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_

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

//
// Low-level types and utilities for porting Google Mock to various
// platforms.  All macros ending with _ and symbols defined in an
// internal namespace are subject to change without notice.  Code
// outside Google Mock MUST NOT USE THEM DIRECTLY.  Macros that don't
// end with _ are part of Google Mock's public API and can be used by
// code outside Google Mock.

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_

#if 0 /* expanded by -frewrite-includes */
#include <assert.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)assert.h	8.2 (Berkeley) 1/21/94
 * $FreeBSD$
 */

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

/*
 * Unlike other ANSI header files, <assert.h> may usefully be included
 * multiple times, with and without NDEBUG defined.
 */

#undef assert
#undef _assert

#ifdef NDEBUG
#define	assert(e)	((void)0)
#define	_assert(e)	((void)0)
#else
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
#define	_assert(e)	assert(e)

#define	assert(e)	((e) ? (void)0 : __assert(__func__, __FILE__, \
			    __LINE__, #e))
#endif /* NDEBUG */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

#ifndef _ASSERT_H_
#define _ASSERT_H_

/*
 * Static assertions.  In principle we could define static_assert for
 * C++ older than C++11, but this breaks if _Static_assert is
 * implemented as a macro.
 *
 * C++ template parameters may contain commas, even if not enclosed in
 * parentheses, causing the _Static_assert macro to be invoked with more
 * than two parameters.
 */
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011 && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
#define	static_assert	_Static_assert
#endif
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

__BEGIN_DECLS
void __assert(const char *, const char *, int, const char *) __dead2;
__END_DECLS

#endif /* !_ASSERT_H_ */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 1 3
// -*- C++ -*-
//===--------------------------- stdlib.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_malloc_and_calloc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDLIB_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#define _LIBCPP_STDLIB_H

/*
    stdlib.h synopsis

Macros:

    EXIT_FAILURE
    EXIT_SUCCESS
    MB_CUR_MAX
    NULL
    RAND_MAX

Types:

    size_t
    div_t
    ldiv_t
    lldiv_t                                                               // C99

double    atof (const char* nptr);
int       atoi (const char* nptr);
long      atol (const char* nptr);
long long atoll(const char* nptr);                                        // C99
double             strtod  (const char* restrict nptr, char** restrict endptr);
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
int rand(void);
void srand(unsigned int seed);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
void abort(void);
int atexit(void (*func)(void));
void exit(int status);
void _Exit(int status);
char* getenv(const char* name);
int system(const char* string);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));
void qsort(void* base, size_t nmemb, size_t size,
           int (*compar)(const void *, const void *));
int         abs(      int j);
long        abs(     long j);
long long   abs(long long j);                                             // C++0X
long       labs(     long j);
long long llabs(long long j);                                             // C99
div_t     div(      int numer,       int denom);
ldiv_t    div(     long numer,      long denom);
lldiv_t   div(long long numer, long long denom);                          // C++0X
ldiv_t   ldiv(     long numer,      long denom);
lldiv_t lldiv(long long numer, long long denom);                          // C99
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
int at_quick_exit(void (*func)(void))                                     // C++11
void quick_exit(int status);                                              // C++11
void *aligned_alloc(size_t alignment, size_t size);                       // C11

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#ifdef __cplusplus
extern "C++" {
// abs

#undef abs
#undef labs
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef llabs
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
  return __builtin_labs(__x);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
  return __builtin_llabs(__x);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
  return __builtin_fabsf(__lcpp_x); // Use builtins to prevent needing math.h
}

inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
  return __builtin_fabs(__lcpp_x);
}

inline _LIBCPP_INLINE_VISIBILITY long double
abs(long double __lcpp_x) _NOEXCEPT {
  return __builtin_fabsl(__lcpp_x);
}
#endif // !defined(__sun__)
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// div

#undef div
#undef ldiv
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef lldiv
#endif
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
  return ::ldiv(__x, __y);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
                                             long long __y) _NOEXCEPT {
  return ::lldiv(__x, __y);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // _LIBCPP_MSVCRT / __sun__
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
} // extern "C++"
#endif // __cplusplus
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#endif // _LIBCPP_STDLIB_H
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <iostream>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"

// Most of the utilities needed for porting Google Mock are also
// required for Google Test and are defined in gtest-port.h.
//
// Note to maintainers: to reduce code duplication, prefer adding
// portability utilities to Google Test's gtest-port.h instead of
// here, as Google Mock depends on Google Test.  Only add a utility
// here if it's truly specific to Google Mock.

#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-linked_ptr.h"
#endif /* expanded by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h" 1
// Copyright 2003 Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// A "smart" pointer type with reference tracking.  Every pointer to a
// particular object is kept on a circular linked list.  When the last pointer
// to an object is destroyed or reassigned, the object is deleted.
//
// Used properly, this deletes the object when the last reference goes away.
// There are several caveats:
// - Like all reference counting schemes, cycles lead to leaks.
// - Each smart pointer is actually two pointers (8 bytes instead of 4).
// - Every time a pointer is assigned, the entire list of pointers to that
//   object is traversed.  This class is therefore NOT SUITABLE when there
//   will often be more than two or three pointers to a particular object.
// - References are only tracked as long as linked_ptr<> objects are copied.
//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
//   will happen (double deletion).
//
// A good use of this class is storing object references in STL containers.
// You can safely put linked_ptr<> in a vector<>.
// Other uses may not be as good.
//
// Note: If you use an incomplete type with linked_ptr<>, the class
// *containing* linked_ptr<> must have a constructor and destructor (even
// if they do nothing!).
//
// Bill Gibbons suggested we use something like this.
//
// Thread Safety:
//   Unlike other linked_ptr implementations, in this implementation
//   a linked_ptr object is thread-safe in the sense that:
//     - it's safe to copy linked_ptr objects concurrently,
//     - it's safe to copy *from* a linked_ptr and read its underlying
//       raw pointer (e.g. via get()) concurrently, and
//     - it's safe to write to two linked_ptrs that point to the same
//       shared object concurrently.
// FIXME: rename this to safe_linked_ptr to avoid
// confusion with normal linked_ptr.

// GOOGLETEST_CM0001 DO NOT DELETE

#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_

#if 0 /* expanded by -frewrite-includes */
#include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 1 3
// -*- C++ -*-
//===--------------------------- stdlib.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_malloc_and_calloc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDLIB_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#define _LIBCPP_STDLIB_H

/*
    stdlib.h synopsis

Macros:

    EXIT_FAILURE
    EXIT_SUCCESS
    MB_CUR_MAX
    NULL
    RAND_MAX

Types:

    size_t
    div_t
    ldiv_t
    lldiv_t                                                               // C99

double    atof (const char* nptr);
int       atoi (const char* nptr);
long      atol (const char* nptr);
long long atoll(const char* nptr);                                        // C99
double             strtod  (const char* restrict nptr, char** restrict endptr);
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
int rand(void);
void srand(unsigned int seed);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
void abort(void);
int atexit(void (*func)(void));
void exit(int status);
void _Exit(int status);
char* getenv(const char* name);
int system(const char* string);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));
void qsort(void* base, size_t nmemb, size_t size,
           int (*compar)(const void *, const void *));
int         abs(      int j);
long        abs(     long j);
long long   abs(long long j);                                             // C++0X
long       labs(     long j);
long long llabs(long long j);                                             // C99
div_t     div(      int numer,       int denom);
ldiv_t    div(     long numer,      long denom);
lldiv_t   div(long long numer, long long denom);                          // C++0X
ldiv_t   ldiv(     long numer,      long denom);
lldiv_t lldiv(long long numer, long long denom);                          // C99
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
int at_quick_exit(void (*func)(void))                                     // C++11
void quick_exit(int status);                                              // C++11
void *aligned_alloc(size_t alignment, size_t size);                       // C11

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#ifdef __cplusplus
extern "C++" {
// abs

#undef abs
#undef labs
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef llabs
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
  return __builtin_labs(__x);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
  return __builtin_llabs(__x);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
  return __builtin_fabsf(__lcpp_x); // Use builtins to prevent needing math.h
}

inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
  return __builtin_fabs(__lcpp_x);
}

inline _LIBCPP_INLINE_VISIBILITY long double
abs(long double __lcpp_x) _NOEXCEPT {
  return __builtin_fabsl(__lcpp_x);
}
#endif // !defined(__sun__)
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// div

#undef div
#undef ldiv
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef lldiv
#endif
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
  return ::ldiv(__x, __y);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
                                             long long __y) _NOEXCEPT {
  return ::lldiv(__x, __y);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // _LIBCPP_MSVCRT / __sun__
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
} // extern "C++"
#endif // __cplusplus
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#endif // _LIBCPP_STDLIB_H
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <assert.h>
#endif /* expanded by -frewrite-includes */
# 72 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)assert.h	8.2 (Berkeley) 1/21/94
 * $FreeBSD$
 */

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

/*
 * Unlike other ANSI header files, <assert.h> may usefully be included
 * multiple times, with and without NDEBUG defined.
 */

#undef assert
#undef _assert

#ifdef NDEBUG
#define	assert(e)	((void)0)
#define	_assert(e)	((void)0)
#else
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
#define	_assert(e)	assert(e)

#define	assert(e)	((e) ? (void)0 : __assert(__func__, __FILE__, \
			    __LINE__, #e))
#endif /* NDEBUG */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

#ifndef _ASSERT_H_
#define _ASSERT_H_

/*
 * Static assertions.  In principle we could define static_assert for
 * C++ older than C++11, but this breaks if _Static_assert is
 * implemented as a macro.
 *
 * C++ template parameters may contain commas, even if not enclosed in
 * parentheses, causing the _Static_assert macro to be invoked with more
 * than two parameters.
 */
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011 && !defined(__cplusplus)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
#define	static_assert	_Static_assert
#endif
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4

__BEGIN_DECLS
void __assert(const char *, const char *, int, const char *) __dead2;
__END_DECLS

#endif /* !_ASSERT_H_ */
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/assert.h" 3 4
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h" 2

#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-port.h"
#endif /* expanded by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 1
// Copyright 2005, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Low-level types and utilities for porting Google Test to various
// platforms.  All macros ending with _ and symbols defined in an
// internal namespace are subject to change without notice.  Code
// outside Google Test MUST NOT USE THEM DIRECTLY.  Macros that don't
// end with _ are part of Google Test's public API and can be used by
// code outside Google Test.
//
// This file is fundamental to Google Test.  All other Google Test source
// files are expected to #include this.  Therefore, it cannot #include
// any other Google Test header.

// GOOGLETEST_CM0001 DO NOT DELETE

#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_

// Environment-describing macros
// -----------------------------
//
// Google Test can be used in many different environments.  Macros in
// this section tell Google Test what kind of environment it is being
// used in, such that Google Test can provide environment-specific
// features and implementations.
//
// Google Test tries to automatically detect the properties of its
// environment, so users usually don't need to worry about these
// macros.  However, the automatic detection is not perfect.
// Sometimes it's necessary for a user to define some of the following
// macros in the build script to override Google Test's decisions.
//
// If the user doesn't define a macro in the list, Google Test will
// provide a default definition.  After this header is #included, all
// macros in this list will be defined to either 1 or 0.
//
// Notes to maintainers:
//   - Each macro here is a user-tweakable knob; do not grow the list
//     lightly.
//   - Use #if to key off these macros.  Don't use #ifdef or "#if
//     defined(...)", which will not work as these macros are ALWAYS
//     defined.
//
//   GTEST_HAS_CLONE          - Define it to 1/0 to indicate that clone(2)
//                              is/isn't available.
//   GTEST_HAS_EXCEPTIONS     - Define it to 1/0 to indicate that exceptions
//                              are enabled.
//   GTEST_HAS_GLOBAL_STRING  - Define it to 1/0 to indicate that ::string
//                              is/isn't available
//   GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::wstring
//                              is/isn't available
//   GTEST_HAS_POSIX_RE       - Define it to 1/0 to indicate that POSIX regular
//                              expressions are/aren't available.
//   GTEST_HAS_PTHREAD        - Define it to 1/0 to indicate that <pthread.h>
//                              is/isn't available.
//   GTEST_HAS_RTTI           - Define it to 1/0 to indicate that RTTI is/isn't
//                              enabled.
//   GTEST_HAS_STD_WSTRING    - Define it to 1/0 to indicate that
//                              std::wstring does/doesn't work (Google Test can
//                              be used where std::wstring is unavailable).
//   GTEST_HAS_TR1_TUPLE      - Define it to 1/0 to indicate tr1::tuple
//                              is/isn't available.
//   GTEST_HAS_SEH            - Define it to 1/0 to indicate whether the
//                              compiler supports Microsoft's "Structured
//                              Exception Handling".
//   GTEST_HAS_STREAM_REDIRECTION
//                            - Define it to 1/0 to indicate whether the
//                              platform supports I/O stream redirection using
//                              dup() and dup2().
//   GTEST_USE_OWN_TR1_TUPLE  - Define it to 1/0 to indicate whether Google
//                              Test's own tr1 tuple implementation should be
//                              used.  Unused when the user sets
//                              GTEST_HAS_TR1_TUPLE to 0.
//   GTEST_LANG_CXX11         - Define it to 1/0 to indicate that Google Test
//                              is building in C++11/C++98 mode.
//   GTEST_LINKED_AS_SHARED_LIBRARY
//                            - Define to 1 when compiling tests that use
//                              Google Test as a shared library (known as
//                              DLL on Windows).
//   GTEST_CREATE_SHARED_LIBRARY
//                            - Define to 1 when compiling Google Test itself
//                              as a shared library.
//   GTEST_DEFAULT_DEATH_TEST_STYLE
//                            - The default value of --gtest_death_test_style.
//                              The legacy default has been "fast" in the open
//                              source version since 2008. The recommended value
//                              is "threadsafe", and can be set in
//                              custom/gtest-port.h.

// Platform-indicating macros
// --------------------------
//
// Macros indicating the platform on which Google Test is being used
// (a macro is defined to 1 if compiled on the given platform;
// otherwise UNDEFINED -- it's never defined to 0.).  Google Test
// defines these macros automatically.  Code outside Google Test MUST
// NOT define them.
//
//   GTEST_OS_AIX      - IBM AIX
//   GTEST_OS_CYGWIN   - Cygwin
//   GTEST_OS_FREEBSD  - FreeBSD
//   GTEST_OS_FUCHSIA  - Fuchsia
//   GTEST_OS_HPUX     - HP-UX
//   GTEST_OS_LINUX    - Linux
//     GTEST_OS_LINUX_ANDROID - Google Android
//   GTEST_OS_MAC      - Mac OS X
//     GTEST_OS_IOS    - iOS
//   GTEST_OS_NACL     - Google Native Client (NaCl)
//   GTEST_OS_NETBSD   - NetBSD
//   GTEST_OS_OPENBSD  - OpenBSD
//   GTEST_OS_QNX      - QNX
//   GTEST_OS_SOLARIS  - Sun Solaris
//   GTEST_OS_SYMBIAN  - Symbian
//   GTEST_OS_WINDOWS  - Windows (Desktop, MinGW, or Mobile)
//     GTEST_OS_WINDOWS_DESKTOP  - Windows Desktop
//     GTEST_OS_WINDOWS_MINGW    - MinGW
//     GTEST_OS_WINDOWS_MOBILE   - Windows Mobile
//     GTEST_OS_WINDOWS_PHONE    - Windows Phone
//     GTEST_OS_WINDOWS_RT       - Windows Store App/WinRT
//   GTEST_OS_ZOS      - z/OS
//
// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
// most stable support.  Since core members of the Google Test project
// don't have access to other platforms, support for them may be less
// stable.  If you notice any problems on your platform, please notify
// googletestframework@googlegroups.com (patches for fixing them are
// even more welcome!).
//
// It is possible that none of the GTEST_OS_* macros are defined.

// Feature-indicating macros
// -------------------------
//
// Macros indicating which Google Test features are available (a macro
// is defined to 1 if the corresponding feature is supported;
// otherwise UNDEFINED -- it's never defined to 0.).  Google Test
// defines these macros automatically.  Code outside Google Test MUST
// NOT define them.
//
// These macros are public so that portable tests can be written.
// Such tests typically surround code using a feature with an #if
// which controls that code.  For example:
//
// #if GTEST_HAS_DEATH_TEST
//   EXPECT_DEATH(DoSomethingDeadly());
// #endif
//
//   GTEST_HAS_COMBINE      - the Combine() function (for value-parameterized
//                            tests)
//   GTEST_HAS_DEATH_TEST   - death tests
//   GTEST_HAS_TYPED_TEST   - typed tests
//   GTEST_HAS_TYPED_TEST_P - type-parameterized tests
//   GTEST_IS_THREADSAFE    - Google Test is thread-safe.
//   GOOGLETEST_CM0007 DO NOT DELETE
//   GTEST_USES_POSIX_RE    - enhanced POSIX regex is used. Do not confuse with
//                            GTEST_HAS_POSIX_RE (see above) which users can
//                            define themselves.
//   GTEST_USES_SIMPLE_RE   - our own simple regex is used;
//                            the above RE\b(s) are mutually exclusive.
//   GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ().

// Misc public macros
// ------------------
//
//   GTEST_FLAG(flag_name)  - references the variable corresponding to
//                            the given Google Test flag.

// Internal utilities
// ------------------
//
// The following macros and utilities are for Google Test's INTERNAL
// use only.  Code outside Google Test MUST NOT USE THEM DIRECTLY.
//
// Macros for basic C++ coding:
//   GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
//   GTEST_ATTRIBUTE_UNUSED_  - declares that a class' instances or a
//                              variable don't have to be used.
//   GTEST_DISALLOW_ASSIGN_   - disables operator=.
//   GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
//   GTEST_MUST_USE_RESULT_   - declares that a function's result must be used.
//   GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
//                                        suppressed (constant conditional).
//   GTEST_INTENTIONAL_CONST_COND_POP_  - finish code section where MSVC C4127
//                                        is suppressed.
//
// C++11 feature wrappers:
//
//   testing::internal::forward - portability wrapper for std::forward.
//   testing::internal::move  - portability wrapper for std::move.
//
// Synchronization:
//   Mutex, MutexLock, ThreadLocal, GetThreadCount()
//                            - synchronization primitives.
//
// Template meta programming:
//   is_pointer     - as in TR1; needed on Symbian and IBM XL C/C++ only.
//   IteratorTraits - partial implementation of std::iterator_traits, which
//                    is not available in libCstd when compiled with Sun C++.
//
// Smart pointers:
//   scoped_ptr     - as in TR2.
//
// Regular expressions:
//   RE             - a simple regular expression class using the POSIX
//                    Extended Regular Expression syntax on UNIX-like platforms
//                    GOOGLETEST_CM0008 DO NOT DELETE
//                    or a reduced regular exception syntax on other
//                    platforms, including Windows.
// Logging:
//   GTEST_LOG_()   - logs messages at the specified severity level.
//   LogToStderr()  - directs all log messages to stderr.
//   FlushInfoLog() - flushes informational log messages.
//
// Stdout and stderr capturing:
//   CaptureStdout()     - starts capturing stdout.
//   GetCapturedStdout() - stops capturing stdout and returns the captured
//                         string.
//   CaptureStderr()     - starts capturing stderr.
//   GetCapturedStderr() - stops capturing stderr and returns the captured
//                         string.
//
// Integer types:
//   TypeWithSize   - maps an integer to a int type.
//   Int32, UInt32, Int64, UInt64, TimeInMillis
//                  - integers of known sizes.
//   BiggestInt     - the biggest signed integer type.
//
// Command-line utilities:
//   GTEST_DECLARE_*()  - declares a flag.
//   GTEST_DEFINE_*()   - defines a flag.
//   GetInjectableArgvs() - returns the command line as a vector of strings.
//
// Environment variable utilities:
//   GetEnv()             - gets the value of an environment variable.
//   BoolFromGTestEnv()   - parses a bool environment variable.
//   Int32FromGTestEnv()  - parses an Int32 environment variable.
//   StringFromGTestEnv() - parses a string environment variable.

#if 0 /* expanded by -frewrite-includes */
#include <ctype.h>   // for isspace, etc
#endif /* expanded by -frewrite-includes */
# 266 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#include <stddef.h>  // for ptrdiff_t
#endif /* expanded by -frewrite-includes */
# 267 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 1 3
// -*- C++ -*-
//===--------------------------- stddef.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_ptrdiff_t) || defined(__need_size_t) || \
    defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#endif
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stddef.h>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDDEF_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#define _LIBCPP_STDDEF_H

/*
    stddef.h synopsis

Macros:

    offsetof(type,member-designator)
    NULL

Types:

    ptrdiff_t
    size_t
    max_align_t // C++11
    nullptr_t

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
#endif
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stddef.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#ifdef __cplusplus

extern "C++" {
#if 0 /* expanded by -frewrite-includes */
#include <__nullptr>
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
using std::nullptr_t;
}

#endif
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3

#endif // _LIBCPP_STDDEF_H
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stddef.h" 3
# 268 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 268 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 1 3
// -*- C++ -*-
//===--------------------------- stdlib.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_malloc_and_calloc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDLIB_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#define _LIBCPP_STDLIB_H

/*
    stdlib.h synopsis

Macros:

    EXIT_FAILURE
    EXIT_SUCCESS
    MB_CUR_MAX
    NULL
    RAND_MAX

Types:

    size_t
    div_t
    ldiv_t
    lldiv_t                                                               // C99

double    atof (const char* nptr);
int       atoi (const char* nptr);
long      atol (const char* nptr);
long long atoll(const char* nptr);                                        // C99
double             strtod  (const char* restrict nptr, char** restrict endptr);
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
int rand(void);
void srand(unsigned int seed);
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);
void abort(void);
int atexit(void (*func)(void));
void exit(int status);
void _Exit(int status);
char* getenv(const char* name);
int system(const char* string);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));
void qsort(void* base, size_t nmemb, size_t size,
           int (*compar)(const void *, const void *));
int         abs(      int j);
long        abs(     long j);
long long   abs(long long j);                                             // C++0X
long       labs(     long j);
long long llabs(long long j);                                             // C99
div_t     div(      int numer,       int denom);
ldiv_t    div(     long numer,      long denom);
lldiv_t   div(long long numer, long long denom);                          // C++0X
ldiv_t   ldiv(     long numer,      long denom);
lldiv_t lldiv(long long numer, long long denom);                          // C99
int mblen(const char* s, size_t n);
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
int at_quick_exit(void (*func)(void))                                     // C++11
void quick_exit(int status);                                              // C++11
void *aligned_alloc(size_t alignment, size_t size);                       // C11

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 88 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#ifdef __cplusplus
extern "C++" {
// abs

#undef abs
#undef labs
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef llabs
#endif
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
  return __builtin_labs(__x);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
  return __builtin_llabs(__x);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 115 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
# 116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
  return __builtin_fabsf(__lcpp_x); // Use builtins to prevent needing math.h
}

inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
  return __builtin_fabs(__lcpp_x);
}

inline _LIBCPP_INLINE_VISIBILITY long double
abs(long double __lcpp_x) _NOEXCEPT {
  return __builtin_fabsl(__lcpp_x);
}
#endif // !defined(__sun__)
# 131 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// div

#undef div
#undef ldiv
#ifndef _LIBCPP_HAS_NO_LONG_LONG
#undef lldiv
#endif
# 139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
  return ::ldiv(__x, __y);
}
#ifndef _LIBCPP_HAS_NO_LONG_LONG
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
                                             long long __y) _NOEXCEPT {
  return ::lldiv(__x, __y);
}
#endif // _LIBCPP_HAS_NO_LONG_LONG
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
#endif // _LIBCPP_MSVCRT / __sun__
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
} // extern "C++"
#endif // __cplusplus
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3

#endif // _LIBCPP_STDLIB_H
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdlib.h" 3
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 269 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 1 3
// -*- C++ -*-
//===---------------------------- stdio.h ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#if 0 /* disabled by -frewrite-includes */
#if defined(__need_FILE) || defined(__need___FILE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(_LIBCPP_STDIO_H)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#define _LIBCPP_STDIO_H

/*
    stdio.h synopsis

Macros:

    BUFSIZ
    EOF
    FILENAME_MAX
    FOPEN_MAX
    L_tmpnam
    NULL
    SEEK_CUR
    SEEK_END
    SEEK_SET
    TMP_MAX
    _IOFBF
    _IOLBF
    _IONBF
    stderr
    stdin
    stdout

Types:

FILE
fpos_t
size_t

int remove(const char* filename);
int rename(const char* old, const char* new);
FILE* tmpfile(void);
char* tmpnam(char* s);
int fclose(FILE* stream);
int fflush(FILE* stream);
FILE* fopen(const char* restrict filename, const char* restrict mode);
FILE* freopen(const char* restrict filename, const char * restrict mode,
              FILE * restrict stream);
void setbuf(FILE* restrict stream, char* restrict buf);
int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
int fprintf(FILE* restrict stream, const char* restrict format, ...);
int fscanf(FILE* restrict stream, const char * restrict format, ...);
int printf(const char* restrict format, ...);
int scanf(const char* restrict format, ...);
int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
int sprintf(char* restrict s, const char* restrict format, ...);
int sscanf(const char* restrict s, const char* restrict format, ...);
int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
int vprintf(const char* restrict format, va_list arg);
int vscanf(const char* restrict format, va_list arg);                          // C99
int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
              va_list arg);
int vsprintf(char* restrict s, const char* restrict format, va_list arg);
int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
int fgetc(FILE* stream);
char* fgets(char* restrict s, int n, FILE* restrict stream);
int fputc(int c, FILE* stream);
int fputs(const char* restrict s, FILE* restrict stream);
int getc(FILE* stream);
int getchar(void);
char* gets(char* s);  // removed in C++14
int putc(int c, FILE* stream);
int putchar(int c);
int puts(const char* s);
int ungetc(int c, FILE* stream);
size_t fread(void* restrict ptr, size_t size, size_t nmemb,
             FILE* restrict stream);
size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
              FILE* restrict stream);
int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
int fseek(FILE* stream, long offset, int whence);
int fsetpos(FILE*stream, const fpos_t* pos);
long ftell(FILE* stream);
void rewind(FILE* stream);
void clearerr(FILE* stream);
int feof(FILE* stream);
int ferror(FILE* stream);
void perror(const char* s);
*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 104 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 105 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
#endif
# 106 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <stdio.h>
#endif /* expanded by -frewrite-includes */
# 107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#ifdef __cplusplus

#undef getc
#undef putc
#undef clearerr
#undef feof
#undef ferror

#endif
# 118 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3

#endif // _LIBCPP_STDIO_H
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/stdio.h" 3
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <string.h>
#endif /* expanded by -frewrite-includes */
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 271 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#ifndef _WIN32_WCE
#if 0 /* expanded by -frewrite-includes */
# include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 272 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
# include <sys/stat.h>
#endif /* expanded by -frewrite-includes */
# 273 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 * (c) UNIX System Laboratories, Inc.
 * All or some portions of this file are derived from material licensed
 * to the University of California by American Telephone and Telegraph
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
 * the permission of UNIX System Laboratories, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)stat.h	8.12 (Berkeley) 6/16/95
 * $FreeBSD$
 */

#ifndef _SYS_STAT_H_
#define	_SYS_STAT_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _BLKSIZE_T_DECLARED
typedef	__blksize_t	blksize_t;
#define	_BLKSIZE_T_DECLARED
#endif
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _BLKCNT_T_DECLARED
typedef	__blkcnt_t	blkcnt_t;
#define	_BLKCNT_T_DECLARED
#endif
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _DEV_T_DECLARED
typedef	__dev_t		dev_t;
#define	_DEV_T_DECLARED
#endif
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _FFLAGS_T_DECLARED
typedef	__fflags_t	fflags_t;
#define	_FFLAGS_T_DECLARED
#endif
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _GID_T_DECLARED
typedef	__gid_t		gid_t;
#define	_GID_T_DECLARED
#endif
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _INO_T_DECLARED
typedef	__ino_t		ino_t;
#define	_INO_T_DECLARED
#endif
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _MODE_T_DECLARED
typedef	__mode_t	mode_t;
#define	_MODE_T_DECLARED
#endif
# 81 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _NLINK_T_DECLARED
typedef	__nlink_t	nlink_t;
#define	_NLINK_T_DECLARED
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _OFF_T_DECLARED
typedef	__off_t		off_t;
#define	_OFF_T_DECLARED
#endif
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _UID_T_DECLARED
typedef	__uid_t		uid_t;
#define	_UID_T_DECLARED
#endif
# 96 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if !defined(_KERNEL) && __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 98 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
/*
 * XXX We get miscellaneous namespace pollution with this.
 */
#if 0 /* expanded by -frewrite-includes */
#include <sys/time.h>
#endif /* expanded by -frewrite-includes */
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1982, 1986, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)time.h	8.5 (Berkeley) 5/4/95
 * $FreeBSD$
 */

#ifndef _SYS_TIME_H_
#define	_SYS_TIME_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/_timeval.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/timespec.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_clock_id.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

struct timezone {
	int	tz_minuteswest;	/* minutes west of Greenwich */
	int	tz_dsttime;	/* type of dst correction */
};
#define	DST_NONE	0	/* not on dst */
#define	DST_USA		1	/* USA style dst */
#define	DST_AUST	2	/* Australian style dst */
#define	DST_WET		3	/* Western European dst */
#define	DST_MET		4	/* Middle European dst */
#define	DST_EET		5	/* Eastern European dst */
#define	DST_CAN		6	/* Canada */

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
struct bintime {
	time_t	sec;
	uint64_t frac;
};

static __inline void
bintime_addx(struct bintime *_bt, uint64_t _x)
{
	uint64_t _u;

	_u = _bt->frac;
	_bt->frac += _x;
	if (_u > _bt->frac)
		_bt->sec++;
}

static __inline void
bintime_add(struct bintime *_bt, const struct bintime *_bt2)
{
	uint64_t _u;

	_u = _bt->frac;
	_bt->frac += _bt2->frac;
	if (_u > _bt->frac)
		_bt->sec++;
	_bt->sec += _bt2->sec;
}

static __inline void
bintime_sub(struct bintime *_bt, const struct bintime *_bt2)
{
	uint64_t _u;

	_u = _bt->frac;
	_bt->frac -= _bt2->frac;
	if (_u < _bt->frac)
		_bt->sec--;
	_bt->sec -= _bt2->sec;
}

static __inline void
bintime_mul(struct bintime *_bt, u_int _x)
{
	uint64_t _p1, _p2;

	_p1 = (_bt->frac & 0xffffffffull) * _x;
	_p2 = (_bt->frac >> 32) * _x + (_p1 >> 32);
	_bt->sec *= _x;
	_bt->sec += (_p2 >> 32);
	_bt->frac = (_p2 << 32) | (_p1 & 0xffffffffull);
}

static __inline void
bintime_shift(struct bintime *_bt, int _exp)
{

	if (_exp > 0) {
		_bt->sec <<= _exp;
		_bt->sec |= _bt->frac >> (64 - _exp);
		_bt->frac <<= _exp;
	} else if (_exp < 0) {
		_bt->frac >>= -_exp;
		_bt->frac |= (uint64_t)_bt->sec << (64 + _exp);
		_bt->sec >>= -_exp;
	}
}

#define	bintime_clear(a)	((a)->sec = (a)->frac = 0)
#define	bintime_isset(a)	((a)->sec || (a)->frac)
#define	bintime_cmp(a, b, cmp)						\
	(((a)->sec == (b)->sec) ?					\
	    ((a)->frac cmp (b)->frac) :					\
	    ((a)->sec cmp (b)->sec))

#define	SBT_1S	((sbintime_t)1 << 32)
#define	SBT_1M	(SBT_1S * 60)
#define	SBT_1MS	(SBT_1S / 1000)
#define	SBT_1US	(SBT_1S / 1000000)
#define	SBT_1NS	(SBT_1S / 1000000000) /* beware rounding, see nstosbt() */
#define	SBT_MAX	0x7fffffffffffffffLL

static __inline int
sbintime_getsec(sbintime_t _sbt)
{

	return (_sbt >> 32);
}

static __inline sbintime_t
bttosbt(const struct bintime _bt)
{

	return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
}

static __inline struct bintime
sbttobt(sbintime_t _sbt)
{
	struct bintime _bt;

	_bt.sec = _sbt >> 32;
	_bt.frac = _sbt << 32;
	return (_bt);
}

/*
 * Decimal<->sbt conversions.  Multiplying or dividing by SBT_1NS results in
 * large roundoff errors which sbttons() and nstosbt() avoid.  Millisecond and
 * microsecond functions are also provided for completeness.
 *
 * These functions return the smallest sbt larger or equal to the
 * number of seconds requested so that sbttoX(Xtosbt(y)) == y.  Unlike
 * top of second computations below, which require that we tick at the
 * top of second, these need to be rounded up so we do whatever for at
 * least as long as requested.
 *
 * The naive computation we'd do is this
 *	((unit * 2^64 / SIFACTOR) + 2^32-1) >> 32
 * However, that overflows. Instead, we compute
 *	((unit * 2^63 / SIFACTOR) + 2^31-1) >> 32
 * and use pre-computed constants that are the ceil of the 2^63 / SIFACTOR
 * term to ensure we are using exactly the right constant. We use the lesser
 * evil of ull rather than a uint64_t cast to ensure we have well defined
 * right shift semantics. With these changes, we get all the ns, us and ms
 * conversions back and forth right.
 * Note: This file is used for both kernel and userland includes, so we can't
 * rely on KASSERT being defined, nor can we pollute the namespace by including
 * assert.h.
 */
static __inline int64_t
sbttons(sbintime_t _sbt)
{
	uint64_t ns;

#ifdef KASSERT
	KASSERT(_sbt >= 0, ("Negative values illegal for sbttons: %jx", _sbt));
#endif
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
	ns = _sbt;
	if (ns >= SBT_1S)
		ns = (ns >> 32) * 1000000000;
	else
		ns = 0;

	return (ns + (1000000000 * (_sbt & 0xffffffffu) >> 32));
}

static __inline sbintime_t
nstosbt(int64_t _ns)
{
	sbintime_t sb = 0;

#ifdef KASSERT
	KASSERT(_ns >= 0, ("Negative values illegal for nstosbt: %jd", _ns));
#endif
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
	if (_ns >= SBT_1S) {
		sb = (_ns / 1000000000) * SBT_1S;
		_ns = _ns % 1000000000;
	}
	/* 9223372037 = ceil(2^63 / 1000000000) */
	sb += ((_ns * 9223372037ull) + 0x7fffffff) >> 31;
	return (sb);
}

static __inline int64_t
sbttous(sbintime_t _sbt)
{

	return ((1000000 * _sbt) >> 32);
}

static __inline sbintime_t
ustosbt(int64_t _us)
{
	sbintime_t sb = 0;

#ifdef KASSERT
	KASSERT(_us >= 0, ("Negative values illegal for ustosbt: %jd", _us));
#endif
# 234 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
	if (_us >= SBT_1S) {
		sb = (_us / 1000000) * SBT_1S;
		_us = _us % 1000000;
	}
	/* 9223372036855 = ceil(2^63 / 1000000) */
	sb += ((_us * 9223372036855ull) + 0x7fffffff) >> 31;
	return (sb);
}

static __inline int64_t
sbttoms(sbintime_t _sbt)
{

	return ((1000 * _sbt) >> 32);
}

static __inline sbintime_t
mstosbt(int64_t _ms)
{
	sbintime_t sb = 0;

#ifdef KASSERT
	KASSERT(_ms >= 0, ("Negative values illegal for mstosbt: %jd", _ms));
#endif
# 258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
	if (_ms >= SBT_1S) {
		sb = (_ms / 1000) * SBT_1S;
		_ms = _ms % 1000;
	}
	/* 9223372036854776 = ceil(2^63 / 1000) */
	sb += ((_ms * 9223372036854776ull) + 0x7fffffff) >> 31;
	return (sb);
}

/*-
 * Background information:
 *
 * When converting between timestamps on parallel timescales of differing
 * resolutions it is historical and scientific practice to round down rather
 * than doing 4/5 rounding.
 *
 *   The date changes at midnight, not at noon.
 *
 *   Even at 15:59:59.999999999 it's not four'o'clock.
 *
 *   time_second ticks after N.999999999 not after N.4999999999
 */

static __inline void
bintime2timespec(const struct bintime *_bt, struct timespec *_ts)
{

	_ts->tv_sec = _bt->sec;
	_ts->tv_nsec = ((uint64_t)1000000000 *
	    (uint32_t)(_bt->frac >> 32)) >> 32;
}

static __inline uint64_t
bintime2ns(const struct bintime *_bt)
{
	uint64_t ret;

	ret = (uint64_t)(_bt->sec) * (uint64_t)1000000000;
	ret += (((uint64_t)1000000000 *
		 (uint32_t)(_bt->frac >> 32)) >> 32);
	return (ret);
}

static __inline void
timespec2bintime(const struct timespec *_ts, struct bintime *_bt)
{

	_bt->sec = _ts->tv_sec;
	/* 18446744073 = int(2^64 / 1000000000) */
	_bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL;
}

static __inline void
bintime2timeval(const struct bintime *_bt, struct timeval *_tv)
{

	_tv->tv_sec = _bt->sec;
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;
}

static __inline void
timeval2bintime(const struct timeval *_tv, struct bintime *_bt)
{

	_bt->sec = _tv->tv_sec;
	/* 18446744073709 = int(2^64 / 1000000) */
	_bt->frac = _tv->tv_usec * (uint64_t)18446744073709LL;
}

static __inline struct timespec
sbttots(sbintime_t _sbt)
{
	struct timespec _ts;

	_ts.tv_sec = _sbt >> 32;
	_ts.tv_nsec = sbttons((uint32_t)_sbt);
	return (_ts);
}

static __inline sbintime_t
tstosbt(struct timespec _ts)
{

	return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec));
}

static __inline struct timeval
sbttotv(sbintime_t _sbt)
{
	struct timeval _tv;

	_tv.tv_sec = _sbt >> 32;
	_tv.tv_usec = sbttous((uint32_t)_sbt);
	return (_tv);
}

static __inline sbintime_t
tvtosbt(struct timeval _tv)
{

	return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec));
}
#endif /* __BSD_VISIBLE */
# 361 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#ifdef _KERNEL
/*
 * Simple macros to convert ticks to milliseconds
 * or microseconds and vice-versa. The answer
 * will always be at least 1. Note the return
 * value is a uint32_t however we step up the
 * operations to 64 bit to avoid any overflow/underflow
 * problems.
 */
#define TICKS_2_MSEC(t) max(1, (uint32_t)(hz == 1000) ? \
	  (t) : (((uint64_t)(t) * (uint64_t)1000)/(uint64_t)hz))
#define TICKS_2_USEC(t) max(1, (uint32_t)(hz == 1000) ? \
	  ((t) * 1000) : (((uint64_t)(t) * (uint64_t)1000000)/(uint64_t)hz))
#define MSEC_2_TICKS(m) max(1, (uint32_t)((hz == 1000) ? \
	  (m) : ((uint64_t)(m) * (uint64_t)hz)/(uint64_t)1000))
#define USEC_2_TICKS(u) max(1, (uint32_t)((hz == 1000) ? \
	 ((u) / 1000) : ((uint64_t)(u) * (uint64_t)hz)/(uint64_t)1000000))

#endif
# 381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
/* Operations on timespecs */
#define	timespecclear(tvp)	((tvp)->tv_sec = (tvp)->tv_nsec = 0)
#define	timespecisset(tvp)	((tvp)->tv_sec || (tvp)->tv_nsec)
#define	timespeccmp(tvp, uvp, cmp)					\
	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
	    ((tvp)->tv_nsec cmp (uvp)->tv_nsec) :			\
	    ((tvp)->tv_sec cmp (uvp)->tv_sec))

#define	timespecadd(tsp, usp, vsp)					\
	do {								\
		(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec;		\
		(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec;	\
		if ((vsp)->tv_nsec >= 1000000000L) {			\
			(vsp)->tv_sec++;				\
			(vsp)->tv_nsec -= 1000000000L;			\
		}							\
	} while (0)
#define	timespecsub(tsp, usp, vsp)					\
	do {								\
		(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;		\
		(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;	\
		if ((vsp)->tv_nsec < 0) {				\
			(vsp)->tv_sec--;				\
			(vsp)->tv_nsec += 1000000000L;			\
		}							\
	} while (0)

#ifdef _KERNEL

/* Operations on timevals. */

#define	timevalclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
#define	timevalisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
#define	timevalcmp(tvp, uvp, cmp)					\
	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
	    ((tvp)->tv_usec cmp (uvp)->tv_usec) :			\
	    ((tvp)->tv_sec cmp (uvp)->tv_sec))

/* timevaladd and timevalsub are not inlined */

#endif /* _KERNEL */
# 422 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#ifndef _KERNEL			/* NetBSD/OpenBSD compatible interfaces */

#define	timerclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
#define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
#define	timercmp(tvp, uvp, cmp)					\
	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
	    ((tvp)->tv_usec cmp (uvp)->tv_usec) :			\
	    ((tvp)->tv_sec cmp (uvp)->tv_sec))
#define	timeradd(tvp, uvp, vvp)						\
	do {								\
		(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;		\
		(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec;	\
		if ((vvp)->tv_usec >= 1000000) {			\
			(vvp)->tv_sec++;				\
			(vvp)->tv_usec -= 1000000;			\
		}							\
	} while (0)
#define	timersub(tvp, uvp, vvp)						\
	do {								\
		(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;		\
		(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;	\
		if ((vvp)->tv_usec < 0) {				\
			(vvp)->tv_sec--;				\
			(vvp)->tv_usec += 1000000;			\
		}							\
	} while (0)
#endif
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

/*
 * Names of the interval timers, and structure
 * defining a timer setting.
 */
#define	ITIMER_REAL	0
#define	ITIMER_VIRTUAL	1
#define	ITIMER_PROF	2

struct itimerval {
	struct	timeval it_interval;	/* timer interval */
	struct	timeval it_value;	/* current value */
};

/*
 * Getkerninfo clock information structure
 */
struct clockinfo {
	int	hz;		/* clock frequency */
	int	tick;		/* micro-seconds per hz tick */
	int	spare;
	int	stathz;		/* statistics clock frequency */
	int	profhz;		/* profiling clock frequency */
};

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 476 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#define	CPUCLOCK_WHICH_PID	0
#define	CPUCLOCK_WHICH_TID	1
#endif
# 479 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(_KERNEL) || defined(_STANDALONE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 481 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

/*
 * Kernel to clock driver interface.
 */
void	inittodr(time_t base);
void	resettodr(void);

extern volatile time_t	time_second;
extern volatile time_t	time_uptime;
extern struct bintime tc_tick_bt;
extern sbintime_t tc_tick_sbt;
extern struct bintime tick_bt;
extern sbintime_t tick_sbt;
extern int tc_precexp;
extern int tc_timepercentage;
extern struct bintime bt_timethreshold;
extern struct bintime bt_tickthreshold;
extern sbintime_t sbt_timethreshold;
extern sbintime_t sbt_tickthreshold;

extern volatile int rtc_generation;

/*
 * Functions for looking at our clock: [get]{bin,nano,micro}[up]time()
 *
 * Functions without the "get" prefix returns the best timestamp
 * we can produce in the given format.
 *
 * "bin"   == struct bintime  == seconds + 64 bit fraction of seconds.
 * "nano"  == struct timespec == seconds + nanoseconds.
 * "micro" == struct timeval  == seconds + microseconds.
 *
 * Functions containing "up" returns time relative to boot and
 * should be used for calculating time intervals.
 *
 * Functions without "up" returns UTC time.
 *
 * Functions with the "get" prefix returns a less precise result
 * much faster than the functions without "get" prefix and should
 * be used where a precision of 1/hz seconds is acceptable or where
 * performance is priority. (NB: "precision", _not_ "resolution" !)
 */

void	binuptime(struct bintime *bt);
void	nanouptime(struct timespec *tsp);
void	microuptime(struct timeval *tvp);

static __inline sbintime_t
sbinuptime(void)
{
	struct bintime _bt;

	binuptime(&_bt);
	return (bttosbt(_bt));
}

void	bintime(struct bintime *bt);
void	nanotime(struct timespec *tsp);
void	microtime(struct timeval *tvp);

void	getbinuptime(struct bintime *bt);
void	getnanouptime(struct timespec *tsp);
void	getmicrouptime(struct timeval *tvp);

static __inline sbintime_t
getsbinuptime(void)
{
	struct bintime _bt;

	getbinuptime(&_bt);
	return (bttosbt(_bt));
}

void	getbintime(struct bintime *bt);
void	getnanotime(struct timespec *tsp);
void	getmicrotime(struct timeval *tvp);

void	getboottime(struct timeval *boottime);
void	getboottimebin(struct bintime *boottimebin);

/* Other functions */
int	itimerdecr(struct itimerval *itp, int usec);
int	itimerfix(struct timeval *tv);
int	ppsratecheck(struct timeval *, int *, int);
int	ratecheck(struct timeval *, const struct timeval *);
void	timevaladd(struct timeval *t1, const struct timeval *t2);
void	timevalsub(struct timeval *t1, const struct timeval *t2);
int	tvtohz(struct timeval *tv);

#define	TC_DEFAULTPERC		5

#define	BT2FREQ(bt)                                                     \
	(((uint64_t)0x8000000000000000 + ((bt)->frac >> 2)) /           \
	    ((bt)->frac >> 1))

#define	SBT2FREQ(sbt)	((SBT_1S + ((sbt) >> 1)) / (sbt))

#define	FREQ2BT(freq, bt)                                               \
{									\
	(bt)->sec = 0;                                                  \
	(bt)->frac = ((uint64_t)0x8000000000000000  / (freq)) << 1;     \
}

#define	TIMESEL(sbt, sbt2)						\
	(((sbt2) >= sbt_timethreshold) ?				\
	    ((*(sbt) = getsbinuptime()), 1) : ((*(sbt) = sbinuptime()), 0))

#else /* !_KERNEL && !_STANDALONE */
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <time.h>
#endif /* expanded by -frewrite-includes */
# 589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 590 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/select.h>
#endif /* expanded by -frewrite-includes */
# 592 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 593 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

__BEGIN_DECLS
int	setitimer(int, const struct itimerval *, struct itimerval *);
int	utimes(const char *, const struct timeval *);

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
int	adjtime(const struct timeval *, struct timeval *);
int	clock_getcpuclockid2(id_t, int, clockid_t *);
int	futimes(int, const struct timeval *);
int	futimesat(int, const char *, const struct timeval [2]);
int	lutimes(const char *, const struct timeval *);
int	settimeofday(const struct timeval *, const struct timezone *);
#endif
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 608 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
int	getitimer(int, struct itimerval *);
int	gettimeofday(struct timeval *, struct timezone *);
#endif
# 611 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

__END_DECLS

#endif /* !_KERNEL */
# 615 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4

#endif /* !_SYS_TIME_H_ */
# 617 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/time.h" 3 4
# 102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 2 3 4
#endif
# 103 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifdef _KERNEL
struct ostat {
	__uint16_t st_dev;		/* inode's device */
	__uint32_t st_ino;		/* inode's number */
	mode_t	  st_mode;		/* inode protection mode */
	__uint16_t st_nlink;		/* number of hard links */
	__uint16_t st_uid;		/* user ID of the file's owner */
	__uint16_t st_gid;		/* group ID of the file's group */
	__uint16_t st_rdev;		/* device type */
	__int32_t st_size;		/* file size, in bytes */
	struct	timespec st_atim;	/* time of last access */
	struct	timespec st_mtim;	/* time of last data modification */
	struct	timespec st_ctim;	/* time of last file status change */
	__int32_t st_blksize;		/* optimal blocksize for I/O */
	__int32_t st_blocks;		/* blocks allocated for file */
	fflags_t  st_flags;		/* user defined flags for file */
	__uint32_t st_gen;		/* file generation number */
};
#endif
# 123 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(_WANT_FREEBSD11_STAT) || defined(_KERNEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 125 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
struct freebsd11_stat {
	__uint32_t st_dev;		/* inode's device */
	__uint32_t st_ino;		/* inode's number */
	mode_t	  st_mode;		/* inode protection mode */
	__uint16_t st_nlink;		/* number of hard links */
	uid_t	  st_uid;		/* user ID of the file's owner */
	gid_t	  st_gid;		/* group ID of the file's group */
	__uint32_t st_rdev;		/* device type */
	struct	timespec st_atim;	/* time of last access */
	struct	timespec st_mtim;	/* time of last data modification */
	struct	timespec st_ctim;	/* time of last file status change */
	off_t	  st_size;		/* file size, in bytes */
	blkcnt_t st_blocks;		/* blocks allocated for file */
	blksize_t st_blksize;		/* optimal blocksize for I/O */
	fflags_t  st_flags;		/* user defined flags for file */
	__uint32_t st_gen;		/* file generation number */
	__int32_t st_lspare;
	struct timespec st_birthtim;	/* time of file creation */
	/*
	 * Explicitly pad st_birthtim to 16 bytes so that the size of
	 * struct stat is backwards compatible.  We use bitfields instead
	 * of an array of chars so that this doesn't require a C99 compiler
	 * to compile if the size of the padding is 0.  We use 2 bitfields
	 * to cover up to 64 bits on 32-bit machines.  We assume that
	 * CHAR_BIT is 8...
	 */
	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
};
#endif /* _WANT_FREEBSD11_STAT || _KERNEL */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if defined(__i386__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	__STAT_TIME_T_EXT	1
#endif
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

struct stat {
	dev_t     st_dev;		/* inode's device */
	ino_t	  st_ino;		/* inode's number */
	nlink_t	  st_nlink;		/* number of hard links */
	mode_t	  st_mode;		/* inode protection mode */
	__int16_t st_padding0;
	uid_t	  st_uid;		/* user ID of the file's owner */
	gid_t	  st_gid;		/* group ID of the file's group */
	__int32_t st_padding1;
	dev_t     st_rdev;		/* device type */
#ifdef	__STAT_TIME_T_EXT
	__int32_t st_atim_ext;
#endif
# 173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
	struct	timespec st_atim;	/* time of last access */
#ifdef	__STAT_TIME_T_EXT
	__int32_t st_mtim_ext;
#endif
# 177 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
	struct	timespec st_mtim;	/* time of last data modification */
#ifdef	__STAT_TIME_T_EXT
	__int32_t st_ctim_ext;
#endif
# 181 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
	struct	timespec st_ctim;	/* time of last file status change */
#ifdef	__STAT_TIME_T_EXT
	__int32_t st_btim_ext;
#endif
# 185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
	struct	timespec st_birthtim;	/* time of file creation */
	off_t	  st_size;		/* file size, in bytes */
	blkcnt_t st_blocks;		/* blocks allocated for file */
	blksize_t st_blksize;		/* optimal blocksize for I/O */
	fflags_t  st_flags;		/* user defined flags for file */
	__uint64_t st_gen;		/* file generation number */
	__uint64_t st_spare[10];
};

#ifdef _KERNEL
struct nstat {
	__uint32_t st_dev;		/* inode's device */
	__uint32_t st_ino;		/* inode's number */
	__uint32_t st_mode;		/* inode protection mode */
	__uint32_t st_nlink;		/* number of hard links */
	uid_t	  st_uid;		/* user ID of the file's owner */
	gid_t	  st_gid;		/* group ID of the file's group */
	__uint32_t st_rdev;		/* device type */
	struct	timespec st_atim;	/* time of last access */
	struct	timespec st_mtim;	/* time of last data modification */
	struct	timespec st_ctim;	/* time of last file status change */
	off_t	  st_size;		/* file size, in bytes */
	blkcnt_t st_blocks;		/* blocks allocated for file */
	blksize_t st_blksize;		/* optimal blocksize for I/O */
	fflags_t  st_flags;		/* user defined flags for file */
	__uint32_t st_gen;		/* file generation number */
	struct timespec st_birthtim;	/* time of file creation */
	/*
	 * See comment in the definition of struct freebsd11_stat
	 * above about the following padding.
	 */
	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
	unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
};
#endif
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _KERNEL
#define	st_atime		st_atim.tv_sec
#define	st_mtime		st_mtim.tv_sec
#define	st_ctime		st_ctim.tv_sec
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	st_birthtime		st_birthtim.tv_sec
#define	st_atimensec		st_atim.tv_nsec
#define	st_mtimensec		st_mtim.tv_nsec
#define	st_ctimensec		st_ctim.tv_nsec
#define	st_birthtimensec	st_birthtim.tv_nsec
#endif
# 232 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

/* For compatibility. */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 235 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	st_atimespec		st_atim
#define	st_mtimespec		st_mtim
#define	st_ctimespec		st_ctim
#define	st_birthtimespec	st_birthtim
#endif
# 240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#endif /* !_KERNEL */
# 241 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#define	S_ISUID	0004000			/* set user id on execution */
#define	S_ISGID	0002000			/* set group id on execution */
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_ISTXT	0001000			/* sticky bit */
#endif
# 247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#define	S_IRWXU	0000700			/* RWX mask for owner */
#define	S_IRUSR	0000400			/* R for owner */
#define	S_IWUSR	0000200			/* W for owner */
#define	S_IXUSR	0000100			/* X for owner */

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_IREAD		S_IRUSR
#define	S_IWRITE	S_IWUSR
#define	S_IEXEC		S_IXUSR
#endif
# 258 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#define	S_IRWXG	0000070			/* RWX mask for group */
#define	S_IRGRP	0000040			/* R for group */
#define	S_IWGRP	0000020			/* W for group */
#define	S_IXGRP	0000010			/* X for group */

#define	S_IRWXO	0000007			/* RWX mask for other */
#define	S_IROTH	0000004			/* R for other */
#define	S_IWOTH	0000002			/* W for other */
#define	S_IXOTH	0000001			/* X for other */

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 270 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_IFMT	 0170000		/* type of file mask */
#define	S_IFIFO	 0010000		/* named pipe (fifo) */
#define	S_IFCHR	 0020000		/* character special */
#define	S_IFDIR	 0040000		/* directory */
#define	S_IFBLK	 0060000		/* block special */
#define	S_IFREG	 0100000		/* regular */
#define	S_IFLNK	 0120000		/* symbolic link */
#define	S_IFSOCK 0140000		/* socket */
#define	S_ISVTX	 0001000		/* save swapped text even after use */
#endif
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_IFWHT  0160000		/* whiteout */
#endif
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#define	S_ISDIR(m)	(((m) & 0170000) == 0040000)	/* directory */
#define	S_ISCHR(m)	(((m) & 0170000) == 0020000)	/* char special */
#define	S_ISBLK(m)	(((m) & 0170000) == 0060000)	/* block special */
#define	S_ISREG(m)	(((m) & 0170000) == 0100000)	/* regular file */
#define	S_ISFIFO(m)	(((m) & 0170000) == 0010000)	/* fifo or socket */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_ISLNK(m)	(((m) & 0170000) == 0120000)	/* symbolic link */
#define	S_ISSOCK(m)	(((m) & 0170000) == 0140000)	/* socket */
#endif
# 293 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	S_ISWHT(m)	(((m) & 0170000) == 0160000)	/* whiteout */
#endif
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	ACCESSPERMS	(S_IRWXU|S_IRWXG|S_IRWXO)	/* 0777 */
							/* 7777 */
#define	ALLPERMS	(S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
							/* 0666 */
#define	DEFFILEMODE	(S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)

#define S_BLKSIZE	512		/* block size used in the stat struct */

/*
 * Definitions of flags stored in file flags word.
 *
 * Super-user and owner changeable flags.
 */
#define	UF_SETTABLE	0x0000ffff	/* mask of owner changeable flags */
#define	UF_NODUMP	0x00000001	/* do not dump file */
#define	UF_IMMUTABLE	0x00000002	/* file may not be changed */
#define	UF_APPEND	0x00000004	/* writes to file may only append */
#define	UF_OPAQUE	0x00000008	/* directory is opaque wrt. union */
#define	UF_NOUNLINK	0x00000010	/* file may not be removed or renamed */
/*
 * These two bits are defined in MacOS X.  They are not currently used in
 * FreeBSD.
 */
#if 0 /* disabled by -frewrite-includes */
#if 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 322 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	UF_COMPRESSED	0x00000020	/* file is compressed */
#define	UF_TRACKED	0x00000040	/* renames and deletes are tracked */
#endif
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#define	UF_SYSTEM	0x00000080	/* Windows system file bit */
#define	UF_SPARSE	0x00000100	/* sparse file */
#define	UF_OFFLINE	0x00000200	/* file is offline */
#define	UF_REPARSE	0x00000400	/* Windows reparse point file bit */
#define	UF_ARCHIVE	0x00000800	/* file needs to be archived */
#define	UF_READONLY	0x00001000	/* Windows readonly file bit */
/* This is the same as the MacOS X definition of UF_HIDDEN. */
#define	UF_HIDDEN	0x00008000	/* file is hidden */

/*
 * Super-user changeable flags.
 */
#define	SF_SETTABLE	0xffff0000	/* mask of superuser changeable flags */
#define	SF_ARCHIVED	0x00010000	/* file is archived */
#define	SF_IMMUTABLE	0x00020000	/* file may not be changed */
#define	SF_APPEND	0x00040000	/* writes to file may only append */
#define	SF_NOUNLINK	0x00100000	/* file may not be removed or renamed */
#define	SF_SNAPSHOT	0x00200000	/* snapshot inode */

#ifdef _KERNEL
/*
 * Shorthand abbreviations of above.
 */
#define	OPAQUE		(UF_OPAQUE)
#define	APPEND		(UF_APPEND | SF_APPEND)
#define	IMMUTABLE	(UF_IMMUTABLE | SF_IMMUTABLE)
#define	NOUNLINK	(UF_NOUNLINK | SF_NOUNLINK)
#endif
# 354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#endif /* __BSD_VISIBLE */
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 358 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#define	UTIME_NOW	-1
#define	UTIME_OMIT	-2
#endif
# 361 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#ifndef _KERNEL
__BEGIN_DECLS
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 365 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	chflags(const char *, unsigned long);
int	chflagsat(int, const char *, unsigned long, int);
#endif
# 368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	chmod(const char *, mode_t);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 370 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	fchflags(int, unsigned long);
#endif
# 372 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 373 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	fchmod(int, mode_t);
#endif
# 375 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	fchmodat(int, const char *, mode_t, int);
int	futimens(int fd, const struct timespec times[2]);
int	utimensat(int fd, const char *path, const struct timespec times[2],
		int flag);
#endif
# 381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	fstat(int, struct stat *);
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 383 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	lchflags(const char *, unsigned long);
int	lchmod(const char *, mode_t);
#endif
# 386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	lstat(const char * __restrict, struct stat * __restrict);
#endif
# 389 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	mkdir(const char *, mode_t);
int	mkfifo(const char *, mode_t);
#if 0 /* disabled by -frewrite-includes */
#if !defined(_MKNOD_DECLARED) && __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 392 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	mknod(const char *, mode_t, dev_t);
#define	_MKNOD_DECLARED
#endif
# 395 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	stat(const char * __restrict, struct stat * __restrict);
mode_t	umask(mode_t);
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	fstatat(int, const char *, struct stat *, int);
int	mkdirat(int, const char *, mode_t);
int	mkfifoat(int, const char *, mode_t);
#endif
# 402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE >= 700
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 403 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
int	mknodat(int, const char *, mode_t, dev_t);
#endif
# 405 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
__END_DECLS
#endif /* !_KERNEL */
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4

#endif /* !_SYS_STAT_H_ */
# 409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/stat.h" 3 4
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#endif  // !_WIN32_WCE
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if defined __APPLE__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
# include <AvailabilityMacros.h>
#endif /* expanded by -frewrite-includes */
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
# include <TargetConditionals.h>
#endif /* expanded by -frewrite-includes */
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Brings in the definition of HAS_GLOBAL_STRING.  This must be done
// BEFORE we test HAS_GLOBAL_STRING.
#if 0 /* expanded by -frewrite-includes */
#include <string>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#include <iostream>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#include <sstream>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 1 3
// -*- C++ -*-
//===--------------------------- sstream ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_SSTREAM
#define _LIBCPP_SSTREAM

/*
    sstream synopsis

template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
class basic_stringbuf
    : public basic_streambuf<charT, traits>
{
public:
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef Allocator                      allocator_type;

    // 27.8.1.1 [stringbuf.cons], constructors:
    explicit basic_stringbuf(ios_base::openmode which = ios_base::in | ios_base::out); // before C++20
    basic_stringbuf() : basic_stringbuf(ios_base::in | ios_base::out) {}               // C++20
    explicit basic_stringbuf(ios_base::openmode which);                                // C++20
    explicit basic_stringbuf(const basic_string<char_type, traits_type, allocator_type>& str,
                             ios_base::openmode which = ios_base::in | ios_base::out);
    basic_stringbuf(basic_stringbuf&& rhs);

    // 27.8.1.2 Assign and swap:
    basic_stringbuf& operator=(basic_stringbuf&& rhs);
    void swap(basic_stringbuf& rhs);

    // 27.8.1.3 Get and set:
    basic_string<char_type, traits_type, allocator_type> str() const;
    void str(const basic_string<char_type, traits_type, allocator_type>& s);

protected:
    // 27.8.1.4 Overridden virtual functions:
    virtual int_type underflow();
    virtual int_type pbackfail(int_type c = traits_type::eof());
    virtual int_type overflow (int_type c = traits_type::eof());
    virtual basic_streambuf<char_type, traits_type>* setbuf(char_type*, streamsize);
    virtual pos_type seekoff(off_type off, ios_base::seekdir way,
                             ios_base::openmode which = ios_base::in | ios_base::out);
    virtual pos_type seekpos(pos_type sp,
                             ios_base::openmode which = ios_base::in | ios_base::out);
};

template <class charT, class traits, class Allocator>
  void swap(basic_stringbuf<charT, traits, Allocator>& x,
            basic_stringbuf<charT, traits, Allocator>& y);

typedef basic_stringbuf<char>    stringbuf;
typedef basic_stringbuf<wchar_t> wstringbuf;

template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
class basic_istringstream
    : public basic_istream<charT, traits>
{
public:
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef Allocator                      allocator_type;

    // 27.8.2.1 Constructors:
    explicit basic_istringstream(ios_base::openmode which = ios_base::in); // before C++20
    basic_istringstream() : basic_istringstream(ios_base::in) {}           // C++20
    explicit basic_istringstream(ios_base::openmode which);                // C++20

    explicit basic_istringstream(const basic_string<char_type, traits_type,allocator_type>& str,
                                 ios_base::openmode which = ios_base::in);
    basic_istringstream(basic_istringstream&& rhs);

    // 27.8.2.2 Assign and swap:
    basic_istringstream& operator=(basic_istringstream&& rhs);
    void swap(basic_istringstream& rhs);

    // 27.8.2.3 Members:
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const;
    basic_string<char_type, traits_type, allocator_type> str() const;
    void str(const basic_string<char_type, traits_type, allocator_type>& s);
};

template <class charT, class traits, class Allocator>
  void swap(basic_istringstream<charT, traits, Allocator>& x,
            basic_istringstream<charT, traits, Allocator>& y);

typedef basic_istringstream<char>    istringstream;
typedef basic_istringstream<wchar_t> wistringstream;

template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
class basic_ostringstream
    : public basic_ostream<charT, traits>
{
public:
    // types:
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef Allocator                      allocator_type;

    // 27.8.3.1 Constructors/destructor:
    explicit basic_ostringstream(ios_base::openmode which = ios_base::out); // before C++20
    basic_ostringstream() : basic_ostringstream(ios_base::out) {}           // C++20
    explicit basic_ostringstream(ios_base::openmode which);                 // C++20

    explicit basic_ostringstream(const basic_string<char_type, traits_type, allocator_type>& str,
                                 ios_base::openmode which = ios_base::out);
    basic_ostringstream(basic_ostringstream&& rhs);

    // 27.8.3.2 Assign/swap:
    basic_ostringstream& operator=(basic_ostringstream&& rhs);
    void swap(basic_ostringstream& rhs);

    // 27.8.3.3 Members:
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const;
    basic_string<char_type, traits_type, allocator_type> str() const;
    void str(const basic_string<char_type, traits_type, allocator_type>& s);
};

template <class charT, class traits, class Allocator>
  void swap(basic_ostringstream<charT, traits, Allocator>& x,
            basic_ostringstream<charT, traits, Allocator>& y);

typedef basic_ostringstream<char>    ostringstream;
typedef basic_ostringstream<wchar_t> wostringstream;

template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
class basic_stringstream
    : public basic_iostream<charT, traits>
{
public:
    // types:
    typedef charT                          char_type;
    typedef traits                         traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef Allocator                      allocator_type;

    // constructors/destructor
    explicit basic_stringstream(ios_base::openmode which = ios_base::out | ios_base::in); // before C++20
    basic_stringstream() : basic_stringstream(ios_base::out | ios_base::in) {}            // C++20
    explicit basic_stringstream(ios_base::openmode which);                                // C++20

    explicit basic_stringstream(const basic_string<char_type, traits_type, allocator_type>& str,
                                ios_base::openmode which = ios_base::out|ios_base::in);
    basic_stringstream(basic_stringstream&& rhs);

    // 27.8.5.1 Assign/swap:
    basic_stringstream& operator=(basic_stringstream&& rhs);
    void swap(basic_stringstream& rhs);

    // Members:
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const;
    basic_string<char_type, traits_type, allocator_type> str() const;
    void str(const basic_string<char_type, traits_type, allocator_type>& str);
};

template <class charT, class traits, class Allocator>
  void swap(basic_stringstream<charT, traits, Allocator>& x,
            basic_stringstream<charT, traits, Allocator>& y);

typedef basic_stringstream<char>    stringstream;
typedef basic_stringstream<wchar_t> wstringstream;

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 183 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
#if 0 /* expanded by -frewrite-includes */
#include <istream>
#endif /* expanded by -frewrite-includes */
# 184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
#if 0 /* expanded by -frewrite-includes */
#include <ostream>
#endif /* expanded by -frewrite-includes */
# 185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
#if 0 /* expanded by -frewrite-includes */
#include <string>
#endif /* expanded by -frewrite-includes */
# 186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 190 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
#endif
# 191 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 193 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

// basic_stringbuf

template <class _CharT, class _Traits, class _Allocator>
class _LIBCPP_TEMPLATE_VIS basic_stringbuf
    : public basic_streambuf<_CharT, _Traits>
{
public:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef _Allocator                     allocator_type;

    typedef basic_string<char_type, traits_type, allocator_type> string_type;

private:

    string_type __str_;
    mutable char_type* __hm_;
    ios_base::openmode __mode_;

public:
    // 30.8.2.1 [stringbuf.cons], constructors
    _LIBCPP_INLINE_VISIBILITY
    basic_stringbuf()
        : __hm_(nullptr), __mode_(ios_base::in | ios_base::out) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_stringbuf(ios_base::openmode __wch)
        : __hm_(nullptr), __mode_(__wch) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_stringbuf(const string_type& __s,
                             ios_base::openmode __wch = ios_base::in | ios_base::out)
        : __str_(__s.get_allocator()), __hm_(nullptr), __mode_(__wch)
    {
        str(__s);
    }

    basic_stringbuf(basic_stringbuf&& __rhs);

    // 27.8.1.2 Assign and swap:
    basic_stringbuf& operator=(basic_stringbuf&& __rhs);
    void swap(basic_stringbuf& __rhs);

    // 27.8.1.3 Get and set:
    string_type str() const;
    void str(const string_type& __s);

protected:
    // 27.8.1.4 Overridden virtual functions:
    virtual int_type underflow();
    virtual int_type pbackfail(int_type __c = traits_type::eof());
    virtual int_type overflow (int_type __c = traits_type::eof());
    virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
                             ios_base::openmode __wch = ios_base::in | ios_base::out);
    _LIBCPP_INLINE_VISIBILITY
    virtual pos_type seekpos(pos_type __sp,
                             ios_base::openmode __wch = ios_base::in | ios_base::out) {
        return seekoff(__sp, ios_base::beg, __wch);
    }
};

template <class _CharT, class _Traits, class _Allocator>
basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(basic_stringbuf&& __rhs)
    : __mode_(__rhs.__mode_)
{
    char_type* __p = const_cast<char_type*>(__rhs.__str_.data());
    ptrdiff_t __binp = -1;
    ptrdiff_t __ninp = -1;
    ptrdiff_t __einp = -1;
    if (__rhs.eback() != nullptr)
    {
        __binp = __rhs.eback() - __p;
        __ninp = __rhs.gptr() - __p;
        __einp = __rhs.egptr() - __p;
    }
    ptrdiff_t __bout = -1;
    ptrdiff_t __nout = -1;
    ptrdiff_t __eout = -1;
    if (__rhs.pbase() != nullptr)
    {
        __bout = __rhs.pbase() - __p;
        __nout = __rhs.pptr() - __p;
        __eout = __rhs.epptr() - __p;
    }
    ptrdiff_t __hm = __rhs.__hm_ == nullptr ? -1 : __rhs.__hm_ - __p;
    __str_ = _VSTD::move(__rhs.__str_);
    __p = const_cast<char_type*>(__str_.data());
    if (__binp != -1)
        this->setg(__p + __binp, __p + __ninp, __p + __einp);
    if (__bout != -1)
    {
        this->setp(__p + __bout, __p + __eout);
        this->__pbump(__nout);
    }
    __hm_ = __hm == -1 ? nullptr : __p + __hm;
    __p = const_cast<char_type*>(__rhs.__str_.data());
    __rhs.setg(__p, __p, __p);
    __rhs.setp(__p, __p);
    __rhs.__hm_ = __p;
    this->pubimbue(__rhs.getloc());
}

template <class _CharT, class _Traits, class _Allocator>
basic_stringbuf<_CharT, _Traits, _Allocator>&
basic_stringbuf<_CharT, _Traits, _Allocator>::operator=(basic_stringbuf&& __rhs)
{
    char_type* __p = const_cast<char_type*>(__rhs.__str_.data());
    ptrdiff_t __binp = -1;
    ptrdiff_t __ninp = -1;
    ptrdiff_t __einp = -1;
    if (__rhs.eback() != nullptr)
    {
        __binp = __rhs.eback() - __p;
        __ninp = __rhs.gptr() - __p;
        __einp = __rhs.egptr() - __p;
    }
    ptrdiff_t __bout = -1;
    ptrdiff_t __nout = -1;
    ptrdiff_t __eout = -1;
    if (__rhs.pbase() != nullptr)
    {
        __bout = __rhs.pbase() - __p;
        __nout = __rhs.pptr() - __p;
        __eout = __rhs.epptr() - __p;
    }
    ptrdiff_t __hm = __rhs.__hm_ == nullptr ? -1 : __rhs.__hm_ - __p;
    __str_ = _VSTD::move(__rhs.__str_);
    __p = const_cast<char_type*>(__str_.data());
    if (__binp != -1)
        this->setg(__p + __binp, __p + __ninp, __p + __einp);
    else
        this->setg(nullptr, nullptr, nullptr);
    if (__bout != -1)
    {
        this->setp(__p + __bout, __p + __eout);
        this->__pbump(__nout);
    }
    else
        this->setp(nullptr, nullptr);

    __hm_ = __hm == -1 ? nullptr : __p + __hm;
    __mode_ = __rhs.__mode_;
    __p = const_cast<char_type*>(__rhs.__str_.data());
    __rhs.setg(__p, __p, __p);
    __rhs.setp(__p, __p);
    __rhs.__hm_ = __p;
    this->pubimbue(__rhs.getloc());
    return *this;
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_stringbuf<_CharT, _Traits, _Allocator>::swap(basic_stringbuf& __rhs)
{
    char_type* __p = const_cast<char_type*>(__rhs.__str_.data());
    ptrdiff_t __rbinp = -1;
    ptrdiff_t __rninp = -1;
    ptrdiff_t __reinp = -1;
    if (__rhs.eback() != nullptr)
    {
        __rbinp = __rhs.eback() - __p;
        __rninp = __rhs.gptr() - __p;
        __reinp = __rhs.egptr() - __p;
    }
    ptrdiff_t __rbout = -1;
    ptrdiff_t __rnout = -1;
    ptrdiff_t __reout = -1;
    if (__rhs.pbase() != nullptr)
    {
        __rbout = __rhs.pbase() - __p;
        __rnout = __rhs.pptr() - __p;
        __reout = __rhs.epptr() - __p;
    }
    ptrdiff_t __rhm = __rhs.__hm_ == nullptr ? -1 : __rhs.__hm_ - __p;
    __p = const_cast<char_type*>(__str_.data());
    ptrdiff_t __lbinp = -1;
    ptrdiff_t __lninp = -1;
    ptrdiff_t __leinp = -1;
    if (this->eback() != nullptr)
    {
        __lbinp = this->eback() - __p;
        __lninp = this->gptr() - __p;
        __leinp = this->egptr() - __p;
    }
    ptrdiff_t __lbout = -1;
    ptrdiff_t __lnout = -1;
    ptrdiff_t __leout = -1;
    if (this->pbase() != nullptr)
    {
        __lbout = this->pbase() - __p;
        __lnout = this->pptr() - __p;
        __leout = this->epptr() - __p;
    }
    ptrdiff_t __lhm = __hm_ == nullptr ? -1 : __hm_ - __p;
    _VSTD::swap(__mode_, __rhs.__mode_);
    __str_.swap(__rhs.__str_);
    __p = const_cast<char_type*>(__str_.data());
    if (__rbinp != -1)
        this->setg(__p + __rbinp, __p + __rninp, __p + __reinp);
    else
        this->setg(nullptr, nullptr, nullptr);
    if (__rbout != -1)
    {
        this->setp(__p + __rbout, __p + __reout);
        this->__pbump(__rnout);
    }
    else
        this->setp(nullptr, nullptr);
    __hm_ = __rhm == -1 ? nullptr : __p + __rhm;
    __p = const_cast<char_type*>(__rhs.__str_.data());
    if (__lbinp != -1)
        __rhs.setg(__p + __lbinp, __p + __lninp, __p + __leinp);
    else
        __rhs.setg(nullptr, nullptr, nullptr);
    if (__lbout != -1)
    {
        __rhs.setp(__p + __lbout, __p + __leout);
        __rhs.__pbump(__lnout);
    }
    else
        __rhs.setp(nullptr, nullptr);
    __rhs.__hm_ = __lhm == -1 ? nullptr : __p + __lhm;
    locale __tl = __rhs.getloc();
    __rhs.pubimbue(this->getloc());
    this->pubimbue(__tl);
}

template <class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x,
     basic_stringbuf<_CharT, _Traits, _Allocator>& __y)
{
    __x.swap(__y);
}

template <class _CharT, class _Traits, class _Allocator>
basic_string<_CharT, _Traits, _Allocator>
basic_stringbuf<_CharT, _Traits, _Allocator>::str() const
{
    if (__mode_ & ios_base::out)
    {
        if (__hm_ < this->pptr())
            __hm_ = this->pptr();
        return string_type(this->pbase(), __hm_, __str_.get_allocator());
    }
    else if (__mode_ & ios_base::in)
        return string_type(this->eback(), this->egptr(), __str_.get_allocator());
    return string_type(__str_.get_allocator());
}

template <class _CharT, class _Traits, class _Allocator>
void
basic_stringbuf<_CharT, _Traits, _Allocator>::str(const string_type& __s)
{
    __str_ = __s;
    __hm_ = nullptr;
    if (__mode_ & ios_base::in)
    {
        __hm_ = const_cast<char_type*>(__str_.data()) + __str_.size();
        this->setg(const_cast<char_type*>(__str_.data()),
                   const_cast<char_type*>(__str_.data()),
                   __hm_);
    }
    if (__mode_ & ios_base::out)
    {
        typename string_type::size_type __sz = __str_.size();
        __hm_ = const_cast<char_type*>(__str_.data()) + __sz;
        __str_.resize(__str_.capacity());
        this->setp(const_cast<char_type*>(__str_.data()),
                   const_cast<char_type*>(__str_.data()) + __str_.size());
        if (__mode_ & (ios_base::app | ios_base::ate))
        {
            while (__sz > INT_MAX)
            {
                this->pbump(INT_MAX);
                __sz -= INT_MAX;
            }
            if (__sz > 0)
                this->pbump(__sz);
        }
    }
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
basic_stringbuf<_CharT, _Traits, _Allocator>::underflow()
{
    if (__hm_ < this->pptr())
        __hm_ = this->pptr();
    if (__mode_ & ios_base::in)
    {
        if (this->egptr() < __hm_)
            this->setg(this->eback(), this->gptr(), __hm_);
        if (this->gptr() < this->egptr())
            return traits_type::to_int_type(*this->gptr());
    }
    return traits_type::eof();
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
basic_stringbuf<_CharT, _Traits, _Allocator>::pbackfail(int_type __c)
{
    if (__hm_ < this->pptr())
        __hm_ = this->pptr();
    if (this->eback() < this->gptr())
    {
        if (traits_type::eq_int_type(__c, traits_type::eof()))
        {
            this->setg(this->eback(), this->gptr()-1, __hm_);
            return traits_type::not_eof(__c);
        }
        if ((__mode_ & ios_base::out) ||
            traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]))
        {
            this->setg(this->eback(), this->gptr()-1, __hm_);
            *this->gptr() = traits_type::to_char_type(__c);
            return __c;
        }
    }
    return traits_type::eof();
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
basic_stringbuf<_CharT, _Traits, _Allocator>::overflow(int_type __c)
{
    if (!traits_type::eq_int_type(__c, traits_type::eof()))
    {
        ptrdiff_t __ninp = this->gptr()  - this->eback();
        if (this->pptr() == this->epptr())
        {
            if (!(__mode_ & ios_base::out))
                return traits_type::eof();
#ifndef _LIBCPP_NO_EXCEPTIONS
            try
            {
#endif // _LIBCPP_NO_EXCEPTIONS
# 540 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
                ptrdiff_t __nout = this->pptr()  - this->pbase();
                ptrdiff_t __hm = __hm_ - this->pbase();
                __str_.push_back(char_type());
                __str_.resize(__str_.capacity());
                char_type* __p = const_cast<char_type*>(__str_.data());
                this->setp(__p, __p + __str_.size());
                this->__pbump(__nout);
                __hm_ = this->pbase() + __hm;
#ifndef _LIBCPP_NO_EXCEPTIONS
            }
            catch (...)
            {
                return traits_type::eof();
            }
#endif // _LIBCPP_NO_EXCEPTIONS
# 555 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
        }
        __hm_ = _VSTD::max(this->pptr() + 1, __hm_);
        if (__mode_ & ios_base::in)
        {
            char_type* __p = const_cast<char_type*>(__str_.data());
            this->setg(__p, __p + __ninp, __hm_);
        }
        return this->sputc(traits_type::to_char_type(__c));
    }
    return traits_type::not_eof(__c);
}

template <class _CharT, class _Traits, class _Allocator>
typename basic_stringbuf<_CharT, _Traits, _Allocator>::pos_type
basic_stringbuf<_CharT, _Traits, _Allocator>::seekoff(off_type __off,
                                                      ios_base::seekdir __way,
                                                      ios_base::openmode __wch)
{
    if (__hm_ < this->pptr())
        __hm_ = this->pptr();
    if ((__wch & (ios_base::in | ios_base::out)) == 0)
        return pos_type(-1);
    if ((__wch & (ios_base::in | ios_base::out)) == (ios_base::in | ios_base::out)
        && __way == ios_base::cur)
        return pos_type(-1);
    const ptrdiff_t __hm = __hm_ == nullptr ? 0 : __hm_ - __str_.data();
    off_type __noff;
    switch (__way)
    {
    case ios_base::beg:
        __noff = 0;
        break;
    case ios_base::cur:
        if (__wch & ios_base::in)
            __noff = this->gptr() - this->eback();
        else
            __noff = this->pptr() - this->pbase();
        break;
    case ios_base::end:
        __noff = __hm;
        break;
    default:
        return pos_type(-1);
    }
    __noff += __off;
    if (__noff < 0 || __hm < __noff)
        return pos_type(-1);
    if (__noff != 0)
    {
        if ((__wch & ios_base::in) && this->gptr() == nullptr)
            return pos_type(-1);
        if ((__wch & ios_base::out) && this->pptr() == nullptr)
            return pos_type(-1);
    }
    if (__wch & ios_base::in)
        this->setg(this->eback(), this->eback() + __noff, __hm_);
    if (__wch & ios_base::out)
    {
        this->setp(this->pbase(), this->epptr());
        this->pbump(__noff);
    }
    return pos_type(__noff);
}

// basic_istringstream

template <class _CharT, class _Traits, class _Allocator>
class _LIBCPP_TEMPLATE_VIS basic_istringstream
    : public basic_istream<_CharT, _Traits>
{
public:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef _Allocator                     allocator_type;

    typedef basic_string<char_type, traits_type, allocator_type> string_type;

private:
    basic_stringbuf<char_type, traits_type, allocator_type> __sb_;

public:
    // 30.8.3.1 [istringstream.cons], constructors
    _LIBCPP_INLINE_VISIBILITY
    basic_istringstream()
        : basic_istream<_CharT, _Traits>(&__sb_), __sb_(ios_base::in) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_istringstream(ios_base::openmode __wch)
        : basic_istream<_CharT, _Traits>(&__sb_), __sb_(__wch | ios_base::in) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_istringstream(const string_type& __s,
                                 ios_base::openmode __wch = ios_base::in)
        : basic_istream<_CharT, _Traits>(&__sb_)
        , __sb_(__s, __wch | ios_base::in)
    { }

    _LIBCPP_INLINE_VISIBILITY
    basic_istringstream(basic_istringstream&& __rhs)
        : basic_istream<_CharT, _Traits>(_VSTD::move(__rhs))
        , __sb_(_VSTD::move(__rhs.__sb_))
    {
        basic_istream<_CharT, _Traits>::set_rdbuf(&__sb_);
    }

    // 27.8.2.2 Assign and swap:
    basic_istringstream& operator=(basic_istringstream&& __rhs) {
        basic_istream<char_type, traits_type>::operator=(_VSTD::move(__rhs));
        __sb_ = _VSTD::move(__rhs.__sb_);
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY
    void swap(basic_istringstream& __rhs) {
        basic_istream<char_type, traits_type>::swap(__rhs);
        __sb_.swap(__rhs.__sb_);
    }

    // 27.8.2.3 Members:
    _LIBCPP_INLINE_VISIBILITY
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const {
        return const_cast<basic_stringbuf<char_type, traits_type, allocator_type>*>(&__sb_);
    }
    _LIBCPP_INLINE_VISIBILITY
    string_type str() const {
        return __sb_.str();
    }
    _LIBCPP_INLINE_VISIBILITY
    void str(const string_type& __s) {
        __sb_.str(__s);
    }
};

template <class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x,
     basic_istringstream<_CharT, _Traits, _Allocator>& __y)
{
    __x.swap(__y);
}

// basic_ostringstream

template <class _CharT, class _Traits, class _Allocator>
class _LIBCPP_TEMPLATE_VIS basic_ostringstream
    : public basic_ostream<_CharT, _Traits>
{
public:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef _Allocator                     allocator_type;

    typedef basic_string<char_type, traits_type, allocator_type> string_type;

private:
    basic_stringbuf<char_type, traits_type, allocator_type> __sb_;

public:
    // 30.8.4.1 [ostringstream.cons], constructors
    _LIBCPP_INLINE_VISIBILITY
    basic_ostringstream()
        : basic_ostream<_CharT, _Traits>(&__sb_), __sb_(ios_base::out) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_ostringstream(ios_base::openmode __wch)
        : basic_ostream<_CharT, _Traits>(&__sb_), __sb_(__wch | ios_base::out) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_ostringstream(const string_type& __s,
                                 ios_base::openmode __wch = ios_base::out)
        : basic_ostream<_CharT, _Traits>(&__sb_)
        , __sb_(__s, __wch | ios_base::out)
    { }

    _LIBCPP_INLINE_VISIBILITY
    basic_ostringstream(basic_ostringstream&& __rhs)
        : basic_ostream<_CharT, _Traits>(_VSTD::move(__rhs))
        , __sb_(_VSTD::move(__rhs.__sb_))
    {
        basic_ostream<_CharT, _Traits>::set_rdbuf(&__sb_);
    }

    // 27.8.2.2 Assign and swap:
    basic_ostringstream& operator=(basic_ostringstream&& __rhs) {
        basic_ostream<char_type, traits_type>::operator=(_VSTD::move(__rhs));
        __sb_ = _VSTD::move(__rhs.__sb_);
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    void swap(basic_ostringstream& __rhs) {
        basic_ostream<char_type, traits_type>::swap(__rhs);
        __sb_.swap(__rhs.__sb_);
    }

    // 27.8.2.3 Members:
    _LIBCPP_INLINE_VISIBILITY
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const {
        return const_cast<basic_stringbuf<char_type, traits_type, allocator_type>*>(&__sb_);
    }
    _LIBCPP_INLINE_VISIBILITY
    string_type str() const {
        return __sb_.str();
    }
    _LIBCPP_INLINE_VISIBILITY
    void str(const string_type& __s) {
        __sb_.str(__s);
    }
};

template <class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x,
     basic_ostringstream<_CharT, _Traits, _Allocator>& __y)
{
    __x.swap(__y);
}

// basic_stringstream

template <class _CharT, class _Traits, class _Allocator>
class _LIBCPP_TEMPLATE_VIS basic_stringstream
    : public basic_iostream<_CharT, _Traits>
{
public:
    typedef _CharT                         char_type;
    typedef _Traits                        traits_type;
    typedef typename traits_type::int_type int_type;
    typedef typename traits_type::pos_type pos_type;
    typedef typename traits_type::off_type off_type;
    typedef _Allocator                     allocator_type;

    typedef basic_string<char_type, traits_type, allocator_type> string_type;

private:
    basic_stringbuf<char_type, traits_type, allocator_type> __sb_;

public:
    // 30.8.5.1 [stringstream.cons], constructors
    _LIBCPP_INLINE_VISIBILITY
    basic_stringstream()
        : basic_iostream<_CharT, _Traits>(&__sb_), __sb_(ios_base::in | ios_base::out) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_stringstream(ios_base::openmode __wch)
        : basic_iostream<_CharT, _Traits>(&__sb_), __sb_(__wch) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit basic_stringstream(const string_type& __s,
                                ios_base::openmode __wch = ios_base::in | ios_base::out)
        : basic_iostream<_CharT, _Traits>(&__sb_)
        , __sb_(__s, __wch)
    { }

    _LIBCPP_INLINE_VISIBILITY
    basic_stringstream(basic_stringstream&& __rhs)
        : basic_iostream<_CharT, _Traits>(_VSTD::move(__rhs))
        , __sb_(_VSTD::move(__rhs.__sb_))
    {
        basic_istream<_CharT, _Traits>::set_rdbuf(&__sb_);
    }

    // 27.8.2.2 Assign and swap:
    basic_stringstream& operator=(basic_stringstream&& __rhs) {
        basic_iostream<char_type, traits_type>::operator=(_VSTD::move(__rhs));
        __sb_ = _VSTD::move(__rhs.__sb_);
        return *this;
    }
    _LIBCPP_INLINE_VISIBILITY
    void swap(basic_stringstream& __rhs) {
        basic_iostream<char_type, traits_type>::swap(__rhs);
        __sb_.swap(__rhs.__sb_);
    }

    // 27.8.2.3 Members:
    _LIBCPP_INLINE_VISIBILITY
    basic_stringbuf<char_type, traits_type, allocator_type>* rdbuf() const {
        return const_cast<basic_stringbuf<char_type, traits_type, allocator_type>*>(&__sb_);
    }
    _LIBCPP_INLINE_VISIBILITY
    string_type str() const {
        return __sb_.str();
    }
    _LIBCPP_INLINE_VISIBILITY
    void str(const string_type& __s) {
        __sb_.str(__s);
    }
};

template <class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x,
     basic_stringstream<_CharT, _Traits, _Allocator>& __y)
{
    __x.swap(__y);
}

#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 861 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_stringbuf<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_stringstream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostringstream<char>)
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istringstream<char>)
#endif
# 866 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_SSTREAM
# 872 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/sstream" 3
# 287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#include <vector>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 1 3
// -*- C++ -*-
//===------------------------------ vector --------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_VECTOR
#define _LIBCPP_VECTOR

/*
    vector synopsis

namespace std
{

template <class T, class Allocator = allocator<T> >
class vector
{
public:
    typedef T                                        value_type;
    typedef Allocator                                allocator_type;
    typedef typename allocator_type::reference       reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef typename allocator_type::pointer         pointer;
    typedef typename allocator_type::const_pointer   const_pointer;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;

    vector()
        noexcept(is_nothrow_default_constructible<allocator_type>::value);
    explicit vector(const allocator_type&);
    explicit vector(size_type n);
    explicit vector(size_type n, const allocator_type&); // C++14
    vector(size_type n, const value_type& value, const allocator_type& = allocator_type());
    template <class InputIterator>
        vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type());
    vector(const vector& x);
    vector(vector&& x)
        noexcept(is_nothrow_move_constructible<allocator_type>::value);
    vector(initializer_list<value_type> il);
    vector(initializer_list<value_type> il, const allocator_type& a);
    ~vector();
    vector& operator=(const vector& x);
    vector& operator=(vector&& x)
        noexcept(
             allocator_type::propagate_on_container_move_assignment::value ||
             allocator_type::is_always_equal::value); // C++17
    vector& operator=(initializer_list<value_type> il);
    template <class InputIterator>
        void assign(InputIterator first, InputIterator last);
    void assign(size_type n, const value_type& u);
    void assign(initializer_list<value_type> il);

    allocator_type get_allocator() const noexcept;

    iterator               begin() noexcept;
    const_iterator         begin()   const noexcept;
    iterator               end() noexcept;
    const_iterator         end()     const noexcept;

    reverse_iterator       rbegin() noexcept;
    const_reverse_iterator rbegin()  const noexcept;
    reverse_iterator       rend() noexcept;
    const_reverse_iterator rend()    const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    size_type size() const noexcept;
    size_type max_size() const noexcept;
    size_type capacity() const noexcept;
    bool empty() const noexcept;
    void reserve(size_type n);
    void shrink_to_fit() noexcept;

    reference       operator[](size_type n);
    const_reference operator[](size_type n) const;
    reference       at(size_type n);
    const_reference at(size_type n) const;

    reference       front();
    const_reference front() const;
    reference       back();
    const_reference back() const;

    value_type*       data() noexcept;
    const value_type* data() const noexcept;

    void push_back(const value_type& x);
    void push_back(value_type&& x);
    template <class... Args>
        reference emplace_back(Args&&... args); // reference in C++17
    void pop_back();

    template <class... Args> iterator emplace(const_iterator position, Args&&... args);
    iterator insert(const_iterator position, const value_type& x);
    iterator insert(const_iterator position, value_type&& x);
    iterator insert(const_iterator position, size_type n, const value_type& x);
    template <class InputIterator>
        iterator insert(const_iterator position, InputIterator first, InputIterator last);
    iterator insert(const_iterator position, initializer_list<value_type> il);

    iterator erase(const_iterator position);
    iterator erase(const_iterator first, const_iterator last);

    void clear() noexcept;

    void resize(size_type sz);
    void resize(size_type sz, const value_type& c);

    void swap(vector&)
        noexcept(allocator_traits<allocator_type>::propagate_on_container_swap::value ||
                 allocator_traits<allocator_type>::is_always_equal::value);  // C++17

    bool __invariants() const;
};

template <class Allocator = allocator<T> >
class vector<bool, Allocator>
{
public:
    typedef bool                                     value_type;
    typedef Allocator                                allocator_type;
    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef iterator                                 pointer;
    typedef const_iterator                           const_pointer;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;

    class reference
    {
    public:
        reference(const reference&) noexcept;
        operator bool() const noexcept;
        reference& operator=(bool x) noexcept;
        reference& operator=(const reference& x) noexcept;
        iterator operator&() const noexcept;
        void flip() noexcept;
    };

    class const_reference
    {
    public:
        const_reference(const reference&) noexcept;
        operator bool() const noexcept;
        const_iterator operator&() const noexcept;
    };

    vector()
        noexcept(is_nothrow_default_constructible<allocator_type>::value);
    explicit vector(const allocator_type&);
    explicit vector(size_type n, const allocator_type& a = allocator_type()); // C++14
    vector(size_type n, const value_type& value, const allocator_type& = allocator_type());
    template <class InputIterator>
        vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type());
    vector(const vector& x);
    vector(vector&& x)
        noexcept(is_nothrow_move_constructible<allocator_type>::value);
    vector(initializer_list<value_type> il);
    vector(initializer_list<value_type> il, const allocator_type& a);
    ~vector();
    vector& operator=(const vector& x);
    vector& operator=(vector&& x)
        noexcept(
             allocator_type::propagate_on_container_move_assignment::value ||
             allocator_type::is_always_equal::value); // C++17
    vector& operator=(initializer_list<value_type> il);
    template <class InputIterator>
        void assign(InputIterator first, InputIterator last);
    void assign(size_type n, const value_type& u);
    void assign(initializer_list<value_type> il);

    allocator_type get_allocator() const noexcept;

    iterator               begin() noexcept;
    const_iterator         begin()   const noexcept;
    iterator               end() noexcept;
    const_iterator         end()     const noexcept;

    reverse_iterator       rbegin() noexcept;
    const_reverse_iterator rbegin()  const noexcept;
    reverse_iterator       rend() noexcept;
    const_reverse_iterator rend()    const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    size_type size() const noexcept;
    size_type max_size() const noexcept;
    size_type capacity() const noexcept;
    bool empty() const noexcept;
    void reserve(size_type n);
    void shrink_to_fit() noexcept;

    reference       operator[](size_type n);
    const_reference operator[](size_type n) const;
    reference       at(size_type n);
    const_reference at(size_type n) const;

    reference       front();
    const_reference front() const;
    reference       back();
    const_reference back() const;

    void push_back(const value_type& x);
    template <class... Args> reference emplace_back(Args&&... args);  // C++14; reference in C++17
    void pop_back();

    template <class... Args> iterator emplace(const_iterator position, Args&&... args);  // C++14
    iterator insert(const_iterator position, const value_type& x);
    iterator insert(const_iterator position, size_type n, const value_type& x);
    template <class InputIterator>
        iterator insert(const_iterator position, InputIterator first, InputIterator last);
    iterator insert(const_iterator position, initializer_list<value_type> il);

    iterator erase(const_iterator position);
    iterator erase(const_iterator first, const_iterator last);

    void clear() noexcept;

    void resize(size_type sz);
    void resize(size_type sz, value_type x);

    void swap(vector&)
        noexcept(allocator_traits<allocator_type>::propagate_on_container_swap::value ||
                 allocator_traits<allocator_type>::is_always_equal::value);  // C++17
    void flip() noexcept;

    bool __invariants() const;
};

template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
   vector(InputIterator, InputIterator, Allocator = Allocator())
   -> vector<typename iterator_traits<InputIterator>::value_type, Allocator>;

template <class Allocator> struct hash<std::vector<bool, Allocator>>;

template <class T, class Allocator> bool operator==(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
template <class T, class Allocator> bool operator< (const vector<T,Allocator>& x, const vector<T,Allocator>& y);
template <class T, class Allocator> bool operator!=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
template <class T, class Allocator> bool operator> (const vector<T,Allocator>& x, const vector<T,Allocator>& y);
template <class T, class Allocator> bool operator>=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
template <class T, class Allocator> bool operator<=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);

template <class T, class Allocator>
void swap(vector<T,Allocator>& x, vector<T,Allocator>& y)
    noexcept(noexcept(x.swap(y)));

template <class T, class Allocator, class U>
typename vector<T, Allocator>::size_type
erase(vector<T, Allocator>& c, const U& value);       // C++20
template <class T, class Allocator, class Predicate>
typename vector<T, Allocator>::size_type
erase_if(vector<T, Allocator>& c, Predicate pred);    // C++20

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <__bit_reference>
#endif /* expanded by -frewrite-includes */
# 275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <__iterator/wrap_iter.h>
#endif /* expanded by -frewrite-includes */
# 278 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <__split_buffer>
#endif /* expanded by -frewrite-includes */
# 279 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 1 3
// -*- C++ -*-
#ifndef _LIBCPP_SPLIT_BUFFER
#define _LIBCPP_SPLIT_BUFFER

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 5 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 6 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 6 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 7 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 7 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 8 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 8 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 9 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 12 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
#endif
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <bool>
class __split_buffer_common
{
protected:
    _LIBCPP_NORETURN void __throw_length_error() const;
    _LIBCPP_NORETURN void __throw_out_of_range() const;
};

template <class _Tp, class _Allocator = allocator<_Tp> >
struct __split_buffer
    : private __split_buffer_common<true>
{
private:
    __split_buffer(const __split_buffer&);
    __split_buffer& operator=(const __split_buffer&);
public:
    typedef _Tp                                             value_type;
    typedef _Allocator                                      allocator_type;
    typedef typename remove_reference<allocator_type>::type __alloc_rr;
    typedef allocator_traits<__alloc_rr>                    __alloc_traits;
    typedef value_type&                                     reference;
    typedef const value_type&                               const_reference;
    typedef typename __alloc_traits::size_type              size_type;
    typedef typename __alloc_traits::difference_type        difference_type;
    typedef typename __alloc_traits::pointer                pointer;
    typedef typename __alloc_traits::const_pointer          const_pointer;
    typedef pointer                                         iterator;
    typedef const_pointer                                   const_iterator;

    pointer                                         __first_;
    pointer                                         __begin_;
    pointer                                         __end_;
    __compressed_pair<pointer, allocator_type> __end_cap_;

    typedef typename add_lvalue_reference<allocator_type>::type __alloc_ref;
    typedef typename add_lvalue_reference<allocator_type>::type __alloc_const_ref;

    _LIBCPP_INLINE_VISIBILITY __alloc_rr&           __alloc() _NOEXCEPT         {return __end_cap_.second();}
    _LIBCPP_INLINE_VISIBILITY const __alloc_rr&     __alloc() const _NOEXCEPT   {return __end_cap_.second();}
    _LIBCPP_INLINE_VISIBILITY pointer&              __end_cap() _NOEXCEPT       {return __end_cap_.first();}
    _LIBCPP_INLINE_VISIBILITY const pointer&        __end_cap() const _NOEXCEPT {return __end_cap_.first();}

    _LIBCPP_INLINE_VISIBILITY
    __split_buffer()
        _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);
    _LIBCPP_INLINE_VISIBILITY
    explicit __split_buffer(__alloc_rr& __a);
    _LIBCPP_INLINE_VISIBILITY
    explicit __split_buffer(const __alloc_rr& __a);
    __split_buffer(size_type __cap, size_type __start, __alloc_rr& __a);
    ~__split_buffer();

    __split_buffer(__split_buffer&& __c)
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
    __split_buffer(__split_buffer&& __c, const __alloc_rr& __a);
    __split_buffer& operator=(__split_buffer&& __c)
        _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value &&
                is_nothrow_move_assignable<allocator_type>::value) ||
               !__alloc_traits::propagate_on_container_move_assignment::value);

    _LIBCPP_INLINE_VISIBILITY       iterator begin() _NOEXCEPT       {return __begin_;}
    _LIBCPP_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT {return __begin_;}
    _LIBCPP_INLINE_VISIBILITY       iterator end() _NOEXCEPT         {return __end_;}
    _LIBCPP_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT   {return __end_;}

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT
        {__destruct_at_end(__begin_);}
    _LIBCPP_INLINE_VISIBILITY size_type size() const {return static_cast<size_type>(__end_ - __begin_);}
    _LIBCPP_INLINE_VISIBILITY bool empty()     const {return __end_ == __begin_;}
    _LIBCPP_INLINE_VISIBILITY size_type capacity() const {return static_cast<size_type>(__end_cap() - __first_);}
    _LIBCPP_INLINE_VISIBILITY size_type __front_spare() const {return static_cast<size_type>(__begin_ - __first_);}
    _LIBCPP_INLINE_VISIBILITY size_type __back_spare() const {return static_cast<size_type>(__end_cap() - __end_);}

    _LIBCPP_INLINE_VISIBILITY       reference front()       {return *__begin_;}
    _LIBCPP_INLINE_VISIBILITY const_reference front() const {return *__begin_;}
    _LIBCPP_INLINE_VISIBILITY       reference back()        {return *(__end_ - 1);}
    _LIBCPP_INLINE_VISIBILITY const_reference back() const  {return *(__end_ - 1);}

    void reserve(size_type __n);
    void shrink_to_fit() _NOEXCEPT;
    void push_front(const_reference __x);
    _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);
    void push_front(value_type&& __x);
    void push_back(value_type&& __x);
    template <class... _Args>
        void emplace_back(_Args&&... __args);

    _LIBCPP_INLINE_VISIBILITY void pop_front() {__destruct_at_begin(__begin_+1);}
    _LIBCPP_INLINE_VISIBILITY void pop_back() {__destruct_at_end(__end_-1);}

    void __construct_at_end(size_type __n);
    void __construct_at_end(size_type __n, const_reference __x);
    template <class _InputIter>
        typename enable_if
        <
            __is_cpp17_input_iterator<_InputIter>::value &&
           !__is_cpp17_forward_iterator<_InputIter>::value,
            void
        >::type
        __construct_at_end(_InputIter __first, _InputIter __last);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            void
        >::type
        __construct_at_end(_ForwardIterator __first, _ForwardIterator __last);

    _LIBCPP_INLINE_VISIBILITY void __destruct_at_begin(pointer __new_begin)
        {__destruct_at_begin(__new_begin, is_trivially_destructible<value_type>());}
        _LIBCPP_INLINE_VISIBILITY
        void __destruct_at_begin(pointer __new_begin, false_type);
        _LIBCPP_INLINE_VISIBILITY
        void __destruct_at_begin(pointer __new_begin, true_type);

    _LIBCPP_INLINE_VISIBILITY
    void __destruct_at_end(pointer __new_last) _NOEXCEPT
        {__destruct_at_end(__new_last, false_type());}
    _LIBCPP_INLINE_VISIBILITY
        void __destruct_at_end(pointer __new_last, false_type) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
        void __destruct_at_end(pointer __new_last, true_type) _NOEXCEPT;

    void swap(__split_buffer& __x)
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value||
                   __is_nothrow_swappable<__alloc_rr>::value);

    bool __invariants() const;

private:
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__split_buffer& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
        {
            __alloc() = _VSTD::move(__c.__alloc());
        }

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__split_buffer&, false_type) _NOEXCEPT
        {}

    struct _ConstructTransaction {
      explicit _ConstructTransaction(pointer* __p, size_type __n) _NOEXCEPT
      : __pos_(*__p), __end_(*__p + __n), __dest_(__p) {
      }
      ~_ConstructTransaction() {
        *__dest_ = __pos_;
      }
      pointer __pos_;
     const pointer __end_;
    private:
     pointer *__dest_;
    };
};

template <class _Tp, class _Allocator>
bool
__split_buffer<_Tp, _Allocator>::__invariants() const
{
    if (__first_ == nullptr)
    {
        if (__begin_ != nullptr)
            return false;
        if (__end_ != nullptr)
            return false;
        if (__end_cap() != nullptr)
            return false;
    }
    else
    {
        if (__begin_ < __first_)
            return false;
        if (__end_ < __begin_)
            return false;
        if (__end_cap() < __end_)
            return false;
    }
    return true;
}

//  Default constructs __n objects starting at __end_
//  throws if construction throws
//  Precondition:  __n > 0
//  Precondition:  size() + __n <= capacity()
//  Postcondition:  size() == size() + __n
template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n)
{
    _ConstructTransaction __tx(&this->__end_, __n);
    for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) {
        __alloc_traits::construct(this->__alloc(), _VSTD::__to_address(__tx.__pos_));
    }
}

//  Copy constructs __n objects starting at __end_ from __x
//  throws if construction throws
//  Precondition:  __n > 0
//  Precondition:  size() + __n <= capacity()
//  Postcondition:  size() == old size() + __n
//  Postcondition:  [i] == __x for all i in [size() - __n, __n)
template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x)
{
    _ConstructTransaction __tx(&this->__end_, __n);
    for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) {
        __alloc_traits::construct(this->__alloc(),
            _VSTD::__to_address(__tx.__pos_), __x);
    }
}

template <class _Tp, class _Allocator>
template <class _InputIter>
typename enable_if
<
     __is_cpp17_input_iterator<_InputIter>::value &&
    !__is_cpp17_forward_iterator<_InputIter>::value,
    void
>::type
__split_buffer<_Tp, _Allocator>::__construct_at_end(_InputIter __first, _InputIter __last)
{
    __alloc_rr& __a = this->__alloc();
    for (; __first != __last; ++__first)
    {
        if (__end_ == __end_cap())
        {
            size_type __old_cap = __end_cap() - __first_;
            size_type __new_cap = _VSTD::max<size_type>(2 * __old_cap, 8);
            __split_buffer __buf(__new_cap, 0, __a);
            for (pointer __p = __begin_; __p != __end_; ++__p, ++__buf.__end_)
                __alloc_traits::construct(__buf.__alloc(),
                        _VSTD::__to_address(__buf.__end_), _VSTD::move(*__p));
            swap(__buf);
        }
        __alloc_traits::construct(__a, _VSTD::__to_address(this->__end_), *__first);
        ++this->__end_;
    }
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    void
>::type
__split_buffer<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last)
{
    _ConstructTransaction __tx(&this->__end_, _VSTD::distance(__first, __last));
    for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_, ++__first) {
        __alloc_traits::construct(this->__alloc(),
            _VSTD::__to_address(__tx.__pos_), *__first);
    }
}

template <class _Tp, class _Allocator>
inline
void
__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_type)
{
    while (__begin_ != __new_begin)
        __alloc_traits::destroy(__alloc(), _VSTD::__to_address(__begin_++));
}

template <class _Tp, class _Allocator>
inline
void
__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_type)
{
    __begin_ = __new_begin;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT
{
    while (__new_last != __end_)
        __alloc_traits::destroy(__alloc(), _VSTD::__to_address(--__end_));
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, true_type) _NOEXCEPT
{
    __end_ = __new_last;
}

template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::__split_buffer(size_type __cap, size_type __start, __alloc_rr& __a)
    : __end_cap_(nullptr, __a)
{
    __first_ = __cap != 0 ? __alloc_traits::allocate(__alloc(), __cap) : nullptr;
    __begin_ = __end_ = __first_ + __start;
    __end_cap() = __first_ + __cap;
}

template <class _Tp, class _Allocator>
inline
__split_buffer<_Tp, _Allocator>::__split_buffer()
    _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
    : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __default_init_tag())
{
}

template <class _Tp, class _Allocator>
inline
__split_buffer<_Tp, _Allocator>::__split_buffer(__alloc_rr& __a)
    : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a)
{
}

template <class _Tp, class _Allocator>
inline
__split_buffer<_Tp, _Allocator>::__split_buffer(const __alloc_rr& __a)
    : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a)
{
}

template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::~__split_buffer()
{
    clear();
    if (__first_)
        __alloc_traits::deallocate(__alloc(), __first_, capacity());
}

template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c)
    _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
    : __first_(_VSTD::move(__c.__first_)),
      __begin_(_VSTD::move(__c.__begin_)),
      __end_(_VSTD::move(__c.__end_)),
      __end_cap_(_VSTD::move(__c.__end_cap_))
{
    __c.__first_ = nullptr;
    __c.__begin_ = nullptr;
    __c.__end_ = nullptr;
    __c.__end_cap() = nullptr;
}

template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c, const __alloc_rr& __a)
    : __end_cap_(nullptr, __a)
{
    if (__a == __c.__alloc())
    {
        __first_ = __c.__first_;
        __begin_ = __c.__begin_;
        __end_ = __c.__end_;
        __end_cap() = __c.__end_cap();
        __c.__first_ = nullptr;
        __c.__begin_ = nullptr;
        __c.__end_ = nullptr;
        __c.__end_cap() = nullptr;
    }
    else
    {
        size_type __cap = __c.size();
        __first_ = __alloc_traits::allocate(__alloc(), __cap);
        __begin_ = __end_ = __first_;
        __end_cap() = __first_ + __cap;
        typedef move_iterator<iterator> _Ip;
        __construct_at_end(_Ip(__c.begin()), _Ip(__c.end()));
    }
}

template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>&
__split_buffer<_Tp, _Allocator>::operator=(__split_buffer&& __c)
    _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value &&
                is_nothrow_move_assignable<allocator_type>::value) ||
               !__alloc_traits::propagate_on_container_move_assignment::value)
{
    clear();
    shrink_to_fit();
    __first_ = __c.__first_;
    __begin_ = __c.__begin_;
    __end_ = __c.__end_;
    __end_cap() = __c.__end_cap();
    __move_assign_alloc(__c,
        integral_constant<bool,
                          __alloc_traits::propagate_on_container_move_assignment::value>());
    __c.__first_ = __c.__begin_ = __c.__end_ = __c.__end_cap() = nullptr;
    return *this;
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::swap(__split_buffer& __x)
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value||
                   __is_nothrow_swappable<__alloc_rr>::value)
{
    _VSTD::swap(__first_, __x.__first_);
    _VSTD::swap(__begin_, __x.__begin_);
    _VSTD::swap(__end_, __x.__end_);
    _VSTD::swap(__end_cap(), __x.__end_cap());
    _VSTD::__swap_allocator(__alloc(), __x.__alloc());
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::reserve(size_type __n)
{
    if (__n < capacity())
    {
        __split_buffer<value_type, __alloc_rr&> __t(__n, 0, __alloc());
        __t.__construct_at_end(move_iterator<pointer>(__begin_),
                               move_iterator<pointer>(__end_));
        _VSTD::swap(__first_, __t.__first_);
        _VSTD::swap(__begin_, __t.__begin_);
        _VSTD::swap(__end_, __t.__end_);
        _VSTD::swap(__end_cap(), __t.__end_cap());
    }
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT
{
    if (capacity() > size())
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
            __split_buffer<value_type, __alloc_rr&> __t(size(), 0, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            __t.__end_ = __t.__begin_ + (__end_ - __begin_);
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 463 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
    }
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::push_front(const_reference __x)
{
    if (__begin_ == __first_)
    {
        if (__end_ < __end_cap())
        {
            difference_type __d = __end_cap() - __end_;
            __d = (__d + 1) / 2;
            __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d);
            __end_ += __d;
        }
        else
        {
            size_type __c = max<size_type>(2 * static_cast<size_t>(__end_cap() - __first_), 1);
            __split_buffer<value_type, __alloc_rr&> __t(__c, (__c + 3) / 4, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
        }
    }
    __alloc_traits::construct(__alloc(), _VSTD::__to_address(__begin_-1), __x);
    --__begin_;
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::push_front(value_type&& __x)
{
    if (__begin_ == __first_)
    {
        if (__end_ < __end_cap())
        {
            difference_type __d = __end_cap() - __end_;
            __d = (__d + 1) / 2;
            __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d);
            __end_ += __d;
        }
        else
        {
            size_type __c = max<size_type>(2 * static_cast<size_t>(__end_cap() - __first_), 1);
            __split_buffer<value_type, __alloc_rr&> __t(__c, (__c + 3) / 4, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
        }
    }
    __alloc_traits::construct(__alloc(), _VSTD::__to_address(__begin_-1),
            _VSTD::move(__x));
    --__begin_;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
__split_buffer<_Tp, _Allocator>::push_back(const_reference __x)
{
    if (__end_ == __end_cap())
    {
        if (__begin_ > __first_)
        {
            difference_type __d = __begin_ - __first_;
            __d = (__d + 1) / 2;
            __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d);
            __begin_ -= __d;
        }
        else
        {
            size_type __c = max<size_type>(2 * static_cast<size_t>(__end_cap() - __first_), 1);
            __split_buffer<value_type, __alloc_rr&> __t(__c, __c / 4, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
        }
    }
    __alloc_traits::construct(__alloc(), _VSTD::__to_address(__end_), __x);
    ++__end_;
}

template <class _Tp, class _Allocator>
void
__split_buffer<_Tp, _Allocator>::push_back(value_type&& __x)
{
    if (__end_ == __end_cap())
    {
        if (__begin_ > __first_)
        {
            difference_type __d = __begin_ - __first_;
            __d = (__d + 1) / 2;
            __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d);
            __begin_ -= __d;
        }
        else
        {
            size_type __c = max<size_type>(2 * static_cast<size_t>(__end_cap() - __first_), 1);
            __split_buffer<value_type, __alloc_rr&> __t(__c, __c / 4, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
        }
    }
    __alloc_traits::construct(__alloc(), _VSTD::__to_address(__end_),
            _VSTD::move(__x));
    ++__end_;
}

template <class _Tp, class _Allocator>
template <class... _Args>
void
__split_buffer<_Tp, _Allocator>::emplace_back(_Args&&... __args)
{
    if (__end_ == __end_cap())
    {
        if (__begin_ > __first_)
        {
            difference_type __d = __begin_ - __first_;
            __d = (__d + 1) / 2;
            __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d);
            __begin_ -= __d;
        }
        else
        {
            size_type __c = max<size_type>(2 * static_cast<size_t>(__end_cap() - __first_), 1);
            __split_buffer<value_type, __alloc_rr&> __t(__c, __c / 4, __alloc());
            __t.__construct_at_end(move_iterator<pointer>(__begin_),
                                   move_iterator<pointer>(__end_));
            _VSTD::swap(__first_, __t.__first_);
            _VSTD::swap(__begin_, __t.__begin_);
            _VSTD::swap(__end_, __t.__end_);
            _VSTD::swap(__end_cap(), __t.__end_cap());
        }
    }
    __alloc_traits::construct(__alloc(), _VSTD::__to_address(__end_),
                              _VSTD::forward<_Args>(__args)...);
    ++__end_;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__split_buffer<_Tp, _Allocator>& __x, __split_buffer<_Tp, _Allocator>& __y)
        _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_SPLIT_BUFFER
# 630 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__split_buffer" 3
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 280 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 281 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <climits>
#endif /* expanded by -frewrite-includes */
# 282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 283 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstdlib>
#endif /* expanded by -frewrite-includes */
# 284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <cstring>
#endif /* expanded by -frewrite-includes */
# 285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <iosfwd> // for forward declaration of vector
#endif /* expanded by -frewrite-includes */
# 287 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 288 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 293 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 295 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#endif
# 297 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 299 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

template <bool>
class _LIBCPP_TEMPLATE_VIS __vector_base_common
{
protected:
    _LIBCPP_INLINE_VISIBILITY __vector_base_common() {}
    _LIBCPP_NORETURN void __throw_length_error() const;
    _LIBCPP_NORETURN void __throw_out_of_range() const;
};

template <bool __b>
void
__vector_base_common<__b>::__throw_length_error() const
{
    _VSTD::__throw_length_error("vector");
}

template <bool __b>
void
__vector_base_common<__b>::__throw_out_of_range() const
{
    _VSTD::__throw_out_of_range("vector");
}

_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __vector_base_common<true>)

template <class _Tp, class _Allocator>
class __vector_base
    : protected __vector_base_common<true>
{
public:
    typedef _Allocator                               allocator_type;
    typedef allocator_traits<allocator_type>         __alloc_traits;
    typedef typename __alloc_traits::size_type       size_type;
protected:
    typedef _Tp                                      value_type;
    typedef value_type&                              reference;
    typedef const value_type&                        const_reference;
    typedef typename __alloc_traits::difference_type difference_type;
    typedef typename __alloc_traits::pointer         pointer;
    typedef typename __alloc_traits::const_pointer   const_pointer;
    typedef pointer                                  iterator;
    typedef const_pointer                            const_iterator;

    pointer                                         __begin_;
    pointer                                         __end_;
    __compressed_pair<pointer, allocator_type> __end_cap_;

    _LIBCPP_INLINE_VISIBILITY
    allocator_type& __alloc() _NOEXCEPT
        {return __end_cap_.second();}
    _LIBCPP_INLINE_VISIBILITY
    const allocator_type& __alloc() const _NOEXCEPT
        {return __end_cap_.second();}
    _LIBCPP_INLINE_VISIBILITY
    pointer& __end_cap() _NOEXCEPT
        {return __end_cap_.first();}
    _LIBCPP_INLINE_VISIBILITY
    const pointer& __end_cap() const _NOEXCEPT
        {return __end_cap_.first();}

    _LIBCPP_INLINE_VISIBILITY
    __vector_base()
        _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);
    _LIBCPP_INLINE_VISIBILITY __vector_base(const allocator_type& __a);
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY __vector_base(allocator_type&& __a) _NOEXCEPT;
#endif
# 371 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    ~__vector_base();

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT {__destruct_at_end(__begin_);}
    _LIBCPP_INLINE_VISIBILITY
    size_type capacity() const _NOEXCEPT
        {return static_cast<size_type>(__end_cap() - __begin_);}

    _LIBCPP_INLINE_VISIBILITY
    void __destruct_at_end(pointer __new_last) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __vector_base& __c)
        {__copy_assign_alloc(__c, integral_constant<bool,
                      __alloc_traits::propagate_on_container_copy_assignment::value>());}

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__vector_base& __c)
        _NOEXCEPT_(
            !__alloc_traits::propagate_on_container_move_assignment::value ||
            is_nothrow_move_assignable<allocator_type>::value)
        {__move_assign_alloc(__c, integral_constant<bool,
                      __alloc_traits::propagate_on_container_move_assignment::value>());}

    _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI
    void __throw_length_error() const {
#ifndef _LIBCPP_NO_EXCEPTIONS
        __vector_base_common<true>::__throw_length_error();
#else
# 400 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _VSTD::abort();
#endif
# 402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }

    _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI
    void __throw_out_of_range() const {
#ifndef _LIBCPP_NO_EXCEPTIONS
        __vector_base_common<true>::__throw_out_of_range();
#else
# 409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _VSTD::abort();
#endif
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }

private:
    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __vector_base& __c, true_type)
        {
            if (__alloc() != __c.__alloc())
            {
                clear();
                __alloc_traits::deallocate(__alloc(), __begin_, capacity());
                __begin_ = __end_ = __end_cap() = nullptr;
            }
            __alloc() = __c.__alloc();
        }

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __vector_base&, false_type)
        {}

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__vector_base& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
        {
            __alloc() = _VSTD::move(__c.__alloc());
        }

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__vector_base&, false_type)
        _NOEXCEPT
        {}
};

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
__vector_base<_Tp, _Allocator>::__destruct_at_end(pointer __new_last) _NOEXCEPT
{
    pointer __soon_to_be_end = __end_;
    while (__new_last != __soon_to_be_end)
        __alloc_traits::destroy(__alloc(), _VSTD::__to_address(--__soon_to_be_end));
    __end_ = __new_last;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
__vector_base<_Tp, _Allocator>::__vector_base()
        _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
    : __begin_(nullptr),
      __end_(nullptr),
      __end_cap_(nullptr, __default_init_tag())
{
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
__vector_base<_Tp, _Allocator>::__vector_base(const allocator_type& __a)
    : __begin_(nullptr),
      __end_(nullptr),
      __end_cap_(nullptr, __a)
{
}

#ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
__vector_base<_Tp, _Allocator>::__vector_base(allocator_type&& __a) _NOEXCEPT
    : __begin_(nullptr),
      __end_(nullptr),
      __end_cap_(nullptr, _VSTD::move(__a)) {}
#endif
# 481 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
__vector_base<_Tp, _Allocator>::~__vector_base()
{
    if (__begin_ != nullptr)
    {
        clear();
        __alloc_traits::deallocate(__alloc(), __begin_, capacity());
    }
}

template <class _Tp, class _Allocator /* = allocator<_Tp> */>
class _LIBCPP_TEMPLATE_VIS vector
    : private __vector_base<_Tp, _Allocator>
{
private:
    typedef __vector_base<_Tp, _Allocator>           __base;
    typedef allocator<_Tp>                           __default_allocator_type;
public:
    typedef vector                                   __self;
    typedef _Tp                                      value_type;
    typedef _Allocator                               allocator_type;
    typedef typename __base::__alloc_traits          __alloc_traits;
    typedef typename __base::reference               reference;
    typedef typename __base::const_reference         const_reference;
    typedef typename __base::size_type               size_type;
    typedef typename __base::difference_type         difference_type;
    typedef typename __base::pointer                 pointer;
    typedef typename __base::const_pointer           const_pointer;
    typedef __wrap_iter<pointer>                     iterator;
    typedef __wrap_iter<const_pointer>               const_iterator;
    typedef _VSTD::reverse_iterator<iterator>         reverse_iterator;
    typedef _VSTD::reverse_iterator<const_iterator>   const_reverse_iterator;

    static_assert((is_same<typename allocator_type::value_type, value_type>::value),
                  "Allocator::value_type must be same type as value_type");

    _LIBCPP_INLINE_VISIBILITY
    vector() _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
        {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 522 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
            __get_db()->__insert_c(this);
#endif
# 524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        }
    _LIBCPP_INLINE_VISIBILITY explicit vector(const allocator_type& __a)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
#else
# 529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT
#endif
# 531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        : __base(__a)
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 534 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        __get_db()->__insert_c(this);
#endif
# 536 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
    explicit vector(size_type __n);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    explicit vector(size_type __n, const allocator_type& __a);
#endif
# 541 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    vector(size_type __n, const value_type& __x);
    vector(size_type __n, const value_type& __x, const allocator_type& __a);
    template <class _InputIterator>
        vector(_InputIterator __first,
               typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                                 !__is_cpp17_forward_iterator<_InputIterator>::value &&
                                 is_constructible<
                                    value_type,
                                    typename iterator_traits<_InputIterator>::reference>::value,
                                 _InputIterator>::type __last);
    template <class _InputIterator>
        vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
               typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                                 !__is_cpp17_forward_iterator<_InputIterator>::value &&
                                 is_constructible<
                                    value_type,
                                    typename iterator_traits<_InputIterator>::reference>::value>::type* = 0);
    template <class _ForwardIterator>
        vector(_ForwardIterator __first,
               typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value &&
                                 is_constructible<
                                    value_type,
                                    typename iterator_traits<_ForwardIterator>::reference>::value,
                                 _ForwardIterator>::type __last);
    template <class _ForwardIterator>
        vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
               typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value &&
                                 is_constructible<
                                    value_type,
                                    typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0);

    _LIBCPP_INLINE_VISIBILITY
    ~vector()
    {
        __annotate_delete();
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        __get_db()->__erase_c(this);
#endif
# 579 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }

    vector(const vector& __x);
    vector(const vector& __x, const __identity_t<allocator_type>& __a);
    _LIBCPP_INLINE_VISIBILITY
    vector& operator=(const vector& __x);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    vector(initializer_list<value_type> __il);

    _LIBCPP_INLINE_VISIBILITY
    vector(initializer_list<value_type> __il, const allocator_type& __a);

    _LIBCPP_INLINE_VISIBILITY
    vector(vector&& __x)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT;
#else
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
#endif
# 600 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY
    vector(vector&& __x, const __identity_t<allocator_type>& __a);
    _LIBCPP_INLINE_VISIBILITY
    vector& operator=(vector&& __x)
        _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value));

    _LIBCPP_INLINE_VISIBILITY
    vector& operator=(initializer_list<value_type> __il)
        {assign(__il.begin(), __il.end()); return *this;}

#endif // !_LIBCPP_CXX03_LANG
# 612 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    template <class _InputIterator>
        typename enable_if
        <
             __is_cpp17_input_iterator  <_InputIterator>::value &&
            !__is_cpp17_forward_iterator<_InputIterator>::value &&
            is_constructible<
                 value_type,
                 typename iterator_traits<_InputIterator>::reference>::value,
            void
        >::type
        assign(_InputIterator __first, _InputIterator __last);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value &&
            is_constructible<
                 value_type,
                 typename iterator_traits<_ForwardIterator>::reference>::value,
            void
        >::type
        assign(_ForwardIterator __first, _ForwardIterator __last);

    void assign(size_type __n, const_reference __u);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    void assign(initializer_list<value_type> __il)
        {assign(__il.begin(), __il.end());}
#endif
# 642 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY
    allocator_type get_allocator() const _NOEXCEPT
        {return this->__alloc();}

    _LIBCPP_INLINE_VISIBILITY iterator               begin() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY const_iterator         begin()   const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY iterator               end() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY const_iterator         end()     const _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator       rbegin() _NOEXCEPT
        {return       reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin()  const _NOEXCEPT
        {return const_reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator       rend() _NOEXCEPT
        {return       reverse_iterator(begin());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend()    const _NOEXCEPT
        {return const_reverse_iterator(begin());}

    _LIBCPP_INLINE_VISIBILITY
    const_iterator         cbegin()  const _NOEXCEPT
        {return begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator         cend()    const _NOEXCEPT
        {return end();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin() const _NOEXCEPT
        {return rbegin();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend()   const _NOEXCEPT
        {return rend();}

    _LIBCPP_INLINE_VISIBILITY
    size_type size() const _NOEXCEPT
        {return static_cast<size_type>(this->__end_ - this->__begin_);}
    _LIBCPP_INLINE_VISIBILITY
    size_type capacity() const _NOEXCEPT
        {return __base::capacity();}
    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool empty() const _NOEXCEPT
        {return this->__begin_ == this->__end_;}
    size_type max_size() const _NOEXCEPT;
    void reserve(size_type __n);
    void shrink_to_fit() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY reference       operator[](size_type __n) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const _NOEXCEPT;
    reference       at(size_type __n);
    const_reference at(size_type __n) const;

    _LIBCPP_INLINE_VISIBILITY reference       front() _NOEXCEPT
    {
        _LIBCPP_ASSERT(!empty(), "front() called on an empty vector");
        return *this->__begin_;
    }
    _LIBCPP_INLINE_VISIBILITY const_reference front() const _NOEXCEPT
    {
        _LIBCPP_ASSERT(!empty(), "front() called on an empty vector");
        return *this->__begin_;
    }
    _LIBCPP_INLINE_VISIBILITY reference       back() _NOEXCEPT
    {
        _LIBCPP_ASSERT(!empty(), "back() called on an empty vector");
        return *(this->__end_ - 1);
    }
    _LIBCPP_INLINE_VISIBILITY const_reference back()  const _NOEXCEPT
    {
        _LIBCPP_ASSERT(!empty(), "back() called on an empty vector");
        return *(this->__end_ - 1);
    }

    _LIBCPP_INLINE_VISIBILITY
    value_type*       data() _NOEXCEPT
        {return _VSTD::__to_address(this->__begin_);}
    _LIBCPP_INLINE_VISIBILITY
    const value_type* data() const _NOEXCEPT
        {return _VSTD::__to_address(this->__begin_);}

#ifdef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    void __emplace_back(const value_type& __x) { push_back(__x); }
#else
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    template <class _Arg>
    _LIBCPP_INLINE_VISIBILITY
    void __emplace_back(_Arg&& __arg) {
      emplace_back(_VSTD::forward<_Arg>(__arg));
    }
#endif
# 734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY void push_back(value_type&& __x);

    template <class... _Args>
        _LIBCPP_INLINE_VISIBILITY
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 743 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        reference emplace_back(_Args&&... __args);
#else
# 745 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        void      emplace_back(_Args&&... __args);
#endif
# 747 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
#endif // !_LIBCPP_CXX03_LANG
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY
    void pop_back();

    iterator insert(const_iterator __position, const_reference __x);

#ifndef _LIBCPP_CXX03_LANG
    iterator insert(const_iterator __position, value_type&& __x);
    template <class... _Args>
        iterator emplace(const_iterator __position, _Args&&... __args);
#endif // !_LIBCPP_CXX03_LANG
# 759 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    iterator insert(const_iterator __position, size_type __n, const_reference __x);
    template <class _InputIterator>
        typename enable_if
        <
             __is_cpp17_input_iterator  <_InputIterator>::value &&
            !__is_cpp17_forward_iterator<_InputIterator>::value &&
            is_constructible<
                 value_type,
                 typename iterator_traits<_InputIterator>::reference>::value,
            iterator
        >::type
        insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value &&
            is_constructible<
                 value_type,
                 typename iterator_traits<_ForwardIterator>::reference>::value,
            iterator
        >::type
        insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __position, initializer_list<value_type> __il)
        {return insert(__position, __il.begin(), __il.end());}
#endif
# 788 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);
    iterator erase(const_iterator __first, const_iterator __last);

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT
    {
        size_type __old_size = size();
        __base::clear();
        __annotate_shrink(__old_size);
        __invalidate_all_iterators();
    }

    void resize(size_type __sz);
    void resize(size_type __sz, const_reference __x);

    void swap(vector&)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 806 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT;
#else
# 808 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                    __is_nothrow_swappable<allocator_type>::value);
#endif
# 811 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    bool __invariants() const;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 815 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    bool __dereferenceable(const const_iterator* __i) const;
    bool __decrementable(const const_iterator* __i) const;
    bool __addable(const const_iterator* __i, ptrdiff_t __n) const;
    bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const;

#endif // _LIBCPP_DEBUG_LEVEL == 2
# 822 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

private:
    _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
    _LIBCPP_INLINE_VISIBILITY void __invalidate_iterators_past(pointer __new_last);
    void __vallocate(size_type __n);
    void __vdeallocate() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY size_type __recommend(size_type __new_size) const;
    void __construct_at_end(size_type __n);
    _LIBCPP_INLINE_VISIBILITY
    void __construct_at_end(size_type __n, const_reference __x);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            void
        >::type
        __construct_at_end(_ForwardIterator __first, _ForwardIterator __last, size_type __n);
    void __append(size_type __n);
    void __append(size_type __n, const_reference __x);
    _LIBCPP_INLINE_VISIBILITY
    iterator       __make_iter(pointer __p) _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    const_iterator __make_iter(const_pointer __p) const _NOEXCEPT;
    void __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v);
    pointer __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p);
    void __move_range(pointer __from_s, pointer __from_e, pointer __to);
    void __move_assign(vector& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
    void __move_assign(vector& __c, false_type)
        _NOEXCEPT_(__alloc_traits::is_always_equal::value);
    _LIBCPP_INLINE_VISIBILITY
    void __destruct_at_end(pointer __new_last) _NOEXCEPT
    {
        __invalidate_iterators_past(__new_last);
        size_type __old_size = size();
        __base::__destruct_at_end(__new_last);
        __annotate_shrink(__old_size);
    }

#ifndef _LIBCPP_CXX03_LANG
    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    inline void __push_back_slow_path(_Up&& __x);

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    inline void __emplace_back_slow_path(_Args&&... __args);
#else
# 870 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    inline void __push_back_slow_path(_Up& __x);
#endif
# 874 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    // The following functions are no-ops outside of AddressSanitizer mode.
    // We call annotatations only for the default Allocator because other allocators
    // may not meet the AddressSanitizer alignment constraints.
    // See the documentation for __sanitizer_annotate_contiguous_container for more details.
#ifndef _LIBCPP_HAS_NO_ASAN
    void __annotate_contiguous_container(const void *__beg, const void *__end,
                                         const void *__old_mid,
                                         const void *__new_mid) const
    {

      if (__beg && is_same<allocator_type, __default_allocator_type>::value)
        __sanitizer_annotate_contiguous_container(__beg, __end, __old_mid, __new_mid);
    }
#else
# 889 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_INLINE_VISIBILITY
    void __annotate_contiguous_container(const void*, const void*, const void*,
                                         const void*) const _NOEXCEPT {}
#endif
# 893 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_INLINE_VISIBILITY
    void __annotate_new(size_type __current_size) const _NOEXCEPT {
      __annotate_contiguous_container(data(), data() + capacity(),
                                      data() + capacity(), data() + __current_size);
    }

    _LIBCPP_INLINE_VISIBILITY
    void __annotate_delete() const _NOEXCEPT {
      __annotate_contiguous_container(data(), data() + capacity(),
                                      data() + size(), data() + capacity());
    }

    _LIBCPP_INLINE_VISIBILITY
    void __annotate_increase(size_type __n) const _NOEXCEPT
    {
      __annotate_contiguous_container(data(), data() + capacity(),
                                      data() + size(), data() + size() + __n);
    }

    _LIBCPP_INLINE_VISIBILITY
    void __annotate_shrink(size_type __old_size) const _NOEXCEPT
    {
      __annotate_contiguous_container(data(), data() + capacity(),
                                      data() + __old_size, data() + size());
    }

  struct _ConstructTransaction {
    explicit _ConstructTransaction(vector &__v, size_type __n)
      : __v_(__v),  __pos_(__v.__end_), __new_end_(__v.__end_ + __n) {
#ifndef _LIBCPP_HAS_NO_ASAN
      __v_.__annotate_increase(__n);
#endif
# 925 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
    ~_ConstructTransaction() {
      __v_.__end_ = __pos_;
#ifndef _LIBCPP_HAS_NO_ASAN
      if (__pos_ != __new_end_) {
        __v_.__annotate_shrink(__new_end_ - __v_.__begin_);
      }
#endif
# 933 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }

    vector &__v_;
    pointer __pos_;
    const_pointer const __new_end_;

  private:
    _ConstructTransaction(_ConstructTransaction const&) = delete;
    _ConstructTransaction& operator=(_ConstructTransaction const&) = delete;
  };

  template <class ..._Args>
  _LIBCPP_INLINE_VISIBILITY
  void __construct_one_at_end(_Args&& ...__args) {
    _ConstructTransaction __tx(*this, 1);
    __alloc_traits::construct(this->__alloc(), _VSTD::__to_address(__tx.__pos_),
        _VSTD::forward<_Args>(__args)...);
    ++__tx.__pos_;
  }
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _InputIterator,
         class _Alloc = allocator<__iter_value_type<_InputIterator>>,
         class = _EnableIf<__is_allocator<_Alloc>::value>
         >
vector(_InputIterator, _InputIterator)
  -> vector<__iter_value_type<_InputIterator>, _Alloc>;

template<class _InputIterator,
         class _Alloc,
         class = _EnableIf<__is_allocator<_Alloc>::value>
         >
vector(_InputIterator, _InputIterator, _Alloc)
  -> vector<__iter_value_type<_InputIterator>, _Alloc>;
#endif
# 969 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v)
{

    __annotate_delete();
    _VSTD::__construct_backward_with_exception_guarantees(this->__alloc(), this->__begin_, this->__end_, __v.__begin_);
    _VSTD::swap(this->__begin_, __v.__begin_);
    _VSTD::swap(this->__end_, __v.__end_);
    _VSTD::swap(this->__end_cap(), __v.__end_cap());
    __v.__first_ = __v.__begin_;
    __annotate_new(size());
    __invalidate_all_iterators();
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::pointer
vector<_Tp, _Allocator>::__swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p)
{
    __annotate_delete();
    pointer __r = __v.__begin_;
    _VSTD::__construct_backward_with_exception_guarantees(this->__alloc(), this->__begin_, __p, __v.__begin_);
    _VSTD::__construct_forward_with_exception_guarantees(this->__alloc(), __p, this->__end_, __v.__end_);
    _VSTD::swap(this->__begin_, __v.__begin_);
    _VSTD::swap(this->__end_, __v.__end_);
    _VSTD::swap(this->__end_cap(), __v.__end_cap());
    __v.__first_ = __v.__begin_;
    __annotate_new(size());
    __invalidate_all_iterators();
    return __r;
}

//  Allocate space for __n objects
//  throws length_error if __n > max_size()
//  throws (probably bad_alloc) if memory run out
//  Precondition:  __begin_ == __end_ == __end_cap() == 0
//  Precondition:  __n > 0
//  Postcondition:  capacity() == __n
//  Postcondition:  size() == 0
template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__vallocate(size_type __n)
{
    if (__n > max_size())
        this->__throw_length_error();
    this->__begin_ = this->__end_ = __alloc_traits::allocate(this->__alloc(), __n);
    this->__end_cap() = this->__begin_ + __n;
    __annotate_new(0);
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__vdeallocate() _NOEXCEPT
{
    if (this->__begin_ != nullptr)
    {
        clear();
        __alloc_traits::deallocate(this->__alloc(), this->__begin_, capacity());
        this->__begin_ = this->__end_ = this->__end_cap() = nullptr;
    }
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::size_type
vector<_Tp, _Allocator>::max_size() const _NOEXCEPT
{
    return _VSTD::min<size_type>(__alloc_traits::max_size(this->__alloc()),
                                 numeric_limits<difference_type>::max());
}

//  Precondition:  __new_size > capacity()
template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::size_type
vector<_Tp, _Allocator>::__recommend(size_type __new_size) const
{
    const size_type __ms = max_size();
    if (__new_size > __ms)
        this->__throw_length_error();
    const size_type __cap = capacity();
    if (__cap >= __ms / 2)
        return __ms;
    return _VSTD::max<size_type>(2 * __cap, __new_size);
}

//  Default constructs __n objects starting at __end_
//  throws if construction throws
//  Precondition:  __n > 0
//  Precondition:  size() + __n <= capacity()
//  Postcondition:  size() == size() + __n
template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__construct_at_end(size_type __n)
{
    _ConstructTransaction __tx(*this, __n);
    const_pointer __new_end = __tx.__new_end_;
    for (pointer __pos = __tx.__pos_; __pos != __new_end; ++__pos, __tx.__pos_ = __pos) {
        __alloc_traits::construct(this->__alloc(), _VSTD::__to_address(__pos));
    }
}

//  Copy constructs __n objects starting at __end_ from __x
//  throws if construction throws
//  Precondition:  __n > 0
//  Precondition:  size() + __n <= capacity()
//  Postcondition:  size() == old size() + __n
//  Postcondition:  [i] == __x for all i in [size() - __n, __n)
template <class _Tp, class _Allocator>
inline
void
vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x)
{
    _ConstructTransaction __tx(*this, __n);
    const_pointer __new_end = __tx.__new_end_;
    for (pointer __pos = __tx.__pos_; __pos != __new_end; ++__pos, __tx.__pos_ = __pos) {
        __alloc_traits::construct(this->__alloc(), _VSTD::__to_address(__pos), __x);
    }
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    void
>::type
vector<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last, size_type __n)
{
    _ConstructTransaction __tx(*this, __n);
    _VSTD::__construct_range_forward(this->__alloc(), __first, __last, __tx.__pos_);
}

//  Default constructs __n objects starting at __end_
//  throws if construction throws
//  Postcondition:  size() == size() + __n
//  Exception safety: strong.
template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__append(size_type __n)
{
    if (static_cast<size_type>(this->__end_cap() - this->__end_) >= __n)
        this->__construct_at_end(__n);
    else
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), size(), __a);
        __v.__construct_at_end(__n);
        __swap_out_circular_buffer(__v);
    }
}

//  Default constructs __n objects starting at __end_
//  throws if construction throws
//  Postcondition:  size() == size() + __n
//  Exception safety: strong.
template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__append(size_type __n, const_reference __x)
{
    if (static_cast<size_type>(this->__end_cap() - this->__end_) >= __n)
        this->__construct_at_end(__n, __x);
    else
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), size(), __a);
        __v.__construct_at_end(__n, __x);
        __swap_out_circular_buffer(__v);
    }
}

template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1144 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1146 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n);
    }
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n);
    }
}
#endif
# 1168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const value_type& __x)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1173 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1175 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, __x);
    }
}

template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(size_type __n, const value_type& __x, const allocator_type& __a)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1187 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1189 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, __x);
    }
}

template <class _Tp, class _Allocator>
template <class _InputIterator>
vector<_Tp, _Allocator>::vector(_InputIterator __first,
       typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                         !__is_cpp17_forward_iterator<_InputIterator>::value &&
                         is_constructible<
                            value_type,
                            typename iterator_traits<_InputIterator>::reference>::value,
                          _InputIterator>::type __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1207 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1209 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    for (; __first != __last; ++__first)
        __emplace_back(*__first);
}

template <class _Tp, class _Allocator>
template <class _InputIterator>
vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
       typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                         !__is_cpp17_forward_iterator<_InputIterator>::value &&
                         is_constructible<
                            value_type,
                            typename iterator_traits<_InputIterator>::reference>::value>::type*)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1224 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1226 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    for (; __first != __last; ++__first)
        __emplace_back(*__first);
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(_ForwardIterator __first,
                                typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value &&
                                is_constructible<
                                   value_type,
                                   typename iterator_traits<_ForwardIterator>::reference>::value,
                                                   _ForwardIterator>::type __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1240 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1242 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__first, __last, __n);
    }
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
                                typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value &&
                                is_constructible<
                                   value_type,
                                   typename iterator_traits<_ForwardIterator>::reference>::value>::type*)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1260 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1262 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__first, __last, __n);
    }
}

template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x)
    : __base(__alloc_traits::select_on_container_copy_construction(__x.__alloc()))
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1275 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    size_type __n = __x.size();
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__x.__begin_, __x.__end_, __n);
    }
}

template <class _Tp, class _Allocator>
vector<_Tp, _Allocator>::vector(const vector& __x, const __identity_t<allocator_type>& __a)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    size_type __n = __x.size();
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__x.__begin_, __x.__end_, __n);
    }
}

#ifndef _LIBCPP_CXX03_LANG

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>::vector(vector&& __x)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT
#else
# 1308 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
#endif
# 1310 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    : __base(_VSTD::move(__x.__alloc()))
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1313 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
    __get_db()->swap(this, &__x);
#endif
# 1316 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    this->__begin_ = __x.__begin_;
    this->__end_ = __x.__end_;
    this->__end_cap() = __x.__end_cap();
    __x.__begin_ = __x.__end_ = __x.__end_cap() = nullptr;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>::vector(vector&& __x, const __identity_t<allocator_type>& __a)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__a == __x.__alloc())
    {
        this->__begin_ = __x.__begin_;
        this->__end_ = __x.__end_;
        this->__end_cap() = __x.__end_cap();
        __x.__begin_ = __x.__end_ = __x.__end_cap() = nullptr;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1337 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        __get_db()->swap(this, &__x);
#endif
# 1339 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
    else
    {
        typedef move_iterator<iterator> _Ip;
        assign(_Ip(__x.begin()), _Ip(__x.end()));
    }
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1354 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__il.size() > 0)
    {
        __vallocate(__il.size());
        __construct_at_end(__il.begin(), __il.end(), __il.size());
    }
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
    : __base(__a)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1367 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__insert_c(this);
#endif
# 1369 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    if (__il.size() > 0)
    {
        __vallocate(__il.size());
        __construct_at_end(__il.begin(), __il.end(), __il.size());
    }
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>&
vector<_Tp, _Allocator>::operator=(vector&& __x)
    _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value))
{
    __move_assign(__x, integral_constant<bool,
          __alloc_traits::propagate_on_container_move_assignment::value>());
    return *this;
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__move_assign(vector& __c, false_type)
    _NOEXCEPT_(__alloc_traits::is_always_equal::value)
{
    if (__base::__alloc() != __c.__alloc())
    {
        typedef move_iterator<iterator> _Ip;
        assign(_Ip(__c.begin()), _Ip(__c.end()));
    }
    else
        __move_assign(__c, true_type());
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__move_assign(vector& __c, true_type)
    _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
{
    __vdeallocate();
    __base::__move_assign_alloc(__c); // this can throw
    this->__begin_ = __c.__begin_;
    this->__end_ = __c.__end_;
    this->__end_cap() = __c.__end_cap();
    __c.__begin_ = __c.__end_ = __c.__end_cap() = nullptr;
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1413 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->swap(this, &__c);
#endif
# 1415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

#endif // !_LIBCPP_CXX03_LANG
# 1418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<_Tp, _Allocator>&
vector<_Tp, _Allocator>::operator=(const vector& __x)
{
    if (this != &__x)
    {
        __base::__copy_assign_alloc(__x);
        assign(__x.__begin_, __x.__end_);
    }
    return *this;
}

template <class _Tp, class _Allocator>
template <class _InputIterator>
typename enable_if
<
     __is_cpp17_input_iterator  <_InputIterator>::value &&
    !__is_cpp17_forward_iterator<_InputIterator>::value &&
    is_constructible<
       _Tp,
       typename iterator_traits<_InputIterator>::reference>::value,
    void
>::type
vector<_Tp, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
{
    clear();
    for (; __first != __last; ++__first)
        __emplace_back(*__first);
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value &&
    is_constructible<
       _Tp,
       typename iterator_traits<_ForwardIterator>::reference>::value,
    void
>::type
vector<_Tp, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
{
    size_type __new_size = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__new_size <= capacity())
    {
        _ForwardIterator __mid = __last;
        bool __growing = false;
        if (__new_size > size())
        {
            __growing = true;
            __mid =  __first;
            _VSTD::advance(__mid, size());
        }
        pointer __m = _VSTD::copy(__first, __mid, this->__begin_);
        if (__growing)
            __construct_at_end(__mid, __last, __new_size - size());
        else
            this->__destruct_at_end(__m);
    }
    else
    {
        __vdeallocate();
        __vallocate(__recommend(__new_size));
        __construct_at_end(__first, __last, __new_size);
    }
    __invalidate_all_iterators();
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u)
{
    if (__n <= capacity())
    {
        size_type __s = size();
        _VSTD::fill_n(this->__begin_, _VSTD::min(__n, __s), __u);
        if (__n > __s)
            __construct_at_end(__n - __s, __u);
        else
            this->__destruct_at_end(this->__begin_ + __n);
    }
    else
    {
        __vdeallocate();
        __vallocate(__recommend(static_cast<size_type>(__n)));
        __construct_at_end(__n, __u);
    }
    __invalidate_all_iterators();
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::__make_iter(pointer __p) _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    return iterator(this, __p);
#else
# 1518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    return iterator(__p);
#endif
# 1520 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const _NOEXCEPT
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    return const_iterator(this, __p);
#else
# 1530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    return const_iterator(__p);
#endif
# 1532 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::begin() _NOEXCEPT
{
    return __make_iter(this->__begin_);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::begin() const _NOEXCEPT
{
    return __make_iter(this->__begin_);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::end() _NOEXCEPT
{
    return __make_iter(this->__end_);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::const_iterator
vector<_Tp, _Allocator>::end() const _NOEXCEPT
{
    return __make_iter(this->__end_);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::reference
vector<_Tp, _Allocator>::operator[](size_type __n) _NOEXCEPT
{
    _LIBCPP_ASSERT(__n < size(), "vector[] index out of bounds");
    return this->__begin_[__n];
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::const_reference
vector<_Tp, _Allocator>::operator[](size_type __n) const _NOEXCEPT
{
    _LIBCPP_ASSERT(__n < size(), "vector[] index out of bounds");
    return this->__begin_[__n];
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::reference
vector<_Tp, _Allocator>::at(size_type __n)
{
    if (__n >= size())
        this->__throw_out_of_range();
    return this->__begin_[__n];
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::const_reference
vector<_Tp, _Allocator>::at(size_type __n) const
{
    if (__n >= size())
        this->__throw_out_of_range();
    return this->__begin_[__n];
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::reserve(size_type __n)
{
    if (__n > capacity())
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__n, size(), __a);
        __swap_out_circular_buffer(__v);
    }
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT
{
    if (capacity() > size())
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1624 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
            allocator_type& __a = this->__alloc();
            __split_buffer<value_type, allocator_type&> __v(size(), size(), __a);
            __swap_out_circular_buffer(__v);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1633 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
}

template <class _Tp, class _Allocator>
template <class _Up>
void
#ifndef _LIBCPP_CXX03_LANG
vector<_Tp, _Allocator>::__push_back_slow_path(_Up&& __x)
#else
# 1642 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
vector<_Tp, _Allocator>::__push_back_slow_path(_Up& __x)
#endif
# 1644 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
{
    allocator_type& __a = this->__alloc();
    __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), size(), __a);
    // __v.push_back(_VSTD::forward<_Up>(__x));
    __alloc_traits::construct(__a, _VSTD::__to_address(__v.__end_), _VSTD::forward<_Up>(__x));
    __v.__end_++;
    __swap_out_circular_buffer(__v);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<_Tp, _Allocator>::push_back(const_reference __x)
{
    if (this->__end_ != this->__end_cap())
    {
        __construct_one_at_end(__x);
    }
    else
        __push_back_slow_path(__x);
}

#ifndef _LIBCPP_CXX03_LANG

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<_Tp, _Allocator>::push_back(value_type&& __x)
{
    if (this->__end_ < this->__end_cap())
    {
        __construct_one_at_end(_VSTD::move(__x));
    }
    else
        __push_back_slow_path(_VSTD::move(__x));
}

template <class _Tp, class _Allocator>
template <class... _Args>
void
vector<_Tp, _Allocator>::__emplace_back_slow_path(_Args&&... __args)
{
    allocator_type& __a = this->__alloc();
    __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), size(), __a);
//    __v.emplace_back(_VSTD::forward<_Args>(__args)...);
    __alloc_traits::construct(__a, _VSTD::__to_address(__v.__end_), _VSTD::forward<_Args>(__args)...);
    __v.__end_++;
    __swap_out_circular_buffer(__v);
}

template <class _Tp, class _Allocator>
template <class... _Args>
inline
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1698 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
typename vector<_Tp, _Allocator>::reference
#else
# 1700 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
void
#endif
# 1702 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
vector<_Tp, _Allocator>::emplace_back(_Args&&... __args)
{
    if (this->__end_ < this->__end_cap())
    {
        __construct_one_at_end(_VSTD::forward<_Args>(__args)...);
    }
    else
        __emplace_back_slow_path(_VSTD::forward<_Args>(__args)...);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    return this->back();
#endif
# 1713 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

#endif // !_LIBCPP_CXX03_LANG
# 1716 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
inline
void
vector<_Tp, _Allocator>::pop_back()
{
    _LIBCPP_ASSERT(!empty(), "vector::pop_back called on an empty vector");
    this->__destruct_at_end(this->__end_ - 1);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::erase(const_iterator __position)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::erase(iterator) called with an iterator not"
        " referring to this vector");
#endif
# 1736 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__position != end(),
        "vector::erase(iterator) called with a non-dereferenceable iterator");
    difference_type __ps = __position - cbegin();
    pointer __p = this->__begin_ + __ps;
    this->__destruct_at_end(_VSTD::move(__p + 1, this->__end_, __p));
    this->__invalidate_iterators_past(__p-1);
    iterator __r = __make_iter(__p);
    return __r;
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::erase(const_iterator __first, const_iterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1751 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this,
        "vector::erase(iterator,  iterator) called with an iterator not"
        " referring to this vector");
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__last) == this,
        "vector::erase(iterator,  iterator) called with an iterator not"
        " referring to this vector");
#endif
# 1758 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__first <= __last, "vector::erase(first, last) called with invalid range");
    pointer __p = this->__begin_ + (__first - begin());
    if (__first != __last) {
        this->__destruct_at_end(_VSTD::move(__p + (__last - __first), this->__end_, __p));
        this->__invalidate_iterators_past(__p - 1);
    }
    iterator __r = __make_iter(__p);
    return __r;
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::__move_range(pointer __from_s, pointer __from_e, pointer __to)
{
    pointer __old_last = this->__end_;
    difference_type __n = __old_last - __to;
    {
      pointer __i = __from_s + __n;
      _ConstructTransaction __tx(*this, __from_e - __i);
      for (pointer __pos = __tx.__pos_; __i < __from_e;
           ++__i, ++__pos, __tx.__pos_ = __pos) {
          __alloc_traits::construct(this->__alloc(),
                                    _VSTD::__to_address(__pos),
                                    _VSTD::move(*__i));
      }
    }
    _VSTD::move_backward(__from_s, __from_s + __n, __old_last);
}

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::insert(const_iterator __position, const_reference __x)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1792 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::insert(iterator, x) called with an iterator not"
        " referring to this vector");
#endif
# 1796 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    pointer __p = this->__begin_ + (__position - begin());
    if (this->__end_ < this->__end_cap())
    {
        if (__p == this->__end_)
        {
            __construct_one_at_end(__x);
        }
        else
        {
            __move_range(__p, this->__end_, __p + 1);
            const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x);
            if (__p <= __xr && __xr < this->__end_)
                ++__xr;
            *__p = *__xr;
        }
    }
    else
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
        __v.push_back(__x);
        __p = __swap_out_circular_buffer(__v, __p);
    }
    return __make_iter(__p);
}

#ifndef _LIBCPP_CXX03_LANG

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::insert(const_iterator __position, value_type&& __x)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1829 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::insert(iterator, x) called with an iterator not"
        " referring to this vector");
#endif
# 1833 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    pointer __p = this->__begin_ + (__position - begin());
    if (this->__end_ < this->__end_cap())
    {
        if (__p == this->__end_)
        {
            __construct_one_at_end(_VSTD::move(__x));
        }
        else
        {
            __move_range(__p, this->__end_, __p + 1);
            *__p = _VSTD::move(__x);
        }
    }
    else
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
        __v.push_back(_VSTD::move(__x));
        __p = __swap_out_circular_buffer(__v, __p);
    }
    return __make_iter(__p);
}

template <class _Tp, class _Allocator>
template <class... _Args>
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::emplace(const_iterator __position, _Args&&... __args)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1862 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::emplace(iterator, x) called with an iterator not"
        " referring to this vector");
#endif
# 1866 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    pointer __p = this->__begin_ + (__position - begin());
    if (this->__end_ < this->__end_cap())
    {
        if (__p == this->__end_)
        {
            __construct_one_at_end(_VSTD::forward<_Args>(__args)...);
        }
        else
        {
            __temp_value<value_type, _Allocator> __tmp(this->__alloc(), _VSTD::forward<_Args>(__args)...);
            __move_range(__p, this->__end_, __p + 1);
            *__p = _VSTD::move(__tmp.get());
        }
    }
    else
    {
        allocator_type& __a = this->__alloc();
        __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
        __v.emplace_back(_VSTD::forward<_Args>(__args)...);
        __p = __swap_out_circular_buffer(__v, __p);
    }
    return __make_iter(__p);
}

#endif // !_LIBCPP_CXX03_LANG
# 1891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
typename vector<_Tp, _Allocator>::iterator
vector<_Tp, _Allocator>::insert(const_iterator __position, size_type __n, const_reference __x)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1897 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::insert(iterator, n, x) called with an iterator not"
        " referring to this vector");
#endif
# 1901 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    pointer __p = this->__begin_ + (__position - begin());
    if (__n > 0)
    {
        if (__n <= static_cast<size_type>(this->__end_cap() - this->__end_))
        {
            size_type __old_n = __n;
            pointer __old_last = this->__end_;
            if (__n > static_cast<size_type>(this->__end_ - __p))
            {
                size_type __cx = __n - (this->__end_ - __p);
                __construct_at_end(__cx, __x);
                __n -= __cx;
            }
            if (__n > 0)
            {
                __move_range(__p, __old_last, __p + __old_n);
                const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x);
                if (__p <= __xr && __xr < this->__end_)
                    __xr += __old_n;
                _VSTD::fill_n(__p, __n, *__xr);
            }
        }
        else
        {
            allocator_type& __a = this->__alloc();
            __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), __p - this->__begin_, __a);
            __v.__construct_at_end(__n, __x);
            __p = __swap_out_circular_buffer(__v, __p);
        }
    }
    return __make_iter(__p);
}

template <class _Tp, class _Allocator>
template <class _InputIterator>
typename enable_if
<
     __is_cpp17_input_iterator  <_InputIterator>::value &&
    !__is_cpp17_forward_iterator<_InputIterator>::value &&
    is_constructible<
       _Tp,
       typename iterator_traits<_InputIterator>::reference>::value,
    typename vector<_Tp, _Allocator>::iterator
>::type
vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1948 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::insert(iterator, range) called with an iterator not"
        " referring to this vector");
#endif
# 1952 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    difference_type __off = __position - begin();
    pointer __p = this->__begin_ + __off;
    allocator_type& __a = this->__alloc();
    pointer __old_last = this->__end_;
    for (; this->__end_ != this->__end_cap() && __first != __last; ++__first)
    {
        __construct_one_at_end(*__first);
    }
    __split_buffer<value_type, allocator_type&> __v(__a);
    if (__first != __last)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 1967 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
            __v.__construct_at_end(__first, __last);
            difference_type __old_size = __old_last - this->__begin_;
            difference_type __old_p = __p - this->__begin_;
            reserve(__recommend(size() + __v.size()));
            __p = this->__begin_ + __old_p;
            __old_last = this->__begin_ + __old_size;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            erase(__make_iter(__old_last), end());
            throw;
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 1981 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
    __p = _VSTD::rotate(__p, __old_last, this->__end_);
    insert(__make_iter(__p), _VSTD::make_move_iterator(__v.begin()),
                             _VSTD::make_move_iterator(__v.end()));
    return begin() + __off;
}

template <class _Tp, class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value &&
    is_constructible<
       _Tp,
       typename iterator_traits<_ForwardIterator>::reference>::value,
    typename vector<_Tp, _Allocator>::iterator
>::type
vector<_Tp, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2001 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
        "vector::insert(iterator, range) called with an iterator not"
        " referring to this vector");
#endif
# 2005 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    pointer __p = this->__begin_ + (__position - begin());
    difference_type __n = _VSTD::distance(__first, __last);
    if (__n > 0)
    {
        if (__n <= this->__end_cap() - this->__end_)
        {
            size_type __old_n = __n;
            pointer __old_last = this->__end_;
            _ForwardIterator __m = __last;
            difference_type __dx = this->__end_ - __p;
            if (__n > __dx)
            {
                __m = __first;
                difference_type __diff = this->__end_ - __p;
                _VSTD::advance(__m, __diff);
                __construct_at_end(__m, __last, __n - __diff);
                __n = __dx;
            }
            if (__n > 0)
            {
                __move_range(__p, __old_last, __p + __old_n);
                _VSTD::copy(__first, __m, __p);
            }
        }
        else
        {
            allocator_type& __a = this->__alloc();
            __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), __p - this->__begin_, __a);
            __v.__construct_at_end(__first, __last);
            __p = __swap_out_circular_buffer(__v, __p);
        }
    }
    return __make_iter(__p);
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::resize(size_type __sz)
{
    size_type __cs = size();
    if (__cs < __sz)
        this->__append(__sz - __cs);
    else if (__cs > __sz)
        this->__destruct_at_end(this->__begin_ + __sz);
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x)
{
    size_type __cs = size();
    if (__cs < __sz)
        this->__append(__sz - __cs, __x);
    else if (__cs > __sz)
        this->__destruct_at_end(this->__begin_ + __sz);
}

template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::swap(vector& __x)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2066 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT
#else
# 2068 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                __is_nothrow_swappable<allocator_type>::value)
#endif
# 2071 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
{
    _LIBCPP_ASSERT(__alloc_traits::propagate_on_container_swap::value ||
                   this->__alloc() == __x.__alloc(),
                   "vector::swap: Either propagate_on_container_swap must be true"
                   " or the allocators must compare equal");
    _VSTD::swap(this->__begin_, __x.__begin_);
    _VSTD::swap(this->__end_, __x.__end_);
    _VSTD::swap(this->__end_cap(), __x.__end_cap());
    _VSTD::__swap_allocator(this->__alloc(), __x.__alloc(),
        integral_constant<bool,__alloc_traits::propagate_on_container_swap::value>());
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2082 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->swap(this, &__x);
#endif
# 2084 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

template <class _Tp, class _Allocator>
bool
vector<_Tp, _Allocator>::__invariants() const
{
    if (this->__begin_ == nullptr)
    {
        if (this->__end_ != nullptr || this->__end_cap() != nullptr)
            return false;
    }
    else
    {
        if (this->__begin_ > this->__end_)
            return false;
        if (this->__begin_ == this->__end_cap())
            return false;
        if (this->__end_ > this->__end_cap())
            return false;
    }
    return true;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2108 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
bool
vector<_Tp, _Allocator>::__dereferenceable(const const_iterator* __i) const
{
    return this->__begin_ <= __i->base() && __i->base() < this->__end_;
}

template <class _Tp, class _Allocator>
bool
vector<_Tp, _Allocator>::__decrementable(const const_iterator* __i) const
{
    return this->__begin_ < __i->base() && __i->base() <= this->__end_;
}

template <class _Tp, class _Allocator>
bool
vector<_Tp, _Allocator>::__addable(const const_iterator* __i, ptrdiff_t __n) const
{
    const_pointer __p = __i->base() + __n;
    return this->__begin_ <= __p && __p <= this->__end_;
}

template <class _Tp, class _Allocator>
bool
vector<_Tp, _Allocator>::__subscriptable(const const_iterator* __i, ptrdiff_t __n) const
{
    const_pointer __p = __i->base() + __n;
    return this->__begin_ <= __p && __p < this->__end_;
}

#endif // _LIBCPP_DEBUG_LEVEL == 2
# 2140 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<_Tp, _Allocator>::__invalidate_all_iterators()
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2147 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    __get_db()->__invalidate_all(this);
#endif
# 2149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}


template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<_Tp, _Allocator>::__invalidate_iterators_past(pointer __new_last) {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_DEBUG_LEVEL == 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
  __c_node* __c = __get_db()->__find_c_and_lock(this);
  for (__i_node** __p = __c->end_; __p != __c->beg_; ) {
    --__p;
    const_iterator* __i = static_cast<const_iterator*>((*__p)->__i_);
    if (__i->base() > __new_last) {
      (*__p)->__c_ = nullptr;
      if (--__c->end_ != __p)
        _VSTD::memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*));
    }
  }
  __get_db()->unlock();
#else
# 2169 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
  ((void)__new_last);
#endif
# 2171 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

// vector<bool>

template <class _Allocator> class vector<bool, _Allocator>;

template <class _Allocator> struct hash<vector<bool, _Allocator> >;

template <class _Allocator>
struct __has_storage_type<vector<bool, _Allocator> >
{
    static const bool value = true;
};

template <class _Allocator>
class _LIBCPP_TEMPLATE_VIS vector<bool, _Allocator>
    : private __vector_base_common<true>
{
public:
    typedef vector                                   __self;
    typedef bool                                     value_type;
    typedef _Allocator                               allocator_type;
    typedef allocator_traits<allocator_type>         __alloc_traits;
    typedef typename __alloc_traits::size_type       size_type;
    typedef typename __alloc_traits::difference_type difference_type;
    typedef size_type __storage_type;
    typedef __bit_iterator<vector, false>            pointer;
    typedef __bit_iterator<vector, true>             const_pointer;
    typedef pointer                                  iterator;
    typedef const_pointer                            const_iterator;
    typedef _VSTD::reverse_iterator<iterator>         reverse_iterator;
    typedef _VSTD::reverse_iterator<const_iterator>   const_reverse_iterator;

private:
    typedef typename __rebind_alloc_helper<__alloc_traits, __storage_type>::type __storage_allocator;
    typedef allocator_traits<__storage_allocator>    __storage_traits;
    typedef typename __storage_traits::pointer       __storage_pointer;
    typedef typename __storage_traits::const_pointer __const_storage_pointer;

    __storage_pointer                                      __begin_;
    size_type                                              __size_;
    __compressed_pair<size_type, __storage_allocator> __cap_alloc_;
public:
    typedef __bit_reference<vector>                  reference;
    typedef __bit_const_reference<vector>            const_reference;
private:
    _LIBCPP_INLINE_VISIBILITY
    size_type& __cap() _NOEXCEPT
        {return __cap_alloc_.first();}
    _LIBCPP_INLINE_VISIBILITY
    const size_type& __cap() const _NOEXCEPT
        {return __cap_alloc_.first();}
    _LIBCPP_INLINE_VISIBILITY
    __storage_allocator& __alloc() _NOEXCEPT
        {return __cap_alloc_.second();}
    _LIBCPP_INLINE_VISIBILITY
    const __storage_allocator& __alloc() const _NOEXCEPT
        {return __cap_alloc_.second();}

    static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);

    _LIBCPP_INLINE_VISIBILITY
    static size_type __internal_cap_to_external(size_type __n) _NOEXCEPT
        {return __n * __bits_per_word;}
    _LIBCPP_INLINE_VISIBILITY
    static size_type __external_cap_to_internal(size_type __n) _NOEXCEPT
        {return (__n - 1) / __bits_per_word + 1;}

public:
    _LIBCPP_INLINE_VISIBILITY
    vector() _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);

    _LIBCPP_INLINE_VISIBILITY explicit vector(const allocator_type& __a)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2245 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value);
#else
# 2247 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT;
#endif
# 2249 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    ~vector();
    explicit vector(size_type __n);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2252 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    explicit vector(size_type __n, const allocator_type& __a);
#endif
# 2254 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    vector(size_type __n, const value_type& __v);
    vector(size_type __n, const value_type& __v, const allocator_type& __a);
    template <class _InputIterator>
        vector(_InputIterator __first, _InputIterator __last,
               typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                                 !__is_cpp17_forward_iterator<_InputIterator>::value>::type* = 0);
    template <class _InputIterator>
        vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
               typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                                 !__is_cpp17_forward_iterator<_InputIterator>::value>::type* = 0);
    template <class _ForwardIterator>
        vector(_ForwardIterator __first, _ForwardIterator __last,
               typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0);
    template <class _ForwardIterator>
        vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
               typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0);

    vector(const vector& __v);
    vector(const vector& __v, const allocator_type& __a);
    vector& operator=(const vector& __v);

#ifndef _LIBCPP_CXX03_LANG
    vector(initializer_list<value_type> __il);
    vector(initializer_list<value_type> __il, const allocator_type& __a);

    _LIBCPP_INLINE_VISIBILITY
    vector(vector&& __v)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2282 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT;
#else
# 2284 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
#endif
# 2286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    vector(vector&& __v, const __identity_t<allocator_type>& __a);
    _LIBCPP_INLINE_VISIBILITY
    vector& operator=(vector&& __v)
        _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value));

    _LIBCPP_INLINE_VISIBILITY
    vector& operator=(initializer_list<value_type> __il)
        {assign(__il.begin(), __il.end()); return *this;}

#endif // !_LIBCPP_CXX03_LANG
# 2296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    template <class _InputIterator>
        typename enable_if
        <
            __is_cpp17_input_iterator<_InputIterator>::value &&
           !__is_cpp17_forward_iterator<_InputIterator>::value,
           void
        >::type
        assign(_InputIterator __first, _InputIterator __last);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
           void
        >::type
        assign(_ForwardIterator __first, _ForwardIterator __last);

    void assign(size_type __n, const value_type& __x);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    void assign(initializer_list<value_type> __il)
        {assign(__il.begin(), __il.end());}
#endif
# 2320 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY allocator_type get_allocator() const _NOEXCEPT
        {return allocator_type(this->__alloc());}

    size_type max_size() const _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    size_type capacity() const _NOEXCEPT
        {return __internal_cap_to_external(__cap());}
    _LIBCPP_INLINE_VISIBILITY
    size_type size() const _NOEXCEPT
        {return __size_;}
    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool empty() const _NOEXCEPT
        {return __size_ == 0;}
    void reserve(size_type __n);
    void shrink_to_fit() _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    iterator begin() _NOEXCEPT
        {return __make_iter(0);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT
        {return __make_iter(0);}
    _LIBCPP_INLINE_VISIBILITY
    iterator end() _NOEXCEPT
        {return __make_iter(__size_);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end()   const _NOEXCEPT
        {return __make_iter(__size_);}

    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator rbegin() _NOEXCEPT
        {return       reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin() const _NOEXCEPT
        {return const_reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    reverse_iterator rend() _NOEXCEPT
        {return       reverse_iterator(begin());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend()   const _NOEXCEPT
        {return const_reverse_iterator(begin());}

    _LIBCPP_INLINE_VISIBILITY
    const_iterator         cbegin()  const _NOEXCEPT
        {return __make_iter(0);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator         cend()    const _NOEXCEPT
        {return __make_iter(__size_);}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin() const _NOEXCEPT
        {return rbegin();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend()   const _NOEXCEPT
        {return rend();}

    _LIBCPP_INLINE_VISIBILITY reference       operator[](size_type __n)       {return __make_ref(__n);}
    _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const {return __make_ref(__n);}
    reference       at(size_type __n);
    const_reference at(size_type __n) const;

    _LIBCPP_INLINE_VISIBILITY reference       front()       {return __make_ref(0);}
    _LIBCPP_INLINE_VISIBILITY const_reference front() const {return __make_ref(0);}
    _LIBCPP_INLINE_VISIBILITY reference       back()        {return __make_ref(__size_ - 1);}
    _LIBCPP_INLINE_VISIBILITY const_reference back()  const {return __make_ref(__size_ - 1);}

    void push_back(const value_type& __x);
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    template <class... _Args>
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_INLINE_VISIBILITY reference emplace_back(_Args&&... __args)
#else
# 2392 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _LIBCPP_INLINE_VISIBILITY void      emplace_back(_Args&&... __args)
#endif
# 2394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    {
        push_back ( value_type ( _VSTD::forward<_Args>(__args)... ));
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2397 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        return this->back();
#endif
# 2399 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
#endif
# 2401 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY void pop_back() {--__size_;}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2405 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    template <class... _Args>
   _LIBCPP_INLINE_VISIBILITY iterator emplace(const_iterator position, _Args&&... __args)
        { return insert ( position, value_type ( _VSTD::forward<_Args>(__args)... )); }
#endif
# 2409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    iterator insert(const_iterator __position, const value_type& __x);
    iterator insert(const_iterator __position, size_type __n, const value_type& __x);
    iterator insert(const_iterator __position, size_type __n, const_reference __x);
    template <class _InputIterator>
        typename enable_if
        <
             __is_cpp17_input_iterator  <_InputIterator>::value &&
            !__is_cpp17_forward_iterator<_InputIterator>::value,
            iterator
        >::type
        insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            iterator
        >::type
        insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __position, initializer_list<value_type> __il)
        {return insert(__position, __il.begin(), __il.end());}
#endif
# 2434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

    _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);
    iterator erase(const_iterator __first, const_iterator __last);

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT {__size_ = 0;}

    void swap(vector&)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2443 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT;
#else
# 2445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                    __is_nothrow_swappable<allocator_type>::value);
#endif
# 2448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    static void swap(reference __x, reference __y) _NOEXCEPT { _VSTD::swap(__x, __y); }

    void resize(size_type __sz, value_type __x = false);
    void flip() _NOEXCEPT;

    bool __invariants() const;

private:
    _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
    void __vallocate(size_type __n);
    void __vdeallocate() _NOEXCEPT;
    _LIBCPP_INLINE_VISIBILITY
    static size_type __align_it(size_type __new_size) _NOEXCEPT
        {return __new_size + (__bits_per_word-1) & ~((size_type)__bits_per_word-1);}
    _LIBCPP_INLINE_VISIBILITY  size_type __recommend(size_type __new_size) const;
    _LIBCPP_INLINE_VISIBILITY void __construct_at_end(size_type __n, bool __x);
    template <class _ForwardIterator>
        typename enable_if
        <
            __is_cpp17_forward_iterator<_ForwardIterator>::value,
            void
        >::type
        __construct_at_end(_ForwardIterator __first, _ForwardIterator __last);
    void __append(size_type __n, const_reference __x);
    _LIBCPP_INLINE_VISIBILITY
    reference __make_ref(size_type __pos) _NOEXCEPT
        {return reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY
    const_reference __make_ref(size_type __pos) const _NOEXCEPT
        {return const_reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
    _LIBCPP_INLINE_VISIBILITY
    iterator __make_iter(size_type __pos) _NOEXCEPT
        {return iterator(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word));}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator __make_iter(size_type __pos) const _NOEXCEPT
        {return const_iterator(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word));}
    _LIBCPP_INLINE_VISIBILITY
    iterator __const_iterator_cast(const_iterator __p) _NOEXCEPT
        {return begin() + (__p - cbegin());}

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const vector& __v)
        {__copy_assign_alloc(__v, integral_constant<bool,
                      __storage_traits::propagate_on_container_copy_assignment::value>());}
    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const vector& __c, true_type)
        {
            if (__alloc() != __c.__alloc())
                __vdeallocate();
            __alloc() = __c.__alloc();
        }

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const vector&, false_type)
        {}

    void __move_assign(vector& __c, false_type);
    void __move_assign(vector& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(vector& __c)
        _NOEXCEPT_(
            !__storage_traits::propagate_on_container_move_assignment::value ||
            is_nothrow_move_assignable<allocator_type>::value)
        {__move_assign_alloc(__c, integral_constant<bool,
                      __storage_traits::propagate_on_container_move_assignment::value>());}
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(vector& __c, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
        {
            __alloc() = _VSTD::move(__c.__alloc());
        }

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(vector&, false_type)
        _NOEXCEPT
        {}

    size_t __hash_code() const _NOEXCEPT;

    friend class __bit_reference<vector>;
    friend class __bit_const_reference<vector>;
    friend class __bit_iterator<vector, false>;
    friend class __bit_iterator<vector, true>;
    friend struct __bit_array<vector>;
    friend struct _LIBCPP_TEMPLATE_VIS hash<vector>;
};

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<bool, _Allocator>::__invalidate_all_iterators()
{
}

//  Allocate space for __n objects
//  throws length_error if __n > max_size()
//  throws (probably bad_alloc) if memory run out
//  Precondition:  __begin_ == __end_ == __cap() == 0
//  Precondition:  __n > 0
//  Postcondition:  capacity() == __n
//  Postcondition:  size() == 0
template <class _Allocator>
void
vector<bool, _Allocator>::__vallocate(size_type __n)
{
    if (__n > max_size())
        this->__throw_length_error();
    __n = __external_cap_to_internal(__n);
    this->__begin_ = __storage_traits::allocate(this->__alloc(), __n);
    this->__size_ = 0;
    this->__cap() = __n;
}

template <class _Allocator>
void
vector<bool, _Allocator>::__vdeallocate() _NOEXCEPT
{
    if (this->__begin_ != nullptr)
    {
        __storage_traits::deallocate(this->__alloc(), this->__begin_, __cap());
        __invalidate_all_iterators();
        this->__begin_ = nullptr;
        this->__size_ = this->__cap() = 0;
    }
}

template <class _Allocator>
typename vector<bool, _Allocator>::size_type
vector<bool, _Allocator>::max_size() const _NOEXCEPT
{
    size_type __amax = __storage_traits::max_size(__alloc());
    size_type __nmax = numeric_limits<size_type>::max() / 2;  // end() >= begin(), always
    if (__nmax / __bits_per_word <= __amax)
        return __nmax;
    return __internal_cap_to_external(__amax);
}

//  Precondition:  __new_size > capacity()
template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<bool, _Allocator>::size_type
vector<bool, _Allocator>::__recommend(size_type __new_size) const
{
    const size_type __ms = max_size();
    if (__new_size > __ms)
        this->__throw_length_error();
    const size_type __cap = capacity();
    if (__cap >= __ms / 2)
        return __ms;
    return _VSTD::max(2 * __cap, __align_it(__new_size));
}

//  Default constructs __n objects starting at __end_
//  Precondition:  __n > 0
//  Precondition:  size() + __n <= capacity()
//  Postcondition:  size() == size() + __n
template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
vector<bool, _Allocator>::__construct_at_end(size_type __n, bool __x)
{
    size_type __old_size = this->__size_;
    this->__size_ += __n;
    if (__old_size == 0 || ((__old_size - 1) / __bits_per_word) != ((this->__size_ - 1) / __bits_per_word))
    {
        if (this->__size_ <= __bits_per_word)
            this->__begin_[0] = __storage_type(0);
        else
            this->__begin_[(this->__size_ - 1) / __bits_per_word] = __storage_type(0);
    }
    _VSTD::fill_n(__make_iter(__old_size), __n, __x);
}

template <class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    void
>::type
vector<bool, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last)
{
    size_type __old_size = this->__size_;
    this->__size_ += _VSTD::distance(__first, __last);
    if (__old_size == 0 || ((__old_size - 1) / __bits_per_word) != ((this->__size_ - 1) / __bits_per_word))
    {
        if (this->__size_ <= __bits_per_word)
            this->__begin_[0] = __storage_type(0);
        else
            this->__begin_[(this->__size_ - 1) / __bits_per_word] = __storage_type(0);
    }
    _VSTD::copy(__first, __last, __make_iter(__old_size));
}

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<bool, _Allocator>::vector()
    _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
}

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<bool, _Allocator>::vector(const allocator_type& __a)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
#else
# 2659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        _NOEXCEPT
#endif
# 2661 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
}

template <class _Allocator>
vector<bool, _Allocator>::vector(size_type __n)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, false);
    }
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
template <class _Allocator>
vector<bool, _Allocator>::vector(size_type __n, const allocator_type& __a)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, false);
    }
}
#endif
# 2694 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Allocator>
vector<bool, _Allocator>::vector(size_type __n, const value_type& __x)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, __x);
    }
}

template <class _Allocator>
vector<bool, _Allocator>::vector(size_type __n, const value_type& __x, const allocator_type& __a)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__n, __x);
    }
}

template <class _Allocator>
template <class _InputIterator>
vector<bool, _Allocator>::vector(_InputIterator __first, _InputIterator __last,
       typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                         !__is_cpp17_forward_iterator<_InputIterator>::value>::type*)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 2734 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        for (; __first != __last; ++__first)
            push_back(*__first);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        if (__begin_ != nullptr)
            __storage_traits::deallocate(__alloc(), __begin_, __cap());
        __invalidate_all_iterators();
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 2746 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

template <class _Allocator>
template <class _InputIterator>
vector<bool, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
       typename enable_if<__is_cpp17_input_iterator  <_InputIterator>::value &&
                         !__is_cpp17_forward_iterator<_InputIterator>::value>::type*)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 2761 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
        for (; __first != __last; ++__first)
            push_back(*__first);
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        if (__begin_ != nullptr)
            __storage_traits::deallocate(__alloc(), __begin_, __cap());
        __invalidate_all_iterators();
        throw;
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 2773 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
}

template <class _Allocator>
template <class _ForwardIterator>
vector<bool, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last,
                                typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type*)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__first, __last);
    }
}

template <class _Allocator>
template <class _ForwardIterator>
vector<bool, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
                                typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type*)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
    size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__first, __last);
    }
}

#ifndef _LIBCPP_CXX03_LANG

template <class _Allocator>
vector<bool, _Allocator>::vector(initializer_list<value_type> __il)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __default_init_tag())
{
    size_type __n = static_cast<size_type>(__il.size());
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__il.begin(), __il.end());
    }
}

template <class _Allocator>
vector<bool, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, static_cast<__storage_allocator>(__a))
{
    size_type __n = static_cast<size_type>(__il.size());
    if (__n > 0)
    {
        __vallocate(__n);
        __construct_at_end(__il.begin(), __il.end());
    }
}

#endif // _LIBCPP_CXX03_LANG
# 2838 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Allocator>
vector<bool, _Allocator>::~vector()
{
    if (__begin_ != nullptr)
        __storage_traits::deallocate(__alloc(), __begin_, __cap());
    __invalidate_all_iterators();
}

template <class _Allocator>
vector<bool, _Allocator>::vector(const vector& __v)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __storage_traits::select_on_container_copy_construction(__v.__alloc()))
{
    if (__v.size() > 0)
    {
        __vallocate(__v.size());
        __construct_at_end(__v.begin(), __v.end());
    }
}

template <class _Allocator>
vector<bool, _Allocator>::vector(const vector& __v, const allocator_type& __a)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __a)
{
    if (__v.size() > 0)
    {
        __vallocate(__v.size());
        __construct_at_end(__v.begin(), __v.end());
    }
}

template <class _Allocator>
vector<bool, _Allocator>&
vector<bool, _Allocator>::operator=(const vector& __v)
{
    if (this != &__v)
    {
        __copy_assign_alloc(__v);
        if (__v.__size_)
        {
            if (__v.__size_ > capacity())
            {
                __vdeallocate();
                __vallocate(__v.__size_);
            }
            _VSTD::copy(__v.__begin_, __v.__begin_ + __external_cap_to_internal(__v.__size_), __begin_);
        }
        __size_ = __v.__size_;
    }
    return *this;
}

#ifndef _LIBCPP_CXX03_LANG

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY vector<bool, _Allocator>::vector(vector&& __v)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2899 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT
#else
# 2901 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
#endif
# 2903 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    : __begin_(__v.__begin_),
      __size_(__v.__size_),
      __cap_alloc_(_VSTD::move(__v.__cap_alloc_)) {
    __v.__begin_ = nullptr;
    __v.__size_ = 0;
    __v.__cap() = 0;
}

template <class _Allocator>
vector<bool, _Allocator>::vector(vector&& __v, const __identity_t<allocator_type>& __a)
    : __begin_(nullptr),
      __size_(0),
      __cap_alloc_(0, __a)
{
    if (__a == allocator_type(__v.__alloc()))
    {
        this->__begin_ = __v.__begin_;
        this->__size_ = __v.__size_;
        this->__cap() = __v.__cap();
        __v.__begin_ = nullptr;
        __v.__cap() = __v.__size_ = 0;
    }
    else if (__v.size() > 0)
    {
        __vallocate(__v.size());
        __construct_at_end(__v.begin(), __v.end());
    }
}

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
vector<bool, _Allocator>&
vector<bool, _Allocator>::operator=(vector&& __v)
    _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value))
{
    __move_assign(__v, integral_constant<bool,
          __storage_traits::propagate_on_container_move_assignment::value>());
    return *this;
}

template <class _Allocator>
void
vector<bool, _Allocator>::__move_assign(vector& __c, false_type)
{
    if (__alloc() != __c.__alloc())
        assign(__c.begin(), __c.end());
    else
        __move_assign(__c, true_type());
}

template <class _Allocator>
void
vector<bool, _Allocator>::__move_assign(vector& __c, true_type)
    _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
{
    __vdeallocate();
    __move_assign_alloc(__c);
    this->__begin_ = __c.__begin_;
    this->__size_ = __c.__size_;
    this->__cap() = __c.__cap();
    __c.__begin_ = nullptr;
    __c.__cap() = __c.__size_ = 0;
}

#endif // !_LIBCPP_CXX03_LANG
# 2968 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

template <class _Allocator>
void
vector<bool, _Allocator>::assign(size_type __n, const value_type& __x)
{
    __size_ = 0;
    if (__n > 0)
    {
        size_type __c = capacity();
        if (__n <= __c)
            __size_ = __n;
        else
        {
            vector __v(__alloc());
            __v.reserve(__recommend(__n));
            __v.__size_ = __n;
            swap(__v);
        }
        _VSTD::fill_n(begin(), __n, __x);
    }
  __invalidate_all_iterators();
}

template <class _Allocator>
template <class _InputIterator>
typename enable_if
<
    __is_cpp17_input_iterator<_InputIterator>::value &&
   !__is_cpp17_forward_iterator<_InputIterator>::value,
   void
>::type
vector<bool, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
{
    clear();
    for (; __first != __last; ++__first)
        push_back(*__first);
}

template <class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
   void
>::type
vector<bool, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
{
    clear();
    difference_type __ns = _VSTD::distance(__first, __last);
    _LIBCPP_ASSERT(__ns >= 0, "invalid range specified");
    const size_t __n = static_cast<size_type>(__ns);
    if (__n)
    {
        if (__n > capacity())
        {
            __vdeallocate();
            __vallocate(__n);
        }
        __construct_at_end(__first, __last);
    }
}

template <class _Allocator>
void
vector<bool, _Allocator>::reserve(size_type __n)
{
    if (__n > capacity())
    {
        vector __v(this->__alloc());
        __v.__vallocate(__n);
        __v.__construct_at_end(this->begin(), this->end());
        swap(__v);
        __invalidate_all_iterators();
    }
}

template <class _Allocator>
void
vector<bool, _Allocator>::shrink_to_fit() _NOEXCEPT
{
    if (__external_cap_to_internal(size()) > __cap())
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 3054 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
            vector(*this, allocator_type(__alloc())).swap(*this);
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 3061 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
}

template <class _Allocator>
typename vector<bool, _Allocator>::reference
vector<bool, _Allocator>::at(size_type __n)
{
    if (__n >= size())
        this->__throw_out_of_range();
    return (*this)[__n];
}

template <class _Allocator>
typename vector<bool, _Allocator>::const_reference
vector<bool, _Allocator>::at(size_type __n) const
{
    if (__n >= size())
        this->__throw_out_of_range();
    return (*this)[__n];
}

template <class _Allocator>
void
vector<bool, _Allocator>::push_back(const value_type& __x)
{
    if (this->__size_ == this->capacity())
        reserve(__recommend(this->__size_ + 1));
    ++this->__size_;
    back() = __x;
}

template <class _Allocator>
typename vector<bool, _Allocator>::iterator
vector<bool, _Allocator>::insert(const_iterator __position, const value_type& __x)
{
    iterator __r;
    if (size() < capacity())
    {
        const_iterator __old_end = end();
        ++__size_;
        _VSTD::copy_backward(__position, __old_end, end());
        __r = __const_iterator_cast(__position);
    }
    else
    {
        vector __v(__alloc());
        __v.reserve(__recommend(__size_ + 1));
        __v.__size_ = __size_ + 1;
        __r = _VSTD::copy(cbegin(), __position, __v.begin());
        _VSTD::copy_backward(__position, cend(), __v.end());
        swap(__v);
    }
    *__r = __x;
    return __r;
}

template <class _Allocator>
typename vector<bool, _Allocator>::iterator
vector<bool, _Allocator>::insert(const_iterator __position, size_type __n, const value_type& __x)
{
    iterator __r;
    size_type __c = capacity();
    if (__n <= __c && size() <= __c - __n)
    {
        const_iterator __old_end = end();
        __size_ += __n;
        _VSTD::copy_backward(__position, __old_end, end());
        __r = __const_iterator_cast(__position);
    }
    else
    {
        vector __v(__alloc());
        __v.reserve(__recommend(__size_ + __n));
        __v.__size_ = __size_ + __n;
        __r = _VSTD::copy(cbegin(), __position, __v.begin());
        _VSTD::copy_backward(__position, cend(), __v.end());
        swap(__v);
    }
    _VSTD::fill_n(__r, __n, __x);
    return __r;
}

template <class _Allocator>
template <class _InputIterator>
typename enable_if
<
     __is_cpp17_input_iterator  <_InputIterator>::value &&
    !__is_cpp17_forward_iterator<_InputIterator>::value,
    typename vector<bool, _Allocator>::iterator
>::type
vector<bool, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
{
    difference_type __off = __position - begin();
    iterator __p = __const_iterator_cast(__position);
    iterator __old_end = end();
    for (; size() != capacity() && __first != __last; ++__first)
    {
        ++this->__size_;
        back() = *__first;
    }
    vector __v(__alloc());
    if (__first != __last)
    {
#ifndef _LIBCPP_NO_EXCEPTIONS
        try
        {
#endif // _LIBCPP_NO_EXCEPTIONS
# 3168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
            __v.assign(__first, __last);
            difference_type __old_size = static_cast<difference_type>(__old_end - begin());
            difference_type __old_p = __p - begin();
            reserve(__recommend(size() + __v.size()));
            __p = begin() + __old_p;
            __old_end = begin() + __old_size;
#ifndef _LIBCPP_NO_EXCEPTIONS
        }
        catch (...)
        {
            erase(__old_end, end());
            throw;
        }
#endif // _LIBCPP_NO_EXCEPTIONS
# 3182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    }
    __p = _VSTD::rotate(__p, __old_end, end());
    insert(__p, __v.begin(), __v.end());
    return begin() + __off;
}

template <class _Allocator>
template <class _ForwardIterator>
typename enable_if
<
    __is_cpp17_forward_iterator<_ForwardIterator>::value,
    typename vector<bool, _Allocator>::iterator
>::type
vector<bool, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
{
    const difference_type __n_signed = _VSTD::distance(__first, __last);
    _LIBCPP_ASSERT(__n_signed >= 0, "invalid range specified");
    const size_type __n = static_cast<size_type>(__n_signed);
    iterator __r;
    size_type __c = capacity();
    if (__n <= __c && size() <= __c - __n)
    {
        const_iterator __old_end = end();
        __size_ += __n;
        _VSTD::copy_backward(__position, __old_end, end());
        __r = __const_iterator_cast(__position);
    }
    else
    {
        vector __v(__alloc());
        __v.reserve(__recommend(__size_ + __n));
        __v.__size_ = __size_ + __n;
        __r = _VSTD::copy(cbegin(), __position, __v.begin());
        _VSTD::copy_backward(__position, cend(), __v.end());
        swap(__v);
    }
    _VSTD::copy(__first, __last, __r);
    return __r;
}

template <class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
typename vector<bool, _Allocator>::iterator
vector<bool, _Allocator>::erase(const_iterator __position)
{
    iterator __r = __const_iterator_cast(__position);
    _VSTD::copy(__position + 1, this->cend(), __r);
    --__size_;
    return __r;
}

template <class _Allocator>
typename vector<bool, _Allocator>::iterator
vector<bool, _Allocator>::erase(const_iterator __first, const_iterator __last)
{
    iterator __r = __const_iterator_cast(__first);
    difference_type __d = __last - __first;
    _VSTD::copy(__last, this->cend(), __r);
    __size_ -= __d;
    return __r;
}

template <class _Allocator>
void
vector<bool, _Allocator>::swap(vector& __x)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER >= 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3248 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT
#else
# 3250 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
    _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
                __is_nothrow_swappable<allocator_type>::value)
#endif
# 3253 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
{
    _VSTD::swap(this->__begin_, __x.__begin_);
    _VSTD::swap(this->__size_, __x.__size_);
    _VSTD::swap(this->__cap(), __x.__cap());
    _VSTD::__swap_allocator(this->__alloc(), __x.__alloc(),
        integral_constant<bool, __alloc_traits::propagate_on_container_swap::value>());
}

template <class _Allocator>
void
vector<bool, _Allocator>::resize(size_type __sz, value_type __x)
{
    size_type __cs = size();
    if (__cs < __sz)
    {
        iterator __r;
        size_type __c = capacity();
        size_type __n = __sz - __cs;
        if (__n <= __c && __cs <= __c - __n)
        {
            __r = end();
            __size_ += __n;
        }
        else
        {
            vector __v(__alloc());
            __v.reserve(__recommend(__size_ + __n));
            __v.__size_ = __size_ + __n;
            __r = _VSTD::copy(cbegin(), cend(), __v.begin());
            swap(__v);
        }
        _VSTD::fill_n(__r, __n, __x);
    }
    else
        __size_ = __sz;
}

template <class _Allocator>
void
vector<bool, _Allocator>::flip() _NOEXCEPT
{
    // do middle whole words
    size_type __n = __size_;
    __storage_pointer __p = __begin_;
    for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
        *__p = ~*__p;
    // do last partial word
    if (__n > 0)
    {
        __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __storage_type __b = *__p & __m;
        *__p &= ~__m;
        *__p |= ~__b & __m;
    }
}

template <class _Allocator>
bool
vector<bool, _Allocator>::__invariants() const
{
    if (this->__begin_ == nullptr)
    {
        if (this->__size_ != 0 || this->__cap() != 0)
            return false;
    }
    else
    {
        if (this->__cap() == 0)
            return false;
        if (this->__size_ > this->capacity())
            return false;
    }
    return true;
}

template <class _Allocator>
size_t
vector<bool, _Allocator>::__hash_code() const _NOEXCEPT
{
    size_t __h = 0;
    // do middle whole words
    size_type __n = __size_;
    __storage_pointer __p = __begin_;
    for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
        __h ^= *__p;
    // do last partial word
    if (__n > 0)
    {
        const __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
        __h ^= *__p & __m;
    }
    return __h;
}

template <class _Allocator>
struct _LIBCPP_TEMPLATE_VIS hash<vector<bool, _Allocator> >
    : public unary_function<vector<bool, _Allocator>, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const vector<bool, _Allocator>& __vec) const _NOEXCEPT
        {return __vec.__hash_code();}
};

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    const typename vector<_Tp, _Allocator>::size_type __sz = __x.size();
    return __sz == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin());
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    return !(__x == __y);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end());
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    return __y < __x;
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    return !(__x < __y);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
{
    return !(__y < __x);
}

template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y)
    _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 3415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
template <class _Tp, class _Allocator, class _Up>
inline _LIBCPP_INLINE_VISIBILITY typename vector<_Tp, _Allocator>::size_type
erase(vector<_Tp, _Allocator>& __c, const _Up& __v) {
  auto __old_size = __c.size();
  __c.erase(_VSTD::remove(__c.begin(), __c.end(), __v), __c.end());
  return __old_size - __c.size();
}

template <class _Tp, class _Allocator, class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY typename vector<_Tp, _Allocator>::size_type
erase_if(vector<_Tp, _Allocator>& __c, _Predicate __pred) {
  auto __old_size = __c.size();
  __c.erase(_VSTD::remove_if(__c.begin(), __c.end(), __pred), __c.end());
  return __old_size - __c.size();
}
#endif
# 3431 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP_VECTOR
# 3437 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/vector" 3
# 289 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2

#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-port-arch.h"
#endif /* expanded by -frewrite-includes */
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h" 1
// Copyright 2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// The Google C++ Testing and Mocking Framework (Google Test)
//
// This header file defines the GTEST_OS_* macro.
// It is separate from gtest-port.h so that custom/gtest-port.h can include it.

#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_

// Determines the platform on which Google Test is compiled.
#ifdef __CYGWIN__
# define GTEST_OS_CYGWIN 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __SYMBIAN32__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_SYMBIAN 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined _WIN32
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_WINDOWS 1
# ifdef _WIN32_WCE
#  define GTEST_OS_WINDOWS_MOBILE 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__MINGW__) || defined(__MINGW32__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#  define GTEST_OS_WINDOWS_MINGW 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(WINAPI_FAMILY)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#if 0 /* expanded by -frewrite-includes */
#  include <winapifamily.h>
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#if 0 /* disabled by -frewrite-includes */
#  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#   define GTEST_OS_WINDOWS_DESKTOP 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#   define GTEST_OS_WINDOWS_PHONE 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#   define GTEST_OS_WINDOWS_RT 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#  elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#   define GTEST_OS_WINDOWS_PHONE 1
#   define GTEST_OS_WINDOWS_TV_TITLE 1
#  else
# 61 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
    // WINAPI_FAMILY defined but no known partition matched.
    // Default to desktop.
#   define GTEST_OS_WINDOWS_DESKTOP 1
#  endif
# 65 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# else
# 66 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#  define GTEST_OS_WINDOWS_DESKTOP 1
# endif  // _WIN32_WCE
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __APPLE__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 69 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_MAC 1
#if 0 /* disabled by -frewrite-includes */
# if TARGET_OS_IPHONE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 71 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#  define GTEST_OS_IOS 1
# endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __FreeBSD__
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_FREEBSD 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __Fuchsia__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_FUCHSIA 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __linux__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_LINUX 1
#if 0 /* disabled by -frewrite-includes */
# if defined __ANDROID__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#  define GTEST_OS_LINUX_ANDROID 1
# endif
# 82 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __MVS__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_ZOS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__sun) && defined(__SVR4)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 85 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_SOLARIS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_AIX)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_AIX 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__hpux)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_HPUX 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __native_client__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 91 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_NACL 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __NetBSD__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_NETBSD 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __OpenBSD__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_OPENBSD 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __QNX__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# define GTEST_OS_QNX 1
#endif  // __CYGWIN__
# 99 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"

#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
# 101 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port-arch.h"
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/custom/gtest-port.h"
#endif /* expanded by -frewrite-includes */
# 291 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/custom/gtest-port.h" 1
// Copyright 2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Injection point for custom user configurations. See README for details
//
// ** Custom implementation starts here **

#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_

#endif  // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/custom/gtest-port.h"
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_DEV_EMAIL_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
# define GTEST_FLAG_PREFIX_ "gtest_"
# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
# define GTEST_NAME_ "Google Test"
# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
#endif  // !defined(GTEST_DEV_EMAIL_)
# 301 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 303 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
#endif  // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
# 305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines the version of gcc that is used to compile this.
#ifdef __GNUC__
// 40302 means version 4.3.2.
# define GTEST_GCC_VER_ \
    (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
#endif  // __GNUC__
# 312 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Macros for disabling Microsoft Visual C++ warnings.
//
//   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
//   /* code that triggers warnings C4800 and C4385 */
//   GTEST_DISABLE_MSC_WARNINGS_POP_()
#if 0 /* disabled by -frewrite-includes */
#if _MSC_VER >= 1400
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 319 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
    __pragma(warning(push))                        \
    __pragma(warning(disable: warnings))
# define GTEST_DISABLE_MSC_WARNINGS_POP_()          \
    __pragma(warning(pop))
#else
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Older versions of MSVC don't have __pragma.
# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
# define GTEST_DISABLE_MSC_WARNINGS_POP_()
#endif
# 329 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Clang on Windows does not understand MSVC's pragma warning.
// We need clang-specific way to disable function deprecation warning.
#ifdef __clang__
# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()                         \
    _Pragma("clang diagnostic push")                                  \
    _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
    _Pragma("clang diagnostic ignored \"-Wdeprecated-implementations\"")
#define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
    _Pragma("clang diagnostic pop")
#else
# 340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
    GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
# define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
    GTEST_DISABLE_MSC_WARNINGS_POP_()
#endif
# 345 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_LANG_CXX11
// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when
// -std={c,gnu}++{0x,11} is passed.  The C++11 standard specifies a
// value for __cplusplus, and recent versions of clang, gcc, and
// probably other compilers set that too in C++11 mode.
#if 0 /* disabled by -frewrite-includes */
# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L || _MSC_VER >= 1900
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 352 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Compiling in at least C++11 mode.
#  define GTEST_LANG_CXX11 1
# else
# 355 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_LANG_CXX11 0
# endif
# 357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 358 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Distinct from C++11 language support, some environments don't provide
// proper C++11 library support. Notably, it's possible to build in
// C++11 mode when targeting Mac OS X 10.6, which has an old libstdc++
// with no C++11 support.
//
// libstdc++ has sufficient C++11 support as of GCC 4.6.0, __GLIBCXX__
// 20110325, but maintenance releases in the 4.4 and 4.5 series followed
// this date, so check for those versions by their date stamps.
// https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.versioning
#if 0 /* disabled by -frewrite-includes */
#if GTEST_LANG_CXX11 && \
    (!defined(__GLIBCXX__) || ( \
        __GLIBCXX__ >= 20110325ul &&  /* GCC >= 4.6.0 */ \
        /* Blacklist of patch releases of older branches: */ \
        __GLIBCXX__ != 20110416ul &&  /* GCC 4.4.6 */ \
        __GLIBCXX__ != 20120313ul &&  /* GCC 4.4.7 */ \
        __GLIBCXX__ != 20110428ul &&  /* GCC 4.5.3 */ \
        __GLIBCXX__ != 20120702ul))   /* GCC 4.5.4 */
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_STDLIB_CXX11 1
#endif
# 378 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Only use C++11 library features if the library provides them.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_STDLIB_CXX11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_STD_BEGIN_AND_END_ 1
# define GTEST_HAS_STD_FORWARD_LIST_ 1
#if 0 /* disabled by -frewrite-includes */
# if !defined(_MSC_VER) || (_MSC_FULL_VER >= 190023824)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// works only with VS2015U2 and better
#   define GTEST_HAS_STD_FUNCTION_ 1
# endif
# 387 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_STD_INITIALIZER_LIST_ 1
# define GTEST_HAS_STD_MOVE_ 1
# define GTEST_HAS_STD_UNIQUE_PTR_ 1
# define GTEST_HAS_STD_SHARED_PTR_ 1
# define GTEST_HAS_UNORDERED_MAP_ 1
# define GTEST_HAS_UNORDERED_SET_ 1
#endif
# 394 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// C++11 specifies that <tuple> provides std::tuple.
// Some platforms still might not have it, however.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_LANG_CXX11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_STD_TUPLE_ 1
#if 0 /* disabled by -frewrite-includes */
# if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 400 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Inspired by
// https://clang.llvm.org/docs/LanguageExtensions.html#include-file-checking-macros
#if 0 /* disabled by -frewrite-includes */
#  if defined(__has_include) && !__has_include(<tuple>)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 403 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   undef GTEST_HAS_STD_TUPLE_
#  endif
# 405 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 406 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Inspired by boost/config/stdlib/dinkumware.hpp
#if 0 /* disabled by -frewrite-includes */
#  if defined(_CPPLIB_VER) && _CPPLIB_VER < 520
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 408 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   undef GTEST_HAS_STD_TUPLE_
#  endif
# 410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__GLIBCXX__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Inspired by boost/config/stdlib/libstdcpp3.hpp,
// http://gcc.gnu.org/gcc-4.2/changes.html and
// https://web.archive.org/web/20140227044429/gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.200x
#if 0 /* disabled by -frewrite-includes */
#  if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   undef GTEST_HAS_STD_TUPLE_
#  endif
# 417 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# endif
# 418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 419 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Brings in definitions for functions used in the testing::internal::posix
// namespace (read, write, close, chdir, isatty, stat). We do not currently
// use them on Windows Mobile.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 424 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if !GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#  include <direct.h>
#endif /* expanded by -frewrite-includes */
# 425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#  include <io.h>
#endif /* expanded by -frewrite-includes */
# 426 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 427 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# endif
# 428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// In order to avoid having to include <windows.h>, use forward declaration
#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS_MINGW && !defined(__MINGW64_VERSION_MAJOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
// separate (equivalent) structs, instead of using typedef
typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
#else
# 434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
// This assumption is verified by
// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
#endif
# 439 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#else
# 440 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// This assumes that non-Windows OSes provide unistd.h. For OSes where this
// is not the case, we need to include headers that provide the functions
// mentioned above.
#if 0 /* expanded by -frewrite-includes */
# include <unistd.h>
#endif /* expanded by -frewrite-includes */
# 443 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1991, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
 * $FreeBSD$
 */

#ifndef _UNISTD_H_
#define	_UNISTD_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/types.h>			/* XXX adds too much pollution. */
#endif /* expanded by -frewrite-includes */
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/unistd.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)unistd.h	8.2 (Berkeley) 1/7/94
 * $FreeBSD$
 */

#ifndef _SYS_UNISTD_H_
#define	_SYS_UNISTD_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
# 39 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

/*
 * POSIX options and option groups we unconditionally do or don't
 * implement.  Those options which are implemented (or not) entirely
 * in user mode are defined in <unistd.h>.  Please keep this list in
 * alphabetical order.
 *
 * Anything which is defined as zero below **must** have an
 * implementation for the corresponding sysconf() which is able to
 * determine conclusively whether or not the feature is supported.
 * Anything which is defined as other than -1 below **must** have
 * complete headers, types, and function declarations as specified by
 * the POSIX standard; however, if the relevant sysconf() function
 * returns -1, the functions may be stubbed out.
 */
#define	_POSIX_ADVISORY_INFO		200112L
#define	_POSIX_ASYNCHRONOUS_IO		200112L
#define	_POSIX_CHOWN_RESTRICTED		1
#define	_POSIX_CLOCK_SELECTION		(-1)
#define	_POSIX_CPUTIME			200112L
#define	_POSIX_FSYNC			200112L
#define	_POSIX_IPV6			0
#define	_POSIX_JOB_CONTROL		1
#define	_POSIX_MAPPED_FILES		200112L
#define	_POSIX_MEMLOCK			(-1)
#define	_POSIX_MEMLOCK_RANGE		200112L
#define	_POSIX_MEMORY_PROTECTION	200112L
#define	_POSIX_MESSAGE_PASSING		200112L
#define	_POSIX_MONOTONIC_CLOCK		200112L
#define	_POSIX_NO_TRUNC			1
#define	_POSIX_PRIORITIZED_IO		(-1)
#define	_POSIX_PRIORITY_SCHEDULING	0
#define	_POSIX_RAW_SOCKETS		200112L
#define	_POSIX_REALTIME_SIGNALS		200112L
#define	_POSIX_SEMAPHORES		200112L
#define	_POSIX_SHARED_MEMORY_OBJECTS	200112L
#define	_POSIX_SPORADIC_SERVER		(-1)
#define	_POSIX_SYNCHRONIZED_IO		(-1)
#define	_POSIX_TIMEOUTS			200112L
#define	_POSIX_TIMERS			200112L
#define	_POSIX_TYPED_MEMORY_OBJECTS	(-1)
#define	_POSIX_VDISABLE			0xff

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 83 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#define	_XOPEN_SHM			1
#define	_XOPEN_STREAMS			(-1)
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

/*
 * Although we have saved user/group IDs, we do not use them in setuid
 * as described in POSIX 1003.1, because the feature does not work for
 * root.  We use the saved IDs in seteuid/setegid, which are not currently
 * part of the POSIX 1003.1 specification.  XXX revisit for 1003.1-2001
 * as this is now mandatory.
 */
#ifdef	_NOT_AVAILABLE
#define	_POSIX_SAVED_IDS	1 /* saved set-user-ID and set-group-ID */
#endif
# 97 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

/* Define the POSIX.1 version we target for compliance. */
#define	_POSIX_VERSION		200112L

/* access function */
#define	F_OK		0	/* test for existence of file */
#define	X_OK		0x01	/* test for execute or search permission */
#define	W_OK		0x02	/* test for write permission */
#define	R_OK		0x04	/* test for read permission */

/* whence values for lseek(2) */
#ifndef SEEK_SET
#define	SEEK_SET	0	/* set file offset to offset */
#define	SEEK_CUR	1	/* set file offset to current plus offset */
#define	SEEK_END	2	/* set file offset to EOF plus offset */
#endif
# 113 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 114 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#define	SEEK_DATA	3	/* set file offset to next data past offset */
#define	SEEK_HOLE	4	/* set file offset to next hole past offset */
#endif
# 117 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

#ifndef _POSIX_SOURCE
/* whence values for lseek(2); renamed by POSIX 1003.1 */
#define	L_SET		SEEK_SET
#define	L_INCR		SEEK_CUR
#define	L_XTND		SEEK_END
#endif
# 124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

/* configurable pathname variables */
#define	_PC_LINK_MAX		 1
#define	_PC_MAX_CANON		 2
#define	_PC_MAX_INPUT		 3
#define	_PC_NAME_MAX		 4
#define	_PC_PATH_MAX		 5
#define	_PC_PIPE_BUF		 6
#define	_PC_CHOWN_RESTRICTED	 7
#define	_PC_NO_TRUNC		 8
#define	_PC_VDISABLE		 9

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 137 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#define	_PC_ASYNC_IO		53
#define	_PC_PRIO_IO		54
#define	_PC_SYNC_IO		55
#endif
# 141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 143 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#define	_PC_ALLOC_SIZE_MIN	10
#define	_PC_FILESIZEBITS	12
#define	_PC_REC_INCR_XFER_SIZE	14
#define	_PC_REC_MAX_XFER_SIZE	15
#define	_PC_REC_MIN_XFER_SIZE	16
#define	_PC_REC_XFER_ALIGN	17
#define	_PC_SYMLINK_MAX		18
#endif
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
#define	_PC_ACL_EXTENDED	59
#define	_PC_ACL_PATH_MAX	60
#define	_PC_CAP_PRESENT		61
#define	_PC_INF_PRESENT		62
#define	_PC_MAC_PRESENT		63
#define	_PC_ACL_NFS4		64
#endif
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

/* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */
#define	_PC_MIN_HOLE_SIZE	21

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
/*
 * rfork() options.
 *
 * XXX currently, some operations without RFPROC set are not supported.
 */
#define	RFNAMEG		(1<<0)	/* UNIMPL new plan9 `name space' */
#define	RFENVG		(1<<1)	/* UNIMPL copy plan9 `env space' */
#define	RFFDG		(1<<2)	/* copy fd table */
#define	RFNOTEG		(1<<3)	/* UNIMPL create new plan9 `note group' */
#define	RFPROC		(1<<4)	/* change child (else changes curproc) */
#define	RFMEM		(1<<5)	/* share `address space' */
#define	RFNOWAIT	(1<<6)	/* give child to init */
#define	RFCNAMEG	(1<<10)	/* UNIMPL zero plan9 `name space' */
#define	RFCENVG		(1<<11)	/* UNIMPL zero plan9 `env space' */
#define	RFCFDG		(1<<12)	/* close all fds, zero fd table */
#define	RFTHREAD	(1<<13)	/* enable kernel thread support */
#define	RFSIGSHARE	(1<<14)	/* share signal handlers */
#define	RFLINUXTHPN	(1<<16)	/* do linux clone exit parent notification */
#define	RFSTOPPED	(1<<17)	/* leave child in a stopped state */
#define	RFHIGHPID	(1<<18)	/* use a pid higher than 10 (idleproc) */
#define	RFTSIGZMB	(1<<19)	/* select signal for exit parent notification */
#define	RFTSIGSHIFT	20	/* selected signal number is in bits 20-27  */
#define	RFTSIGMASK	0xFF
#define	RFTSIGNUM(flags)	(((flags) >> RFTSIGSHIFT) & RFTSIGMASK)
#define	RFTSIGFLAGS(signum)	((signum) << RFTSIGSHIFT)
#define	RFPROCDESC	(1<<28)	/* return a process descriptor */
/* kernel: parent sleeps until child exits (vfork) */
#define	RFPPWAIT	(1<<31)
/* user: vfork(2) semantics, clear signals */
#define	RFSPAWN		(1U<<31)
#define	RFFLAGS		(RFFDG | RFPROC | RFMEM | RFNOWAIT | RFCFDG | \
    RFTHREAD | RFSIGSHARE | RFLINUXTHPN | RFSTOPPED | RFHIGHPID | RFTSIGZMB | \
    RFPROCDESC | RFSPAWN | RFPPWAIT)
#define	RFKERNELONLY	(RFSTOPPED | RFHIGHPID | RFPROCDESC)

#define	SWAPOFF_FORCE	0x00000001

#endif /* __BSD_VISIBLE */
# 203 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4

#endif /* !_SYS_UNISTD_H_ */
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/sys/unistd.h" 3 4
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _GID_T_DECLARED
typedef	__gid_t		gid_t;
#define	_GID_T_DECLARED
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _OFF_T_DECLARED
typedef	__off_t		off_t;
#define	_OFF_T_DECLARED
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _PID_T_DECLARED
typedef	__pid_t		pid_t;
#define	_PID_T_DECLARED
#endif
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _SSIZE_T_DECLARED
typedef	__ssize_t	ssize_t;
#define	_SSIZE_T_DECLARED
#endif
# 68 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _UID_T_DECLARED
typedef	__uid_t		uid_t;
#define	_UID_T_DECLARED
#endif
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#ifndef _USECONDS_T_DECLARED
typedef	__useconds_t	useconds_t;
#define	_USECONDS_T_DECLARED
#endif
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#define	STDIN_FILENO	0	/* standard input file descriptor */
#define	STDOUT_FILENO	1	/* standard output file descriptor */
#define	STDERR_FILENO	2	/* standard error file descriptor */

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	F_ULOCK		0	/* unlock locked section */
#define	F_LOCK		1	/* lock a section for exclusive use */
#define	F_TLOCK		2	/* test and lock a section for exclusive use */
#define	F_TEST		3	/* test a section for locks by other procs */
#endif
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/*
 * POSIX options and option groups we unconditionally do or don't
 * implement.  This list includes those options which are exclusively
 * implemented (or not) in user mode.  Please keep this list in
 * alphabetical order.
 *
 * Anything which is defined as zero below **must** have an
 * implementation for the corresponding sysconf() which is able to
 * determine conclusively whether or not the feature is supported.
 * Anything which is defined as other than -1 below **must** have
 * complete headers, types, and function declarations as specified by
 * the POSIX standard; however, if the relevant sysconf() function
 * returns -1, the functions may be stubbed out.
 */
#define	_POSIX_BARRIERS			200112L
#define	_POSIX_CPUTIME			200112L
#define	_POSIX_READER_WRITER_LOCKS	200112L
#define	_POSIX_REGEXP			1
#define	_POSIX_SHELL			1
#define	_POSIX_SPAWN			200112L
#define	_POSIX_SPIN_LOCKS		200112L
#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
#define	_POSIX_THREAD_CPUTIME		200112L
#define	_POSIX_THREAD_PRIO_INHERIT	200112L
#define	_POSIX_THREAD_PRIO_PROTECT	200112L
#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
#define	_POSIX_THREAD_PROCESS_SHARED	200112L
#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
#define	_POSIX_THREAD_SPORADIC_SERVER	-1
#define	_POSIX_THREADS			200112L
#define	_POSIX_TRACE			-1
#define	_POSIX_TRACE_EVENT_FILTER	-1
#define	_POSIX_TRACE_INHERIT		-1
#define	_POSIX_TRACE_LOG		-1
#define	_POSIX2_C_BIND			200112L	/* mandatory */
#define	_POSIX2_C_DEV			-1 /* need c99 utility */
#define	_POSIX2_CHAR_TERM		1
#define	_POSIX2_FORT_DEV		-1 /* need fort77 utility */
#define	_POSIX2_FORT_RUN		200112L
#define	_POSIX2_LOCALEDEF		-1
#define	_POSIX2_PBS			-1
#define	_POSIX2_PBS_ACCOUNTING		-1
#define	_POSIX2_PBS_CHECKPOINT		-1
#define	_POSIX2_PBS_LOCATE		-1
#define	_POSIX2_PBS_MESSAGE		-1
#define	_POSIX2_PBS_TRACK		-1
#define	_POSIX2_SW_DEV			-1 /* XXX ??? */
#define	_POSIX2_UPE			200112L
#define	_V6_ILP32_OFF32			-1
#define	_V6_ILP32_OFFBIG		0
#define	_V6_LP64_OFF64			0
#define	_V6_LPBIG_OFFBIG		-1

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 145 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_XOPEN_CRYPT			-1 /* XXX ??? */
#define	_XOPEN_ENH_I18N			-1 /* mandatory in XSI */
#define	_XOPEN_LEGACY			-1
#define	_XOPEN_REALTIME			-1
#define	_XOPEN_REALTIME_THREADS		-1
#define	_XOPEN_UNIX			-1
#endif
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* Define the POSIX.2 version we target for compliance. */
#define	_POSIX2_VERSION		199212L

/*
 * POSIX-style system configuration variable accessors (for the
 * sysconf function).  The kernel does not directly implement the
 * sysconf() interface; rather, a C library stub translates references
 * to sysconf() into calls to sysctl() using a giant switch statement.
 * Those that are marked `user' are implemented entirely in the C
 * library and never query the kernel.  pathconf() is implemented
 * directly by the kernel so those are not defined here.
 */
#define	_SC_ARG_MAX		 1
#define	_SC_CHILD_MAX		 2
#define	_SC_CLK_TCK		 3
#define	_SC_NGROUPS_MAX		 4
#define	_SC_OPEN_MAX		 5
#define	_SC_JOB_CONTROL		 6
#define	_SC_SAVED_IDS		 7
#define	_SC_VERSION		 8
#define	_SC_BC_BASE_MAX		 9 /* user */
#define	_SC_BC_DIM_MAX		10 /* user */
#define	_SC_BC_SCALE_MAX	11 /* user */
#define	_SC_BC_STRING_MAX	12 /* user */
#define	_SC_COLL_WEIGHTS_MAX	13 /* user */
#define	_SC_EXPR_NEST_MAX	14 /* user */
#define	_SC_LINE_MAX		15 /* user */
#define	_SC_RE_DUP_MAX		16 /* user */
#define	_SC_2_VERSION		17 /* user */
#define	_SC_2_C_BIND		18 /* user */
#define	_SC_2_C_DEV		19 /* user */
#define	_SC_2_CHAR_TERM		20 /* user */
#define	_SC_2_FORT_DEV		21 /* user */
#define	_SC_2_FORT_RUN		22 /* user */
#define	_SC_2_LOCALEDEF		23 /* user */
#define	_SC_2_SW_DEV		24 /* user */
#define	_SC_2_UPE		25 /* user */
#define	_SC_STREAM_MAX		26 /* user */
#define	_SC_TZNAME_MAX		27 /* user */

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199309
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 194 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_SC_ASYNCHRONOUS_IO	28
#define	_SC_MAPPED_FILES	29
#define	_SC_MEMLOCK		30
#define	_SC_MEMLOCK_RANGE	31
#define	_SC_MEMORY_PROTECTION	32
#define	_SC_MESSAGE_PASSING	33
#define	_SC_PRIORITIZED_IO	34
#define	_SC_PRIORITY_SCHEDULING	35
#define	_SC_REALTIME_SIGNALS	36
#define	_SC_SEMAPHORES		37
#define	_SC_FSYNC		38
#define	_SC_SHARED_MEMORY_OBJECTS 39
#define	_SC_SYNCHRONIZED_IO	40
#define	_SC_TIMERS		41
#define	_SC_AIO_LISTIO_MAX	42
#define	_SC_AIO_MAX		43
#define	_SC_AIO_PRIO_DELTA_MAX	44
#define	_SC_DELAYTIMER_MAX	45
#define	_SC_MQ_OPEN_MAX		46
#define	_SC_PAGESIZE		47
#define	_SC_RTSIG_MAX		48
#define	_SC_SEM_NSEMS_MAX	49
#define	_SC_SEM_VALUE_MAX	50
#define	_SC_SIGQUEUE_MAX	51
#define	_SC_TIMER_MAX		52
#endif
# 220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 222 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_SC_2_PBS		59 /* user */
#define	_SC_2_PBS_ACCOUNTING	60 /* user */
#define	_SC_2_PBS_CHECKPOINT	61 /* user */
#define	_SC_2_PBS_LOCATE	62 /* user */
#define	_SC_2_PBS_MESSAGE	63 /* user */
#define	_SC_2_PBS_TRACK		64 /* user */
#define	_SC_ADVISORY_INFO	65
#define	_SC_BARRIERS		66 /* user */
#define	_SC_CLOCK_SELECTION	67
#define	_SC_CPUTIME		68
#define	_SC_FILE_LOCKING	69
#define	_SC_GETGR_R_SIZE_MAX	70 /* user */
#define	_SC_GETPW_R_SIZE_MAX	71 /* user */
#define	_SC_HOST_NAME_MAX	72
#define	_SC_LOGIN_NAME_MAX	73
#define	_SC_MONOTONIC_CLOCK	74
#define	_SC_MQ_PRIO_MAX		75
#define	_SC_READER_WRITER_LOCKS	76 /* user */
#define	_SC_REGEXP		77 /* user */
#define	_SC_SHELL		78 /* user */
#define	_SC_SPAWN		79 /* user */
#define	_SC_SPIN_LOCKS		80 /* user */
#define	_SC_SPORADIC_SERVER	81
#define	_SC_THREAD_ATTR_STACKADDR 82 /* user */
#define	_SC_THREAD_ATTR_STACKSIZE 83 /* user */
#define	_SC_THREAD_CPUTIME	84 /* user */
#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
#define	_SC_THREAD_KEYS_MAX	86 /* user */
#define	_SC_THREAD_PRIO_INHERIT	87 /* user */
#define	_SC_THREAD_PRIO_PROTECT	88 /* user */
#define	_SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
#define	_SC_THREAD_PROCESS_SHARED 90 /* user */
#define	_SC_THREAD_SAFE_FUNCTIONS 91 /* user */
#define	_SC_THREAD_SPORADIC_SERVER 92 /* user */
#define	_SC_THREAD_STACK_MIN	93 /* user */
#define	_SC_THREAD_THREADS_MAX	94 /* user */
#define	_SC_TIMEOUTS		95 /* user */
#define	_SC_THREADS		96 /* user */
#define	_SC_TRACE		97 /* user */
#define	_SC_TRACE_EVENT_FILTER	98 /* user */
#define	_SC_TRACE_INHERIT	99 /* user */
#define	_SC_TRACE_LOG		100 /* user */
#define	_SC_TTY_NAME_MAX	101 /* user */
#define	_SC_TYPED_MEMORY_OBJECTS 102
#define	_SC_V6_ILP32_OFF32	103 /* user */
#define	_SC_V6_ILP32_OFFBIG	104 /* user */
#define	_SC_V6_LP64_OFF64	105 /* user */
#define	_SC_V6_LPBIG_OFFBIG	106 /* user */
#define	_SC_IPV6		118
#define	_SC_RAW_SOCKETS		119
#define	_SC_SYMLOOP_MAX		120
#endif
# 274 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 276 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_SC_ATEXIT_MAX		107 /* user */
#define	_SC_IOV_MAX		56
#define	_SC_PAGE_SIZE		_SC_PAGESIZE
#define	_SC_XOPEN_CRYPT		108 /* user */
#define	_SC_XOPEN_ENH_I18N	109 /* user */
#define	_SC_XOPEN_LEGACY	110 /* user */
#define	_SC_XOPEN_REALTIME	111
#define	_SC_XOPEN_REALTIME_THREADS 112
#define	_SC_XOPEN_SHM		113
#define	_SC_XOPEN_STREAMS	114
#define	_SC_XOPEN_UNIX		115
#define	_SC_XOPEN_VERSION	116
#define	_SC_XOPEN_XCU_VERSION	117 /* user */
#endif
# 290 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 292 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_SC_NPROCESSORS_CONF	57
#define	_SC_NPROCESSORS_ONLN	58
#define	_SC_CPUSET_SIZE		122
#endif
# 296 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* Extensions found in Solaris and Linux. */
#define	_SC_PHYS_PAGES		121

/* Keys for the confstr(3) function. */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199209
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 302 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_CS_PATH		1	/* default value of PATH */
#endif
# 304 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 306 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
#define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
#endif
# 320 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

__BEGIN_DECLS
/* 1003.1-1990 */
void	 _exit(int) __dead2;
int	 access(const char *, int);
unsigned int	 alarm(unsigned int);
int	 chdir(const char *);
int	 chown(const char *, uid_t, gid_t);
int	 close(int);
void	 closefrom(int);
int	 dup(int);
int	 dup2(int, int);
int	 execl(const char *, const char *, ...) __null_sentinel;
int	 execle(const char *, const char *, ...);
int	 execlp(const char *, const char *, ...) __null_sentinel;
int	 execv(const char *, char * const *);
int	 execve(const char *, char * const *, char * const *);
int	 execvp(const char *, char * const *);
pid_t	 fork(void);
long	 fpathconf(int, int);
char	*getcwd(char *, size_t);
gid_t	 getegid(void);
uid_t	 geteuid(void);
gid_t	 getgid(void);
int	 getgroups(int, gid_t []);
char	*getlogin(void);
pid_t	 getpgrp(void);
pid_t	 getpid(void);
pid_t	 getppid(void);
uid_t	 getuid(void);
int	 isatty(int);
int	 link(const char *, const char *);
#ifndef _LSEEK_DECLARED
#define	_LSEEK_DECLARED
off_t	 lseek(int, off_t, int);
#endif
# 356 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
long	 pathconf(const char *, int);
int	 pause(void);
int	 pipe(int *);
ssize_t	 read(int, void *, size_t);
int	 rmdir(const char *);
int	 setgid(gid_t);
int	 setpgid(pid_t, pid_t);
pid_t	 setsid(void);
int	 setuid(uid_t);
unsigned int	 sleep(unsigned int);
long	 sysconf(int);
pid_t	 tcgetpgrp(int);
int	 tcsetpgrp(int, pid_t);
char	*ttyname(int);
int	ttyname_r(int, char *, size_t);
int	 unlink(const char *);
ssize_t	 write(int, const void *, size_t);

/* 1003.2-1992 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 376 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
size_t	 confstr(int, char *, size_t);
#ifndef _GETOPT_DECLARED
#define	_GETOPT_DECLARED
int	 getopt(int, char * const [], const char *);

extern char *optarg;			/* getopt(3) external variables */
extern int optind, opterr, optopt;
#endif /* _GETOPT_DECLARED */
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#endif
# 385 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* ISO/IEC 9945-1: 1996 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 388 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 fsync(int);
int	 fdatasync(int);

/*
 * ftruncate() was in the POSIX Realtime Extension (it's used for shared
 * memory), but truncate() was not.
 */
#ifndef _FTRUNCATE_DECLARED
#define	_FTRUNCATE_DECLARED
int	 ftruncate(int, off_t);
#endif
# 399 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#endif
# 400 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 199506
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 402 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 getlogin_r(char *, size_t);
#endif
# 404 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* 1003.1-2001 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 407 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 fchown(int, uid_t, gid_t);
ssize_t	 readlink(const char * __restrict, char * __restrict, size_t);
#endif
# 410 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 gethostname(char *, size_t);
int	 setegid(gid_t);
int	 seteuid(uid_t);
#endif
# 415 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* 1003.1-2008 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 getsid(pid_t _pid);
int	 fchdir(int);
int	 getpgid(pid_t _pid);
int	 lchown(const char *, uid_t, gid_t);
ssize_t	 pread(int, void *, size_t, off_t);
ssize_t	 pwrite(int, const void *, size_t, off_t);

/* See comment at ftruncate() above. */
#ifndef _TRUNCATE_DECLARED
#define	_TRUNCATE_DECLARED
int	 truncate(const char *, off_t);
#endif
# 430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
# 431 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200809
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 433 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	faccessat(int, const char *, int, int);
int	fchownat(int, const char *, uid_t, gid_t, int);
int	fexecve(int, char *const [], char *const []);
int	linkat(int, const char *, int, const char *, int);
ssize_t	readlinkat(int, const char * __restrict, char * __restrict, size_t);
int	symlinkat(const char *, int, const char *);
int	unlinkat(int, const char *, int);
#endif /* __POSIX_VISIBLE >= 200809 */
# 441 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/*
 * symlink() was originally in POSIX.1a, which was withdrawn after
 * being overtaken by events (1003.1-2001).  It was in XPG4.2, and of
 * course has been in BSD since 4.2.
 */
#if 0 /* disabled by -frewrite-includes */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 symlink(const char * __restrict, const char * __restrict);
#endif
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

/* X/Open System Interfaces */
#if 0 /* disabled by -frewrite-includes */
#if __XSI_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 453 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
char	*crypt(const char *, const char *);
long	 gethostid(void);
int	 lockf(int, int, off_t);
int	 nice(int);
int	 setregid(gid_t, gid_t);
int	 setreuid(uid_t, uid_t);

#ifndef _SWAB_DECLARED
#define _SWAB_DECLARED
void	 swab(const void * __restrict, void * __restrict, ssize_t);
#endif /* _SWAB_DECLARED */
# 464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

void	 sync(void);

#endif /* __XSI_VISIBLE */
# 468 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 500) || __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 470 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 brk(const void *);
int	 chroot(const char *);
int	 getdtablesize(void);
int	 getpagesize(void) __pure2;
char	*getpass(const char *);
void	*sbrk(intptr_t);
#endif
# 477 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 600) || __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 479 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
char	*getwd(char *);			/* obsoleted by getcwd() */
useconds_t
	 ualarm(useconds_t, useconds_t);
int	 usleep(useconds_t);
pid_t	 vfork(void) __returns_twice;
#endif
# 485 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4

#if 0 /* disabled by -frewrite-includes */
#if __BSD_VISIBLE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 487 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
struct timeval;				/* select(2) */

struct crypt_data {
	int	initialized;	/* For compatibility with glibc. */
	char	__buf[256];	/* Buffer returned by crypt_r(). */
};

int	 acct(const char *);
int	 async_daemon(void);
int	 check_utility_compat(const char *);
int	 close_range(unsigned int, unsigned int, int);
ssize_t	 copy_file_range(int, off_t *, int, off_t *, size_t, unsigned int);
const char *
	 crypt_get_format(void);
char	*crypt_r(const char *, const char *, struct crypt_data *);
int	 crypt_set_format(const char *);
int	 dup3(int, int, int);
int	 eaccess(const char *, int);
void	 endusershell(void);
int	 exect(const char *, char * const *, char * const *);
int	 execvP(const char *, const char *, char * const *);
int	 feature_present(const char *);
char	*fflagstostr(u_long);
int	 getdomainname(char *, int);
int	 getentropy(void *, size_t);
int	 getgrouplist(const char *, gid_t, gid_t *, int *);
int	 getloginclass(char *, size_t);
mode_t	 getmode(const void *, mode_t);
int	 getosreldate(void);
int	 getpeereid(int, uid_t *, gid_t *);
int	 getresgid(gid_t *, gid_t *, gid_t *);
int	 getresuid(uid_t *, uid_t *, uid_t *);
char	*getusershell(void);
int	 initgroups(const char *, gid_t);
int	 iruserok(unsigned long, int, const char *, const char *);
int	 iruserok_sa(const void *, int, int, const char *, const char *);
int	 issetugid(void);
void	__FreeBSD_libc_enter_restricted_mode(void);
long	 lpathconf(const char *, int);
#ifndef _MKDTEMP_DECLARED
char	*mkdtemp(char *);
#define	_MKDTEMP_DECLARED
#endif
# 530 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#ifndef	_MKNOD_DECLARED
int	 mknod(const char *, mode_t, dev_t);
#define	_MKNOD_DECLARED
#endif
# 534 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#ifndef _MKSTEMP_DECLARED
int	 mkstemp(char *);
#define	_MKSTEMP_DECLARED
#endif
# 538 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 mkstemps(char *, int);
#ifndef _MKTEMP_DECLARED
char	*mktemp(char *);
#define	_MKTEMP_DECLARED
#endif
# 543 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 nfssvc(int, void *);
int	 nlm_syscall(int, int, int, char **);
int	 pipe2(int *, int);
int	 profil(char *, size_t, vm_offset_t, int);
int	 rcmd(char **, int, const char *, const char *, const char *, int *);
int	 rcmd_af(char **, int, const char *,
		const char *, const char *, int *, int);
int	 rcmdsh(char **, int, const char *,
		const char *, const char *, const char *);
char	*re_comp(const char *);
int	 re_exec(const char *);
int	 reboot(int);
int	 revoke(const char *);
pid_t	 rfork(int) __returns_twice;
pid_t	 rfork_thread(int, void *, int (*)(void *), void *);
int	 rresvport(int *);
int	 rresvport_af(int *, int);
int	 ruserok(const char *, int, const char *, const char *);
#ifndef _SELECT_DECLARED
#define	_SELECT_DECLARED
int	 select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
#endif
# 565 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
int	 setdomainname(const char *, int);
int	 setgroups(int, const gid_t *);
void	 sethostid(long);
int	 sethostname(const char *, int);
int	 setlogin(const char *);
int	 setloginclass(const char *);
void	*setmode(const char *);
int	 setpgrp(pid_t, pid_t);			/* obsoleted by setpgid() */
void	 setproctitle(const char *_fmt, ...) __printf0like(1, 2);
void	 setproctitle_fast(const char *_fmt, ...) __printf0like(1, 2);
int	 setresgid(gid_t, gid_t, gid_t);
int	 setresuid(uid_t, uid_t, uid_t);
int	 setrgid(gid_t);
int	 setruid(uid_t);
void	 setusershell(void);
int	 strtofflags(char **, u_long *, u_long *);
int	 swapon(const char *);
int	 swapoff(const char *, u_int);
int	 syscall(int, ...);
off_t	 __syscall(quad_t, ...);
int	 undelete(const char *);
int	 unwhiteout(const char *);
void	*valloc(size_t);			/* obsoleted by malloc() */
int	 funlinkat(int, const char *, int, int);
pid_t	 _Fork(void);

#ifndef _OPTRESET_DECLARED
#define	_OPTRESET_DECLARED
extern int optreset;			/* getopt(3) external variable */
#endif
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
#endif /* __BSD_VISIBLE */
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
__END_DECLS

#endif /* !_UNISTD_H_ */
# 599 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/unistd.h" 3 4
# 444 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2
#if 0 /* expanded by -frewrite-includes */
# include <strings.h>
#endif /* expanded by -frewrite-includes */
# 444 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // GTEST_OS_WINDOWS
# 446 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_LINUX_ANDROID
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 448 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Used to define __ANDROID_API__ matching the target NDK API level.
#if 0 /* expanded by -frewrite-includes */
#  include <android/api-level.h>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 450 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 451 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Defines this to true iff Google Test can use POSIX regular expressions.
#ifndef GTEST_HAS_POSIX_RE
#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_LINUX_ANDROID
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// On Android, <regex.h> is only available starting with Gingerbread.
#  define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
# else
# 458 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
# endif
# 460 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 461 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_USES_PCRE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 463 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// The appropriate headers have already been included.

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif GTEST_HAS_POSIX_RE
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 466 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// On some platforms, <regex.h> needs someone to define size_t, and
// won't compile otherwise.  We can #include it here as we already
// included <stdlib.h>, which is guaranteed to define size_t through
// <stddef.h>.
#if 0 /* expanded by -frewrite-includes */
# include <regex.h>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 1 3 4
/*-
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 1992 Henry Spencer.
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Henry Spencer of the University of Toronto.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)regex.h	8.2 (Berkeley) 1/3/94
 * $FreeBSD$
 */

#ifndef _REGEX_H_
#define	_REGEX_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4

/* types */
typedef	__off_t		regoff_t;

#ifndef _SIZE_T_DECLARED
typedef	__size_t	size_t;
#define	_SIZE_T_DECLARED
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4

typedef struct {
	int re_magic;
	size_t re_nsub;		/* number of parenthesized subexpressions */
	const char *re_endp;	/* end pointer for REG_PEND */
	struct re_guts *re_g;	/* none of your business :-) */
} regex_t;

typedef struct {
	regoff_t rm_so;		/* start of match */
	regoff_t rm_eo;		/* end of match */
} regmatch_t;

/* regcomp() flags */
#define	REG_BASIC	0000
#define	REG_EXTENDED	0001
#define	REG_ICASE	0002
#define	REG_NOSUB	0004
#define	REG_NEWLINE	0010
#define	REG_NOSPEC	0020
#define	REG_PEND	0040
#define	REG_DUMP	0200
#define	REG_POSIX	0400	/* only POSIX-compliant regex (libregex) */

/* regerror() flags */
#define	REG_ENOSYS	(-1)
#define	REG_NOMATCH	 1
#define	REG_BADPAT	 2
#define	REG_ECOLLATE	 3
#define	REG_ECTYPE	 4
#define	REG_EESCAPE	 5
#define	REG_ESUBREG	 6
#define	REG_EBRACK	 7
#define	REG_EPAREN	 8
#define	REG_EBRACE	 9
#define	REG_BADBR	10
#define	REG_ERANGE	11
#define	REG_ESPACE	12
#define	REG_BADRPT	13
#define	REG_EMPTY	14
#define	REG_ASSERT	15
#define	REG_INVARG	16
#define	REG_ILLSEQ	17
#define	REG_ATOI	255	/* convert name to number (!) */
#define	REG_ITOA	0400	/* convert number to name (!) */

/* regexec() flags */
#define	REG_NOTBOL	00001
#define	REG_NOTEOL	00002
#define	REG_STARTEND	00004
#define	REG_TRACE	00400	/* tracing of execution */
#define	REG_LARGE	01000	/* force large representation */
#define	REG_BACKR	02000	/* force use of backref code */

__BEGIN_DECLS
int	regcomp(regex_t * __restrict, const char * __restrict, int);
size_t	regerror(int, const regex_t * __restrict, char * __restrict, size_t);
/*
 * XXX forth parameter should be `regmatch_t [__restrict]', but isn't because
 * of a bug in GCC 3.2 (when -std=c99 is specified) which perceives this as a
 * syntax error.
 */
int	regexec(const regex_t * __restrict, const char * __restrict, size_t,
	    regmatch_t * __restrict, int);
void	regfree(regex_t *);
__END_DECLS

#endif /* !_REGEX_H_ */
# 120 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/regex.h" 3 4
# 472 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h" 2

# define GTEST_USES_POSIX_RE 1

#if 0 /* disabled by -frewrite-includes */
#if 0
#elif GTEST_OS_WINDOWS
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 476 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// <regex.h> is not available on Windows.  Use our own simple regex
// implementation instead.
# define GTEST_USES_SIMPLE_RE 1

#else
# 482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// <regex.h> may not be available on this platform.  Use our own
// simple regex implementation instead.
# define GTEST_USES_SIMPLE_RE 1

#endif  // GTEST_USES_PCRE
# 488 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_HAS_EXCEPTIONS
// The user didn't tell us whether exceptions are enabled, so we need
// to figure it out.
#if 0 /* disabled by -frewrite-includes */
# if defined(_MSC_VER) && defined(_CPPUNWIND)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// MSVC defines _CPPUNWIND to 1 iff exceptions are enabled.
#  define GTEST_HAS_EXCEPTIONS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__BORLANDC__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// C++Builder's implementation of the STL uses the _HAS_EXCEPTIONS
// macro to enable exceptions, so we'll do the same.
// Assumes that exceptions are enabled by default.
#  ifndef _HAS_EXCEPTIONS
#   define _HAS_EXCEPTIONS 1
#  endif  // _HAS_EXCEPTIONS
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// clang defines __EXCEPTIONS iff exceptions are enabled before clang 220714,
// but iff cleanups are enabled after that. In Obj-C++ files, there can be
// cleanups for ObjC exceptions which also need cleanups, even if C++ exceptions
// are disabled. clang has __has_feature(cxx_exceptions) which checks for C++
// exceptions starting at clang r206352, but which checked for cleanups prior to
// that. To reliably check for C++ exception availability with clang, check for
// __EXCEPTIONS && __has_feature(cxx_exceptions).
#  define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__GNUC__) && __EXCEPTIONS
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
#  define GTEST_HAS_EXCEPTIONS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__SUNPRO_CC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Sun Pro CC supports exceptions.  However, there is no compile-time way of
// detecting whether they are enabled or not.  Therefore, we assume that
// they are enabled unless the user tells us otherwise.
#  define GTEST_HAS_EXCEPTIONS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__IBMCPP__) && __EXCEPTIONS
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 521 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
#  define GTEST_HAS_EXCEPTIONS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__HP_aCC)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 524 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Exception handling is in effect by default in HP aCC compiler. It has to
// be turned of by +noeh compiler option if desired.
#  define GTEST_HAS_EXCEPTIONS 1
# else
# 528 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// For other compilers, we assume exceptions are disabled to be
// conservative.
#  define GTEST_HAS_EXCEPTIONS 0
# endif  // defined(_MSC_VER) || defined(__BORLANDC__)
# 532 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // GTEST_HAS_EXCEPTIONS
# 533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_HAS_STD_STRING)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Even though we don't use this macro any longer, we keep it in case
// some clients still depend on it.
# define GTEST_HAS_STD_STRING 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !GTEST_HAS_STD_STRING
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 539 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// The user told us that ::std::string isn't available.
# error "::std::string isn't available."
#endif  // !defined(GTEST_HAS_STD_STRING)
# 542 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_HAS_GLOBAL_STRING
# define GTEST_HAS_GLOBAL_STRING 0
#endif  // GTEST_HAS_GLOBAL_STRING
# 546 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_HAS_STD_WSTRING
// The user didn't tell us whether ::std::wstring is available, so we need
// to figure it out.
// FIXME: uses autoconf to detect whether ::std::wstring
//   is available.

// Cygwin 1.7 and below doesn't support ::std::wstring.
// Solaris' libc++ doesn't support it either.  Android has
// no support for it at least as recent as Froyo (2.2).
# define GTEST_HAS_STD_WSTRING \
    (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))

#endif  // GTEST_HAS_STD_WSTRING
# 560 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_HAS_GLOBAL_WSTRING
// The user didn't tell us whether ::wstring is available, so we need
// to figure it out.
# define GTEST_HAS_GLOBAL_WSTRING \
    (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
#endif  // GTEST_HAS_GLOBAL_WSTRING
# 567 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether RTTI is available.
#ifndef GTEST_HAS_RTTI
// The user didn't tell us whether RTTI is enabled, so we need to
// figure it out.

# ifdef _MSC_VER

#  ifdef _CPPRTTI  // MSVC defines this macro iff RTTI is enabled.
#   define GTEST_HAS_RTTI 1
#  else
# 578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   define GTEST_HAS_RTTI 0
#  endif
# 580 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 583 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#  ifdef __GXX_RTTI
// When building against STLport with the Android NDK and with
// -frtti -fno-exceptions, the build fails at link time with undefined
// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
// so disable RTTI when detected.
#if 0 /* disabled by -frewrite-includes */
#   if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
       !defined(__EXCEPTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#    define GTEST_HAS_RTTI 0
#   else
# 593 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#    define GTEST_HAS_RTTI 1
#   endif  // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
# 595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  else
# 596 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   define GTEST_HAS_RTTI 0
#  endif  // __GXX_RTTI
# 598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
// first version with C++ support.
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 603 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#  define GTEST_HAS_RTTI __has_feature(cxx_rtti)

// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
// both the typeid and dynamic_cast features are present.
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 609 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#  ifdef __RTTI_ALL__
#   define GTEST_HAS_RTTI 1
#  else
# 613 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   define GTEST_HAS_RTTI 0
#  endif
# 615 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

# else
# 617 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// For all other compilers, we assume RTTI is enabled.
#  define GTEST_HAS_RTTI 1

# endif  // _MSC_VER
# 622 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#endif  // GTEST_HAS_RTTI
# 624 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// It's this header's responsibility to #include <typeinfo> when RTTI
// is enabled.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_RTTI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 628 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
# include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 628 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 629 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 630 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether Google Test can use the pthreads library.
#ifndef GTEST_HAS_PTHREAD
// The user didn't tell us explicitly, so we make reasonable assumptions about
// which platforms have pthreads support.
//
// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
// to your compiler flags.
#define GTEST_HAS_PTHREAD                                             \
  (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX || \
   GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA)
#endif  // GTEST_HAS_PTHREAD
# 642 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_PTHREAD
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 644 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
// true.
#if 0 /* expanded by -frewrite-includes */
# include <pthread.h>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 646 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 647 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// For timespec and nanosleep, used below.
#if 0 /* expanded by -frewrite-includes */
# include <time.h>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 649 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 650 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines if hash_map/hash_set are available.
// Only used for testing against those containers.
#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_HAS_HASH_MAP_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 655 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if defined(_MSC_VER) && (_MSC_VER < 1900)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 656 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_HASH_MAP_ 1  // Indicates that hash_map is available.
#  define GTEST_HAS_HASH_SET_ 1  // Indicates that hash_set is available.
# endif  // _MSC_VER
# 659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // !defined(GTEST_HAS_HASH_MAP_)
# 660 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether Google Test can use tr1/tuple.  You can define
// this macro to 0 to prevent Google Test from using tuple (any
// feature depending on tuple with be disabled in this mode).
#ifndef GTEST_HAS_TR1_TUPLE
#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 666 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
#  define GTEST_HAS_TR1_TUPLE 0
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(_MSC_VER) && (_MSC_VER >= 1910)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 669 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Prevent `warning C4996: 'std::tr1': warning STL4002:
// The non-Standard std::tr1 namespace and TR1-only machinery
// are deprecated and will be REMOVED.`
#  define GTEST_HAS_TR1_TUPLE 0
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_LANG_CXX11 && defined(_LIBCPP_VERSION)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 674 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// libc++ doesn't support TR1.
#  define GTEST_HAS_TR1_TUPLE 0
# else
# 677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// The user didn't tell us not to do it, so we assume it's OK.
#  define GTEST_HAS_TR1_TUPLE 1
# endif
# 680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // GTEST_HAS_TR1_TUPLE
# 681 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether Google Test's own tr1 tuple implementation
// should be used.
#ifndef GTEST_USE_OWN_TR1_TUPLE
// We use our own tuple implementation on Symbian.
#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_SYMBIAN
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_USE_OWN_TR1_TUPLE 1
# else
# 689 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// The user didn't tell us, so we need to figure it out.

// We use our own TR1 tuple if we aren't sure the user has an
// implementation of it already.  At this time, libstdc++ 4.0.0+ and
// MSVC 2010 are the only mainstream standard libraries that come
// with a TR1 tuple implementation.  NVIDIA's CUDA NVCC compiler
// pretends to be GCC by defining __GNUC__ and friends, but cannot
// compile GCC's tuple implementation.  MSVC 2008 (9.0) provides TR1
// tuple in a 323 MB Feature Pack download, which we cannot assume the
// user has.  QNX's QCC compiler is a modified GCC but it doesn't
// support TR1 tuple.  libc++ only provides std::tuple, in C++11 mode,
// and it can be used with some compilers that define __GNUC__.
#if 0 /* disabled by -frewrite-includes */
# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
      && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) \
      || (_MSC_VER >= 1600 && _MSC_VER < 1900)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 704 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ENV_HAS_TR1_TUPLE_ 1
# endif
# 706 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
// can build with clang but need to use gcc4.2's libstdc++).
#if 0 /* disabled by -frewrite-includes */
# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 711 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ENV_HAS_STD_TUPLE_ 1
# endif
# 713 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 715 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_USE_OWN_TR1_TUPLE 0
# else
# 717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_USE_OWN_TR1_TUPLE 1
# endif
# 719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# endif  // GTEST_OS_SYMBIAN
# 720 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // GTEST_USE_OWN_TR1_TUPLE
# 721 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// To avoid conditional compilation we make it gtest-port.h's responsibility
// to #include the header implementing tuple.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_STD_TUPLE_
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
# include <tuple>  // IWYU pragma: export
#endif /* expanded by -frewrite-includes */
# 725 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 726 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_TUPLE_NAMESPACE_ ::std
#endif  // GTEST_HAS_STD_TUPLE_
# 728 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// We include tr1::tuple even if std::tuple is available to define printers for
// them.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_TR1_TUPLE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 732 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# ifndef GTEST_TUPLE_NAMESPACE_
#  define GTEST_TUPLE_NAMESPACE_ ::std::tr1
# endif  // GTEST_TUPLE_NAMESPACE_
# 735 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
# if GTEST_USE_OWN_TR1_TUPLE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 737 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#  include "gtest/internal/gtest-tuple.h"  // IWYU pragma: export  // NOLINT
#endif /* expanded by -frewrite-includes */
# 737 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 738 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_OS_SYMBIAN
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 739 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
// use STLport's tuple implementation, which unfortunately doesn't
// work as the copy of STLport distributed with Symbian is incomplete.
// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
// use its own tuple implementation.
#  ifdef BOOST_HAS_TR1_TUPLE
#   undef BOOST_HAS_TR1_TUPLE
#  endif  // BOOST_HAS_TR1_TUPLE
# 748 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// This prevents <boost/tr1/detail/config.hpp>, which defines
// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
#  define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
#if 0 /* expanded by -frewrite-includes */
#  include <tuple>  // IWYU pragma: export  // NOLINT
#endif /* expanded by -frewrite-includes */
# 752 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 753 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 755 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header.  This does
// not conform to the TR1 spec, which requires the header to be <tuple>.

#if 0 /* disabled by -frewrite-includes */
#  if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 759 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
// which is #included by <tr1/tuple>, to not compile when RTTI is
// disabled.  _TR1_FUNCTIONAL is the header guard for
// <tr1/functional>.  Hence the following #define is used to prevent
// <tr1/functional> from being included.
#   define _TR1_FUNCTIONAL 1
#if 0 /* expanded by -frewrite-includes */
#   include <tr1/tuple>
#endif /* expanded by -frewrite-includes */
# 765 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 766 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   undef _TR1_FUNCTIONAL  // Allows the user to #include
                        // <tr1/functional> if they choose to.
#  else
# 769 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#   include <tr1/tuple>  // NOLINT
#endif /* expanded by -frewrite-includes */
# 769 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 770 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  endif  // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
# 771 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// VS 2010 now has tr1 support.
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif _MSC_VER >= 1600
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#  include <tuple>  // IWYU pragma: export  // NOLINT
#endif /* expanded by -frewrite-includes */
# 774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 775 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

# else  // GTEST_USE_OWN_TR1_TUPLE
# 777 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* expanded by -frewrite-includes */
#  include <tr1/tuple>  // IWYU pragma: export  // NOLINT
#endif /* expanded by -frewrite-includes */
# 777 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 778 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# endif  // GTEST_USE_OWN_TR1_TUPLE
# 779 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#endif  // GTEST_HAS_TR1_TUPLE
# 781 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether clone(2) is supported.
// Usually it will only be available on Linux, excluding
// Linux on the Itanium architecture.
// Also see http://linux.die.net/man/2/clone.
#ifndef GTEST_HAS_CLONE
// The user didn't tell us, so we need to figure it out.

#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_LINUX && !defined(__ia64__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 790 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#  if GTEST_OS_LINUX_ANDROID
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 791 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// On Android, clone() became available at different API levels for each 32-bit
// architecture.
#if 0 /* disabled by -frewrite-includes */
#    if defined(__LP64__) || \
        (defined(__arm__) && __ANDROID_API__ >= 9) || \
        (defined(__mips__) && __ANDROID_API__ >= 12) || \
        (defined(__i386__) && __ANDROID_API__ >= 17)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 797 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#     define GTEST_HAS_CLONE 1
#    else
# 799 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#     define GTEST_HAS_CLONE 0
#    endif
# 801 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  else
# 802 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#   define GTEST_HAS_CLONE 1
#  endif
# 804 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# else
# 805 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_CLONE 0
# endif  // GTEST_OS_LINUX && !defined(__ia64__)
# 807 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#endif  // GTEST_HAS_CLONE
# 809 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether to support stream redirection. This is used to test
// output correctness and to implement death tests.
#ifndef GTEST_HAS_STREAM_REDIRECTION
// By default, we assume that stream redirection is supported on all
// platforms except known mobile ones.
#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \
    GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 817 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_STREAM_REDIRECTION 0
# else
# 819 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_STREAM_REDIRECTION 1
# endif  // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
# 821 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif  // GTEST_HAS_STREAM_REDIRECTION
# 822 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether to support death tests.
// Google Test does not support death tests for VC 7.1 and earlier as
// abort() in a VC 7.1 application compiled as GUI in debug config
// pops up a dialog window that cannot be suppressed programmatically.
#if 0 /* disabled by -frewrite-includes */
#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS ||   \
     (GTEST_OS_MAC && !GTEST_OS_IOS) ||                         \
     (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) ||          \
     GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
     GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD || \
     GTEST_OS_NETBSD || GTEST_OS_FUCHSIA)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 833 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_DEATH_TEST 1
#endif
# 835 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether to support type-driven tests.

// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
// Sun Pro CC, IBM Visual Age, and HP aCC support.
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
    defined(__IBMCPP__) || defined(__HP_aCC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 842 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_TYPED_TEST 1
# define GTEST_HAS_TYPED_TEST_P 1
#endif
# 845 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether to support Combine(). This only makes sense when
// value-parameterized tests are enabled.  The implementation doesn't
// work on Sun Studio since it doesn't understand templated conversion
// operators.
#if 0 /* disabled by -frewrite-includes */
#if (GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_) && !defined(__SUNPRO_CC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 851 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_HAS_COMBINE 1
#endif
# 853 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Determines whether the system compiler uses UTF-16 for encoding wide strings.
#define GTEST_WIDE_STRING_USES_UTF16_ \
    (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)

// Determines whether test results can be streamed to a socket.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_LINUX
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 860 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_CAN_STREAM_RESULTS_ 1
#endif
# 862 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Defines some utility macros.

// The GNU compiler emits a warning if nested "if" statements are followed by
// an "else" statement and braces are not used to explicitly disambiguate the
// "else" binding.  This leads to problems with code like:
//
//   if (gate)
//     ASSERT_*(condition) << "Some message";
//
// The "switch (0) case 0:" idiom is used to suppress this.
#ifdef __INTEL_COMPILER
# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
#else
# 876 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:  // NOLINT
#endif
# 878 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Use this annotation at the end of a struct/class definition to
// prevent the compiler from optimizing away instances that are never
// used.  This is useful when all interesting logic happens inside the
// c'tor and / or d'tor.  Example:
//
//   struct Foo {
//     Foo() { ... }
//   } GTEST_ATTRIBUTE_UNUSED_;
//
// Also use it after a variable or parameter declaration to tell the
// compiler the variable/parameter does not have to be used.
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(COMPILER_ICC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 893 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if __has_attribute(unused)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 894 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
# endif
# 896 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 897 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#ifndef GTEST_ATTRIBUTE_UNUSED_
# define GTEST_ATTRIBUTE_UNUSED_
#endif
# 900 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_LANG_CXX11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_CXX11_EQUALS_DELETE_ = delete
#else  // GTEST_LANG_CXX11
# 904 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_CXX11_EQUALS_DELETE_
#endif  // GTEST_LANG_CXX11
# 906 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Use this annotation before a function that takes a printf format string.
#if 0 /* disabled by -frewrite-includes */
#if (defined(__GNUC__) || defined(__clang__)) && !defined(COMPILER_ICC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 909 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if defined(__MINGW_PRINTF_FORMAT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 910 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// MinGW has two different printf implementations. Ensure the format macro
// matches the selected implementation. See
// https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/.
#  define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
       __attribute__((__format__(__MINGW_PRINTF_FORMAT, string_index, \
                                 first_to_check)))
# else
# 917 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
       __attribute__((__format__(__printf__, string_index, first_to_check)))
# endif
# 920 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#else
# 921 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
#endif
# 923 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"


// A macro to disallow operator=
// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_ASSIGN_(type) \
  void operator=(type const &) GTEST_CXX11_EQUALS_DELETE_

// A macro to disallow copy constructor and operator=
// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
  type(type const &) GTEST_CXX11_EQUALS_DELETE_; \
  GTEST_DISALLOW_ASSIGN_(type)

// Tell the compiler to warn about unused return values for functions declared
// with this macro.  The macro should be used on function declarations
// following the argument list:
//
//   Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 942 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
#else
# 944 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_MUST_USE_RESULT_
#endif  // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
# 946 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// MS C++ compiler emits warning when a conditional expression is compile time
// constant. In some contexts this warning is false positive and needs to be
// suppressed. Use the following two macros in such cases:
//
// GTEST_INTENTIONAL_CONST_COND_PUSH_()
// while (true) {
// GTEST_INTENTIONAL_CONST_COND_POP_()
// }
# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
    GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
# define GTEST_INTENTIONAL_CONST_COND_POP_() \
    GTEST_DISABLE_MSC_WARNINGS_POP_()

// Determine whether the compiler supports Microsoft's Structured Exception
// Handling.  This is supported by several Windows compilers but generally
// does not exist on any other system.
#ifndef GTEST_HAS_SEH
// The user didn't tell us, so we need to figure it out.

#if 0 /* disabled by -frewrite-includes */
# if defined(_MSC_VER) || defined(__BORLANDC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 967 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// These two compilers are known to support SEH.
#  define GTEST_HAS_SEH 1
# else
# 970 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Assume no SEH.
#  define GTEST_HAS_SEH 0
# endif
# 973 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#define GTEST_IS_THREADSAFE \
    (GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ \
     || (GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) \
     || GTEST_HAS_PTHREAD)

#endif  // GTEST_HAS_SEH
# 980 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// GTEST_API_ qualifies all symbols that must be exported. The definitions below
// are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
// gtest/internal/custom/gtest-port.h
#ifndef GTEST_API_

#ifdef _MSC_VER
#if 0 /* disabled by -frewrite-includes */
# if GTEST_LINKED_AS_SHARED_LIBRARY
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 988 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_API_ __declspec(dllimport)
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_CREATE_SHARED_LIBRARY
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 990 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_API_ __declspec(dllexport)
# endif
# 992 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __GNUC__ >= 4 || defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 993 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_API_ __attribute__((visibility ("default")))
#endif  // _MSC_VER
# 995 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#endif  // GTEST_API_
# 997 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_API_
# define GTEST_API_
#endif  // GTEST_API_
# 1001 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifndef GTEST_DEFAULT_DEATH_TEST_STYLE
# define GTEST_DEFAULT_DEATH_TEST_STYLE  "fast"
#endif  // GTEST_DEFAULT_DEATH_TEST_STYLE
# 1005 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#ifdef __GNUC__
// Ask the compiler to never inline a given function.
# define GTEST_NO_INLINE_ __attribute__((noinline))
#else
# 1010 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_NO_INLINE_
#endif
# 1012 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_HAS_CXXABI_H_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1015 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if defined(__GLIBCXX__) || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1016 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_CXXABI_H_ 1
# else
# 1018 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_HAS_CXXABI_H_ 0
# endif
# 1020 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#endif
# 1021 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A function level attribute to disable checking for use of uninitialized
// memory when built with MemorySanitizer.
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1025 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if __has_feature(memory_sanitizer)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1026 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
       __attribute__((no_sanitize_memory))
# else
# 1029 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
# endif  // __has_feature(memory_sanitizer)
# 1031 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#else
# 1032 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
#endif  // __clang__
# 1034 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A function level attribute to disable AddressSanitizer instrumentation.
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1037 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if __has_feature(address_sanitizer)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1038 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
       __attribute__((no_sanitize_address))
# else
# 1041 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
# endif  // __has_feature(address_sanitizer)
# 1043 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#else
# 1044 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
#endif  // __clang__
# 1046 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A function level attribute to disable ThreadSanitizer instrumentation.
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1049 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if __has_feature(thread_sanitizer)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1050 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
       __attribute__((no_sanitize_thread))
# else
# 1053 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#  define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
# endif  // __has_feature(thread_sanitizer)
# 1055 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#else
# 1056 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
#endif  // __clang__
# 1058 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

namespace testing {

class Message;

#if 0 /* disabled by -frewrite-includes */
#if defined(GTEST_TUPLE_NAMESPACE_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1064 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Import tuple and friends into the ::testing namespace.
// It is part of our interface, having them in ::testing allows us to change
// their types as needed.
using GTEST_TUPLE_NAMESPACE_::get;
using GTEST_TUPLE_NAMESPACE_::make_tuple;
using GTEST_TUPLE_NAMESPACE_::tuple;
using GTEST_TUPLE_NAMESPACE_::tuple_size;
using GTEST_TUPLE_NAMESPACE_::tuple_element;
#endif  // defined(GTEST_TUPLE_NAMESPACE_)
# 1073 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

namespace internal {

// A secret type that Google Test users don't know about.  It has no
// definition on purpose.  Therefore it's impossible to create a
// Secret object, which is what we want.
class Secret;

// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
// expression is true. For example, you could use it to verify the
// size of a static array:
//
//   GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
//                         names_incorrect_size);
//
// or to make sure a struct is smaller than a certain size:
//
//   GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);
//
// The second argument to the macro is the name of the variable. If
// the expression is false, most compilers will issue a warning/error
// containing the name of the variable.

#if 0 /* disabled by -frewrite-includes */
#if GTEST_LANG_CXX11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1097 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
#else  // !GTEST_LANG_CXX11
# 1099 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
template <bool>
  struct CompileAssert {
};

# define GTEST_COMPILE_ASSERT_(expr, msg) \
  typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \
      msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_
#endif  // !GTEST_LANG_CXX11
# 1107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Implementation details of GTEST_COMPILE_ASSERT_:
//
// (In C++11, we simply use static_assert instead of the following)
//
// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1
//   elements (and thus is invalid) when the expression is false.
//
// - The simpler definition
//
//    #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]
//
//   does not work, as gcc supports variable-length arrays whose sizes
//   are determined at run-time (this is gcc's extension and not part
//   of the C++ standard).  As a result, gcc fails to reject the
//   following code with the simple definition:
//
//     int foo;
//     GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is
//                                      // not a compile-time constant.
//
// - By using the type CompileAssert<(bool(expr))>, we ensures that
//   expr is a compile-time constant.  (Template arguments must be
//   determined at compile-time.)
//
// - The outter parentheses in CompileAssert<(bool(expr))> are necessary
//   to work around a bug in gcc 3.4.4 and 4.0.1.  If we had written
//
//     CompileAssert<bool(expr)>
//
//   instead, these compilers will refuse to compile
//
//     GTEST_COMPILE_ASSERT_(5 > 0, some_message);
//
//   (They seem to think the ">" in "5 > 0" marks the end of the
//   template argument list.)
//
// - The array size is (bool(expr) ? 1 : -1), instead of simply
//
//     ((expr) ? 1 : -1).
//
//   This is to avoid running into a bug in MS VC 7.1, which
//   causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.

// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
//
// This template is declared, but intentionally undefined.
template <typename T1, typename T2>
struct StaticAssertTypeEqHelper;

template <typename T>
struct StaticAssertTypeEqHelper<T, T> {
  enum { value = true };
};

// Same as std::is_same<>.
template <typename T, typename U>
struct IsSame {
  enum { value = false };
};
template <typename T>
struct IsSame<T, T> {
  enum { value = true };
};

// Evaluates to the number of elements in 'array'.
#define GTEST_ARRAY_SIZE_(array) (sizeof(array) / sizeof(array[0]))

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_GLOBAL_STRING
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1176 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
typedef ::string string;
#else
# 1178 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
typedef ::std::string string;
#endif  // GTEST_HAS_GLOBAL_STRING
# 1180 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_GLOBAL_WSTRING
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1182 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
typedef ::wstring wstring;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif GTEST_HAS_STD_WSTRING
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 1184 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
typedef ::std::wstring wstring;
#endif  // GTEST_HAS_GLOBAL_WSTRING
# 1186 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A helper for suppressing warnings on constant condition.  It just
// returns 'condition'.
GTEST_API_ bool IsTrue(bool condition);

// Defines scoped_ptr.

// This implementation of scoped_ptr is PARTIAL - it only contains
// enough stuff to satisfy Google Test's need.
template <typename T>
class scoped_ptr {
 public:
  typedef T element_type;

  explicit scoped_ptr(T* p = NULL) : ptr_(p) {}
  ~scoped_ptr() { reset(); }

  T& operator*() const { return *ptr_; }
  T* operator->() const { return ptr_; }
  T* get() const { return ptr_; }

  T* release() {
    T* const ptr = ptr_;
    ptr_ = NULL;
    return ptr;
  }

  void reset(T* p = NULL) {
    if (p != ptr_) {
      if (IsTrue(sizeof(T) > 0)) {  // Makes sure T is a complete type.
        delete ptr_;
      }
      ptr_ = p;
    }
  }

  friend void swap(scoped_ptr& a, scoped_ptr& b) {
    using std::swap;
    swap(a.ptr_, b.ptr_);
  }

 private:
  T* ptr_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);
};

// Defines RE.

#if 0 /* disabled by -frewrite-includes */
#if GTEST_USES_PCRE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1236 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// if used, PCRE is injected by custom/gtest-port.h
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 1238 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A simple C++ wrapper for <regex.h>.  It uses the POSIX Extended
// Regular Expression syntax.
class GTEST_API_ RE {
 public:
  // A copy constructor is required by the Standard to initialize object
  // references from r-values.
  RE(const RE& other) { Init(other.pattern()); }

  // Constructs an RE from a string.
  RE(const ::std::string& regex) { Init(regex.c_str()); }  // NOLINT

#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_GLOBAL_STRING
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1251 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  RE(const ::string& regex) { Init(regex.c_str()); }  // NOLINT

# endif  // GTEST_HAS_GLOBAL_STRING
# 1255 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  RE(const char* regex) { Init(regex); }  // NOLINT
  ~RE();

  // Returns the string representation of the regex.
  const char* pattern() const { return pattern_; }

  // FullMatch(str, re) returns true iff regular expression re matches
  // the entire str.
  // PartialMatch(str, re) returns true iff regular expression re
  // matches a substring of str (including str itself).
  //
  // FIXME: make FullMatch() and PartialMatch() work
  // when str contains NUL characters.
  static bool FullMatch(const ::std::string& str, const RE& re) {
    return FullMatch(str.c_str(), re);
  }
  static bool PartialMatch(const ::std::string& str, const RE& re) {
    return PartialMatch(str.c_str(), re);
  }

#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_GLOBAL_STRING
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1277 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  static bool FullMatch(const ::string& str, const RE& re) {
    return FullMatch(str.c_str(), re);
  }
  static bool PartialMatch(const ::string& str, const RE& re) {
    return PartialMatch(str.c_str(), re);
  }

# endif  // GTEST_HAS_GLOBAL_STRING
# 1286 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  static bool FullMatch(const char* str, const RE& re);
  static bool PartialMatch(const char* str, const RE& re);

 private:
  void Init(const char* regex);

  // We use a const char* instead of an std::string, as Google Test used to be
  // used where std::string is not available.  FIXME: change to
  // std::string.
  const char* pattern_;
  bool is_valid_;

#if 0 /* disabled by -frewrite-includes */
# if GTEST_USES_POSIX_RE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1300 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  regex_t full_regex_;     // For FullMatch().
  regex_t partial_regex_;  // For PartialMatch().

# else  // GTEST_USES_SIMPLE_RE
# 1305 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  const char* full_pattern_;  // For FullMatch();

# endif
# 1309 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

  GTEST_DISALLOW_ASSIGN_(RE);
};

#endif  // GTEST_USES_PCRE
# 1314 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Formats a source file path and a line number as they would appear
// in an error message from the compiler used to compile this code.
GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);

// Formats a file location for compiler-independent XML output.
// Although this function is not platform dependent, we put it next to
// FormatFileLocation in order to contrast the two functions.
GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
                                                               int line);

// Defines logging utilities:
//   GTEST_LOG_(severity) - logs messages at the specified severity level. The
//                          message itself is streamed into the macro.
//   LogToStderr()  - directs all log messages to stderr.
//   FlushInfoLog() - flushes informational log messages.

enum GTestLogSeverity {
  GTEST_INFO,
  GTEST_WARNING,
  GTEST_ERROR,
  GTEST_FATAL
};

// Formats log entry severity, provides a stream object for streaming the
// log message, and terminates the message with a newline when going out of
// scope.
class GTEST_API_ GTestLog {
 public:
  GTestLog(GTestLogSeverity severity, const char* file, int line);

  // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
  ~GTestLog();

  ::std::ostream& GetStream() { return ::std::cerr; }

 private:
  const GTestLogSeverity severity_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
};

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_LOG_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1357 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

# define GTEST_LOG_(severity) \
    ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
                                  __FILE__, __LINE__).GetStream()

inline void LogToStderr() {}
inline void FlushInfoLog() { fflush(NULL); }

#endif  // !defined(GTEST_LOG_)
# 1366 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_CHECK_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// INTERNAL IMPLEMENTATION - DO NOT USE.
//
// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
// is not satisfied.
//  Synopsys:
//    GTEST_CHECK_(boolean_condition);
//     or
//    GTEST_CHECK_(boolean_condition) << "Additional message";
//
//    This checks the condition and if the condition is not satisfied
//    it prints message about the condition violation, including the
//    condition itself, plus additional message streamed into it, if any,
//    and then it aborts the program. It aborts the program irrespective of
//    whether it is built in the debug mode or not.
# define GTEST_CHECK_(condition) \
    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
    if (::testing::internal::IsTrue(condition)) \
      ; \
    else \
      GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
#endif  // !defined(GTEST_CHECK_)
# 1389 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// An all-mode assert to verify that the given POSIX-style function
// call returns 0 (indicating success).  Known limitation: this
// doesn't expand to a balanced 'if' statement, so enclose the macro
// in {} if you need to use it as the only statement in an 'if'
// branch.
#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
  if (const int gtest_error = (posix_call)) \
    GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
                      << gtest_error

// Adds reference to a type if it is not a reference type,
// otherwise leaves it unchanged.  This is the same as
// tr1::add_reference, which is not widely available yet.
template <typename T>
struct AddReference { typedef T& type; };  // NOLINT
template <typename T>
struct AddReference<T&> { typedef T& type; };  // NOLINT

// A handy wrapper around AddReference that works when the argument T
// depends on template parameters.
#define GTEST_ADD_REFERENCE_(T) \
    typename ::testing::internal::AddReference<T>::type

// Transforms "T" into "const T&" according to standard reference collapsing
// rules (this is only needed as a backport for C++98 compilers that do not
// support reference collapsing). Specifically, it transforms:
//
//   char         ==> const char&
//   const char   ==> const char&
//   char&        ==> char&
//   const char&  ==> const char&
//
// Note that the non-const reference will not have "const" added. This is
// standard, and necessary so that "T" can always bind to "const T&".
template <typename T>
struct ConstRef { typedef const T& type; };
template <typename T>
struct ConstRef<T&> { typedef T& type; };

// The argument T must depend on some template parameters.
#define GTEST_REFERENCE_TO_CONST_(T) \
  typename ::testing::internal::ConstRef<T>::type

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_STD_MOVE_
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1434 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
using std::forward;
using std::move;

template <typename T>
struct RvalueRef {
  typedef T&& type;
};
#else  // GTEST_HAS_STD_MOVE_
# 1442 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
template <typename T>
const T& move(const T& t) {
  return t;
}
template <typename T>
GTEST_ADD_REFERENCE_(T) forward(GTEST_ADD_REFERENCE_(T) t) { return t; }

template <typename T>
struct RvalueRef {
  typedef const T& type;
};
#endif  // GTEST_HAS_STD_MOVE_
# 1454 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
// Use ImplicitCast_ as a safe version of static_cast for upcasting in
// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
// const Foo*).  When you use ImplicitCast_, the compiler checks that
// the cast is safe.  Such explicit ImplicitCast_s are necessary in
// surprisingly many situations where C++ demands an exact type match
// instead of an argument type convertable to a target type.
//
// The syntax for using ImplicitCast_ is the same as for static_cast:
//
//   ImplicitCast_<ToType>(expr)
//
// ImplicitCast_ would have been part of the C++ standard library,
// but the proposal was submitted too late.  It will probably make
// its way into the language in the future.
//
// This relatively ugly name is intentional. It prevents clashes with
// similar functions users may have (e.g., implicit_cast). The internal
// namespace alone is not enough because the function can be found by ADL.
template<typename To>
inline To ImplicitCast_(To x) { return x; }

// When you upcast (that is, cast a pointer from type Foo to type
// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
// always succeed.  When you downcast (that is, cast a pointer from
// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
// how do you know the pointer is really of type SubclassOfFoo?  It
// could be a bare Foo, or of type DifferentSubclassOfFoo.  Thus,
// when you downcast, you should use this macro.  In debug mode, we
// use dynamic_cast<> to double-check the downcast is legal (we die
// if it's not).  In normal mode, we do the efficient static_cast<>
// instead.  Thus, it's important to test in debug mode to make sure
// the cast is legal!
//    This is the only place in the code we should use dynamic_cast<>.
// In particular, you SHOULDN'T be using dynamic_cast<> in order to
// do RTTI (eg code like this:
//    if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
//    if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
// You should design the code some other way not to need this.
//
// This relatively ugly name is intentional. It prevents clashes with
// similar functions users may have (e.g., down_cast). The internal
// namespace alone is not enough because the function can be found by ADL.
template<typename To, typename From>  // use like this: DownCast_<T*>(foo);
inline To DownCast_(From* f) {  // so we only accept pointers
  // Ensures that To is a sub-type of From *.  This test is here only
  // for compile-time type checking, and has no overhead in an
  // optimized build at run-time, as it will be optimized away
  // completely.
  GTEST_INTENTIONAL_CONST_COND_PUSH_()
  if (false) {
  GTEST_INTENTIONAL_CONST_COND_POP_()
    const To to = NULL;
    ::testing::internal::ImplicitCast_<From*>(to);
  }

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_RTTI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1513 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  // RTTI: debug mode only!
  GTEST_CHECK_(f == NULL || dynamic_cast<To>(f) != NULL);
#endif
# 1516 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  return static_cast<To>(f);
}

// Downcasts the pointer of type Base to Derived.
// Derived must be a subclass of Base. The parameter MUST
// point to a class of type Derived, not any subclass of it.
// When RTTI is available, the function performs a runtime
// check to enforce this.
template <class Derived, class Base>
Derived* CheckedDowncastToActualType(Base* base) {
#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_RTTI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1527 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  GTEST_CHECK_(typeid(*base) == typeid(Derived));
#endif
# 1529 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_DOWNCAST_
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  return ::down_cast<Derived*>(base);
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif GTEST_HAS_RTTI
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 1533 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  return dynamic_cast<Derived*>(base);  // NOLINT
#else
# 1535 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  return static_cast<Derived*>(base);  // Poor man's downcast.
#endif
# 1537 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
}

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_STREAM_REDIRECTION
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1540 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Defines the stderr capturer:
//   CaptureStdout     - starts capturing stdout.
//   GetCapturedStdout - stops capturing stdout and returns the captured string.
//   CaptureStderr     - starts capturing stderr.
//   GetCapturedStderr - stops capturing stderr and returns the captured string.
//
GTEST_API_ void CaptureStdout();
GTEST_API_ std::string GetCapturedStdout();
GTEST_API_ void CaptureStderr();
GTEST_API_ std::string GetCapturedStderr();

#endif  // GTEST_HAS_STREAM_REDIRECTION
# 1553 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Returns the size (in bytes) of a file.
GTEST_API_ size_t GetFileSize(FILE* file);

// Reads the entire content of a file as a string.
GTEST_API_ std::string ReadEntireFile(FILE* file);

// All command line arguments.
GTEST_API_ std::vector<std::string> GetArgvs();

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_DEATH_TEST
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1563 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

std::vector<std::string> GetInjectableArgvs();
// Deprecated: pass the args vector by value instead.
void SetInjectableArgvs(const std::vector<std::string>* new_argvs);
void SetInjectableArgvs(const std::vector<std::string>& new_argvs);
#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_GLOBAL_STRING
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1569 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
void SetInjectableArgvs(const std::vector< ::string>& new_argvs);
#endif  // GTEST_HAS_GLOBAL_STRING
# 1571 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
void ClearInjectableArgvs();

#endif  // GTEST_HAS_DEATH_TEST
# 1574 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Defines synchronization primitives.
#if 0 /* disabled by -frewrite-includes */
#if GTEST_IS_THREADSAFE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1577 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_PTHREAD
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Sleeps for (roughly) n milliseconds.  This function is only for testing
// Google Test's own constructs.  Don't use it in user tests, either
// directly or indirectly.
inline void SleepMilliseconds(int n) {
  const timespec time = {
    0,                  // 0 seconds.
    n * 1000L * 1000L,  // And n ms.
  };
  nanosleep(&time, NULL);
}
# endif  // GTEST_HAS_PTHREAD
# 1589 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_NOTIFICATION_
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1591 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Notification has already been imported into the namespace.
// Nothing to do here.

#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_HAS_PTHREAD
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 1595 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Allows a controller thread to pause execution of newly created
// threads until notified.  Instances of this class must be created
// and destroyed in the controller thread.
//
// This class is only for testing Google Test's own constructs. Do not
// use it in user tests, either directly or indirectly.
class Notification {
 public:
  Notification() : notified_(false) {
    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
  }
  ~Notification() {
    pthread_mutex_destroy(&mutex_);
  }

  // Notifies all threads created with this notification to start. Must
  // be called from the controller thread.
  void Notify() {
    pthread_mutex_lock(&mutex_);
    notified_ = true;
    pthread_mutex_unlock(&mutex_);
  }

  // Blocks until the controller thread notifies. Must be called from a test
  // thread.
  void WaitForNotification() {
    for (;;) {
      pthread_mutex_lock(&mutex_);
      const bool notified = notified_;
      pthread_mutex_unlock(&mutex_);
      if (notified)
        break;
      SleepMilliseconds(10);
    }
  }

 private:
  pthread_mutex_t mutex_;
  bool notified_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
};

#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1639 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

GTEST_API_ void SleepMilliseconds(int n);

// Provides leak-safe Windows kernel handle ownership.
// Used in death tests and in threading support.
class GTEST_API_ AutoHandle {
 public:
  // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
  // avoid including <windows.h> in this header file. Including <windows.h> is
  // undesirable because it defines a lot of symbols and macros that tend to
  // conflict with client code. This assumption is verified by
  // WindowsTypesTest.HANDLEIsVoidStar.
  typedef void* Handle;
  AutoHandle();
  explicit AutoHandle(Handle handle);

  ~AutoHandle();

  Handle Get() const;
  void Reset();
  void Reset(Handle handle);

 private:
  // Returns true iff the handle is a valid handle object that can be closed.
  bool IsCloseable() const;

  Handle handle_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
};

// Allows a controller thread to pause execution of newly created
// threads until notified.  Instances of this class must be created
// and destroyed in the controller thread.
//
// This class is only for testing Google Test's own constructs. Do not
// use it in user tests, either directly or indirectly.
class GTEST_API_ Notification {
 public:
  Notification();
  void Notify();
  void WaitForNotification();

 private:
  AutoHandle event_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
};
# endif  // GTEST_HAS_NOTIFICATION_
# 1688 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
// defined, but we don't want to use MinGW's pthreads implementation, which
// has conformance problems with some versions of the POSIX standard.
#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
// Consequently, it cannot select a correct instantiation of ThreadWithParam
// in order to call its Run(). Introducing ThreadWithParamBase as a
// non-templated base class for ThreadWithParam allows us to bypass this
// problem.
class ThreadWithParamBase {
 public:
  virtual ~ThreadWithParamBase() {}
  virtual void Run() = 0;
};

// pthread_create() accepts a pointer to a function type with the C linkage.
// According to the Standard (7.5/1), function types with different linkages
// are different even if they are otherwise identical.  Some compilers (for
// example, SunStudio) treat them as different types.  Since class methods
// cannot be defined with C-linkage we need to define a free C-function to
// pass into pthread_create().
extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
  static_cast<ThreadWithParamBase*>(thread)->Run();
  return NULL;
}

// Helper class for testing Google Test's multi-threading constructs.
// To use it, write:
//
//   void ThreadFunc(int param) { /* Do things with param */ }
//   Notification thread_can_start;
//   ...
//   // The thread_can_start parameter is optional; you can supply NULL.
//   ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
//   thread_can_start.Notify();
//
// These classes are only for testing Google Test's own constructs. Do
// not use them in user tests, either directly or indirectly.
template <typename T>
class ThreadWithParam : public ThreadWithParamBase {
 public:
  typedef void UserThreadFunc(T);

  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
      : func_(func),
        param_(param),
        thread_can_start_(thread_can_start),
        finished_(false) {
    ThreadWithParamBase* const base = this;
    // The thread can be created only after all fields except thread_
    // have been initialized.
    GTEST_CHECK_POSIX_SUCCESS_(
        pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
  }
  ~ThreadWithParam() { Join(); }

  void Join() {
    if (!finished_) {
      GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));
      finished_ = true;
    }
  }

  virtual void Run() {
    if (thread_can_start_ != NULL)
      thread_can_start_->WaitForNotification();
    func_(param_);
  }

 private:
  UserThreadFunc* const func_;  // User-supplied thread function.
  const T param_;  // User-supplied parameter to the thread function.
  // When non-NULL, used to block execution until the controller thread
  // notifies.
  Notification* const thread_can_start_;
  bool finished_;  // true iff we know that the thread function has finished.
  pthread_t thread_;  // The native thread object.

  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
};
# endif  // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
# 1771 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
         // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_

#if 0 /* disabled by -frewrite-includes */
# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1774 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Mutex and ThreadLocal have already been imported into the namespace.
// Nothing to do here.

#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 1778 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Mutex implements mutex on Windows platforms.  It is used in conjunction
// with class MutexLock:
//
//   Mutex mutex;
//   ...
//   MutexLock lock(&mutex);  // Acquires the mutex and releases it at the
//                            // end of the current scope.
//
// A static Mutex *must* be defined or declared using one of the following
// macros:
//   GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
//   GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
//
// (A non-static Mutex is defined/declared in the usual way).
class GTEST_API_ Mutex {
 public:
  enum MutexType { kStatic = 0, kDynamic = 1 };
  // We rely on kStaticMutex being 0 as it is to what the linker initializes
  // type_ in static mutexes.  critical_section_ will be initialized lazily
  // in ThreadSafeLazyInit().
  enum StaticConstructorSelector { kStaticMutex = 0 };

  // This constructor intentionally does nothing.  It relies on type_ being
  // statically initialized to 0 (effectively setting it to kStatic) and on
  // ThreadSafeLazyInit() to lazily initialize the rest of the members.
  explicit Mutex(StaticConstructorSelector /*dummy*/) {}

  Mutex();
  ~Mutex();

  void Lock();

  void Unlock();

  // Does nothing if the current thread holds the mutex. Otherwise, crashes
  // with high probability.
  void AssertHeld();

 private:
  // Initializes owner_thread_id_ and critical_section_ in static mutexes.
  void ThreadSafeLazyInit();

  // Per https://blogs.msdn.microsoft.com/oldnewthing/20040223-00/?p=40503,
  // we assume that 0 is an invalid value for thread IDs.
  unsigned int owner_thread_id_;

  // For static mutexes, we rely on these members being initialized to zeros
  // by the linker.
  MutexType type_;
  long critical_section_init_phase_;  // NOLINT
  GTEST_CRITICAL_SECTION* critical_section_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
};

# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
    extern ::testing::internal::Mutex mutex

# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
    ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)

// We cannot name this class MutexLock because the ctor declaration would
// conflict with a macro named MutexLock, which is defined on some
// platforms. That macro is used as a defensive measure to prevent against
// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
// "MutexLock l(&mu)".  Hence the typedef trick below.
class GTestMutexLock {
 public:
  explicit GTestMutexLock(Mutex* mutex)
      : mutex_(mutex) { mutex_->Lock(); }

  ~GTestMutexLock() { mutex_->Unlock(); }

 private:
  Mutex* const mutex_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
};

typedef GTestMutexLock MutexLock;

// Base class for ValueHolder<T>.  Allows a caller to hold and delete a value
// without knowing its type.
class ThreadLocalValueHolderBase {
 public:
  virtual ~ThreadLocalValueHolderBase() {}
};

// Provides a way for a thread to send notifications to a ThreadLocal
// regardless of its parameter type.
class ThreadLocalBase {
 public:
  // Creates a new ValueHolder<T> object holding a default value passed to
  // this ThreadLocal<T>'s constructor and returns it.  It is the caller's
  // responsibility not to call this when the ThreadLocal<T> instance already
  // has a value on the current thread.
  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;

 protected:
  ThreadLocalBase() {}
  virtual ~ThreadLocalBase() {}

 private:
  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
};

// Maps a thread to a set of ThreadLocals that have values instantiated on that
// thread and notifies them when the thread exits.  A ThreadLocal instance is
// expected to persist until all threads it has values on have terminated.
class GTEST_API_ ThreadLocalRegistry {
 public:
  // Registers thread_local_instance as having value on the current thread.
  // Returns a value that can be used to identify the thread from other threads.
  static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
      const ThreadLocalBase* thread_local_instance);

  // Invoked when a ThreadLocal instance is destroyed.
  static void OnThreadLocalDestroyed(
      const ThreadLocalBase* thread_local_instance);
};

class GTEST_API_ ThreadWithParamBase {
 public:
  void Join();

 protected:
  class Runnable {
   public:
    virtual ~Runnable() {}
    virtual void Run() = 0;
  };

  ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
  virtual ~ThreadWithParamBase();

 private:
  AutoHandle thread_;
};

// Helper class for testing Google Test's multi-threading constructs.
template <typename T>
class ThreadWithParam : public ThreadWithParamBase {
 public:
  typedef void UserThreadFunc(T);

  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
      : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
  }
  virtual ~ThreadWithParam() {}

 private:
  class RunnableImpl : public Runnable {
   public:
    RunnableImpl(UserThreadFunc* func, T param)
        : func_(func),
          param_(param) {
    }
    virtual ~RunnableImpl() {}
    virtual void Run() {
      func_(param_);
    }

   private:
    UserThreadFunc* const func_;
    const T param_;

    GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
  };

  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
};

// Implements thread-local storage on Windows systems.
//
//   // Thread 1
//   ThreadLocal<int> tl(100);  // 100 is the default value for each thread.
//
//   // Thread 2
//   tl.set(150);  // Changes the value for thread 2 only.
//   EXPECT_EQ(150, tl.get());
//
//   // Thread 1
//   EXPECT_EQ(100, tl.get());  // In thread 1, tl has the original value.
//   tl.set(200);
//   EXPECT_EQ(200, tl.get());
//
// The template type argument T must have a public copy constructor.
// In addition, the default ThreadLocal constructor requires T to have
// a public default constructor.
//
// The users of a TheadLocal instance have to make sure that all but one
// threads (including the main one) using that instance have exited before
// destroying it. Otherwise, the per-thread objects managed for them by the
// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
//
// Google Test only uses global ThreadLocal objects.  That means they
// will die after main() has returned.  Therefore, no per-thread
// object managed by Google Test will be leaked as long as all threads
// using Google Test have exited when main() returns.
template <typename T>
class ThreadLocal : public ThreadLocalBase {
 public:
  ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
  explicit ThreadLocal(const T& value)
      : default_factory_(new InstanceValueHolderFactory(value)) {}

  ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }

  T* pointer() { return GetOrCreateValue(); }
  const T* pointer() const { return GetOrCreateValue(); }
  const T& get() const { return *pointer(); }
  void set(const T& value) { *pointer() = value; }

 private:
  // Holds a value of T.  Can be deleted via its base class without the caller
  // knowing the type of T.
  class ValueHolder : public ThreadLocalValueHolderBase {
   public:
    ValueHolder() : value_() {}
    explicit ValueHolder(const T& value) : value_(value) {}

    T* pointer() { return &value_; }

   private:
    T value_;
    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
  };


  T* GetOrCreateValue() const {
    return static_cast<ValueHolder*>(
        ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
  }

  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
    return default_factory_->MakeNewHolder();
  }

  class ValueHolderFactory {
   public:
    ValueHolderFactory() {}
    virtual ~ValueHolderFactory() {}
    virtual ValueHolder* MakeNewHolder() const = 0;

   private:
    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
  };

  class DefaultValueHolderFactory : public ValueHolderFactory {
   public:
    DefaultValueHolderFactory() {}
    virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }

   private:
    GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
  };

  class InstanceValueHolderFactory : public ValueHolderFactory {
   public:
    explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
    virtual ValueHolder* MakeNewHolder() const {
      return new ValueHolder(value_);
    }

   private:
    const T value_;  // The value for each thread.

    GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
  };

  scoped_ptr<ValueHolderFactory> default_factory_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
};

#if 0 /* disabled by -frewrite-includes */
#if 0
# elif GTEST_HAS_PTHREAD
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 2055 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// MutexBase and Mutex implement mutex on pthreads-based platforms.
class MutexBase {
 public:
  // Acquires this mutex.
  void Lock() {
    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
    owner_ = pthread_self();
    has_owner_ = true;
  }

  // Releases this mutex.
  void Unlock() {
    // Since the lock is being released the owner_ field should no longer be
    // considered valid. We don't protect writing to has_owner_ here, as it's
    // the caller's responsibility to ensure that the current thread holds the
    // mutex when this is called.
    has_owner_ = false;
    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
  }

  // Does nothing if the current thread holds the mutex. Otherwise, crashes
  // with high probability.
  void AssertHeld() const {
    GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
        << "The current thread is not holding the mutex @" << this;
  }

  // A static mutex may be used before main() is entered.  It may even
  // be used before the dynamic initialization stage.  Therefore we
  // must be able to initialize a static mutex object at link time.
  // This means MutexBase has to be a POD and its member variables
  // have to be public.
 public:
  pthread_mutex_t mutex_;  // The underlying pthread mutex.
  // has_owner_ indicates whether the owner_ field below contains a valid thread
  // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
  // accesses to the owner_ field should be protected by a check of this field.
  // An alternative might be to memset() owner_ to all zeros, but there's no
  // guarantee that a zero'd pthread_t is necessarily invalid or even different
  // from pthread_self().
  bool has_owner_;
  pthread_t owner_;  // The thread holding the mutex.
};

// Forward-declares a static mutex.
#  define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
     extern ::testing::internal::MutexBase mutex

// Defines and statically (i.e. at link time) initializes a static mutex.
// The initialization list here does not explicitly initialize each field,
// instead relying on default initialization for the unspecified fields. In
// particular, the owner_ field (a pthread_t) is not explicitly initialized.
// This allows initialization to work whether pthread_t is a scalar or struct.
// The flag -Wmissing-field-initializers must not be specified for this to work.
#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
  ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}

// The Mutex class can only be used for mutexes created at runtime. It
// shares its API with MutexBase otherwise.
class Mutex : public MutexBase {
 public:
  Mutex() {
    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
    has_owner_ = false;
  }
  ~Mutex() {
    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
  }

 private:
  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
};

// We cannot name this class MutexLock because the ctor declaration would
// conflict with a macro named MutexLock, which is defined on some
// platforms. That macro is used as a defensive measure to prevent against
// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
// "MutexLock l(&mu)".  Hence the typedef trick below.
class GTestMutexLock {
 public:
  explicit GTestMutexLock(MutexBase* mutex)
      : mutex_(mutex) { mutex_->Lock(); }

  ~GTestMutexLock() { mutex_->Unlock(); }

 private:
  MutexBase* const mutex_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
};

typedef GTestMutexLock MutexLock;

// Helpers for ThreadLocal.

// pthread_key_create() requires DeleteThreadLocalValue() to have
// C-linkage.  Therefore it cannot be templatized to access
// ThreadLocal<T>.  Hence the need for class
// ThreadLocalValueHolderBase.
class ThreadLocalValueHolderBase {
 public:
  virtual ~ThreadLocalValueHolderBase() {}
};

// Called by pthread to delete thread-local data stored by
// pthread_setspecific().
extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
  delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
}

// Implements thread-local storage on pthreads-based systems.
template <typename T>
class GTEST_API_ ThreadLocal {
 public:
  ThreadLocal()
      : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
  explicit ThreadLocal(const T& value)
      : key_(CreateKey()),
        default_factory_(new InstanceValueHolderFactory(value)) {}

  ~ThreadLocal() {
    // Destroys the managed object for the current thread, if any.
    DeleteThreadLocalValue(pthread_getspecific(key_));

    // Releases resources associated with the key.  This will *not*
    // delete managed objects for other threads.
    GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
  }

  T* pointer() { return GetOrCreateValue(); }
  const T* pointer() const { return GetOrCreateValue(); }
  const T& get() const { return *pointer(); }
  void set(const T& value) { *pointer() = value; }

 private:
  // Holds a value of type T.
  class ValueHolder : public ThreadLocalValueHolderBase {
   public:
    ValueHolder() : value_() {}
    explicit ValueHolder(const T& value) : value_(value) {}

    T* pointer() { return &value_; }

   private:
    T value_;
    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
  };

  static pthread_key_t CreateKey() {
    pthread_key_t key;
    // When a thread exits, DeleteThreadLocalValue() will be called on
    // the object managed for that thread.
    GTEST_CHECK_POSIX_SUCCESS_(
        pthread_key_create(&key, &DeleteThreadLocalValue));
    return key;
  }

  T* GetOrCreateValue() const {
    ThreadLocalValueHolderBase* const holder =
        static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
    if (holder != NULL) {
      return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
    }

    ValueHolder* const new_holder = default_factory_->MakeNewHolder();
    ThreadLocalValueHolderBase* const holder_base = new_holder;
    GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
    return new_holder->pointer();
  }

  class ValueHolderFactory {
   public:
    ValueHolderFactory() {}
    virtual ~ValueHolderFactory() {}
    virtual ValueHolder* MakeNewHolder() const = 0;

   private:
    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
  };

  class DefaultValueHolderFactory : public ValueHolderFactory {
   public:
    DefaultValueHolderFactory() {}
    virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }

   private:
    GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
  };

  class InstanceValueHolderFactory : public ValueHolderFactory {
   public:
    explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
    virtual ValueHolder* MakeNewHolder() const {
      return new ValueHolder(value_);
    }

   private:
    const T value_;  // The value for each thread.

    GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
  };

  // A key pthreads uses for looking up per-thread values.
  const pthread_key_t key_;
  scoped_ptr<ValueHolderFactory> default_factory_;

  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
};

# endif  // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
# 2266 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#else  // GTEST_IS_THREADSAFE
# 2268 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// A dummy implementation of synchronization primitives (mutex, lock,
// and thread-local variable).  Necessary for compiling Google Test where
// mutex is not supported - using Google Test in multiple threads is not
// supported on such platforms.

class Mutex {
 public:
  Mutex() {}
  void Lock() {}
  void Unlock() {}
  void AssertHeld() const {}
};

# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
  extern ::testing::internal::Mutex mutex

# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex

// We cannot name this class MutexLock because the ctor declaration would
// conflict with a macro named MutexLock, which is defined on some
// platforms. That macro is used as a defensive measure to prevent against
// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
// "MutexLock l(&mu)".  Hence the typedef trick below.
class GTestMutexLock {
 public:
  explicit GTestMutexLock(Mutex*) {}  // NOLINT
};

typedef GTestMutexLock MutexLock;

template <typename T>
class GTEST_API_ ThreadLocal {
 public:
  ThreadLocal() : value_() {}
  explicit ThreadLocal(const T& value) : value_(value) {}
  T* pointer() { return &value_; }
  const T* pointer() const { return &value_; }
  const T& get() const { return value_; }
  void set(const T& value) { value_ = value; }
 private:
  T value_;
};

#endif  // GTEST_IS_THREADSAFE
# 2313 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Returns the number of threads running in the process, or 0 to indicate that
// we cannot detect it.
GTEST_API_ size_t GetThreadCount();

// Passing non-POD classes through ellipsis (...) crashes the ARM
// compiler and generates a warning in Sun Studio before 12u4. The Nokia Symbian
// and the IBM XL C/C++ compiler try to instantiate a copy constructor
// for objects passed through ellipsis (...), failing for uncopyable
// objects.  We define this to ensure that only POD is passed through
// ellipsis on these systems.
#if 0 /* disabled by -frewrite-includes */
#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || \
     (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5130)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// We lose support for NULL detection where the compiler doesn't like
// passing non-POD classes through ellipsis (...).
# define GTEST_ELLIPSIS_NEEDS_POD_ 1
#else
# 2330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_CAN_COMPARE_NULL 1
#endif
# 2332 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
// const T& and const T* in a function template.  These compilers
// _can_ decide between class template specializations for T and T*,
// so a tr1::type_traits-like is_pointer works.
#if 0 /* disabled by -frewrite-includes */
#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2338 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_NEEDS_IS_POINTER_ 1
#endif
# 2340 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

template <bool bool_value>
struct bool_constant {
  typedef bool_constant<bool_value> type;
  static const bool value = bool_value;
};
template <bool bool_value> const bool bool_constant<bool_value>::value;

typedef bool_constant<false> false_type;
typedef bool_constant<true> true_type;

template <typename T, typename U>
struct is_same : public false_type {};

template <typename T>
struct is_same<T, T> : public true_type {};


template <typename T>
struct is_pointer : public false_type {};

template <typename T>
struct is_pointer<T*> : public true_type {};

template <typename Iterator>
struct IteratorTraits {
  typedef typename Iterator::value_type value_type;
};


template <typename T>
struct IteratorTraits<T*> {
  typedef T value_type;
};

template <typename T>
struct IteratorTraits<const T*> {
  typedef T value_type;
};

#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2381 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_PATH_SEP_ "\\"
# define GTEST_HAS_ALT_PATH_SEP_ 1
// The biggest signed integer type the compiler supports.
typedef __int64 BiggestInt;
#else
# 2386 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_PATH_SEP_ "/"
# define GTEST_HAS_ALT_PATH_SEP_ 0
typedef long long BiggestInt;  // NOLINT
#endif  // GTEST_OS_WINDOWS
# 2390 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Utilities for char.

// isspace(int ch) and friends accept an unsigned char or EOF.  char
// may be signed, depending on the compiler (or compiler flags).
// Therefore we need to cast a char to unsigned char before calling
// isspace(), etc.

inline bool IsAlpha(char ch) {
  return isalpha(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsAlNum(char ch) {
  return isalnum(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsDigit(char ch) {
  return isdigit(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsLower(char ch) {
  return islower(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsSpace(char ch) {
  return isspace(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsUpper(char ch) {
  return isupper(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsXDigit(char ch) {
  return isxdigit(static_cast<unsigned char>(ch)) != 0;
}
inline bool IsXDigit(wchar_t ch) {
  const unsigned char low_byte = static_cast<unsigned char>(ch);
  return ch == low_byte && isxdigit(low_byte) != 0;
}

inline char ToLower(char ch) {
  return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
}
inline char ToUpper(char ch) {
  return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
}

inline std::string StripTrailingSpaces(std::string str) {
  std::string::iterator it = str.end();
  while (it != str.begin() && IsSpace(*--it))
    it = str.erase(it);
  return str;
}

// The testing::internal::posix namespace holds wrappers for common
// POSIX functions.  These wrappers hide the differences between
// Windows/MSVC and POSIX systems.  Since some compilers define these
// standard functions as macros, the wrapper cannot have the same name
// as the wrapped function.

namespace posix {

// Functions with a different name on Windows.

#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2449 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

typedef struct _stat StatStruct;

# ifdef __BORLANDC__
inline int IsATTY(int fd) { return isatty(fd); }
inline int StrCaseCmp(const char* s1, const char* s2) {
  return stricmp(s1, s2);
}
inline char* StrDup(const char* src) { return strdup(src); }
# else  // !__BORLANDC__
# 2459 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
#if 0 /* disabled by -frewrite-includes */
#  if GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2460 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int IsATTY(int /* fd */) { return 0; }
#  else
# 2462 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int IsATTY(int fd) { return _isatty(fd); }
#  endif  // GTEST_OS_WINDOWS_MOBILE
# 2464 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int StrCaseCmp(const char* s1, const char* s2) {
  return _stricmp(s1, s2);
}
inline char* StrDup(const char* src) { return _strdup(src); }
# endif  // __BORLANDC__
# 2469 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
# if GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2471 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
// time and thus not defined there.
# else
# 2475 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int FileNo(FILE* file) { return _fileno(file); }
inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
inline int RmDir(const char* dir) { return _rmdir(dir); }
inline bool IsDir(const StatStruct& st) {
  return (_S_IFDIR & st.st_mode) != 0;
}
# endif  // GTEST_OS_WINDOWS_MOBILE
# 2482 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#else
# 2484 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

typedef struct stat StatStruct;

inline int FileNo(FILE* file) { return fileno(file); }
inline int IsATTY(int fd) { return isatty(fd); }
inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
inline int StrCaseCmp(const char* s1, const char* s2) {
  return strcasecmp(s1, s2);
}
inline char* StrDup(const char* src) { return strdup(src); }
inline int RmDir(const char* dir) { return rmdir(dir); }
inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }

#endif  // GTEST_OS_WINDOWS
# 2498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Functions deprecated by MSVC 8.0.

GTEST_DISABLE_MSC_DEPRECATED_PUSH_()

inline const char* StrNCpy(char* dest, const char* src, size_t n) {
  return strncpy(dest, src, n);
}

// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
// StrError() aren't needed on Windows CE at this time and thus not
// defined there.

#if 0 /* disabled by -frewrite-includes */
#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2512 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int ChDir(const char* dir) { return chdir(dir); }
#endif
# 2514 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline FILE* FOpen(const char* path, const char* mode) {
  return fopen(path, mode);
}
#if 0 /* disabled by -frewrite-includes */
#if !GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2518 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
  return freopen(path, mode, stream);
}
inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
#endif
# 2523 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int FClose(FILE* fp) { return fclose(fp); }
#if 0 /* disabled by -frewrite-includes */
#if !GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2525 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline int Read(int fd, void* buf, unsigned int count) {
  return static_cast<int>(read(fd, buf, count));
}
inline int Write(int fd, const void* buf, unsigned int count) {
  return static_cast<int>(write(fd, buf, count));
}
inline int Close(int fd) { return close(fd); }
inline const char* StrError(int errnum) { return strerror(errnum); }
#endif
# 2534 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline const char* GetEnv(const char* name) {
#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2536 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  // We are on Windows CE, which has no environment variables.
  static_cast<void>(name);  // To prevent 'unused argument' warning.
  return NULL;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 2540 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  // Environment variables which we programmatically clear will be set to the
  // empty string rather than unset (NULL).  Handle that case.
  const char* const env = getenv(name);
  return (env != NULL && env[0] != '\0') ? env : NULL;
#else
# 2545 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  return getenv(name);
#endif
# 2547 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
}

GTEST_DISABLE_MSC_DEPRECATED_POP_()

#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2552 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Windows CE has no C library. The abort() function is used in
// several places in Google Test. This implementation provides a reasonable
// imitation of standard behaviour.
void Abort();
#else
# 2557 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
inline void Abort() { abort(); }
#endif  // GTEST_OS_WINDOWS_MOBILE
# 2559 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

}  // namespace posix

// MSVC "deprecates" snprintf and issues warnings wherever it is used.  In
// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
// MSVC-based platforms.  We map the GTEST_SNPRINTF_ macro to the appropriate
// function in order to achieve that.  We use macro definition here because
// snprintf is a variadic function.
#if 0 /* disabled by -frewrite-includes */
#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2568 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// MSVC 2005 and above support variadic macros.
# define GTEST_SNPRINTF_(buffer, size, format, ...) \
     _snprintf_s(buffer, size, size, format, __VA_ARGS__)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 2572 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
// complain about _snprintf.
# define GTEST_SNPRINTF_ _snprintf
#else
# 2576 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_SNPRINTF_ snprintf
#endif
# 2578 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// The maximum number a BiggestInt can represent.  This definition
// works no matter BiggestInt is represented in one's complement or
// two's complement.
//
// We cannot rely on numeric_limits in STL, as __int64 and long long
// are not part of standard C++ and numeric_limits doesn't need to be
// defined for them.
const BiggestInt kMaxBiggestInt =
    ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));

// This template class serves as a compile-time function from size to
// type.  It maps a size in bytes to a primitive type with that
// size. e.g.
//
//   TypeWithSize<4>::UInt
//
// is typedef-ed to be unsigned int (unsigned integer made up of 4
// bytes).
//
// Such functionality should belong to STL, but I cannot find it
// there.
//
// Google Test uses this class in the implementation of floating-point
// comparison.
//
// For now it only handles UInt (unsigned int) as that's all Google Test
// needs.  Other types can be easily added in the future if need
// arises.
template <size_t size>
class TypeWithSize {
 public:
  // This prevents the user from using TypeWithSize<N> with incorrect
  // values of N.
  typedef void UInt;
};

// The specialization for size 4.
template <>
class TypeWithSize<4> {
 public:
  // unsigned int has size 4 in both gcc and MSVC.
  //
  // As base/basictypes.h doesn't compile on Windows, we cannot use
  // uint32, uint64, and etc here.
  typedef int Int;
  typedef unsigned int UInt;
};

// The specialization for size 8.
template <>
class TypeWithSize<8> {
 public:
#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_WINDOWS
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2632 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  typedef __int64 Int;
  typedef unsigned __int64 UInt;
#else
# 2635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
  typedef long long Int;  // NOLINT
  typedef unsigned long long UInt;  // NOLINT
#endif  // GTEST_OS_WINDOWS
# 2638 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
};

// Integer types of known sizes.
typedef TypeWithSize<4>::Int Int32;
typedef TypeWithSize<4>::UInt UInt32;
typedef TypeWithSize<8>::Int Int64;
typedef TypeWithSize<8>::UInt UInt64;
typedef TypeWithSize<8>::Int TimeInMillis;  // Represents time in milliseconds.

// Utilities for command line flags and environment variables.

// Macro for referencing flags.
#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_FLAG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2651 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_FLAG(name) FLAGS_gtest_##name
#endif  // !defined(GTEST_FLAG)
# 2653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2655 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
#endif  // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
# 2657 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_DECLARE_bool_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2659 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver

// Macros for declaring flags.
# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
# define GTEST_DECLARE_int32_(name) \
    GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
# define GTEST_DECLARE_string_(name) \
    GTEST_API_ extern ::std::string GTEST_FLAG(name)

// Macros for defining flags.
# define GTEST_DEFINE_bool_(name, default_val, doc) \
    GTEST_API_ bool GTEST_FLAG(name) = (default_val)
# define GTEST_DEFINE_int32_(name, default_val, doc) \
    GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
# define GTEST_DEFINE_string_(name, default_val, doc) \
    GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)

#endif  // !defined(GTEST_DECLARE_bool_)
# 2677 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Thread annotations
#if 0 /* disabled by -frewrite-includes */
#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2680 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
# define GTEST_LOCK_EXCLUDED_(locks)
#endif  // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
# 2683 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"

// Parses 'str' for a 32-bit signed integer.  If successful, writes the result
// to *value and returns true; otherwise leaves *value unchanged and returns
// false.
// FIXME: Find a better way to refactor flag and environment parsing
// out of both gtest-port.cc and gtest.cc to avoid exporting this utility
// function.
bool ParseInt32(const Message& src_text, const char* str, Int32* value);

// Parses a bool/Int32/string from the environment variable
// corresponding to the given Google Test flag.
bool BoolFromGTestEnv(const char* flag, bool default_val);
GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
std::string OutputFlagAlsoCheckEnvVar();
const char* StringFromGTestEnv(const char* flag, const char* default_val);

}  // namespace internal
}  // namespace testing

#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
# 2703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-port.h"
# 75 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h" 2

namespace testing {
namespace internal {

// Protects copying of all linked_ptr objects.
GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);

// This is used internally by all instances of linked_ptr<>.  It needs to be
// a non-template class because different types of linked_ptr<> can refer to
// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
// So, it needs to be possible for different types of linked_ptr to participate
// in the same circular linked list, so we need a single class type here.
//
// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.
class linked_ptr_internal {
 public:
  // Create a new circle that includes only this instance.
  void join_new() {
    next_ = this;
  }

  // Many linked_ptr operations may change p.link_ for some linked_ptr
  // variable p in the same circle as this object.  Therefore we need
  // to prevent two such operations from occurring concurrently.
  //
  // Note that different types of linked_ptr objects can coexist in a
  // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
  // linked_ptr<Derived2>).  Therefore we must use a single mutex to
  // protect all linked_ptr objects.  This can create serious
  // contention in production code, but is acceptable in a testing
  // framework.

  // Join an existing circle.
  void join(linked_ptr_internal const* ptr)
      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
    MutexLock lock(&g_linked_ptr_mutex);

    linked_ptr_internal const* p = ptr;
    while (p->next_ != ptr) {
      assert(p->next_ != this &&
             "Trying to join() a linked ring we are already in. "
             "Is GMock thread safety enabled?");
      p = p->next_;
    }
    p->next_ = this;
    next_ = ptr;
  }

  // Leave whatever circle we're part of.  Returns true if we were the
  // last member of the circle.  Once this is done, you can join() another.
  bool depart()
      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
    MutexLock lock(&g_linked_ptr_mutex);

    if (next_ == this) return true;
    linked_ptr_internal const* p = next_;
    while (p->next_ != this) {
      assert(p->next_ != next_ &&
             "Trying to depart() a linked ring we are not in. "
             "Is GMock thread safety enabled?");
      p = p->next_;
    }
    p->next_ = next_;
    return false;
  }

 private:
  mutable linked_ptr_internal const* next_;
};

template <typename T>
class linked_ptr {
 public:
  typedef T element_type;

  // Take over ownership of a raw pointer.  This should happen as soon as
  // possible after the object is created.
  explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
  ~linked_ptr() { depart(); }

  // Copy an existing linked_ptr<>, adding ourselves to the list of references.
  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
  linked_ptr(linked_ptr const& ptr) {  // NOLINT
    assert(&ptr != this);
    copy(&ptr);
  }

  // Assignment releases the old value and acquires the new.
  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
    depart();
    copy(&ptr);
    return *this;
  }

  linked_ptr& operator=(linked_ptr const& ptr) {
    if (&ptr != this) {
      depart();
      copy(&ptr);
    }
    return *this;
  }

  // Smart pointer members.
  void reset(T* ptr = NULL) {
    depart();
    capture(ptr);
  }
  T* get() const { return value_; }
  T* operator->() const { return value_; }
  T& operator*() const { return *value_; }

  bool operator==(T* p) const { return value_ == p; }
  bool operator!=(T* p) const { return value_ != p; }
  template <typename U>
  bool operator==(linked_ptr<U> const& ptr) const {
    return value_ == ptr.get();
  }
  template <typename U>
  bool operator!=(linked_ptr<U> const& ptr) const {
    return value_ != ptr.get();
  }

 private:
  template <typename U>
  friend class linked_ptr;

  T* value_;
  linked_ptr_internal link_;

  void depart() {
    if (link_.depart()) delete value_;
  }

  void capture(T* ptr) {
    value_ = ptr;
    link_.join_new();
  }

  template <typename U> void copy(linked_ptr<U> const* ptr) {
    value_ = ptr->get();
    if (value_)
      link_.join(&ptr->link_);
    else
      link_.join_new();
  }
};

template<typename T> inline
bool operator==(T* ptr, const linked_ptr<T>& x) {
  return ptr == x.get();
}

template<typename T> inline
bool operator!=(T* ptr, const linked_ptr<T>& x) {
  return ptr != x.get();
}

// A function to convert T* into linked_ptr<T>
// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
template <typename T>
linked_ptr<T> make_linked_ptr(T* ptr) {
  return linked_ptr<T>(ptr);
}

}  // namespace internal
}  // namespace testing

#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
# 244 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-linked_ptr.h"
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-port.h"
#endif /* expanded by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
#if 0 /* expanded by -frewrite-includes */
#include "gmock/internal/custom/gmock-port.h"
#endif /* expanded by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/custom/gmock-port.h" 1
// Copyright 2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Injection point for custom user configurations. See README for details
//
// ** Custom implementation starts here **

// GOOGLETEST_CM0002 DO NOT DELETE

#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
#define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_

#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/custom/gmock-port.h"
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h" 2

// For MS Visual C++, check the compiler version. At least VS 2003 is
// required to compile Google Mock.
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER) && _MSC_VER < 1310
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 62 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# error "At least Visual C++ 2003 (7.1) is required to compile Google Mock."
#endif
# 64 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"

// Macro for referencing flags.  This is public as we want the user to
// use this syntax to reference Google Mock flags.
#define GMOCK_FLAG(name) FLAGS_gmock_##name

#if 0 /* disabled by -frewrite-includes */
#if !defined(GMOCK_DECLARE_bool_)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"

// Macros for declaring flags.
# define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
# define GMOCK_DECLARE_int32_(name) \
    extern GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name)
# define GMOCK_DECLARE_string_(name) \
    extern GTEST_API_ ::std::string GMOCK_FLAG(name)

// Macros for defining flags.
# define GMOCK_DEFINE_bool_(name, default_val, doc) \
    GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
# define GMOCK_DEFINE_int32_(name, default_val, doc) \
    GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) = (default_val)
# define GMOCK_DEFINE_string_(name, default_val, doc) \
    GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val)

#endif  // !defined(GMOCK_DECLARE_bool_)
# 87 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"

#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-port.h"
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gmock/internal/gmock-generated-internal-utils.h" 2

namespace testing {

template <typename T>
class Matcher;

namespace internal {

// An IgnoredValue object can be implicitly constructed from ANY value.
// This is used in implementing the IgnoreResult(a) action.
class IgnoredValue {
 public:
  // This constructor template allows any value to be implicitly
  // converted to IgnoredValue.  The object has no data member and
  // doesn't try to remember anything about the argument.  We
  // deliberately omit the 'explicit' keyword in order to allow the
  // conversion to be implicit.
  template <typename T>
  IgnoredValue(const T& /* ignored */) {}  // NOLINT(runtime/explicit)
};

// MatcherTuple<T>::type is a tuple type where each field is a Matcher
// for the corresponding field in tuple type T.
template <typename Tuple>
struct MatcherTuple;

template <>
struct MatcherTuple< ::testing::tuple<> > {
  typedef ::testing::tuple< > type;
};

template <typename A1>
struct MatcherTuple< ::testing::tuple<A1> > {
  typedef ::testing::tuple<Matcher<A1> > type;
};

template <typename A1, typename A2>
struct MatcherTuple< ::testing::tuple<A1, A2> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2> > type;
};

template <typename A1, typename A2, typename A3>
struct MatcherTuple< ::testing::tuple<A1, A2, A3> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3> > type;
};

template <typename A1, typename A2, typename A3, typename A4>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5,
    typename A6>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5>, Matcher<A6> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5,
    typename A6, typename A7>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5>, Matcher<A6>, Matcher<A7> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5,
    typename A6, typename A7, typename A8>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5,
    typename A6, typename A7, typename A8, typename A9>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>,
                           Matcher<A9> >
      type;
};

template <typename A1, typename A2, typename A3, typename A4, typename A5,
    typename A6, typename A7, typename A8, typename A9, typename A10>
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
    A10> > {
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
                           Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>,
                           Matcher<A9>, Matcher<A10> >
      type;
};

// Template struct Function<F>, where F must be a function type, contains
// the following typedefs:
//
//   Result:               the function's return type.
//   ArgumentN:            the type of the N-th argument, where N starts with 1.
//   ArgumentTuple:        the tuple type consisting of all parameters of F.
//   ArgumentMatcherTuple: the tuple type consisting of Matchers for all
//                         parameters of F.
//   MakeResultVoid:       the function type obtained by substituting void
//                         for the return type of F.
//   MakeResultIgnoredValue:
//                         the function type obtained by substituting Something
//                         for the return type of F.
template <typename F>
struct Function;

template <typename R>
struct Function<R()> {
  typedef R Result;
  typedef ::testing::tuple<> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid();
  typedef IgnoredValue MakeResultIgnoredValue();
};

template <typename R, typename A1>
struct Function<R(A1)>
    : Function<R()> {
  typedef A1 Argument1;
  typedef ::testing::tuple<A1> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1);
  typedef IgnoredValue MakeResultIgnoredValue(A1);
};

template <typename R, typename A1, typename A2>
struct Function<R(A1, A2)>
    : Function<R(A1)> {
  typedef A2 Argument2;
  typedef ::testing::tuple<A1, A2> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2);
};

template <typename R, typename A1, typename A2, typename A3>
struct Function<R(A1, A2, A3)>
    : Function<R(A1, A2)> {
  typedef A3 Argument3;
  typedef ::testing::tuple<A1, A2, A3> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3);
};

template <typename R, typename A1, typename A2, typename A3, typename A4>
struct Function<R(A1, A2, A3, A4)>
    : Function<R(A1, A2, A3)> {
  typedef A4 Argument4;
  typedef ::testing::tuple<A1, A2, A3, A4> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5>
struct Function<R(A1, A2, A3, A4, A5)>
    : Function<R(A1, A2, A3, A4)> {
  typedef A5 Argument5;
  typedef ::testing::tuple<A1, A2, A3, A4, A5> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5, typename A6>
struct Function<R(A1, A2, A3, A4, A5, A6)>
    : Function<R(A1, A2, A3, A4, A5)> {
  typedef A6 Argument6;
  typedef ::testing::tuple<A1, A2, A3, A4, A5, A6> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5, typename A6, typename A7>
struct Function<R(A1, A2, A3, A4, A5, A6, A7)>
    : Function<R(A1, A2, A3, A4, A5, A6)> {
  typedef A7 Argument7;
  typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5, typename A6, typename A7, typename A8>
struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8)>
    : Function<R(A1, A2, A3, A4, A5, A6, A7)> {
  typedef A8 Argument8;
  typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5, typename A6, typename A7, typename A8, typename A9>
struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)>
    : Function<R(A1, A2, A3, A4, A5, A6, A7, A8)> {
  typedef A9 Argument9;
  typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8, A9);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,
      A9);
};

template <typename R, typename A1, typename A2, typename A3, typename A4,
    typename A5, typename A6, typename A7, typename A8, typename A9,
    typename A10>
struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
    : Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  typedef A10 Argument10;
  typedef ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
      A10> ArgumentTuple;
  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,
      A9, A10);
};

}  // namespace internal

}  // namespace testing

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

//
// The Google C++ Testing and Mocking Framework (Google Test)
//
// This header file defines the public API for Google Test.  It should be
// included by any test program that uses Google Test.
//
// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
// leave some internal implementation details in this header file.
// They are clearly marked by comments like this:
//
//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
//
// Such code is NOT meant to be used by a user directly, and is subject
// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user
// program!
//
// Acknowledgment: Google Test borrowed the idea of automatic test
// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
// easyUnit framework.

// GOOGLETEST_CM0001 DO NOT DELETE

#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
#define GTEST_INCLUDE_GTEST_GTEST_H_

#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
#if 0 /* expanded by -frewrite-includes */
#include <ostream>
#endif /* expanded by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
#if 0 /* expanded by -frewrite-includes */
#include <vector>
#endif /* expanded by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"

#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-internal.h"
#endif /* expanded by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/gtest.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h" 1
// Copyright 2005, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// The Google C++ Testing and Mocking Framework (Google Test)
//
// This header file declares functions and macros used internally by
// Google Test.  They are subject to change without notice.

// GOOGLETEST_CM0001 DO NOT DELETE

#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_

#if 0 /* expanded by -frewrite-includes */
#include "gtest/internal/gtest-port.h"
#endif /* expanded by -frewrite-includes */
# 40 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 41 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_OS_LINUX
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
# include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
# include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 44 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
# include <sys/wait.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
# include <unistd.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#endif  // GTEST_OS_LINUX
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"

#if 0 /* disabled by -frewrite-includes */
#if GTEST_HAS_EXCEPTIONS
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
# include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 50 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#endif
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"

#if 0 /* expanded by -frewrite-includes */
#include <ctype.h>
#endif /* expanded by -frewrite-includes */
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
#include <float.h>
#endif /* expanded by -frewrite-includes */
# 54 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 1 3
// -*- C++ -*-
//===--------------------------- float.h ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_FLOAT_H
#define _LIBCPP_FLOAT_H

/*
    float.h synopsis

Macros:

    FLT_ROUNDS
    FLT_EVAL_METHOD     // C99
    FLT_RADIX

    FLT_MANT_DIG
    DBL_MANT_DIG
    LDBL_MANT_DIG

    FLT_HAS_SUBNORM     // C11
    DBL_HAS_SUBNORM     // C11
    LDBL_HAS_SUBNORM    // C11

    DECIMAL_DIG         // C99
    FLT_DECIMAL_DIG     // C11
    DBL_DECIMAL_DIG     // C11
    LDBL_DECIMAL_DIG    // C11

    FLT_DIG
    DBL_DIG
    LDBL_DIG

    FLT_MIN_EXP
    DBL_MIN_EXP
    LDBL_MIN_EXP

    FLT_MIN_10_EXP
    DBL_MIN_10_EXP
    LDBL_MIN_10_EXP

    FLT_MAX_EXP
    DBL_MAX_EXP
    LDBL_MAX_EXP

    FLT_MAX_10_EXP
    DBL_MAX_10_EXP
    LDBL_MAX_10_EXP

    FLT_MAX
    DBL_MAX
    LDBL_MAX

    FLT_EPSILON
    DBL_EPSILON
    LDBL_EPSILON

    FLT_MIN
    DBL_MIN
    LDBL_MIN

    FLT_TRUE_MIN        // C11
    DBL_TRUE_MIN        // C11
    LDBL_TRUE_MIN       // C11

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 73 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 76 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 77 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3
#endif
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3

#if 0 /* expanded by -frewrite-includes */
#include_next <float.h>
#endif /* expanded by -frewrite-includes */
# 79 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 1 3 4
/*-
 * Copyright (c) 1989 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	from: @(#)float.h	7.1 (Berkeley) 5/8/90
 * $FreeBSD$
 */

#ifndef _MACHINE_FLOAT_H_
#define	_MACHINE_FLOAT_H_

#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4

__BEGIN_DECLS
extern int __flt_rounds(void);
__END_DECLS

#define	FLT_RADIX	2		/* b */
#define	FLT_ROUNDS	__flt_rounds()
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 1999
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
#define	FLT_EVAL_METHOD	0
#define	DECIMAL_DIG	17		/* max precision in decimal digits */
#endif
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4

#define	FLT_MANT_DIG	24		/* p */
#define	FLT_EPSILON	1.19209290E-07F	/* b**(1-p) */
#define	FLT_DIG		6		/* floor((p-1)*log10(b))+(b == 10) */
#define	FLT_MIN_EXP	(-125)		/* emin */
#define	FLT_MIN		1.17549435E-38F	/* b**(emin-1) */
#define	FLT_MIN_10_EXP	(-37)		/* ceil(log10(b**(emin-1))) */
#define	FLT_MAX_EXP	128		/* emax */
#define	FLT_MAX		3.40282347E+38F	/* (1-b**(-p))*b**emax */
#define	FLT_MAX_10_EXP	38		/* floor(log10((1-b**(-p))*b**emax)) */
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
#define	FLT_TRUE_MIN	1.40129846E-45F	/* b**(emin-p) */
#define	FLT_DECIMAL_DIG	9		/* ceil(1+p*log10(b)) */
#define	FLT_HAS_SUBNORM	1
#endif /* __ISO_C_VISIBLE >= 2011 */
# 63 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4

#define	DBL_MANT_DIG	53
#define	DBL_EPSILON	2.2204460492503131E-16
#define	DBL_DIG		15
#define	DBL_MIN_EXP	(-1021)
#define	DBL_MIN		2.2250738585072014E-308
#define	DBL_MIN_10_EXP	(-307)
#define	DBL_MAX_EXP	1024
#define	DBL_MAX		1.7976931348623157E+308
#define	DBL_MAX_10_EXP	308
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 74 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
#define	DBL_TRUE_MIN	4.9406564584124654E-324
#define	DBL_DECIMAL_DIG	17
#define	DBL_HAS_SUBNORM	1
#endif /* __ISO_C_VISIBLE >= 2011 */
# 78 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4

#define	LDBL_MANT_DIG	113
#define	LDBL_EPSILON	1.925929944387235853055977942584927319E-34L
#define	LDBL_DIG	33
#define	LDBL_MIN_EXP	(-16381)
#define	LDBL_MIN	3.362103143112093506262677817321752603E-4932L
#define	LDBL_MIN_10_EXP	(-4931)
#define	LDBL_MAX_EXP	(+16384)
#define	LDBL_MAX	1.189731495357231765085759326628007016E+4932L
#define	LDBL_MAX_10_EXP	(+4932)
#if 0 /* disabled by -frewrite-includes */
#if __ISO_C_VISIBLE >= 2011
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 89 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
#define	LDBL_TRUE_MIN	6.475175119438025110924438958227646552E-4966L
#define	LDBL_DECIMAL_DIG 36
#define	LDBL_HAS_SUBNORM 1
#endif /* __ISO_C_VISIBLE >= 2011 */
# 93 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4

#endif /* _MACHINE_FLOAT_H_ */
# 95 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/float.h" 3 4
# 80 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 2 3

#ifdef __cplusplus

#ifndef FLT_EVAL_METHOD
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#endif
# 86 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3

#ifndef DECIMAL_DIG
#define DECIMAL_DIG __DECIMAL_DIG__
#endif
# 90 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3

#endif // __cplusplus
# 92 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3

#endif // _LIBCPP_FLOAT_H
# 94 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/float.h" 3
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <string.h>
#endif /* expanded by -frewrite-includes */
# 55 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
#include <iomanip>
#endif /* expanded by -frewrite-includes */
# 56 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 1 3
// -*- C++ -*-
//===--------------------------- iomanip ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_IOMANIP
#define _LIBCPP_IOMANIP

/*
    iomanip synopsis

namespace std {

// types T1, T2, ... are unspecified implementation types
T1 resetiosflags(ios_base::fmtflags mask);
T2 setiosflags (ios_base::fmtflags mask);
T3 setbase(int base);
template<charT> T4 setfill(charT c);
T5 setprecision(int n);
T6 setw(int n);
template <class moneyT> T7 get_money(moneyT& mon, bool intl = false);
template <class charT, class moneyT> T8 put_money(const moneyT& mon, bool intl = false);
template <class charT> T9 get_time(struct tm* tmb, const charT* fmt);
template <class charT> T10 put_time(const struct tm* tmb, const charT* fmt);

template <class charT>
  T11 quoted(const charT* s, charT delim=charT('"'), charT escape=charT('\\')); // C++14

template <class charT, class traits, class Allocator>
  T12 quoted(const basic_string<charT, traits, Allocator>& s,
             charT delim=charT('"'), charT escape=charT('\\')); // C++14

template <class charT, class traits, class Allocator>
  T13 quoted(basic_string<charT, traits, Allocator>& s,
             charT delim=charT('"'), charT escape=charT('\\')); // C++14

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
#if 0 /* expanded by -frewrite-includes */
#include <__string>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
#if 0 /* expanded by -frewrite-includes */
#include <istream>
#endif /* expanded by -frewrite-includes */
# 47 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 48 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
# 49 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 51 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 52 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
#endif
# 53 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3

_LIBCPP_BEGIN_NAMESPACE_STD

// resetiosflags

class __iom_t1
{
    ios_base::fmtflags __mask_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t1(ios_base::fmtflags __m) : __mask_(__m) {}

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t1& __x)
    {
        __is.unsetf(__x.__mask_);
        return __is;
    }

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t1& __x)
    {
        __os.unsetf(__x.__mask_);
        return __os;
    }
};

inline _LIBCPP_INLINE_VISIBILITY
__iom_t1
resetiosflags(ios_base::fmtflags __mask)
{
    return __iom_t1(__mask);
}

// setiosflags

class __iom_t2
{
    ios_base::fmtflags __mask_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t2(ios_base::fmtflags __m) : __mask_(__m) {}

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t2& __x)
    {
        __is.setf(__x.__mask_);
        return __is;
    }

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t2& __x)
    {
        __os.setf(__x.__mask_);
        return __os;
    }
};

inline _LIBCPP_INLINE_VISIBILITY
__iom_t2
setiosflags(ios_base::fmtflags __mask)
{
    return __iom_t2(__mask);
}

// setbase

class __iom_t3
{
    int __base_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t3(int __b) : __base_(__b) {}

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t3& __x)
    {
        __is.setf(__x.__base_ == 8  ? ios_base::oct :
                  __x.__base_ == 10 ? ios_base::dec :
                  __x.__base_ == 16 ? ios_base::hex :
                  ios_base::fmtflags(0), ios_base::basefield);
        return __is;
    }

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t3& __x)
    {
        __os.setf(__x.__base_ == 8  ? ios_base::oct :
                  __x.__base_ == 10 ? ios_base::dec :
                  __x.__base_ == 16 ? ios_base::hex :
                  ios_base::fmtflags(0), ios_base::basefield);
        return __os;
    }
};

inline _LIBCPP_INLINE_VISIBILITY
__iom_t3
setbase(int __base)
{
    return __iom_t3(__base);
}

// setfill

template<class _CharT>
class __iom_t4
{
    _CharT __fill_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t4(_CharT __c) : __fill_(__c) {}

    template <class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t4& __x)
    {
        __os.fill(__x.__fill_);
        return __os;
    }
};

template<class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
__iom_t4<_CharT>
setfill(_CharT __c)
{
    return __iom_t4<_CharT>(__c);
}

// setprecision

class __iom_t5
{
    int __n_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t5(int __n) : __n_(__n) {}

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t5& __x)
    {
        __is.precision(__x.__n_);
        return __is;
    }

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t5& __x)
    {
        __os.precision(__x.__n_);
        return __os;
    }
};

inline _LIBCPP_INLINE_VISIBILITY
__iom_t5
setprecision(int __n)
{
    return __iom_t5(__n);
}

// setw

class __iom_t6
{
    int __n_;
public:
    _LIBCPP_INLINE_VISIBILITY
    explicit __iom_t6(int __n) : __n_(__n) {}

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t6& __x)
    {
        __is.width(__x.__n_);
        return __is;
    }

    template <class _CharT, class _Traits>
    friend
    _LIBCPP_INLINE_VISIBILITY
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t6& __x)
    {
        __os.width(__x.__n_);
        return __os;
    }
};

inline _LIBCPP_INLINE_VISIBILITY
__iom_t6
setw(int __n)
{
    return __iom_t6(__n);
}

// get_money

template <class _MoneyT> class __iom_t7;

template <class _CharT, class _Traits, class _MoneyT>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x);

template <class _MoneyT>
class __iom_t7
{
    _MoneyT& __mon_;
    bool __intl_;
public:
    _LIBCPP_INLINE_VISIBILITY
    __iom_t7(_MoneyT& __mon, bool __intl)
        : __mon_(__mon), __intl_(__intl) {}

    template <class _CharT, class _Traits, class _Mp>
    friend
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_Mp>& __x);
};

template <class _CharT, class _Traits, class _MoneyT>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 308 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
        typename basic_istream<_CharT, _Traits>::sentry __s(__is);
        if (__s)
        {
            typedef istreambuf_iterator<_CharT, _Traits> _Ip;
            typedef money_get<_CharT, _Ip> _Fp;
            ios_base::iostate __err = ios_base::goodbit;
            const _Fp& __mf = use_facet<_Fp>(__is.getloc());
            __mf.get(_Ip(__is), _Ip(), __x.__intl_, __is, __err, __x.__mon_);
            __is.setstate(__err);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __is.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
    return __is;
}

template <class _MoneyT>
inline _LIBCPP_INLINE_VISIBILITY
__iom_t7<_MoneyT>
get_money(_MoneyT& __mon, bool __intl = false)
{
    return __iom_t7<_MoneyT>(__mon, __intl);
}

// put_money

template <class _MoneyT> class __iom_t8;

template <class _CharT, class _Traits, class _MoneyT>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x);

template <class _MoneyT>
class __iom_t8
{
    const _MoneyT& __mon_;
    bool __intl_;
public:
    _LIBCPP_INLINE_VISIBILITY
    __iom_t8(const _MoneyT& __mon, bool __intl)
        : __mon_(__mon), __intl_(__intl) {}

    template <class _CharT, class _Traits, class _Mp>
    friend
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_Mp>& __x);
};

template <class _CharT, class _Traits, class _MoneyT>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 368 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
        typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
        if (__s)
        {
            typedef ostreambuf_iterator<_CharT, _Traits> _Op;
            typedef money_put<_CharT, _Op> _Fp;
            const _Fp& __mf = use_facet<_Fp>(__os.getloc());
            if (__mf.put(_Op(__os), __x.__intl_, __os, __os.fill(), __x.__mon_).failed())
                __os.setstate(ios_base::badbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __os.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 384 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
    return __os;
}

template <class _MoneyT>
inline _LIBCPP_INLINE_VISIBILITY
__iom_t8<_MoneyT>
put_money(const _MoneyT& __mon, bool __intl = false)
{
    return __iom_t8<_MoneyT>(__mon, __intl);
}

// get_time

template <class _CharT> class __iom_t9;

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x);

template <class _CharT>
class __iom_t9
{
    tm* __tm_;
    const _CharT* __fmt_;
public:
    _LIBCPP_INLINE_VISIBILITY
    __iom_t9(tm* __tm, const _CharT* __fmt)
        : __tm_(__tm), __fmt_(__fmt) {}

    template <class _Cp, class _Traits>
    friend
    basic_istream<_Cp, _Traits>&
    operator>>(basic_istream<_Cp, _Traits>& __is, const __iom_t9<_Cp>& __x);
};

template <class _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 427 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
        typename basic_istream<_CharT, _Traits>::sentry __s(__is);
        if (__s)
        {
            typedef istreambuf_iterator<_CharT, _Traits> _Ip;
            typedef time_get<_CharT, _Ip> _Fp;
            ios_base::iostate __err = ios_base::goodbit;
            const _Fp& __tf = use_facet<_Fp>(__is.getloc());
            __tf.get(_Ip(__is), _Ip(), __is, __err, __x.__tm_,
                     __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_));
            __is.setstate(__err);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __is.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
    return __is;
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
__iom_t9<_CharT>
get_time(tm* __tm, const _CharT* __fmt)
{
    return __iom_t9<_CharT>(__tm, __fmt);
}

// put_time

template <class _CharT> class __iom_t10;

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x);

template <class _CharT>
class __iom_t10
{
    const tm* __tm_;
    const _CharT* __fmt_;
public:
    _LIBCPP_INLINE_VISIBILITY
    __iom_t10(const tm* __tm, const _CharT* __fmt)
        : __tm_(__tm), __fmt_(__fmt) {}

    template <class _Cp, class _Traits>
    friend
    basic_ostream<_Cp, _Traits>&
    operator<<(basic_ostream<_Cp, _Traits>& __os, const __iom_t10<_Cp>& __x);
};

template <class _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x)
{
#ifndef _LIBCPP_NO_EXCEPTIONS
    try
    {
#endif // _LIBCPP_NO_EXCEPTIONS
# 488 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
        typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
        if (__s)
        {
            typedef ostreambuf_iterator<_CharT, _Traits> _Op;
            typedef time_put<_CharT, _Op> _Fp;
            const _Fp& __tf = use_facet<_Fp>(__os.getloc());
            if (__tf.put(_Op(__os), __os, __os.fill(), __x.__tm_,
                         __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_)).failed())
                __os.setstate(ios_base::badbit);
        }
#ifndef _LIBCPP_NO_EXCEPTIONS
    }
    catch (...)
    {
        __os.__set_badbit_and_consider_rethrow();
    }
#endif // _LIBCPP_NO_EXCEPTIONS
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
    return __os;
}

template <class _CharT>
inline _LIBCPP_INLINE_VISIBILITY
__iom_t10<_CharT>
put_time(const tm* __tm, const _CharT* __fmt)
{
    return __iom_t10<_CharT>(__tm, __fmt);
}

template <class _CharT, class _Traits, class _ForwardIterator>
basic_ostream<_CharT, _Traits> &
__quoted_output ( basic_ostream<_CharT, _Traits> &__os,
        _ForwardIterator __first, _ForwardIterator __last, _CharT __delim, _CharT __escape )
{
    basic_string<_CharT, _Traits> __str;
    __str.push_back(__delim);
    for ( ; __first != __last; ++ __first )
    {
        if (_Traits::eq (*__first, __escape) || _Traits::eq (*__first, __delim))
            __str.push_back(__escape);
        __str.push_back(*__first);
    }
    __str.push_back(__delim);
    return _VSTD::__put_character_sequence(__os, __str.data(), __str.size());
}

template <class _CharT, class _Traits, class _String>
basic_istream<_CharT, _Traits> &
__quoted_input ( basic_istream<_CharT, _Traits> &__is, _String & __string, _CharT __delim, _CharT __escape )
{
    __string.clear ();
    _CharT __c;
    __is >> __c;
    if ( __is.fail ())
        return __is;

    if (!_Traits::eq (__c, __delim))    // no delimiter, read the whole string
    {
        __is.unget ();
        __is >> __string;
        return __is;
    }

    __save_flags<_CharT, _Traits> sf(__is);
    noskipws (__is);
    while (true)
        {
        __is >> __c;
        if ( __is.fail ())
            break;
        if (_Traits::eq (__c, __escape))
        {
            __is >> __c;
            if ( __is.fail ())
                break;
        }
        else if (_Traits::eq (__c, __delim))
            break;
        __string.push_back ( __c );
        }
    return __is;
}


template <class _CharT, class _Traits, class _Iter>
basic_ostream<_CharT, _Traits>& operator<<(
         basic_ostream<_CharT, _Traits>& __os,
         const __quoted_output_proxy<_CharT, _Iter, _Traits> & __proxy)
{
    return __quoted_output (__os, __proxy.__first, __proxy.__last, __proxy.__delim, __proxy.__escape);
}

template <class _CharT, class _Traits, class _Allocator>
struct __quoted_proxy
{
    basic_string<_CharT, _Traits, _Allocator> &__string;
    _CharT  __delim;
    _CharT  __escape;

    __quoted_proxy(basic_string<_CharT, _Traits, _Allocator> &__s, _CharT __d, _CharT __e)
    : __string(__s), __delim(__d), __escape(__e) {}
};

template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
basic_ostream<_CharT, _Traits>& operator<<(
        basic_ostream<_CharT, _Traits>& __os,
        const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy)
{
    return __quoted_output (__os, __proxy.__string.cbegin (), __proxy.__string.cend (), __proxy.__delim, __proxy.__escape);
}

//  extractor for non-const basic_string& proxies
template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
basic_istream<_CharT, _Traits>& operator>>(
        basic_istream<_CharT, _Traits>& __is,
        const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy)
{
    return __quoted_input ( __is, __proxy.__string, __proxy.__delim, __proxy.__escape );
}


template <class _CharT>
_LIBCPP_INLINE_VISIBILITY
__quoted_output_proxy<_CharT, const _CharT *>
quoted ( const _CharT *__s, _CharT __delim = _CharT('"'), _CharT __escape =_CharT('\\'))
{
    const _CharT *__end = __s;
    while ( *__end ) ++__end;
    return __quoted_output_proxy<_CharT, const _CharT *> ( __s, __end, __delim, __escape );
}


template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
__quoted_output_proxy<_CharT, typename basic_string <_CharT, _Traits, _Allocator>::const_iterator>
__quoted ( const basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
{
    return __quoted_output_proxy<_CharT,
            typename basic_string <_CharT, _Traits, _Allocator>::const_iterator>
                    ( __s.cbegin(), __s.cend (), __delim, __escape );
}

template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
__quoted_proxy<_CharT, _Traits, _Allocator>
__quoted ( basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
{
    return __quoted_proxy<_CharT, _Traits, _Allocator>( __s, __delim, __escape );
}


#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 641 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3

template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
__quoted_output_proxy<_CharT, typename basic_string <_CharT, _Traits, _Allocator>::const_iterator>
quoted ( const basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
{
    return __quoted(__s, __delim, __escape);
}

template <class _CharT, class _Traits, class _Allocator>
_LIBCPP_INLINE_VISIBILITY
__quoted_proxy<_CharT, _Traits, _Allocator>
quoted ( basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
{
    return __quoted(__s, __delim, __escape);
}

template <class _CharT, class _Traits>
__quoted_output_proxy<_CharT, const _CharT *, _Traits>
quoted (basic_string_view <_CharT, _Traits> __sv,
             _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
{
    return __quoted_output_proxy<_CharT, const _CharT *, _Traits>
         ( __sv.data(), __sv.data() + __sv.size(), __delim, __escape );
}
#endif
# 667 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_IOMANIP
# 671 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/iomanip" 3
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 57 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
#if 0 /* expanded by -frewrite-includes */
#include <map>
#endif /* expanded by -frewrite-includes */
# 58 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 1 3
// -*- C++ -*-
//===----------------------------- map ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_MAP
#define _LIBCPP_MAP

/*

    map synopsis

namespace std
{

template <class Key, class T, class Compare = less<Key>,
          class Allocator = allocator<pair<const Key, T>>>
class map
{
public:
    // types:
    typedef Key                                      key_type;
    typedef T                                        mapped_type;
    typedef pair<const key_type, mapped_type>        value_type;
    typedef Compare                                  key_compare;
    typedef Allocator                                allocator_type;
    typedef typename allocator_type::reference       reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef typename allocator_type::pointer         pointer;
    typedef typename allocator_type::const_pointer   const_pointer;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;

    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;
    typedef unspecified                              node_type;              // C++17
    typedef INSERT_RETURN_TYPE<iterator, node_type>  insert_return_type;     // C++17

    class value_compare
    {
        friend class map;
    protected:
        key_compare comp;

        value_compare(key_compare c);
    public:
        typedef bool result_type;  // deprecated in C++17, removed in C++20
        typedef value_type first_argument_type;  // deprecated in C++17, removed in C++20
        typedef value_type second_argument_type;  // deprecated in C++17, removed in C++20
        bool operator()(const value_type& x, const value_type& y) const;
    };

    // construct/copy/destroy:
    map()
        noexcept(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value);
    explicit map(const key_compare& comp);
    map(const key_compare& comp, const allocator_type& a);
    template <class InputIterator>
        map(InputIterator first, InputIterator last,
            const key_compare& comp = key_compare());
    template <class InputIterator>
        map(InputIterator first, InputIterator last,
            const key_compare& comp, const allocator_type& a);
    map(const map& m);
    map(map&& m)
        noexcept(
            is_nothrow_move_constructible<allocator_type>::value &&
            is_nothrow_move_constructible<key_compare>::value);
    explicit map(const allocator_type& a);
    map(const map& m, const allocator_type& a);
    map(map&& m, const allocator_type& a);
    map(initializer_list<value_type> il, const key_compare& comp = key_compare());
    map(initializer_list<value_type> il, const key_compare& comp, const allocator_type& a);
    template <class InputIterator>
        map(InputIterator first, InputIterator last, const allocator_type& a)
            : map(first, last, Compare(), a) {}  // C++14
    map(initializer_list<value_type> il, const allocator_type& a)
        : map(il, Compare(), a) {}  // C++14
   ~map();

    map& operator=(const map& m);
    map& operator=(map&& m)
        noexcept(
            allocator_type::propagate_on_container_move_assignment::value &&
            is_nothrow_move_assignable<allocator_type>::value &&
            is_nothrow_move_assignable<key_compare>::value);
    map& operator=(initializer_list<value_type> il);

    // iterators:
          iterator begin() noexcept;
    const_iterator begin() const noexcept;
          iterator end() noexcept;
    const_iterator end()   const noexcept;

          reverse_iterator rbegin() noexcept;
    const_reverse_iterator rbegin() const noexcept;
          reverse_iterator rend() noexcept;
    const_reverse_iterator rend()   const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    // capacity:
    bool      empty()    const noexcept;
    size_type size()     const noexcept;
    size_type max_size() const noexcept;

    // element access:
    mapped_type& operator[](const key_type& k);
    mapped_type& operator[](key_type&& k);

          mapped_type& at(const key_type& k);
    const mapped_type& at(const key_type& k) const;

    // modifiers:
    template <class... Args>
        pair<iterator, bool> emplace(Args&&... args);
    template <class... Args>
        iterator emplace_hint(const_iterator position, Args&&... args);
    pair<iterator, bool> insert(const value_type& v);
    pair<iterator, bool> insert(      value_type&& v);                                // C++17
    template <class P>
        pair<iterator, bool> insert(P&& p);
    iterator insert(const_iterator position, const value_type& v);
    iterator insert(const_iterator position,       value_type&& v);                   // C++17
    template <class P>
        iterator insert(const_iterator position, P&& p);
    template <class InputIterator>
        void insert(InputIterator first, InputIterator last);
    void insert(initializer_list<value_type> il);

    node_type extract(const_iterator position);                                       // C++17
    node_type extract(const key_type& x);                                             // C++17
    insert_return_type insert(node_type&& nh);                                        // C++17
    iterator insert(const_iterator hint, node_type&& nh);                             // C++17

    template <class... Args>
        pair<iterator, bool> try_emplace(const key_type& k, Args&&... args);          // C++17
    template <class... Args>
        pair<iterator, bool> try_emplace(key_type&& k, Args&&... args);               // C++17
    template <class... Args>
        iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); // C++17
    template <class... Args>
        iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args);      // C++17
    template <class M>
        pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj);            // C++17
    template <class M>
        pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj);                 // C++17
    template <class M>
        iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj);   // C++17
    template <class M>
        iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj);        // C++17

    iterator  erase(const_iterator position);
    iterator  erase(iterator position); // C++14
    size_type erase(const key_type& k);
    iterator  erase(const_iterator first, const_iterator last);
    void clear() noexcept;

    template<class C2>
      void merge(map<Key, T, C2, Allocator>& source);         // C++17
    template<class C2>
      void merge(map<Key, T, C2, Allocator>&& source);        // C++17
    template<class C2>
      void merge(multimap<Key, T, C2, Allocator>& source);    // C++17
    template<class C2>
      void merge(multimap<Key, T, C2, Allocator>&& source);   // C++17

    void swap(map& m)
        noexcept(allocator_traits<allocator_type>::is_always_equal::value &&
            is_nothrow_swappable<key_compare>::value); // C++17

    // observers:
    allocator_type get_allocator() const noexcept;
    key_compare    key_comp()      const;
    value_compare  value_comp()    const;

    // map operations:
          iterator find(const key_type& k);
    const_iterator find(const key_type& k) const;
    template<typename K>
        iterator find(const K& x);              // C++14
    template<typename K>
        const_iterator find(const K& x) const;  // C++14

    template<typename K>
      size_type count(const K& x) const;        // C++14
    size_type      count(const key_type& k) const;

    bool           contains(const key_type& x) const;  // C++20
    template<class K> bool contains(const K& x) const; // C++20

          iterator lower_bound(const key_type& k);
    const_iterator lower_bound(const key_type& k) const;
    template<typename K>
        iterator lower_bound(const K& x);              // C++14
    template<typename K>
        const_iterator lower_bound(const K& x) const;  // C++14

          iterator upper_bound(const key_type& k);
    const_iterator upper_bound(const key_type& k) const;
    template<typename K>
        iterator upper_bound(const K& x);              // C++14
    template<typename K>
        const_iterator upper_bound(const K& x) const;  // C++14

    pair<iterator,iterator>             equal_range(const key_type& k);
    pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
    template<typename K>
        pair<iterator,iterator>             equal_range(const K& x);        // C++14
    template<typename K>
        pair<const_iterator,const_iterator> equal_range(const K& x) const;  // C++14
};

template <class Key, class T, class Compare, class Allocator>
bool
operator==(const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator< (const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator!=(const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator> (const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator>=(const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator<=(const map<Key, T, Compare, Allocator>& x,
           const map<Key, T, Compare, Allocator>& y);

// specialized algorithms:
template <class Key, class T, class Compare, class Allocator>
void
swap(map<Key, T, Compare, Allocator>& x, map<Key, T, Compare, Allocator>& y)
    noexcept(noexcept(x.swap(y)));

template <class Key, class T, class Compare, class Allocator, class Predicate>
typename map<Key, T, Compare, Allocator>::size_type
erase_if(map<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20


template <class Key, class T, class Compare = less<Key>,
          class Allocator = allocator<pair<const Key, T>>>
class multimap
{
public:
    // types:
    typedef Key                                      key_type;
    typedef T                                        mapped_type;
    typedef pair<const key_type,mapped_type>         value_type;
    typedef Compare                                  key_compare;
    typedef Allocator                                allocator_type;
    typedef typename allocator_type::reference       reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef typename allocator_type::pointer         pointer;
    typedef typename allocator_type::const_pointer   const_pointer;

    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;
    typedef unspecified                              node_type;              // C++17

    class value_compare
    {
        friend class multimap;
    protected:
        key_compare comp;
        value_compare(key_compare c);
    public:
        typedef bool result_type;  // deprecated in C++17, removed in C++20
        typedef value_type first_argument_type;  // deprecated in C++17, removed in C++20
        typedef value_type second_argument_type;  // deprecated in C++17, removed in C++20
        bool operator()(const value_type& x, const value_type& y) const;
    };

    // construct/copy/destroy:
    multimap()
        noexcept(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value);
    explicit multimap(const key_compare& comp);
    multimap(const key_compare& comp, const allocator_type& a);
    template <class InputIterator>
        multimap(InputIterator first, InputIterator last, const key_compare& comp);
    template <class InputIterator>
        multimap(InputIterator first, InputIterator last, const key_compare& comp,
                 const allocator_type& a);
    multimap(const multimap& m);
    multimap(multimap&& m)
        noexcept(
            is_nothrow_move_constructible<allocator_type>::value &&
            is_nothrow_move_constructible<key_compare>::value);
    explicit multimap(const allocator_type& a);
    multimap(const multimap& m, const allocator_type& a);
    multimap(multimap&& m, const allocator_type& a);
    multimap(initializer_list<value_type> il, const key_compare& comp = key_compare());
    multimap(initializer_list<value_type> il, const key_compare& comp,
             const allocator_type& a);
    template <class InputIterator>
        multimap(InputIterator first, InputIterator last, const allocator_type& a)
            : multimap(first, last, Compare(), a) {} // C++14
    multimap(initializer_list<value_type> il, const allocator_type& a)
        : multimap(il, Compare(), a) {} // C++14
    ~multimap();

    multimap& operator=(const multimap& m);
    multimap& operator=(multimap&& m)
        noexcept(
            allocator_type::propagate_on_container_move_assignment::value &&
            is_nothrow_move_assignable<allocator_type>::value &&
            is_nothrow_move_assignable<key_compare>::value);
    multimap& operator=(initializer_list<value_type> il);

    // iterators:
          iterator begin() noexcept;
    const_iterator begin() const noexcept;
          iterator end() noexcept;
    const_iterator end()   const noexcept;

          reverse_iterator rbegin() noexcept;
    const_reverse_iterator rbegin() const noexcept;
          reverse_iterator rend() noexcept;
    const_reverse_iterator rend()   const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    // capacity:
    bool      empty()    const noexcept;
    size_type size()     const noexcept;
    size_type max_size() const noexcept;

    // modifiers:
    template <class... Args>
        iterator emplace(Args&&... args);
    template <class... Args>
        iterator emplace_hint(const_iterator position, Args&&... args);
    iterator insert(const value_type& v);
    iterator insert(      value_type&& v);                                            // C++17
    template <class P>
        iterator insert(P&& p);
    iterator insert(const_iterator position, const value_type& v);
    iterator insert(const_iterator position,       value_type&& v);                   // C++17
    template <class P>
        iterator insert(const_iterator position, P&& p);
    template <class InputIterator>
        void insert(InputIterator first, InputIterator last);
    void insert(initializer_list<value_type> il);

    node_type extract(const_iterator position);                                       // C++17
    node_type extract(const key_type& x);                                             // C++17
    iterator insert(node_type&& nh);                                                  // C++17
    iterator insert(const_iterator hint, node_type&& nh);                             // C++17

    iterator  erase(const_iterator position);
    iterator  erase(iterator position); // C++14
    size_type erase(const key_type& k);
    iterator  erase(const_iterator first, const_iterator last);
    void clear() noexcept;

    template<class C2>
      void merge(multimap<Key, T, C2, Allocator>& source);    // C++17
    template<class C2>
      void merge(multimap<Key, T, C2, Allocator>&& source);   // C++17
    template<class C2>
      void merge(map<Key, T, C2, Allocator>& source);         // C++17
    template<class C2>
      void merge(map<Key, T, C2, Allocator>&& source);        // C++17

    void swap(multimap& m)
        noexcept(allocator_traits<allocator_type>::is_always_equal::value &&
            is_nothrow_swappable<key_compare>::value); // C++17

    // observers:
    allocator_type get_allocator() const noexcept;
    key_compare    key_comp()      const;
    value_compare  value_comp()    const;

    // map operations:
          iterator find(const key_type& k);
    const_iterator find(const key_type& k) const;
    template<typename K>
        iterator find(const K& x);              // C++14
    template<typename K>
        const_iterator find(const K& x) const;  // C++14

    template<typename K>
      size_type count(const K& x) const;        // C++14
    size_type      count(const key_type& k) const;

    bool           contains(const key_type& x) const;  // C++20
    template<class K> bool contains(const K& x) const; // C++20

          iterator lower_bound(const key_type& k);
    const_iterator lower_bound(const key_type& k) const;
    template<typename K>
        iterator lower_bound(const K& x);              // C++14
    template<typename K>
        const_iterator lower_bound(const K& x) const;  // C++14

          iterator upper_bound(const key_type& k);
    const_iterator upper_bound(const key_type& k) const;
    template<typename K>
        iterator upper_bound(const K& x);              // C++14
    template<typename K>
        const_iterator upper_bound(const K& x) const;  // C++14

    pair<iterator,iterator>             equal_range(const key_type& k);
    pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
    template<typename K>
        pair<iterator,iterator>             equal_range(const K& x);        // C++14
    template<typename K>
        pair<const_iterator,const_iterator> equal_range(const K& x) const;  // C++14
};

template <class Key, class T, class Compare, class Allocator>
bool
operator==(const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator< (const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator!=(const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator> (const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator>=(const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

template <class Key, class T, class Compare, class Allocator>
bool
operator<=(const multimap<Key, T, Compare, Allocator>& x,
           const multimap<Key, T, Compare, Allocator>& y);

// specialized algorithms:
template <class Key, class T, class Compare, class Allocator>
void
swap(multimap<Key, T, Compare, Allocator>& x,
     multimap<Key, T, Compare, Allocator>& y)
    noexcept(noexcept(x.swap(y)));

template <class Key, class T, class Compare, class Allocator, class Predicate>
typename multimap<Key, T, Compare, Allocator>::size_type
erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20

}  // std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 492 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 493 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional/is_transparent.h>
#endif /* expanded by -frewrite-includes */
# 494 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___FUNCTIONAL_IS_TRANSPARENT
#define _LIBCPP___FUNCTIONAL_IS_TRANSPARENT

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3

template <class _Tp, class, class = void>
struct __is_transparent : false_type {};

template <class _Tp, class _Up>
struct __is_transparent<_Tp, _Up,
                        typename __void_t<typename _Tp::is_transparent>::type>
   : true_type {};

#endif
# 33 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___FUNCTIONAL_IS_TRANSPARENT
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__functional/is_transparent.h" 3
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__node_handle>
#endif /* expanded by -frewrite-includes */
# 495 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___NODE_HANDLE
#define _LIBCPP___NODE_HANDLE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
#if 0 /* expanded by -frewrite-includes */
#include <optional>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 1 3
// -*- C++ -*-
//===-------------------------- optional ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_OPTIONAL
#define _LIBCPP_OPTIONAL

/*
    optional synopsis

// C++1z

namespace std {
  // 23.6.3, optional for object types
  template <class T> class optional;

  // 23.6.4, no-value state indicator
  struct nullopt_t{see below };
  inline constexpr nullopt_t nullopt(unspecified );

  // 23.6.5, class bad_optional_access
  class bad_optional_access;

  // 23.6.6, relational operators
  template <class T, class U>
  constexpr bool operator==(const optional<T>&, const optional<U>&);
  template <class T, class U>
  constexpr bool operator!=(const optional<T>&, const optional<U>&);
  template <class T, class U>
  constexpr bool operator<(const optional<T>&, const optional<U>&);
  template <class T, class U>
  constexpr bool operator>(const optional<T>&, const optional<U>&);
  template <class T, class U>
  constexpr bool operator<=(const optional<T>&, const optional<U>&);
  template <class T, class U>
  constexpr bool operator>=(const optional<T>&, const optional<U>&);

  // 23.6.7 comparison with nullopt
  template <class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator==(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator!=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator!=(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator<(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator<(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator<=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator<=(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator>(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator>(nullopt_t, const optional<T>&) noexcept;
  template <class T> constexpr bool operator>=(const optional<T>&, nullopt_t) noexcept;
  template <class T> constexpr bool operator>=(nullopt_t, const optional<T>&) noexcept;

  // 23.6.8, comparison with T
  template <class T, class U> constexpr bool operator==(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator==(const T&, const optional<U>&);
  template <class T, class U> constexpr bool operator!=(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator!=(const T&, const optional<U>&);
  template <class T, class U> constexpr bool operator<(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator<(const T&, const optional<U>&);
  template <class T, class U> constexpr bool operator<=(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator<=(const T&, const optional<U>&);
  template <class T, class U> constexpr bool operator>(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator>(const T&, const optional<U>&);
  template <class T, class U> constexpr bool operator>=(const optional<T>&, const U&);
  template <class T, class U> constexpr bool operator>=(const T&, const optional<U>&);

  // 23.6.9, specialized algorithms
  template <class T> void swap(optional<T>&, optional<T>&) noexcept(see below ); // constexpr in C++20
  template <class T> constexpr optional<see below > make_optional(T&&);
  template <class T, class... Args>
    constexpr optional<T> make_optional(Args&&... args);
  template <class T, class U, class... Args>
    constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);

  // 23.6.10, hash support
  template <class T> struct hash;
  template <class T> struct hash<optional<T>>;

  template <class T> class optional {
  public:
    using value_type = T;

    // 23.6.3.1, constructors
    constexpr optional() noexcept;
    constexpr optional(nullopt_t) noexcept;
    optional(const optional &);
    optional(optional &&) noexcept(see below);
    template <class... Args> constexpr explicit optional(in_place_t, Args &&...);
    template <class U, class... Args>
      constexpr explicit optional(in_place_t, initializer_list<U>, Args &&...);
    template <class U = T>
      constexpr EXPLICIT optional(U &&);
    template <class U>
      EXPLICIT optional(const optional<U> &);   // constexpr in C++20
    template <class U>
      EXPLICIT optional(optional<U> &&);        // constexpr in C++20

    // 23.6.3.2, destructor
    ~optional(); // constexpr in C++20

    // 23.6.3.3, assignment
    optional &operator=(nullopt_t) noexcept;                     // constexpr in C++20
    optional &operator=(const optional &);                       // constexpr in C++20
    optional &operator=(optional &&) noexcept(see below);        // constexpr in C++20
    template <class U = T> optional &operator=(U &&);            // constexpr in C++20
    template <class U> optional &operator=(const optional<U> &); // constexpr in C++20
    template <class U> optional &operator=(optional<U> &&);      // constexpr in C++20
    template <class... Args> T& emplace(Args &&...);             // constexpr in C++20
    template <class U, class... Args>
      T& emplace(initializer_list<U>, Args &&...);               // constexpr in C++20

    // 23.6.3.4, swap
    void swap(optional &) noexcept(see below ); // constexpr in C++20

    // 23.6.3.5, observers
    constexpr T const *operator->() const;
    constexpr T *operator->();
    constexpr T const &operator*() const &;
    constexpr T &operator*() &;
    constexpr T &&operator*() &&;
    constexpr const T &&operator*() const &&;
    constexpr explicit operator bool() const noexcept;
    constexpr bool has_value() const noexcept;
    constexpr T const &value() const &;
    constexpr T &value() &;
    constexpr T &&value() &&;
    constexpr const T &&value() const &&;
    template <class U> constexpr T value_or(U &&) const &;
    template <class U> constexpr T value_or(U &&) &&;

    // 23.6.3.6, modifiers
    void reset() noexcept; // constexpr in C++20

  private:
    T *val; // exposition only
  };

template<class T>
  optional(T) -> optional<T>;

} // namespace std

*/

#if 0 /* expanded by -frewrite-includes */
#include <__availability>
#endif /* expanded by -frewrite-includes */
# 149 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 150 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__debug>
#endif /* expanded by -frewrite-includes */
# 151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <__functional_base>
#endif /* expanded by -frewrite-includes */
# 152 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 153 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <functional>
#endif /* expanded by -frewrite-includes */
# 154 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 155 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 156 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 157 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 158 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 161 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 163 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 164 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
#endif
# 165 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 167 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 2 3


namespace std  // purposefully not using versioning namespace
{

class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access
    : public exception
{
public:
    // Get the key function ~bad_optional_access() into the dylib
    virtual ~bad_optional_access() _NOEXCEPT;
    virtual const char* what() const _NOEXCEPT;
};

}  // std

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 185 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

_LIBCPP_BEGIN_NAMESPACE_STD

_LIBCPP_NORETURN
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
void __throw_bad_optional_access() {
#ifndef _LIBCPP_NO_EXCEPTIONS
        throw bad_optional_access();
#else
# 195 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        _VSTD::abort();
#endif
# 197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
}

struct nullopt_t
{
    struct __secret_tag { _LIBCPP_INLINE_VISIBILITY explicit __secret_tag() = default; };
    _LIBCPP_INLINE_VISIBILITY constexpr explicit nullopt_t(__secret_tag, __secret_tag) noexcept {}
};

_LIBCPP_INLINE_VAR constexpr nullopt_t nullopt{nullopt_t::__secret_tag{}, nullopt_t::__secret_tag{}};

template <class _Tp, bool = is_trivially_destructible<_Tp>::value>
struct __optional_destruct_base;

template <class _Tp>
struct __optional_destruct_base<_Tp, false>
{
    typedef _Tp value_type;
    static_assert(is_object_v<value_type>,
        "instantiation of optional with a non-object type is undefined behavior");
    union
    {
        char __null_state_;
        value_type __val_;
    };
    bool __engaged_;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 ~__optional_destruct_base()
    {
        if (__engaged_)
            __val_.~value_type();
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr __optional_destruct_base() noexcept
        :  __null_state_(),
           __engaged_(false) {}

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit __optional_destruct_base(in_place_t, _Args&&... __args)
        :  __val_(_VSTD::forward<_Args>(__args)...),
           __engaged_(true) {}

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void reset() noexcept
    {
        if (__engaged_)
        {
            __val_.~value_type();
            __engaged_ = false;
        }
    }
};

template <class _Tp>
struct __optional_destruct_base<_Tp, true>
{
    typedef _Tp value_type;
    static_assert(is_object_v<value_type>,
        "instantiation of optional with a non-object type is undefined behavior");
    union
    {
        char __null_state_;
        value_type __val_;
    };
    bool __engaged_;

    _LIBCPP_INLINE_VISIBILITY
    constexpr __optional_destruct_base() noexcept
        :  __null_state_(),
           __engaged_(false) {}

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit __optional_destruct_base(in_place_t, _Args&&... __args)
        :  __val_(_VSTD::forward<_Args>(__args)...),
           __engaged_(true) {}

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void reset() noexcept
    {
        if (__engaged_)
        {
            __engaged_ = false;
        }
    }
};

template <class _Tp, bool = is_reference<_Tp>::value>
struct __optional_storage_base : __optional_destruct_base<_Tp>
{
    using __base = __optional_destruct_base<_Tp>;
    using value_type = _Tp;
    using __base::__base;

    _LIBCPP_INLINE_VISIBILITY
    constexpr bool has_value() const noexcept
    {
        return this->__engaged_;
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type& __get() & noexcept
    {
        return this->__val_;
    }
    _LIBCPP_INLINE_VISIBILITY
    constexpr const value_type& __get() const& noexcept
    {
        return this->__val_;
    }
    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type&& __get() && noexcept
    {
        return _VSTD::move(this->__val_);
    }
    _LIBCPP_INLINE_VISIBILITY
    constexpr const value_type&& __get() const&& noexcept
    {
        return _VSTD::move(this->__val_);
    }

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct(_Args&&... __args)
    {
        _LIBCPP_ASSERT(!has_value(), "__construct called for engaged __optional_storage");
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 326 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        _VSTD::construct_at(_VSTD::addressof(this->__val_), _VSTD::forward<_Args>(__args)...);
#else
# 328 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        ::new ((void*)_VSTD::addressof(this->__val_)) value_type(_VSTD::forward<_Args>(__args)...);
#endif
# 330 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        this->__engaged_ = true;
    }

    template <class _That>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct_from(_That&& __opt)
    {
        if (__opt.has_value())
            __construct(_VSTD::forward<_That>(__opt).__get());
    }

    template <class _That>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __assign_from(_That&& __opt)
    {
        if (this->__engaged_ == __opt.has_value())
        {
            if (this->__engaged_)
                this->__val_ = _VSTD::forward<_That>(__opt).__get();
        }
        else
        {
            if (this->__engaged_)
                this->reset();
            else
                __construct(_VSTD::forward<_That>(__opt).__get());
        }
    }
};

// optional<T&> is currently required ill-formed, however it may to be in the
// future. For this reason it has already been implemented to ensure we can
// make the change in an ABI compatible manner.
template <class _Tp>
struct __optional_storage_base<_Tp, true>
{
    using value_type = _Tp;
    using __raw_type = remove_reference_t<_Tp>;
    __raw_type* __value_;

    template <class _Up>
    static constexpr bool __can_bind_reference() {
        using _RawUp = typename remove_reference<_Up>::type;
        using _UpPtr = _RawUp*;
        using _RawTp = typename remove_reference<_Tp>::type;
        using _TpPtr = _RawTp*;
        using _CheckLValueArg = integral_constant<bool,
            (is_lvalue_reference<_Up>::value && is_convertible<_UpPtr, _TpPtr>::value)
        ||  is_same<_RawUp, reference_wrapper<_RawTp>>::value
        ||  is_same<_RawUp, reference_wrapper<typename remove_const<_RawTp>::type>>::value
        >;
        return (is_lvalue_reference<_Tp>::value && _CheckLValueArg::value)
            || (is_rvalue_reference<_Tp>::value && !is_lvalue_reference<_Up>::value &&
                is_convertible<_UpPtr, _TpPtr>::value);
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr __optional_storage_base() noexcept
        :  __value_(nullptr) {}

    template <class _UArg>
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit __optional_storage_base(in_place_t, _UArg&& __uarg)
        :  __value_(_VSTD::addressof(__uarg))
    {
      static_assert(__can_bind_reference<_UArg>(),
        "Attempted to construct a reference element in tuple from a "
        "possible temporary");
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void reset() noexcept { __value_ = nullptr; }

    _LIBCPP_INLINE_VISIBILITY
    constexpr bool has_value() const noexcept
      { return __value_ != nullptr; }

    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type& __get() const& noexcept
      { return *__value_; }

    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type&& __get() const&& noexcept
      { return _VSTD::forward<value_type>(*__value_); }

    template <class _UArg>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct(_UArg&& __val)
    {
        _LIBCPP_ASSERT(!has_value(), "__construct called for engaged __optional_storage");
        static_assert(__can_bind_reference<_UArg>(),
            "Attempted to construct a reference element in tuple from a "
            "possible temporary");
        __value_ = _VSTD::addressof(__val);
    }

    template <class _That>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct_from(_That&& __opt)
    {
        if (__opt.has_value())
            __construct(_VSTD::forward<_That>(__opt).__get());
    }

    template <class _That>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void __assign_from(_That&& __opt)
    {
        if (has_value() == __opt.has_value())
        {
            if (has_value())
                *__value_ = _VSTD::forward<_That>(__opt).__get();
        }
        else
        {
            if (has_value())
                reset();
            else
                __construct(_VSTD::forward<_That>(__opt).__get());
        }
    }
};

template <class _Tp, bool = is_trivially_copy_constructible<_Tp>::value>
struct __optional_copy_base : __optional_storage_base<_Tp>
{
    using __optional_storage_base<_Tp>::__optional_storage_base;
};

template <class _Tp>
struct __optional_copy_base<_Tp, false> : __optional_storage_base<_Tp>
{
    using __optional_storage_base<_Tp>::__optional_storage_base;

    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_base() = default;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 __optional_copy_base(const __optional_copy_base& __opt)
    {
        this->__construct_from(__opt);
    }

    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_base(__optional_copy_base&&) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_base& operator=(const __optional_copy_base&) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_base& operator=(__optional_copy_base&&) = default;
};

template <class _Tp, bool = is_trivially_move_constructible<_Tp>::value>
struct __optional_move_base : __optional_copy_base<_Tp>
{
    using __optional_copy_base<_Tp>::__optional_copy_base;
};

template <class _Tp>
struct __optional_move_base<_Tp, false> : __optional_copy_base<_Tp>
{
    using value_type = _Tp;
    using __optional_copy_base<_Tp>::__optional_copy_base;

    _LIBCPP_INLINE_VISIBILITY
    __optional_move_base() = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_move_base(const __optional_move_base&) = default;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 __optional_move_base(__optional_move_base&& __opt)
        noexcept(is_nothrow_move_constructible_v<value_type>)
    {
        this->__construct_from(_VSTD::move(__opt));
    }

    _LIBCPP_INLINE_VISIBILITY
    __optional_move_base& operator=(const __optional_move_base&) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_move_base& operator=(__optional_move_base&&) = default;
};

template <class _Tp, bool =
    is_trivially_destructible<_Tp>::value &&
    is_trivially_copy_constructible<_Tp>::value &&
    is_trivially_copy_assignable<_Tp>::value>
struct __optional_copy_assign_base : __optional_move_base<_Tp>
{
    using __optional_move_base<_Tp>::__optional_move_base;
};

template <class _Tp>
struct __optional_copy_assign_base<_Tp, false> : __optional_move_base<_Tp>
{
    using __optional_move_base<_Tp>::__optional_move_base;

    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_assign_base() = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_assign_base(const __optional_copy_assign_base&) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_assign_base(__optional_copy_assign_base&&) = default;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 __optional_copy_assign_base& operator=(const __optional_copy_assign_base& __opt)
    {
        this->__assign_from(__opt);
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __optional_copy_assign_base& operator=(__optional_copy_assign_base&&) = default;
};

template <class _Tp, bool =
    is_trivially_destructible<_Tp>::value &&
    is_trivially_move_constructible<_Tp>::value &&
    is_trivially_move_assignable<_Tp>::value>
struct __optional_move_assign_base : __optional_copy_assign_base<_Tp>
{
    using __optional_copy_assign_base<_Tp>::__optional_copy_assign_base;
};

template <class _Tp>
struct __optional_move_assign_base<_Tp, false> : __optional_copy_assign_base<_Tp>
{
    using value_type = _Tp;
    using __optional_copy_assign_base<_Tp>::__optional_copy_assign_base;

    _LIBCPP_INLINE_VISIBILITY
    __optional_move_assign_base() = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_move_assign_base(const __optional_move_assign_base& __opt) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_move_assign_base(__optional_move_assign_base&&) = default;
    _LIBCPP_INLINE_VISIBILITY
    __optional_move_assign_base& operator=(const __optional_move_assign_base&) = default;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 __optional_move_assign_base& operator=(__optional_move_assign_base&& __opt)
        noexcept(is_nothrow_move_assignable_v<value_type> &&
                 is_nothrow_move_constructible_v<value_type>)
    {
        this->__assign_from(_VSTD::move(__opt));
        return *this;
    }
};

template <class _Tp>
using __optional_sfinae_ctor_base_t = __sfinae_ctor_base<
    is_copy_constructible<_Tp>::value,
    is_move_constructible<_Tp>::value
>;

template <class _Tp>
using __optional_sfinae_assign_base_t = __sfinae_assign_base<
    (is_copy_constructible<_Tp>::value && is_copy_assignable<_Tp>::value),
    (is_move_constructible<_Tp>::value && is_move_assignable<_Tp>::value)
>;

template <class _Tp>
class optional
    : private __optional_move_assign_base<_Tp>
    , private __optional_sfinae_ctor_base_t<_Tp>
    , private __optional_sfinae_assign_base_t<_Tp>
{
    using __base = __optional_move_assign_base<_Tp>;
public:
    using value_type = _Tp;

private:
     // Disable the reference extension using this static assert.
    static_assert(!is_same_v<__uncvref_t<value_type>, in_place_t>,
        "instantiation of optional with in_place_t is ill-formed");
    static_assert(!is_same_v<__uncvref_t<value_type>, nullopt_t>,
        "instantiation of optional with nullopt_t is ill-formed");
    static_assert(!is_reference_v<value_type>,
        "instantiation of optional with a reference type is ill-formed");
    static_assert(is_destructible_v<value_type>,
        "instantiation of optional with a non-destructible type is ill-formed");
    static_assert(!is_array_v<value_type>,
        "instantiation of optional with an array type is ill-formed");

    // LWG2756: conditionally explicit conversion from _Up
    struct _CheckOptionalArgsConstructor {
      template <class _Up>
      static constexpr bool __enable_implicit() {
          return is_constructible_v<_Tp, _Up&&> &&
                 is_convertible_v<_Up&&, _Tp>;
      }

      template <class _Up>
      static constexpr bool __enable_explicit() {
          return is_constructible_v<_Tp, _Up&&> &&
                 !is_convertible_v<_Up&&, _Tp>;
      }
    };
    template <class _Up>
    using _CheckOptionalArgsCtor = _If<
        _IsNotSame<__uncvref_t<_Up>, in_place_t>::value &&
        _IsNotSame<__uncvref_t<_Up>, optional>::value,
        _CheckOptionalArgsConstructor,
        __check_tuple_constructor_fail
    >;
    template <class _QualUp>
    struct _CheckOptionalLikeConstructor {
      template <class _Up, class _Opt = optional<_Up>>
      using __check_constructible_from_opt = _Or<
          is_constructible<_Tp, _Opt&>,
          is_constructible<_Tp, _Opt const&>,
          is_constructible<_Tp, _Opt&&>,
          is_constructible<_Tp, _Opt const&&>,
          is_convertible<_Opt&, _Tp>,
          is_convertible<_Opt const&, _Tp>,
          is_convertible<_Opt&&, _Tp>,
          is_convertible<_Opt const&&, _Tp>
      >;
      template <class _Up, class _Opt = optional<_Up>>
      using __check_assignable_from_opt = _Or<
          is_assignable<_Tp&, _Opt&>,
          is_assignable<_Tp&, _Opt const&>,
          is_assignable<_Tp&, _Opt&&>,
          is_assignable<_Tp&, _Opt const&&>
      >;
      template <class _Up, class _QUp = _QualUp>
      static constexpr bool __enable_implicit() {
          return is_convertible<_QUp, _Tp>::value &&
              !__check_constructible_from_opt<_Up>::value;
      }
      template <class _Up, class _QUp = _QualUp>
      static constexpr bool __enable_explicit() {
          return !is_convertible<_QUp, _Tp>::value &&
              !__check_constructible_from_opt<_Up>::value;
      }
      template <class _Up, class _QUp = _QualUp>
      static constexpr bool __enable_assign() {
          // Construction and assignability of _QUp to _Tp has already been
          // checked.
          return !__check_constructible_from_opt<_Up>::value &&
              !__check_assignable_from_opt<_Up>::value;
      }
    };

    template <class _Up, class _QualUp>
    using _CheckOptionalLikeCtor = _If<
      _And<
         _IsNotSame<_Up, _Tp>,
          is_constructible<_Tp, _QualUp>
      >::value,
      _CheckOptionalLikeConstructor<_QualUp>,
      __check_tuple_constructor_fail
    >;
    template <class _Up, class _QualUp>
    using _CheckOptionalLikeAssign = _If<
      _And<
          _IsNotSame<_Up, _Tp>,
          is_constructible<_Tp, _QualUp>,
          is_assignable<_Tp&, _QualUp>
      >::value,
      _CheckOptionalLikeConstructor<_QualUp>,
      __check_tuple_constructor_fail
    >;
public:

    _LIBCPP_INLINE_VISIBILITY constexpr optional() noexcept {}
    _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
    _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
    _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}

    template <class _InPlaceT, class... _Args, class = _EnableIf<
          _And<
              _IsSame<_InPlaceT, in_place_t>,
              is_constructible<value_type, _Args...>
            >::value
        >
    >
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit optional(_InPlaceT, _Args&&... __args)
        : __base(in_place, _VSTD::forward<_Args>(__args)...) {}

    template <class _Up, class... _Args, class = _EnableIf<
        is_constructible_v<value_type, initializer_list<_Up>&, _Args...>>
    >
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args)
        : __base(in_place, __il, _VSTD::forward<_Args>(__args)...) {}

    template <class _Up = value_type, _EnableIf<
        _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    constexpr optional(_Up&& __v)
        : __base(in_place, _VSTD::forward<_Up>(__v)) {}

    template <class _Up, _EnableIf<
        _CheckOptionalArgsCtor<_Up>::template __enable_explicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit optional(_Up&& __v)
        : __base(in_place, _VSTD::forward<_Up>(__v)) {}

    // LWG2756: conditionally explicit conversion from const optional<_Up>&
    template <class _Up, _EnableIf<
        _CheckOptionalLikeCtor<_Up, _Up const&>::template __enable_implicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional(const optional<_Up>& __v)
    {
        this->__construct_from(__v);
    }
    template <class _Up, _EnableIf<
        _CheckOptionalLikeCtor<_Up, _Up const&>::template __enable_explicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit optional(const optional<_Up>& __v)
    {
        this->__construct_from(__v);
    }

    // LWG2756: conditionally explicit conversion from optional<_Up>&&
    template <class _Up, _EnableIf<
        _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_implicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional(optional<_Up>&& __v)
    {
        this->__construct_from(_VSTD::move(__v));
    }
    template <class _Up, _EnableIf<
        _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_explicit<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit optional(optional<_Up>&& __v)
    {
        this->__construct_from(_VSTD::move(__v));
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional& operator=(nullopt_t) noexcept
    {
        reset();
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY optional& operator=(const optional&) = default;
    _LIBCPP_INLINE_VISIBILITY optional& operator=(optional&&) = default;

    // LWG2756
    template <class _Up = value_type,
              class = _EnableIf<
                      _And<
                          _IsNotSame<__uncvref_t<_Up>, optional>,
                          _Or<
                              _IsNotSame<__uncvref_t<_Up>, value_type>,
                              _Not<is_scalar<value_type>>
                          >,
                          is_constructible<value_type, _Up>,
                          is_assignable<value_type&, _Up>
                      >::value>
             >
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional&
    operator=(_Up&& __v)
    {
        if (this->has_value())
            this->__get() = _VSTD::forward<_Up>(__v);
        else
            this->__construct(_VSTD::forward<_Up>(__v));
        return *this;
    }

    // LWG2756
    template <class _Up, _EnableIf<
        _CheckOptionalLikeAssign<_Up, _Up const&>::template __enable_assign<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional&
    operator=(const optional<_Up>& __v)
    {
        this->__assign_from(__v);
        return *this;
    }

    // LWG2756
    template <class _Up, _EnableIf<
        _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_assign<_Up>()
    , int> = 0>
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 optional&
    operator=(optional<_Up>&& __v)
    {
        this->__assign_from(_VSTD::move(__v));
        return *this;
    }

    template <class... _Args,
              class = _EnableIf
                      <
                          is_constructible_v<value_type, _Args...>
                      >
             >
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 _Tp &
    emplace(_Args&&... __args)
    {
        reset();
        this->__construct(_VSTD::forward<_Args>(__args)...);
        return this->__get();
    }

    template <class _Up, class... _Args,
              class = _EnableIf
                      <
                          is_constructible_v<value_type, initializer_list<_Up>&, _Args...>
                      >
             >
    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 _Tp &
    emplace(initializer_list<_Up> __il, _Args&&... __args)
    {
        reset();
        this->__construct(__il, _VSTD::forward<_Args>(__args)...);
        return this->__get();
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_CONSTEXPR_AFTER_CXX17 void swap(optional& __opt)
        noexcept(is_nothrow_move_constructible_v<value_type> &&
                 is_nothrow_swappable_v<value_type>)
    {
        if (this->has_value() == __opt.has_value())
        {
            using _VSTD::swap;
            if (this->has_value())
                swap(this->__get(), __opt.__get());
        }
        else
        {
            if (this->has_value())
            {
                __opt.__construct(_VSTD::move(this->__get()));
                reset();
            }
            else
            {
                this->__construct(_VSTD::move(__opt.__get()));
                __opt.reset();
            }
        }
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    add_pointer_t<value_type const>
    operator->() const
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator-> called on a disengaged value");
#ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
        return _VSTD::addressof(this->__get());
#else
# 889 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        return __operator_arrow(__has_operator_addressof<value_type>{}, this->__get());
#endif
# 891 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    add_pointer_t<value_type>
    operator->()
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator-> called on a disengaged value");
#ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
        return _VSTD::addressof(this->__get());
#else
# 902 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
        return __operator_arrow(__has_operator_addressof<value_type>{}, this->__get());
#endif
# 904 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    const value_type&
    operator*() const& noexcept
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
        return this->__get();
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    value_type&
    operator*() & noexcept
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
        return this->__get();
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    value_type&&
    operator*() && noexcept
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
        return _VSTD::move(this->__get());
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr
    const value_type&&
    operator*() const&& noexcept
    {
        _LIBCPP_ASSERT(this->has_value(), "optional operator* called on a disengaged value");
        return _VSTD::move(this->__get());
    }

    _LIBCPP_INLINE_VISIBILITY
    constexpr explicit operator bool() const noexcept { return has_value(); }

    using __base::has_value;
    using __base::__get;

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
    constexpr value_type const& value() const&
    {
        if (!this->has_value())
            __throw_bad_optional_access();
        return this->__get();
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
    constexpr value_type& value() &
    {
        if (!this->has_value())
            __throw_bad_optional_access();
        return this->__get();
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
    constexpr value_type&& value() &&
    {
        if (!this->has_value())
            __throw_bad_optional_access();
        return _VSTD::move(this->__get());
    }

    _LIBCPP_INLINE_VISIBILITY
    _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
    constexpr value_type const&& value() const&&
    {
        if (!this->has_value())
            __throw_bad_optional_access();
        return _VSTD::move(this->__get());
    }

    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type value_or(_Up&& __v) const&
    {
        static_assert(is_copy_constructible_v<value_type>,
                      "optional<T>::value_or: T must be copy constructible");
        static_assert(is_convertible_v<_Up, value_type>,
                      "optional<T>::value_or: U must be convertible to T");
        return this->has_value() ? this->__get() :
                                  static_cast<value_type>(_VSTD::forward<_Up>(__v));
    }

    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    constexpr value_type value_or(_Up&& __v) &&
    {
        static_assert(is_move_constructible_v<value_type>,
                      "optional<T>::value_or: T must be move constructible");
        static_assert(is_convertible_v<_Up, value_type>,
                      "optional<T>::value_or: U must be convertible to T");
        return this->has_value() ? _VSTD::move(this->__get()) :
                                  static_cast<value_type>(_VSTD::forward<_Up>(__v));
    }

    using __base::reset;

private:
    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    static _LIBCPP_CONSTEXPR_AFTER_CXX17 _Up*
    __operator_arrow(true_type, _Up& __x)
    {
        return _VSTD::addressof(__x);
    }

    template <class _Up>
    _LIBCPP_INLINE_VISIBILITY
    static constexpr _Up*
    __operator_arrow(false_type, _Up& __x)
    {
        return &__x;
    }
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class T>
    optional(T) -> optional<T>;
#endif
# 1032 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

// Comparisons between optionals
template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() ==
        declval<const _Up&>()), bool>,
    bool
>
operator==(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (static_cast<bool>(__x) != static_cast<bool>(__y))
        return false;
    if (!static_cast<bool>(__x))
        return true;
    return *__x == *__y;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() !=
        declval<const _Up&>()), bool>,
    bool
>
operator!=(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (static_cast<bool>(__x) != static_cast<bool>(__y))
        return true;
    if (!static_cast<bool>(__x))
        return false;
    return *__x != *__y;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <
        declval<const _Up&>()), bool>,
    bool
>
operator<(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (!static_cast<bool>(__y))
        return false;
    if (!static_cast<bool>(__x))
        return true;
    return *__x < *__y;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >
        declval<const _Up&>()), bool>,
    bool
>
operator>(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (!static_cast<bool>(__x))
        return false;
    if (!static_cast<bool>(__y))
        return true;
    return *__x > *__y;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <=
        declval<const _Up&>()), bool>,
    bool
>
operator<=(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (!static_cast<bool>(__x))
        return true;
    if (!static_cast<bool>(__y))
        return false;
    return *__x <= *__y;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >=
        declval<const _Up&>()), bool>,
    bool
>
operator>=(const optional<_Tp>& __x, const optional<_Up>& __y)
{
    if (!static_cast<bool>(__y))
        return true;
    if (!static_cast<bool>(__x))
        return false;
    return *__x >= *__y;
}

// Comparisons with nullopt
template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator==(const optional<_Tp>& __x, nullopt_t) noexcept
{
    return !static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator==(nullopt_t, const optional<_Tp>& __x) noexcept
{
    return !static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator!=(const optional<_Tp>& __x, nullopt_t) noexcept
{
    return static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator!=(nullopt_t, const optional<_Tp>& __x) noexcept
{
    return static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator<(const optional<_Tp>&, nullopt_t) noexcept
{
    return false;
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator<(nullopt_t, const optional<_Tp>& __x) noexcept
{
    return static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator<=(const optional<_Tp>& __x, nullopt_t) noexcept
{
    return !static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator<=(nullopt_t, const optional<_Tp>&) noexcept
{
    return true;
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator>(const optional<_Tp>& __x, nullopt_t) noexcept
{
    return static_cast<bool>(__x);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator>(nullopt_t, const optional<_Tp>&) noexcept
{
    return false;
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator>=(const optional<_Tp>&, nullopt_t) noexcept
{
    return true;
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
bool
operator>=(nullopt_t, const optional<_Tp>& __x) noexcept
{
    return !static_cast<bool>(__x);
}

// Comparisons with T
template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() ==
        declval<const _Up&>()), bool>,
    bool
>
operator==(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x == __v : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() ==
        declval<const _Up&>()), bool>,
    bool
>
operator==(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v == *__x : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() !=
        declval<const _Up&>()), bool>,
    bool
>
operator!=(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x != __v : true;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() !=
        declval<const _Up&>()), bool>,
    bool
>
operator!=(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v != *__x : true;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <
        declval<const _Up&>()), bool>,
    bool
>
operator<(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x < __v : true;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <
        declval<const _Up&>()), bool>,
    bool
>
operator<(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v < *__x : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <=
        declval<const _Up&>()), bool>,
    bool
>
operator<=(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x <= __v : true;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() <=
        declval<const _Up&>()), bool>,
    bool
>
operator<=(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v <= *__x : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >
        declval<const _Up&>()), bool>,
    bool
>
operator>(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x > __v : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >
        declval<const _Up&>()), bool>,
    bool
>
operator>(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v > *__x : true;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >=
        declval<const _Up&>()), bool>,
    bool
>
operator>=(const optional<_Tp>& __x, const _Up& __v)
{
    return static_cast<bool>(__x) ? *__x >= __v : false;
}

template <class _Tp, class _Up>
_LIBCPP_INLINE_VISIBILITY constexpr
_EnableIf<
    is_convertible_v<decltype(declval<const _Tp&>() >=
        declval<const _Up&>()), bool>,
    bool
>
operator>=(const _Tp& __v, const optional<_Up>& __x)
{
    return static_cast<bool>(__x) ? __v >= *__x : true;
}


template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_EnableIf<
    is_move_constructible_v<_Tp> && is_swappable_v<_Tp>,
    void
>
swap(optional<_Tp>& __x, optional<_Tp>& __y) noexcept(noexcept(__x.swap(__y)))
{
    __x.swap(__y);
}

template <class _Tp>
_LIBCPP_INLINE_VISIBILITY constexpr
optional<decay_t<_Tp>> make_optional(_Tp&& __v)
{
    return optional<decay_t<_Tp>>(_VSTD::forward<_Tp>(__v));
}

template <class _Tp, class... _Args>
_LIBCPP_INLINE_VISIBILITY constexpr
optional<_Tp> make_optional(_Args&&... __args)
{
    return optional<_Tp>(in_place, _VSTD::forward<_Args>(__args)...);
}

template <class _Tp, class _Up, class... _Args>
_LIBCPP_INLINE_VISIBILITY constexpr
optional<_Tp> make_optional(initializer_list<_Up> __il,  _Args&&... __args)
{
    return optional<_Tp>(in_place, __il, _VSTD::forward<_Args>(__args)...);
}

template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS hash<
    __enable_hash_helper<optional<_Tp>, remove_const_t<_Tp>>
>
{
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1411 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
    _LIBCPP_DEPRECATED_IN_CXX17 typedef optional<_Tp> argument_type;
    _LIBCPP_DEPRECATED_IN_CXX17 typedef size_t        result_type;
#endif
# 1414 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(const optional<_Tp>& __opt) const
    {
        return static_cast<bool>(__opt) ? hash<remove_const_t<_Tp>>()(*__opt) : 0;
    }
};

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_STD_VER > 14
# 1425 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3

_LIBCPP_POP_MACROS

#endif // _LIBCPP_OPTIONAL
# 1429 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/optional" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 2 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
#endif
# 21 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 2 3

_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 28 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3

// Specialized in __tree & __hash_table for their _NodeType.
template <class _NodeType, class _Alloc>
struct __generic_container_node_destructor;

template <class _NodeType, class _Alloc,
          template <class, class> class _MapOrSetSpecifics>
class _LIBCPP_TEMPLATE_VIS __basic_node_handle
    : public _MapOrSetSpecifics<
          _NodeType,
          __basic_node_handle<_NodeType, _Alloc, _MapOrSetSpecifics>>
{
    template <class _Tp, class _Compare, class _Allocator>
        friend class __tree;
    template <class _Tp, class _Hash, class _Equal, class _Allocator>
        friend class __hash_table;
    friend struct _MapOrSetSpecifics<
        _NodeType, __basic_node_handle<_NodeType, _Alloc, _MapOrSetSpecifics>>;

    typedef allocator_traits<_Alloc> __alloc_traits;
    typedef typename __rebind_pointer<typename __alloc_traits::void_pointer,
                                      _NodeType>::type
        __node_pointer_type;

public:
    typedef _Alloc allocator_type;

private:
    __node_pointer_type __ptr_ = nullptr;
    optional<allocator_type> __alloc_;

    _LIBCPP_INLINE_VISIBILITY
    void __release_ptr()
    {
        __ptr_ = nullptr;
        __alloc_ = _VSTD::nullopt;
    }

    _LIBCPP_INLINE_VISIBILITY
    void __destroy_node_pointer()
    {
        if (__ptr_ != nullptr)
        {
            typedef typename __allocator_traits_rebind<
                allocator_type, _NodeType>::type __node_alloc_type;
            __node_alloc_type __alloc(*__alloc_);
            __generic_container_node_destructor<_NodeType, __node_alloc_type>(
                __alloc, true)(__ptr_);
            __ptr_ = nullptr;
        }
    }

    _LIBCPP_INLINE_VISIBILITY
    __basic_node_handle(__node_pointer_type __ptr,
                        allocator_type const& __alloc)
            : __ptr_(__ptr), __alloc_(__alloc)
    {
    }

public:
    _LIBCPP_INLINE_VISIBILITY
    __basic_node_handle() = default;

    _LIBCPP_INLINE_VISIBILITY
    __basic_node_handle(__basic_node_handle&& __other) noexcept
            : __ptr_(__other.__ptr_),
              __alloc_(_VSTD::move(__other.__alloc_))
    {
        __other.__ptr_ = nullptr;
        __other.__alloc_ = _VSTD::nullopt;
    }

    _LIBCPP_INLINE_VISIBILITY
    __basic_node_handle& operator=(__basic_node_handle&& __other)
    {
        _LIBCPP_ASSERT(
            __alloc_ == _VSTD::nullopt ||
            __alloc_traits::propagate_on_container_move_assignment::value ||
            __alloc_ == __other.__alloc_,
            "node_type with incompatible allocator passed to "
            "node_type::operator=(node_type&&)");

        __destroy_node_pointer();
        __ptr_ = __other.__ptr_;

        if (__alloc_traits::propagate_on_container_move_assignment::value ||
            __alloc_ == _VSTD::nullopt)
            __alloc_ = _VSTD::move(__other.__alloc_);

        __other.__ptr_ = nullptr;
        __other.__alloc_ = _VSTD::nullopt;

        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    allocator_type get_allocator() const { return *__alloc_; }

    _LIBCPP_INLINE_VISIBILITY
    explicit operator bool() const { return __ptr_ != nullptr; }

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool empty() const { return __ptr_ == nullptr; }

    _LIBCPP_INLINE_VISIBILITY
    void swap(__basic_node_handle& __other) noexcept(
        __alloc_traits::propagate_on_container_swap::value ||
        __alloc_traits::is_always_equal::value)
    {
        using _VSTD::swap;
        swap(__ptr_, __other.__ptr_);
        if (__alloc_traits::propagate_on_container_swap::value ||
            __alloc_ == _VSTD::nullopt || __other.__alloc_ == _VSTD::nullopt)
            swap(__alloc_, __other.__alloc_);
    }

    _LIBCPP_INLINE_VISIBILITY
    friend void swap(__basic_node_handle& __a, __basic_node_handle& __b)
        noexcept(noexcept(__a.swap(__b))) { __a.swap(__b); }

    _LIBCPP_INLINE_VISIBILITY
    ~__basic_node_handle()
    {
        __destroy_node_pointer();
    }
};

template <class _NodeType, class _Derived>
struct __set_node_handle_specifics
{
    typedef typename _NodeType::__node_value_type value_type;

    _LIBCPP_INLINE_VISIBILITY
    value_type& value() const
    {
        return static_cast<_Derived const*>(this)->__ptr_->__value_;
    }
};

template <class _NodeType, class _Derived>
struct __map_node_handle_specifics
{
    typedef typename _NodeType::__node_value_type::key_type key_type;
    typedef typename _NodeType::__node_value_type::mapped_type mapped_type;

    _LIBCPP_INLINE_VISIBILITY
    key_type& key() const
    {
        return static_cast<_Derived const*>(this)->
            __ptr_->__value_.__ref().first;
    }

    _LIBCPP_INLINE_VISIBILITY
    mapped_type& mapped() const
    {
        return static_cast<_Derived const*>(this)->
            __ptr_->__value_.__ref().second;
    }
};

template <class _NodeType, class _Alloc>
using __set_node_handle =
    __basic_node_handle< _NodeType, _Alloc, __set_node_handle_specifics>;

template <class _NodeType, class _Alloc>
using __map_node_handle =
    __basic_node_handle< _NodeType, _Alloc, __map_node_handle_specifics>;

template <class _Iterator, class _NodeType>
struct _LIBCPP_TEMPLATE_VIS __insert_return_type
{
    _Iterator position;
    bool inserted;
    _NodeType node;
};

#endif // _LIBCPP_STD_VER > 14
# 205 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3

_LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS

#endif  // _LIBCPP___NODE_HANDLE
# 210 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__node_handle" 3
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__tree>
#endif /* expanded by -frewrite-includes */
# 496 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 1 3
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___TREE
#define _LIBCPP___TREE

#if 0 /* expanded by -frewrite-includes */
#include <__config>
#endif /* expanded by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <algorithm>
#endif /* expanded by -frewrite-includes */
# 15 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator>
#endif /* expanded by -frewrite-includes */
# 16 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 18 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#include <stdexcept>
#endif /* expanded by -frewrite-includes */
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 23 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
#endif
# 24 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

_LIBCPP_PUSH_MACROS
#if 0 /* expanded by -frewrite-includes */
#include <__undef_macros>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 1 3
// -*- C++ -*-
//===------------------------ __undef_macros ------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//


#ifdef min
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing min")
#else
# 17 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro min is incompatible with C++.  #undefing min
#endif
# 19 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 20 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef min
#endif
# 22 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3

#ifdef max
#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 25 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_WARNING)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
_LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                "before any Windows header. #undefing max")
#else
# 29 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#warning: macro max is incompatible with C++.  #undefing max
#endif
# 31 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#endif
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
#undef max
#endif
# 34 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__undef_macros" 3
# 27 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 2 3


_LIBCPP_BEGIN_NAMESPACE_STD

#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__) && !defined(__clang__) // gcc.gnu.org/PR37804
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 32 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
template <class, class, class, class> class _LIBCPP_TEMPLATE_VIS map;
template <class, class, class, class> class _LIBCPP_TEMPLATE_VIS multimap;
template <class, class, class> class _LIBCPP_TEMPLATE_VIS set;
template <class, class, class> class _LIBCPP_TEMPLATE_VIS multiset;
#endif
# 37 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

template <class _Tp, class _Compare, class _Allocator> class __tree;
template <class _Tp, class _NodePtr, class _DiffType>
    class _LIBCPP_TEMPLATE_VIS __tree_iterator;
template <class _Tp, class _ConstNodePtr, class _DiffType>
    class _LIBCPP_TEMPLATE_VIS __tree_const_iterator;

template <class _Pointer> class __tree_end_node;
template <class _VoidPtr> class __tree_node_base;
template <class _Tp, class _VoidPtr> class __tree_node;

template <class _Key, class _Value>
struct __value_type;

template <class _Allocator> class __map_node_destructor;
template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_iterator;
template <class _TreeIterator> class _LIBCPP_TEMPLATE_VIS __map_const_iterator;

/*

_NodePtr algorithms

The algorithms taking _NodePtr are red black tree algorithms.  Those
algorithms taking a parameter named __root should assume that __root
points to a proper red black tree (unless otherwise specified).

Each algorithm herein assumes that __root->__parent_ points to a non-null
structure which has a member __left_ which points back to __root.  No other
member is read or written to at __root->__parent_.

__root->__parent_ will be referred to below (in comments only) as end_node.
end_node->__left_ is an externably accessible lvalue for __root, and can be
changed by node insertion and removal (without explicit reference to end_node).

All nodes (with the exception of end_node), even the node referred to as
__root, have a non-null __parent_ field.

*/

// Returns:  true if __x is a left child of its parent, else false
// Precondition:  __x != nullptr.
template <class _NodePtr>
inline _LIBCPP_INLINE_VISIBILITY
bool
__tree_is_left_child(_NodePtr __x) _NOEXCEPT
{
    return __x == __x->__parent_->__left_;
}

// Determines if the subtree rooted at __x is a proper red black subtree.  If
//    __x is a proper subtree, returns the black height (null counts as 1).  If
//    __x is an improper subtree, returns 0.
template <class _NodePtr>
unsigned
__tree_sub_invariant(_NodePtr __x)
{
    if (__x == nullptr)
        return 1;
    // parent consistency checked by caller
    // check __x->__left_ consistency
    if (__x->__left_ != nullptr && __x->__left_->__parent_ != __x)
        return 0;
    // check __x->__right_ consistency
    if (__x->__right_ != nullptr && __x->__right_->__parent_ != __x)
        return 0;
    // check __x->__left_ != __x->__right_ unless both are nullptr
    if (__x->__left_ == __x->__right_ && __x->__left_ != nullptr)
        return 0;
    // If this is red, neither child can be red
    if (!__x->__is_black_)
    {
        if (__x->__left_ && !__x->__left_->__is_black_)
            return 0;
        if (__x->__right_ && !__x->__right_->__is_black_)
            return 0;
    }
    unsigned __h = _VSTD::__tree_sub_invariant(__x->__left_);
    if (__h == 0)
        return 0;  // invalid left subtree
    if (__h != _VSTD::__tree_sub_invariant(__x->__right_))
        return 0;  // invalid or different height right subtree
    return __h + __x->__is_black_;  // return black height of this node
}

// Determines if the red black tree rooted at __root is a proper red black tree.
//    __root == nullptr is a proper tree.  Returns true is __root is a proper
//    red black tree, else returns false.
template <class _NodePtr>
bool
__tree_invariant(_NodePtr __root)
{
    if (__root == nullptr)
        return true;
    // check __x->__parent_ consistency
    if (__root->__parent_ == nullptr)
        return false;
    if (!_VSTD::__tree_is_left_child(__root))
        return false;
    // root must be black
    if (!__root->__is_black_)
        return false;
    // do normal node checks
    return _VSTD::__tree_sub_invariant(__root) != 0;
}

// Returns:  pointer to the left-most node under __x.
// Precondition:  __x != nullptr.
template <class _NodePtr>
inline _LIBCPP_INLINE_VISIBILITY
_NodePtr
__tree_min(_NodePtr __x) _NOEXCEPT
{
    while (__x->__left_ != nullptr)
        __x = __x->__left_;
    return __x;
}

// Returns:  pointer to the right-most node under __x.
// Precondition:  __x != nullptr.
template <class _NodePtr>
inline _LIBCPP_INLINE_VISIBILITY
_NodePtr
__tree_max(_NodePtr __x) _NOEXCEPT
{
    while (__x->__right_ != nullptr)
        __x = __x->__right_;
    return __x;
}

// Returns:  pointer to the next in-order node after __x.
// Precondition:  __x != nullptr.
template <class _NodePtr>
_NodePtr
__tree_next(_NodePtr __x) _NOEXCEPT
{
    if (__x->__right_ != nullptr)
        return _VSTD::__tree_min(__x->__right_);
    while (!_VSTD::__tree_is_left_child(__x))
        __x = __x->__parent_unsafe();
    return __x->__parent_unsafe();
}

template <class _EndNodePtr, class _NodePtr>
inline _LIBCPP_INLINE_VISIBILITY
_EndNodePtr
__tree_next_iter(_NodePtr __x) _NOEXCEPT
{
    if (__x->__right_ != nullptr)
        return static_cast<_EndNodePtr>(_VSTD::__tree_min(__x->__right_));
    while (!_VSTD::__tree_is_left_child(__x))
        __x = __x->__parent_unsafe();
    return static_cast<_EndNodePtr>(__x->__parent_);
}

// Returns:  pointer to the previous in-order node before __x.
// Precondition:  __x != nullptr.
// Note: __x may be the end node.
template <class _NodePtr, class _EndNodePtr>
inline _LIBCPP_INLINE_VISIBILITY
_NodePtr
__tree_prev_iter(_EndNodePtr __x) _NOEXCEPT
{
    if (__x->__left_ != nullptr)
        return _VSTD::__tree_max(__x->__left_);
    _NodePtr __xx = static_cast<_NodePtr>(__x);
    while (_VSTD::__tree_is_left_child(__xx))
        __xx = __xx->__parent_unsafe();
    return __xx->__parent_unsafe();
}

// Returns:  pointer to a node which has no children
// Precondition:  __x != nullptr.
template <class _NodePtr>
_NodePtr
__tree_leaf(_NodePtr __x) _NOEXCEPT
{
    while (true)
    {
        if (__x->__left_ != nullptr)
        {
            __x = __x->__left_;
            continue;
        }
        if (__x->__right_ != nullptr)
        {
            __x = __x->__right_;
            continue;
        }
        break;
    }
    return __x;
}

// Effects:  Makes __x->__right_ the subtree root with __x as its left child
//           while preserving in-order order.
// Precondition:  __x->__right_ != nullptr
template <class _NodePtr>
void
__tree_left_rotate(_NodePtr __x) _NOEXCEPT
{
    _NodePtr __y = __x->__right_;
    __x->__right_ = __y->__left_;
    if (__x->__right_ != nullptr)
        __x->__right_->__set_parent(__x);
    __y->__parent_ = __x->__parent_;
    if (_VSTD::__tree_is_left_child(__x))
        __x->__parent_->__left_ = __y;
    else
        __x->__parent_unsafe()->__right_ = __y;
    __y->__left_ = __x;
    __x->__set_parent(__y);
}

// Effects:  Makes __x->__left_ the subtree root with __x as its right child
//           while preserving in-order order.
// Precondition:  __x->__left_ != nullptr
template <class _NodePtr>
void
__tree_right_rotate(_NodePtr __x) _NOEXCEPT
{
    _NodePtr __y = __x->__left_;
    __x->__left_ = __y->__right_;
    if (__x->__left_ != nullptr)
        __x->__left_->__set_parent(__x);
    __y->__parent_ = __x->__parent_;
    if (_VSTD::__tree_is_left_child(__x))
        __x->__parent_->__left_ = __y;
    else
        __x->__parent_unsafe()->__right_ = __y;
    __y->__right_ = __x;
    __x->__set_parent(__y);
}

// Effects:  Rebalances __root after attaching __x to a leaf.
// Precondition:  __root != nulptr && __x != nullptr.
//                __x has no children.
//                __x == __root or == a direct or indirect child of __root.
//                If __x were to be unlinked from __root (setting __root to
//                  nullptr if __root == __x), __tree_invariant(__root) == true.
// Postcondition: __tree_invariant(end_node->__left_) == true.  end_node->__left_
//                may be different than the value passed in as __root.
template <class _NodePtr>
void
__tree_balance_after_insert(_NodePtr __root, _NodePtr __x) _NOEXCEPT
{
    __x->__is_black_ = __x == __root;
    while (__x != __root && !__x->__parent_unsafe()->__is_black_)
    {
        // __x->__parent_ != __root because __x->__parent_->__is_black == false
        if (_VSTD::__tree_is_left_child(__x->__parent_unsafe()))
        {
            _NodePtr __y = __x->__parent_unsafe()->__parent_unsafe()->__right_;
            if (__y != nullptr && !__y->__is_black_)
            {
                __x = __x->__parent_unsafe();
                __x->__is_black_ = true;
                __x = __x->__parent_unsafe();
                __x->__is_black_ = __x == __root;
                __y->__is_black_ = true;
            }
            else
            {
                if (!_VSTD::__tree_is_left_child(__x))
                {
                    __x = __x->__parent_unsafe();
                    _VSTD::__tree_left_rotate(__x);
                }
                __x = __x->__parent_unsafe();
                __x->__is_black_ = true;
                __x = __x->__parent_unsafe();
                __x->__is_black_ = false;
                _VSTD::__tree_right_rotate(__x);
                break;
            }
        }
        else
        {
            _NodePtr __y = __x->__parent_unsafe()->__parent_->__left_;
            if (__y != nullptr && !__y->__is_black_)
            {
                __x = __x->__parent_unsafe();
                __x->__is_black_ = true;
                __x = __x->__parent_unsafe();
                __x->__is_black_ = __x == __root;
                __y->__is_black_ = true;
            }
            else
            {
                if (_VSTD::__tree_is_left_child(__x))
                {
                    __x = __x->__parent_unsafe();
                    _VSTD::__tree_right_rotate(__x);
                }
                __x = __x->__parent_unsafe();
                __x->__is_black_ = true;
                __x = __x->__parent_unsafe();
                __x->__is_black_ = false;
                _VSTD::__tree_left_rotate(__x);
                break;
            }
        }
    }
}

// Precondition:  __root != nullptr && __z != nullptr.
//                __tree_invariant(__root) == true.
//                __z == __root or == a direct or indirect child of __root.
// Effects:  unlinks __z from the tree rooted at __root, rebalancing as needed.
// Postcondition: __tree_invariant(end_node->__left_) == true && end_node->__left_
//                nor any of its children refer to __z.  end_node->__left_
//                may be different than the value passed in as __root.
template <class _NodePtr>
void
__tree_remove(_NodePtr __root, _NodePtr __z) _NOEXCEPT
{
    // __z will be removed from the tree.  Client still needs to destruct/deallocate it
    // __y is either __z, or if __z has two children, __tree_next(__z).
    // __y will have at most one child.
    // __y will be the initial hole in the tree (make the hole at a leaf)
    _NodePtr __y = (__z->__left_ == nullptr || __z->__right_ == nullptr) ?
                    __z : _VSTD::__tree_next(__z);
    // __x is __y's possibly null single child
    _NodePtr __x = __y->__left_ != nullptr ? __y->__left_ : __y->__right_;
    // __w is __x's possibly null uncle (will become __x's sibling)
    _NodePtr __w = nullptr;
    // link __x to __y's parent, and find __w
    if (__x != nullptr)
        __x->__parent_ = __y->__parent_;
    if (_VSTD::__tree_is_left_child(__y))
    {
        __y->__parent_->__left_ = __x;
        if (__y != __root)
            __w = __y->__parent_unsafe()->__right_;
        else
            __root = __x;  // __w == nullptr
    }
    else
    {
        __y->__parent_unsafe()->__right_ = __x;
        // __y can't be root if it is a right child
        __w = __y->__parent_->__left_;
    }
    bool __removed_black = __y->__is_black_;
    // If we didn't remove __z, do so now by splicing in __y for __z,
    //    but copy __z's color.  This does not impact __x or __w.
    if (__y != __z)
    {
        // __z->__left_ != nulptr but __z->__right_ might == __x == nullptr
        __y->__parent_ = __z->__parent_;
        if (_VSTD::__tree_is_left_child(__z))
            __y->__parent_->__left_ = __y;
        else
            __y->__parent_unsafe()->__right_ = __y;
        __y->__left_ = __z->__left_;
        __y->__left_->__set_parent(__y);
        __y->__right_ = __z->__right_;
        if (__y->__right_ != nullptr)
            __y->__right_->__set_parent(__y);
        __y->__is_black_ = __z->__is_black_;
        if (__root == __z)
            __root = __y;
    }
    // There is no need to rebalance if we removed a red, or if we removed
    //     the last node.
    if (__removed_black && __root != nullptr)
    {
        // Rebalance:
        // __x has an implicit black color (transferred from the removed __y)
        //    associated with it, no matter what its color is.
        // If __x is __root (in which case it can't be null), it is supposed
        //    to be black anyway, and if it is doubly black, then the double
        //    can just be ignored.
        // If __x is red (in which case it can't be null), then it can absorb
        //    the implicit black just by setting its color to black.
        // Since __y was black and only had one child (which __x points to), __x
        //   is either red with no children, else null, otherwise __y would have
        //   different black heights under left and right pointers.
        // if (__x == __root || __x != nullptr && !__x->__is_black_)
        if (__x != nullptr)
            __x->__is_black_ = true;
        else
        {
            //  Else __x isn't root, and is "doubly black", even though it may
            //     be null.  __w can not be null here, else the parent would
            //     see a black height >= 2 on the __x side and a black height
            //     of 1 on the __w side (__w must be a non-null black or a red
            //     with a non-null black child).
            while (true)
            {
                if (!_VSTD::__tree_is_left_child(__w))  // if x is left child
                {
                    if (!__w->__is_black_)
                    {
                        __w->__is_black_ = true;
                        __w->__parent_unsafe()->__is_black_ = false;
                        _VSTD::__tree_left_rotate(__w->__parent_unsafe());
                        // __x is still valid
                        // reset __root only if necessary
                        if (__root == __w->__left_)
                            __root = __w;
                        // reset sibling, and it still can't be null
                        __w = __w->__left_->__right_;
                    }
                    // __w->__is_black_ is now true, __w may have null children
                    if ((__w->__left_  == nullptr || __w->__left_->__is_black_) &&
                        (__w->__right_ == nullptr || __w->__right_->__is_black_))
                    {
                        __w->__is_black_ = false;
                        __x = __w->__parent_unsafe();
                        // __x can no longer be null
                        if (__x == __root || !__x->__is_black_)
                        {
                            __x->__is_black_ = true;
                            break;
                        }
                        // reset sibling, and it still can't be null
                        __w = _VSTD::__tree_is_left_child(__x) ?
                                    __x->__parent_unsafe()->__right_ :
                                    __x->__parent_->__left_;
                        // continue;
                    }
                    else  // __w has a red child
                    {
                        if (__w->__right_ == nullptr || __w->__right_->__is_black_)
                        {
                            // __w left child is non-null and red
                            __w->__left_->__is_black_ = true;
                            __w->__is_black_ = false;
                            _VSTD::__tree_right_rotate(__w);
                            // __w is known not to be root, so root hasn't changed
                            // reset sibling, and it still can't be null
                            __w = __w->__parent_unsafe();
                        }
                        // __w has a right red child, left child may be null
                        __w->__is_black_ = __w->__parent_unsafe()->__is_black_;
                        __w->__parent_unsafe()->__is_black_ = true;
                        __w->__right_->__is_black_ = true;
                        _VSTD::__tree_left_rotate(__w->__parent_unsafe());
                        break;
                    }
                }
                else
                {
                    if (!__w->__is_black_)
                    {
                        __w->__is_black_ = true;
                        __w->__parent_unsafe()->__is_black_ = false;
                        _VSTD::__tree_right_rotate(__w->__parent_unsafe());
                        // __x is still valid
                        // reset __root only if necessary
                        if (__root == __w->__right_)
                            __root = __w;
                        // reset sibling, and it still can't be null
                        __w = __w->__right_->__left_;
                    }
                    // __w->__is_black_ is now true, __w may have null children
                    if ((__w->__left_  == nullptr || __w->__left_->__is_black_) &&
                        (__w->__right_ == nullptr || __w->__right_->__is_black_))
                    {
                        __w->__is_black_ = false;
                        __x = __w->__parent_unsafe();
                        // __x can no longer be null
                        if (!__x->__is_black_ || __x == __root)
                        {
                            __x->__is_black_ = true;
                            break;
                        }
                        // reset sibling, and it still can't be null
                        __w = _VSTD::__tree_is_left_child(__x) ?
                                    __x->__parent_unsafe()->__right_ :
                                    __x->__parent_->__left_;
                        // continue;
                    }
                    else  // __w has a red child
                    {
                        if (__w->__left_ == nullptr || __w->__left_->__is_black_)
                        {
                            // __w right child is non-null and red
                            __w->__right_->__is_black_ = true;
                            __w->__is_black_ = false;
                            _VSTD::__tree_left_rotate(__w);
                            // __w is known not to be root, so root hasn't changed
                            // reset sibling, and it still can't be null
                            __w = __w->__parent_unsafe();
                        }
                        // __w has a left red child, right child may be null
                        __w->__is_black_ = __w->__parent_unsafe()->__is_black_;
                        __w->__parent_unsafe()->__is_black_ = true;
                        __w->__left_->__is_black_ = true;
                        _VSTD::__tree_right_rotate(__w->__parent_unsafe());
                        break;
                    }
                }
            }
        }
    }
}

// node traits


template <class _Tp>
struct __is_tree_value_type_imp : false_type {};

template <class _Key, class _Value>
struct __is_tree_value_type_imp<__value_type<_Key, _Value> > : true_type {};

template <class ..._Args>
struct __is_tree_value_type : false_type {};

template <class _One>
struct __is_tree_value_type<_One> : __is_tree_value_type_imp<typename __uncvref<_One>::type> {};

template <class _Tp>
struct __tree_key_value_types {
  typedef _Tp key_type;
  typedef _Tp __node_value_type;
  typedef _Tp __container_value_type;
  static const bool __is_map = false;

  _LIBCPP_INLINE_VISIBILITY
  static key_type const& __get_key(_Tp const& __v) {
    return __v;
  }
  _LIBCPP_INLINE_VISIBILITY
  static __container_value_type const& __get_value(__node_value_type const& __v) {
    return __v;
  }
  _LIBCPP_INLINE_VISIBILITY
  static __container_value_type* __get_ptr(__node_value_type& __n) {
    return _VSTD::addressof(__n);
  }
  _LIBCPP_INLINE_VISIBILITY
  static __container_value_type&& __move(__node_value_type& __v) {
    return _VSTD::move(__v);
  }
};

template <class _Key, class _Tp>
struct __tree_key_value_types<__value_type<_Key, _Tp> > {
  typedef _Key                                         key_type;
  typedef _Tp                                          mapped_type;
  typedef __value_type<_Key, _Tp>                      __node_value_type;
  typedef pair<const _Key, _Tp>                        __container_value_type;
  typedef __container_value_type                       __map_value_type;
  static const bool __is_map = true;

  _LIBCPP_INLINE_VISIBILITY
  static key_type const&
  __get_key(__node_value_type const& __t) {
    return __t.__get_value().first;
  }

  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value,
      key_type const&>::type
  __get_key(_Up& __t) {
    return __t.first;
  }

  _LIBCPP_INLINE_VISIBILITY
  static __container_value_type const&
  __get_value(__node_value_type const& __t) {
    return __t.__get_value();
  }

  template <class _Up>
  _LIBCPP_INLINE_VISIBILITY
  static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value,
      __container_value_type const&>::type
  __get_value(_Up& __t) {
    return __t;
  }

  _LIBCPP_INLINE_VISIBILITY
  static __container_value_type* __get_ptr(__node_value_type& __n) {
    return _VSTD::addressof(__n.__get_value());
  }

  _LIBCPP_INLINE_VISIBILITY
  static pair<key_type&&, mapped_type&&> __move(__node_value_type& __v) {
    return __v.__move();
  }
};

template <class _VoidPtr>
struct __tree_node_base_types {
  typedef _VoidPtr                                               __void_pointer;

  typedef __tree_node_base<__void_pointer>                      __node_base_type;
  typedef typename __rebind_pointer<_VoidPtr, __node_base_type>::type
                                                             __node_base_pointer;

  typedef __tree_end_node<__node_base_pointer>                  __end_node_type;
  typedef typename __rebind_pointer<_VoidPtr, __end_node_type>::type
                                                             __end_node_pointer;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 635 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
  typedef __end_node_pointer __parent_pointer;
#else
# 637 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
  typedef typename conditional<
      is_pointer<__end_node_pointer>::value,
        __end_node_pointer,
        __node_base_pointer>::type __parent_pointer;
#endif
# 642 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

private:
  static_assert((is_same<typename pointer_traits<_VoidPtr>::element_type, void>::value),
                  "_VoidPtr does not point to unqualified void type");
};

template <class _Tp, class _AllocPtr, class _KVTypes = __tree_key_value_types<_Tp>,
         bool = _KVTypes::__is_map>
struct __tree_map_pointer_types {};

template <class _Tp, class _AllocPtr, class _KVTypes>
struct __tree_map_pointer_types<_Tp, _AllocPtr, _KVTypes, true> {
  typedef typename _KVTypes::__map_value_type   _Mv;
  typedef typename __rebind_pointer<_AllocPtr, _Mv>::type
                                                       __map_value_type_pointer;
  typedef typename __rebind_pointer<_AllocPtr, const _Mv>::type
                                                 __const_map_value_type_pointer;
};

template <class _NodePtr, class _NodeT = typename pointer_traits<_NodePtr>::element_type>
struct __tree_node_types;

template <class _NodePtr, class _Tp, class _VoidPtr>
struct __tree_node_types<_NodePtr, __tree_node<_Tp, _VoidPtr> >
    : public __tree_node_base_types<_VoidPtr>,
             __tree_key_value_types<_Tp>,
             __tree_map_pointer_types<_Tp, _VoidPtr>
{
  typedef __tree_node_base_types<_VoidPtr> __base;
  typedef __tree_key_value_types<_Tp>      __key_base;
  typedef __tree_map_pointer_types<_Tp, _VoidPtr> __map_pointer_base;
public:

  typedef typename pointer_traits<_NodePtr>::element_type       __node_type;
  typedef _NodePtr                                              __node_pointer;

  typedef _Tp                                                 __node_value_type;
  typedef typename __rebind_pointer<_VoidPtr, __node_value_type>::type
                                                      __node_value_type_pointer;
  typedef typename __rebind_pointer<_VoidPtr, const __node_value_type>::type
                                                __const_node_value_type_pointer;
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 684 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
  typedef typename __base::__end_node_pointer __iter_pointer;
#else
# 686 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
  typedef typename conditional<
      is_pointer<__node_pointer>::value,
        typename __base::__end_node_pointer,
        __node_pointer>::type __iter_pointer;
#endif
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
private:
    static_assert(!is_const<__node_type>::value,
                "_NodePtr should never be a pointer to const");
    static_assert((is_same<typename __rebind_pointer<_VoidPtr, __node_type>::type,
                          _NodePtr>::value), "_VoidPtr does not rebind to _NodePtr.");
};

template <class _ValueTp, class _VoidPtr>
struct __make_tree_node_types {
  typedef typename __rebind_pointer<_VoidPtr, __tree_node<_ValueTp, _VoidPtr> >::type
                                                                        _NodePtr;
  typedef __tree_node_types<_NodePtr> type;
};

// node

template <class _Pointer>
class __tree_end_node
{
public:
    typedef _Pointer pointer;
    pointer __left_;

    _LIBCPP_INLINE_VISIBILITY
    __tree_end_node() _NOEXCEPT : __left_() {}
};

template <class _VoidPtr>
class _LIBCPP_STANDALONE_DEBUG __tree_node_base
    : public __tree_node_base_types<_VoidPtr>::__end_node_type
{
    typedef __tree_node_base_types<_VoidPtr> _NodeBaseTypes;

public:
    typedef typename _NodeBaseTypes::__node_base_pointer pointer;
    typedef typename _NodeBaseTypes::__parent_pointer __parent_pointer;

    pointer          __right_;
    __parent_pointer __parent_;
    bool __is_black_;

    _LIBCPP_INLINE_VISIBILITY
    pointer __parent_unsafe() const { return static_cast<pointer>(__parent_);}

    _LIBCPP_INLINE_VISIBILITY
    void __set_parent(pointer __p) {
        __parent_ = static_cast<__parent_pointer>(__p);
    }

private:
  ~__tree_node_base() _LIBCPP_EQUAL_DELETE;
  __tree_node_base(__tree_node_base const&) _LIBCPP_EQUAL_DELETE;
  __tree_node_base& operator=(__tree_node_base const&) _LIBCPP_EQUAL_DELETE;
};

template <class _Tp, class _VoidPtr>
class _LIBCPP_STANDALONE_DEBUG __tree_node
    : public __tree_node_base<_VoidPtr>
{
public:
    typedef _Tp __node_value_type;

    __node_value_type __value_;

private:
  ~__tree_node() _LIBCPP_EQUAL_DELETE;
  __tree_node(__tree_node const&) _LIBCPP_EQUAL_DELETE;
  __tree_node& operator=(__tree_node const&) _LIBCPP_EQUAL_DELETE;
};


template <class _Allocator>
class __tree_node_destructor
{
    typedef _Allocator                                      allocator_type;
    typedef allocator_traits<allocator_type>                __alloc_traits;

public:
    typedef typename __alloc_traits::pointer                pointer;
private:
    typedef __tree_node_types<pointer> _NodeTypes;
    allocator_type& __na_;


public:
    bool __value_constructed;


    __tree_node_destructor(const __tree_node_destructor &) = default;
    __tree_node_destructor& operator=(const __tree_node_destructor&) = delete;

    _LIBCPP_INLINE_VISIBILITY
    explicit __tree_node_destructor(allocator_type& __na, bool __val = false) _NOEXCEPT
        : __na_(__na),
          __value_constructed(__val)
        {}

    _LIBCPP_INLINE_VISIBILITY
    void operator()(pointer __p) _NOEXCEPT
    {
        if (__value_constructed)
            __alloc_traits::destroy(__na_, _NodeTypes::__get_ptr(__p->__value_));
        if (__p)
            __alloc_traits::deallocate(__na_, __p, 1);
    }

    template <class> friend class __map_node_destructor;
};

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 801 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
template <class _NodeType, class _Alloc>
struct __generic_container_node_destructor;
template <class _Tp, class _VoidPtr, class _Alloc>
struct __generic_container_node_destructor<__tree_node<_Tp, _VoidPtr>, _Alloc>
    : __tree_node_destructor<_Alloc>
{
    using __tree_node_destructor<_Alloc>::__tree_node_destructor;
};
#endif
# 810 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

template <class _Tp, class _NodePtr, class _DiffType>
class _LIBCPP_TEMPLATE_VIS __tree_iterator
{
    typedef __tree_node_types<_NodePtr>                     _NodeTypes;
    typedef _NodePtr                                        __node_pointer;
    typedef typename _NodeTypes::__node_base_pointer        __node_base_pointer;
    typedef typename _NodeTypes::__end_node_pointer         __end_node_pointer;
    typedef typename _NodeTypes::__iter_pointer             __iter_pointer;
    typedef pointer_traits<__node_pointer> __pointer_traits;

    __iter_pointer __ptr_;

public:
    typedef bidirectional_iterator_tag                     iterator_category;
    typedef _Tp                                            value_type;
    typedef _DiffType                                      difference_type;
    typedef value_type&                                    reference;
    typedef typename _NodeTypes::__node_value_type_pointer pointer;

    _LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 832 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
    : __ptr_(nullptr)
#endif
# 834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
    {}

    _LIBCPP_INLINE_VISIBILITY reference operator*() const
        {return __get_np()->__value_;}
    _LIBCPP_INLINE_VISIBILITY pointer operator->() const
        {return pointer_traits<pointer>::pointer_to(__get_np()->__value_);}

    _LIBCPP_INLINE_VISIBILITY
    __tree_iterator& operator++() {
      __ptr_ = static_cast<__iter_pointer>(
          _VSTD::__tree_next_iter<__end_node_pointer>(static_cast<__node_base_pointer>(__ptr_)));
      return *this;
    }
    _LIBCPP_INLINE_VISIBILITY
    __tree_iterator operator++(int)
        {__tree_iterator __t(*this); ++(*this); return __t;}

    _LIBCPP_INLINE_VISIBILITY
    __tree_iterator& operator--() {
      __ptr_ = static_cast<__iter_pointer>(_VSTD::__tree_prev_iter<__node_base_pointer>(
          static_cast<__end_node_pointer>(__ptr_)));
      return *this;
    }
    _LIBCPP_INLINE_VISIBILITY
    __tree_iterator operator--(int)
        {__tree_iterator __t(*this); --(*this); return __t;}

    friend _LIBCPP_INLINE_VISIBILITY
        bool operator==(const __tree_iterator& __x, const __tree_iterator& __y)
        {return __x.__ptr_ == __y.__ptr_;}
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator!=(const __tree_iterator& __x, const __tree_iterator& __y)
        {return !(__x == __y);}

private:
    _LIBCPP_INLINE_VISIBILITY
    explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit __tree_iterator(__end_node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
    _LIBCPP_INLINE_VISIBILITY
    __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); }
    template <class, class, class> friend class __tree;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS __tree_const_iterator;
    template <class> friend class _LIBCPP_TEMPLATE_VIS __map_iterator;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS set;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS multiset;
};

template <class _Tp, class _NodePtr, class _DiffType>
class _LIBCPP_TEMPLATE_VIS __tree_const_iterator
{
    typedef __tree_node_types<_NodePtr>                     _NodeTypes;
    typedef typename _NodeTypes::__node_pointer             __node_pointer;
    typedef typename _NodeTypes::__node_base_pointer        __node_base_pointer;
    typedef typename _NodeTypes::__end_node_pointer         __end_node_pointer;
    typedef typename _NodeTypes::__iter_pointer             __iter_pointer;
    typedef pointer_traits<__node_pointer> __pointer_traits;

    __iter_pointer __ptr_;

public:
    typedef bidirectional_iterator_tag                           iterator_category;
    typedef _Tp                                                  value_type;
    typedef _DiffType                                            difference_type;
    typedef const value_type&                                    reference;
    typedef typename _NodeTypes::__const_node_value_type_pointer pointer;

    _LIBCPP_INLINE_VISIBILITY __tree_const_iterator() _NOEXCEPT
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 905 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
    : __ptr_(nullptr)
#endif
# 907 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
    {}

private:
    typedef __tree_iterator<value_type, __node_pointer, difference_type>
                                                           __non_const_iterator;
public:
    _LIBCPP_INLINE_VISIBILITY
    __tree_const_iterator(__non_const_iterator __p) _NOEXCEPT
        : __ptr_(__p.__ptr_) {}

    _LIBCPP_INLINE_VISIBILITY reference operator*() const
        {return __get_np()->__value_;}
    _LIBCPP_INLINE_VISIBILITY pointer operator->() const
        {return pointer_traits<pointer>::pointer_to(__get_np()->__value_);}

    _LIBCPP_INLINE_VISIBILITY
    __tree_const_iterator& operator++() {
      __ptr_ = static_cast<__iter_pointer>(
          _VSTD::__tree_next_iter<__end_node_pointer>(static_cast<__node_base_pointer>(__ptr_)));
      return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __tree_const_iterator operator++(int)
        {__tree_const_iterator __t(*this); ++(*this); return __t;}

    _LIBCPP_INLINE_VISIBILITY
    __tree_const_iterator& operator--() {
      __ptr_ = static_cast<__iter_pointer>(_VSTD::__tree_prev_iter<__node_base_pointer>(
          static_cast<__end_node_pointer>(__ptr_)));
      return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __tree_const_iterator operator--(int)
        {__tree_const_iterator __t(*this); --(*this); return __t;}

    friend _LIBCPP_INLINE_VISIBILITY
        bool operator==(const __tree_const_iterator& __x, const __tree_const_iterator& __y)
        {return __x.__ptr_ == __y.__ptr_;}
    friend _LIBCPP_INLINE_VISIBILITY
        bool operator!=(const __tree_const_iterator& __x, const __tree_const_iterator& __y)
        {return !(__x == __y);}

private:
    _LIBCPP_INLINE_VISIBILITY
    explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT
        : __ptr_(__p) {}
    _LIBCPP_INLINE_VISIBILITY
    explicit __tree_const_iterator(__end_node_pointer __p) _NOEXCEPT
        : __ptr_(__p) {}
    _LIBCPP_INLINE_VISIBILITY
    __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); }

    template <class, class, class> friend class __tree;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS set;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS multiset;
    template <class> friend class _LIBCPP_TEMPLATE_VIS __map_const_iterator;

};

template<class _Tp, class _Compare>
#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Compare const&, _Tp const&, _Tp const&>::value,
        "the specified comparator type does not provide a viable const call operator")
#endif
# 975 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
int __diagnose_non_const_comparator();

template <class _Tp, class _Compare, class _Allocator>
class __tree
{
public:
    typedef _Tp                                      value_type;
    typedef _Compare                                 value_compare;
    typedef _Allocator                               allocator_type;

private:
    typedef allocator_traits<allocator_type>         __alloc_traits;
    typedef typename __make_tree_node_types<value_type,
        typename __alloc_traits::void_pointer>::type
                                                    _NodeTypes;
    typedef typename _NodeTypes::key_type           key_type;
public:
    typedef typename _NodeTypes::__node_value_type      __node_value_type;
    typedef typename _NodeTypes::__container_value_type __container_value_type;

    typedef typename __alloc_traits::pointer         pointer;
    typedef typename __alloc_traits::const_pointer   const_pointer;
    typedef typename __alloc_traits::size_type       size_type;
    typedef typename __alloc_traits::difference_type difference_type;

public:
    typedef typename _NodeTypes::__void_pointer        __void_pointer;

    typedef typename _NodeTypes::__node_type           __node;
    typedef typename _NodeTypes::__node_pointer        __node_pointer;

    typedef typename _NodeTypes::__node_base_type      __node_base;
    typedef typename _NodeTypes::__node_base_pointer   __node_base_pointer;

    typedef typename _NodeTypes::__end_node_type       __end_node_t;
    typedef typename _NodeTypes::__end_node_pointer    __end_node_ptr;

    typedef typename _NodeTypes::__parent_pointer      __parent_pointer;
    typedef typename _NodeTypes::__iter_pointer        __iter_pointer;

    typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator;
    typedef allocator_traits<__node_allocator>         __node_traits;

private:
    // check for sane allocator pointer rebinding semantics. Rebinding the
    // allocator for a new pointer type should be exactly the same as rebinding
    // the pointer using 'pointer_traits'.
    static_assert((is_same<__node_pointer, typename __node_traits::pointer>::value),
                  "Allocator does not rebind pointers in a sane manner.");
    typedef typename __rebind_alloc_helper<__node_traits, __node_base>::type
        __node_base_allocator;
    typedef allocator_traits<__node_base_allocator> __node_base_traits;
    static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value),
                 "Allocator does not rebind pointers in a sane manner.");

private:
    __iter_pointer                                     __begin_node_;
    __compressed_pair<__end_node_t, __node_allocator>  __pair1_;
    __compressed_pair<size_type, value_compare>        __pair3_;

public:
    _LIBCPP_INLINE_VISIBILITY
    __iter_pointer __end_node() _NOEXCEPT
    {
        return static_cast<__iter_pointer>(
                pointer_traits<__end_node_ptr>::pointer_to(__pair1_.first())
        );
    }
    _LIBCPP_INLINE_VISIBILITY
    __iter_pointer __end_node() const _NOEXCEPT
    {
        return static_cast<__iter_pointer>(
            pointer_traits<__end_node_ptr>::pointer_to(
                const_cast<__end_node_t&>(__pair1_.first())
            )
        );
    }
    _LIBCPP_INLINE_VISIBILITY
          __node_allocator& __node_alloc() _NOEXCEPT {return __pair1_.second();}
private:
    _LIBCPP_INLINE_VISIBILITY
    const __node_allocator& __node_alloc() const _NOEXCEPT
        {return __pair1_.second();}
    _LIBCPP_INLINE_VISIBILITY
          __iter_pointer& __begin_node() _NOEXCEPT {return __begin_node_;}
    _LIBCPP_INLINE_VISIBILITY
    const __iter_pointer& __begin_node() const _NOEXCEPT {return __begin_node_;}
public:
    _LIBCPP_INLINE_VISIBILITY
    allocator_type __alloc() const _NOEXCEPT
        {return allocator_type(__node_alloc());}
private:
    _LIBCPP_INLINE_VISIBILITY
          size_type& size() _NOEXCEPT {return __pair3_.first();}
public:
    _LIBCPP_INLINE_VISIBILITY
    const size_type& size() const _NOEXCEPT {return __pair3_.first();}
    _LIBCPP_INLINE_VISIBILITY
          value_compare& value_comp() _NOEXCEPT {return __pair3_.second();}
    _LIBCPP_INLINE_VISIBILITY
    const value_compare& value_comp() const _NOEXCEPT
        {return __pair3_.second();}
public:

    _LIBCPP_INLINE_VISIBILITY
    __node_pointer __root() const _NOEXCEPT
        {return static_cast<__node_pointer>(__end_node()->__left_);}

    __node_base_pointer* __root_ptr() const _NOEXCEPT {
        return _VSTD::addressof(__end_node()->__left_);
    }

    typedef __tree_iterator<value_type, __node_pointer, difference_type>             iterator;
    typedef __tree_const_iterator<value_type, __node_pointer, difference_type> const_iterator;

    explicit __tree(const value_compare& __comp)
        _NOEXCEPT_(
            is_nothrow_default_constructible<__node_allocator>::value &&
            is_nothrow_copy_constructible<value_compare>::value);
    explicit __tree(const allocator_type& __a);
    __tree(const value_compare& __comp, const allocator_type& __a);
    __tree(const __tree& __t);
    __tree& operator=(const __tree& __t);
    template <class _ForwardIterator>
        void __assign_unique(_ForwardIterator __first, _ForwardIterator __last);
    template <class _InputIterator>
        void __assign_multi(_InputIterator __first, _InputIterator __last);
    __tree(__tree&& __t)
        _NOEXCEPT_(
            is_nothrow_move_constructible<__node_allocator>::value &&
            is_nothrow_move_constructible<value_compare>::value);
    __tree(__tree&& __t, const allocator_type& __a);
    __tree& operator=(__tree&& __t)
        _NOEXCEPT_(
            __node_traits::propagate_on_container_move_assignment::value &&
            is_nothrow_move_assignable<value_compare>::value &&
            is_nothrow_move_assignable<__node_allocator>::value);
    ~__tree();

    _LIBCPP_INLINE_VISIBILITY
          iterator begin()  _NOEXCEPT {return       iterator(__begin_node());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT {return const_iterator(__begin_node());}
    _LIBCPP_INLINE_VISIBILITY
          iterator end() _NOEXCEPT {return       iterator(__end_node());}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end() const _NOEXCEPT {return const_iterator(__end_node());}

    _LIBCPP_INLINE_VISIBILITY
    size_type max_size() const _NOEXCEPT
        {return _VSTD::min<size_type>(
                __node_traits::max_size(__node_alloc()),
                numeric_limits<difference_type >::max());}

    void clear() _NOEXCEPT;

    void swap(__tree& __t)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1133 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
        _NOEXCEPT_(
            __is_nothrow_swappable<value_compare>::value
            && (!__node_traits::propagate_on_container_swap::value ||
                 __is_nothrow_swappable<__node_allocator>::value)
            );
#else
# 1139 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
        _NOEXCEPT_(__is_nothrow_swappable<value_compare>::value);
#endif
# 1141 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

    template <class _Key, class ..._Args>
    pair<iterator, bool>
    __emplace_unique_key_args(_Key const&, _Args&&... __args);
    template <class _Key, class ..._Args>
    pair<iterator, bool>
    __emplace_hint_unique_key_args(const_iterator, _Key const&, _Args&&...);

    template <class... _Args>
    pair<iterator, bool> __emplace_unique_impl(_Args&&... __args);

    template <class... _Args>
    iterator __emplace_hint_unique_impl(const_iterator __p, _Args&&... __args);

    template <class... _Args>
    iterator __emplace_multi(_Args&&... __args);

    template <class... _Args>
    iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args);

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __emplace_unique(_Pp&& __x) {
        return __emplace_unique_extract_key(_VSTD::forward<_Pp>(__x),
                                            __can_extract_key<_Pp, key_type>());
    }

    template <class _First, class _Second>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<
        __can_extract_map_key<_First, key_type, __container_value_type>::value,
        pair<iterator, bool>
    >::type __emplace_unique(_First&& __f, _Second&& __s) {
        return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f),
                                              _VSTD::forward<_Second>(__s));
    }

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __emplace_unique(_Args&&... __args) {
        return __emplace_unique_impl(_VSTD::forward<_Args>(__args)...);
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool>
    __emplace_unique_extract_key(_Pp&& __x, __extract_key_fail_tag) {
      return __emplace_unique_impl(_VSTD::forward<_Pp>(__x));
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool>
    __emplace_unique_extract_key(_Pp&& __x, __extract_key_self_tag) {
      return __emplace_unique_key_args(__x, _VSTD::forward<_Pp>(__x));
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool>
    __emplace_unique_extract_key(_Pp&& __x, __extract_key_first_tag) {
      return __emplace_unique_key_args(__x.first, _VSTD::forward<_Pp>(__x));
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    iterator __emplace_hint_unique(const_iterator __p, _Pp&& __x) {
        return __emplace_hint_unique_extract_key(__p, _VSTD::forward<_Pp>(__x),
                                            __can_extract_key<_Pp, key_type>());
    }

    template <class _First, class _Second>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<
        __can_extract_map_key<_First, key_type, __container_value_type>::value,
        iterator
    >::type __emplace_hint_unique(const_iterator __p, _First&& __f, _Second&& __s) {
        return __emplace_hint_unique_key_args(__p, __f,
                                              _VSTD::forward<_First>(__f),
                                              _VSTD::forward<_Second>(__s)).first;
    }

    template <class... _Args>
    _LIBCPP_INLINE_VISIBILITY
    iterator __emplace_hint_unique(const_iterator __p, _Args&&... __args) {
        return __emplace_hint_unique_impl(__p, _VSTD::forward<_Args>(__args)...);
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    iterator
    __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_fail_tag) {
      return __emplace_hint_unique_impl(__p, _VSTD::forward<_Pp>(__x));
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    iterator
    __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_self_tag) {
      return __emplace_hint_unique_key_args(__p, __x, _VSTD::forward<_Pp>(__x)).first;
    }

    template <class _Pp>
    _LIBCPP_INLINE_VISIBILITY
    iterator
    __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_first_tag) {
      return __emplace_hint_unique_key_args(__p, __x.first, _VSTD::forward<_Pp>(__x)).first;
    }

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __insert_unique(const __container_value_type& __v) {
        return __emplace_unique_key_args(_NodeTypes::__get_key(__v), __v);
    }

    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_unique(const_iterator __p, const __container_value_type& __v) {
        return __emplace_hint_unique_key_args(__p, _NodeTypes::__get_key(__v), __v).first;
    }

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __insert_unique(__container_value_type&& __v) {
        return __emplace_unique_key_args(_NodeTypes::__get_key(__v), _VSTD::move(__v));
    }

    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_unique(const_iterator __p, __container_value_type&& __v) {
        return __emplace_hint_unique_key_args(__p, _NodeTypes::__get_key(__v), _VSTD::move(__v)).first;
    }

    template <class _Vp, class = typename enable_if<
            !is_same<typename __unconstref<_Vp>::type,
                     __container_value_type
            >::value
        >::type>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __insert_unique(_Vp&& __v) {
        return __emplace_unique(_VSTD::forward<_Vp>(__v));
    }

    template <class _Vp, class = typename enable_if<
            !is_same<typename __unconstref<_Vp>::type,
                     __container_value_type
            >::value
        >::type>
    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_unique(const_iterator __p, _Vp&& __v) {
        return __emplace_hint_unique(__p, _VSTD::forward<_Vp>(__v));
    }

    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_multi(__container_value_type&& __v) {
        return __emplace_multi(_VSTD::move(__v));
    }

    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_multi(const_iterator __p, __container_value_type&& __v) {
        return __emplace_hint_multi(__p, _VSTD::move(__v));
    }

    template <class _Vp>
    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_multi(_Vp&& __v) {
        return __emplace_multi(_VSTD::forward<_Vp>(__v));
    }

    template <class _Vp>
    _LIBCPP_INLINE_VISIBILITY
    iterator __insert_multi(const_iterator __p, _Vp&& __v) {
        return __emplace_hint_multi(__p, _VSTD::forward<_Vp>(__v));
    }

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> __node_assign_unique(const __container_value_type& __v, __node_pointer __dest);

    _LIBCPP_INLINE_VISIBILITY
    iterator __node_insert_multi(__node_pointer __nd);
    _LIBCPP_INLINE_VISIBILITY
    iterator __node_insert_multi(const_iterator __p, __node_pointer __nd);


    _LIBCPP_INLINE_VISIBILITY iterator
    __remove_node_pointer(__node_pointer) _NOEXCEPT;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1325 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
    template <class _NodeHandle, class _InsertReturnType>
    _LIBCPP_INLINE_VISIBILITY
    _InsertReturnType __node_handle_insert_unique(_NodeHandle&&);
    template <class _NodeHandle>
    _LIBCPP_INLINE_VISIBILITY
    iterator __node_handle_insert_unique(const_iterator, _NodeHandle&&);
    template <class _Tree>
    _LIBCPP_INLINE_VISIBILITY
    void __node_handle_merge_unique(_Tree& __source);

    template <class _NodeHandle>
    _LIBCPP_INLINE_VISIBILITY
    iterator __node_handle_insert_multi(_NodeHandle&&);
    template <class _NodeHandle>
    _LIBCPP_INLINE_VISIBILITY
    iterator __node_handle_insert_multi(const_iterator, _NodeHandle&&);
    template <class _Tree>
    _LIBCPP_INLINE_VISIBILITY
    void __node_handle_merge_multi(_Tree& __source);


    template <class _NodeHandle>
    _LIBCPP_INLINE_VISIBILITY
    _NodeHandle __node_handle_extract(key_type const&);
    template <class _NodeHandle>
    _LIBCPP_INLINE_VISIBILITY
    _NodeHandle __node_handle_extract(const_iterator);
#endif
# 1353 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

    iterator erase(const_iterator __p);
    iterator erase(const_iterator __f, const_iterator __l);
    template <class _Key>
        size_type __erase_unique(const _Key& __k);
    template <class _Key>
        size_type __erase_multi(const _Key& __k);

    void __insert_node_at(__parent_pointer     __parent,
                          __node_base_pointer& __child,
                          __node_base_pointer __new_node) _NOEXCEPT;

    template <class _Key>
        iterator find(const _Key& __v);
    template <class _Key>
        const_iterator find(const _Key& __v) const;

    template <class _Key>
        size_type __count_unique(const _Key& __k) const;
    template <class _Key>
        size_type __count_multi(const _Key& __k) const;

    template <class _Key>
        _LIBCPP_INLINE_VISIBILITY
        iterator lower_bound(const _Key& __v)
            {return __lower_bound(__v, __root(), __end_node());}
    template <class _Key>
        iterator __lower_bound(const _Key& __v,
                               __node_pointer __root,
                               __iter_pointer __result);
    template <class _Key>
        _LIBCPP_INLINE_VISIBILITY
        const_iterator lower_bound(const _Key& __v) const
            {return __lower_bound(__v, __root(), __end_node());}
    template <class _Key>
        const_iterator __lower_bound(const _Key& __v,
                                     __node_pointer __root,
                                     __iter_pointer __result) const;
    template <class _Key>
        _LIBCPP_INLINE_VISIBILITY
        iterator upper_bound(const _Key& __v)
            {return __upper_bound(__v, __root(), __end_node());}
    template <class _Key>
        iterator __upper_bound(const _Key& __v,
                               __node_pointer __root,
                               __iter_pointer __result);
    template <class _Key>
        _LIBCPP_INLINE_VISIBILITY
        const_iterator upper_bound(const _Key& __v) const
            {return __upper_bound(__v, __root(), __end_node());}
    template <class _Key>
        const_iterator __upper_bound(const _Key& __v,
                                     __node_pointer __root,
                                     __iter_pointer __result) const;
    template <class _Key>
        pair<iterator, iterator>
        __equal_range_unique(const _Key& __k);
    template <class _Key>
        pair<const_iterator, const_iterator>
        __equal_range_unique(const _Key& __k) const;

    template <class _Key>
        pair<iterator, iterator>
        __equal_range_multi(const _Key& __k);
    template <class _Key>
        pair<const_iterator, const_iterator>
        __equal_range_multi(const _Key& __k) const;

    typedef __tree_node_destructor<__node_allocator> _Dp;
    typedef unique_ptr<__node, _Dp> __node_holder;

    __node_holder remove(const_iterator __p) _NOEXCEPT;
private:
    __node_base_pointer&
        __find_leaf_low(__parent_pointer& __parent, const key_type& __v);
    __node_base_pointer&
        __find_leaf_high(__parent_pointer& __parent, const key_type& __v);
    __node_base_pointer&
        __find_leaf(const_iterator __hint,
                    __parent_pointer& __parent, const key_type& __v);
    // FIXME: Make this function const qualified. Unfortunately doing so
    // breaks existing code which uses non-const callable comparators.
    template <class _Key>
    __node_base_pointer&
        __find_equal(__parent_pointer& __parent, const _Key& __v);
    template <class _Key>
    _LIBCPP_INLINE_VISIBILITY __node_base_pointer&
    __find_equal(__parent_pointer& __parent, const _Key& __v) const {
      return const_cast<__tree*>(this)->__find_equal(__parent, __v);
    }
    template <class _Key>
    __node_base_pointer&
        __find_equal(const_iterator __hint, __parent_pointer& __parent,
                     __node_base_pointer& __dummy,
                     const _Key& __v);

    template <class ..._Args>
    __node_holder __construct_node(_Args&& ...__args);

    void destroy(__node_pointer __nd) _NOEXCEPT;

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __tree& __t)
        {__copy_assign_alloc(__t, integral_constant<bool,
             __node_traits::propagate_on_container_copy_assignment::value>());}

    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __tree& __t, true_type)
        {
        if (__node_alloc() != __t.__node_alloc())
            clear();
        __node_alloc() = __t.__node_alloc();
        }
    _LIBCPP_INLINE_VISIBILITY
    void __copy_assign_alloc(const __tree&, false_type) {}

    void __move_assign(__tree& __t, false_type);
    void __move_assign(__tree& __t, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<value_compare>::value &&
                   is_nothrow_move_assignable<__node_allocator>::value);

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__tree& __t)
        _NOEXCEPT_(
            !__node_traits::propagate_on_container_move_assignment::value ||
            is_nothrow_move_assignable<__node_allocator>::value)
        {__move_assign_alloc(__t, integral_constant<bool,
             __node_traits::propagate_on_container_move_assignment::value>());}

    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__tree& __t, true_type)
        _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value)
        {__node_alloc() = _VSTD::move(__t.__node_alloc());}
    _LIBCPP_INLINE_VISIBILITY
    void __move_assign_alloc(__tree&, false_type) _NOEXCEPT {}

    struct _DetachedTreeCache {
      _LIBCPP_INLINE_VISIBILITY
      explicit _DetachedTreeCache(__tree *__t) _NOEXCEPT : __t_(__t),
        __cache_root_(__detach_from_tree(__t)) {
          __advance();
        }

      _LIBCPP_INLINE_VISIBILITY
      __node_pointer __get() const _NOEXCEPT {
        return __cache_elem_;
      }

      _LIBCPP_INLINE_VISIBILITY
      void __advance() _NOEXCEPT {
        __cache_elem_ = __cache_root_;
        if (__cache_root_) {
          __cache_root_ = __detach_next(__cache_root_);
        }
      }

      _LIBCPP_INLINE_VISIBILITY
      ~_DetachedTreeCache() {
        __t_->destroy(__cache_elem_);
        if (__cache_root_) {
          while (__cache_root_->__parent_ != nullptr)
            __cache_root_ = static_cast<__node_pointer>(__cache_root_->__parent_);
          __t_->destroy(__cache_root_);
        }
      }

       _DetachedTreeCache(_DetachedTreeCache const&) = delete;
       _DetachedTreeCache& operator=(_DetachedTreeCache const&) = delete;

    private:
      _LIBCPP_INLINE_VISIBILITY
      static __node_pointer __detach_from_tree(__tree *__t) _NOEXCEPT;
      _LIBCPP_INLINE_VISIBILITY
      static __node_pointer __detach_next(__node_pointer) _NOEXCEPT;

      __tree *__t_;
      __node_pointer __cache_root_;
      __node_pointer __cache_elem_;
    };


    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap;
};

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp)
        _NOEXCEPT_(
            is_nothrow_default_constructible<__node_allocator>::value &&
            is_nothrow_copy_constructible<value_compare>::value)
    : __pair3_(0, __comp)
{
    __begin_node() = __end_node();
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(const allocator_type& __a)
    : __begin_node_(__iter_pointer()),
      __pair1_(__default_init_tag(), __node_allocator(__a)),
      __pair3_(0, __default_init_tag())
{
    __begin_node() = __end_node();
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp,
                                           const allocator_type& __a)
    : __begin_node_(__iter_pointer()),
      __pair1_(__default_init_tag(), __node_allocator(__a)),
      __pair3_(0, __comp)
{
    __begin_node() = __end_node();
}

// Precondition:  size() != 0
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_pointer
__tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_from_tree(__tree *__t) _NOEXCEPT
{
    __node_pointer __cache = static_cast<__node_pointer>(__t->__begin_node());
    __t->__begin_node() = __t->__end_node();
    __t->__end_node()->__left_->__parent_ = nullptr;
    __t->__end_node()->__left_ = nullptr;
    __t->size() = 0;
    // __cache->__left_ == nullptr
    if (__cache->__right_ != nullptr)
        __cache = static_cast<__node_pointer>(__cache->__right_);
    // __cache->__left_ == nullptr
    // __cache->__right_ == nullptr
    return __cache;
}

// Precondition:  __cache != nullptr
//    __cache->left_ == nullptr
//    __cache->right_ == nullptr
//    This is no longer a red-black tree
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_pointer
__tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_next(__node_pointer __cache) _NOEXCEPT
{
    if (__cache->__parent_ == nullptr)
        return nullptr;
    if (_VSTD::__tree_is_left_child(static_cast<__node_base_pointer>(__cache)))
    {
        __cache->__parent_->__left_ = nullptr;
        __cache = static_cast<__node_pointer>(__cache->__parent_);
        if (__cache->__right_ == nullptr)
            return __cache;
        return static_cast<__node_pointer>(_VSTD::__tree_leaf(__cache->__right_));
    }
    // __cache is right child
    __cache->__parent_unsafe()->__right_ = nullptr;
    __cache = static_cast<__node_pointer>(__cache->__parent_);
    if (__cache->__left_ == nullptr)
        return __cache;
    return static_cast<__node_pointer>(_VSTD::__tree_leaf(__cache->__left_));
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>&
__tree<_Tp, _Compare, _Allocator>::operator=(const __tree& __t)
{
    if (this != &__t)
    {
        value_comp() = __t.value_comp();
        __copy_assign_alloc(__t);
        __assign_multi(__t.begin(), __t.end());
    }
    return *this;
}

template <class _Tp, class _Compare, class _Allocator>
template <class _ForwardIterator>
void
__tree<_Tp, _Compare, _Allocator>::__assign_unique(_ForwardIterator __first, _ForwardIterator __last)
{
    typedef iterator_traits<_ForwardIterator> _ITraits;
    typedef typename _ITraits::value_type _ItValueType;
    static_assert((is_same<_ItValueType, __container_value_type>::value),
                  "__assign_unique may only be called with the containers value type");
    static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value,
                  "__assign_unique requires a forward iterator");
    if (size() != 0)
    {
        _DetachedTreeCache __cache(this);
          for (; __cache.__get() != nullptr && __first != __last; ++__first) {
              if (__node_assign_unique(*__first, __cache.__get()).second)
                  __cache.__advance();
            }
    }
    for (; __first != __last; ++__first)
        __insert_unique(*__first);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _InputIterator>
void
__tree<_Tp, _Compare, _Allocator>::__assign_multi(_InputIterator __first, _InputIterator __last)
{
    typedef iterator_traits<_InputIterator> _ITraits;
    typedef typename _ITraits::value_type _ItValueType;
    static_assert((is_same<_ItValueType, __container_value_type>::value ||
                  is_same<_ItValueType, __node_value_type>::value),
                  "__assign_multi may only be called with the containers value type"
                  " or the nodes value type");
    if (size() != 0)
    {
        _DetachedTreeCache __cache(this);
        for (; __cache.__get() && __first != __last; ++__first) {
            __cache.__get()->__value_ = *__first;
            __node_insert_multi(__cache.__get());
            __cache.__advance();
        }
    }
    for (; __first != __last; ++__first)
        __insert_multi(_NodeTypes::__get_value(*__first));
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(const __tree& __t)
    : __begin_node_(__iter_pointer()),
      __pair1_(__default_init_tag(), __node_traits::select_on_container_copy_construction(__t.__node_alloc())),
      __pair3_(0, __t.value_comp())
{
    __begin_node() = __end_node();
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t)
    _NOEXCEPT_(
        is_nothrow_move_constructible<__node_allocator>::value &&
        is_nothrow_move_constructible<value_compare>::value)
    : __begin_node_(_VSTD::move(__t.__begin_node_)),
      __pair1_(_VSTD::move(__t.__pair1_)),
      __pair3_(_VSTD::move(__t.__pair3_))
{
    if (size() == 0)
        __begin_node() = __end_node();
    else
    {
        __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node());
        __t.__begin_node() = __t.__end_node();
        __t.__end_node()->__left_ = nullptr;
        __t.size() = 0;
    }
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t, const allocator_type& __a)
    : __pair1_(__default_init_tag(), __node_allocator(__a)),
      __pair3_(0, _VSTD::move(__t.value_comp()))
{
    if (__a == __t.__alloc())
    {
        if (__t.size() == 0)
            __begin_node() = __end_node();
        else
        {
            __begin_node() = __t.__begin_node();
            __end_node()->__left_ = __t.__end_node()->__left_;
            __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node());
            size() = __t.size();
            __t.__begin_node() = __t.__end_node();
            __t.__end_node()->__left_ = nullptr;
            __t.size() = 0;
        }
    }
    else
    {
        __begin_node() = __end_node();
    }
}

template <class _Tp, class _Compare, class _Allocator>
void
__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type)
    _NOEXCEPT_(is_nothrow_move_assignable<value_compare>::value &&
               is_nothrow_move_assignable<__node_allocator>::value)
{
    destroy(static_cast<__node_pointer>(__end_node()->__left_));
    __begin_node_ = __t.__begin_node_;
    __pair1_.first() = __t.__pair1_.first();
    __move_assign_alloc(__t);
    __pair3_ = _VSTD::move(__t.__pair3_);
    if (size() == 0)
        __begin_node() = __end_node();
    else
    {
        __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node());
        __t.__begin_node() = __t.__end_node();
        __t.__end_node()->__left_ = nullptr;
        __t.size() = 0;
    }
}

template <class _Tp, class _Compare, class _Allocator>
void
__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, false_type)
{
    if (__node_alloc() == __t.__node_alloc())
        __move_assign(__t, true_type());
    else
    {
        value_comp() = _VSTD::move(__t.value_comp());
        const_iterator __e = end();
        if (size() != 0)
        {
            _DetachedTreeCache __cache(this);
            while (__cache.__get() != nullptr && __t.size() != 0) {
              __cache.__get()->__value_ = _VSTD::move(__t.remove(__t.begin())->__value_);
              __node_insert_multi(__cache.__get());
              __cache.__advance();
            }
        }
        while (__t.size() != 0)
            __insert_multi(__e, _NodeTypes::__move(__t.remove(__t.begin())->__value_));
    }
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>&
__tree<_Tp, _Compare, _Allocator>::operator=(__tree&& __t)
    _NOEXCEPT_(
        __node_traits::propagate_on_container_move_assignment::value &&
        is_nothrow_move_assignable<value_compare>::value &&
        is_nothrow_move_assignable<__node_allocator>::value)

{
    __move_assign(__t, integral_constant<bool,
                  __node_traits::propagate_on_container_move_assignment::value>());
    return *this;
}

template <class _Tp, class _Compare, class _Allocator>
__tree<_Tp, _Compare, _Allocator>::~__tree()
{
    static_assert((is_copy_constructible<value_compare>::value),
                 "Comparator must be copy-constructible.");
  destroy(__root());
}

template <class _Tp, class _Compare, class _Allocator>
void
__tree<_Tp, _Compare, _Allocator>::destroy(__node_pointer __nd) _NOEXCEPT
{
    if (__nd != nullptr)
    {
        destroy(static_cast<__node_pointer>(__nd->__left_));
        destroy(static_cast<__node_pointer>(__nd->__right_));
        __node_allocator& __na = __node_alloc();
        __node_traits::destroy(__na, _NodeTypes::__get_ptr(__nd->__value_));
        __node_traits::deallocate(__na, __nd, 1);
    }
}

template <class _Tp, class _Compare, class _Allocator>
void
__tree<_Tp, _Compare, _Allocator>::swap(__tree& __t)
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1812 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
        _NOEXCEPT_(
            __is_nothrow_swappable<value_compare>::value
            && (!__node_traits::propagate_on_container_swap::value ||
                 __is_nothrow_swappable<__node_allocator>::value)
            )
#else
# 1818 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
        _NOEXCEPT_(__is_nothrow_swappable<value_compare>::value)
#endif
# 1820 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
{
    using _VSTD::swap;
    swap(__begin_node_, __t.__begin_node_);
    swap(__pair1_.first(), __t.__pair1_.first());
    _VSTD::__swap_allocator(__node_alloc(), __t.__node_alloc());
    __pair3_.swap(__t.__pair3_);
    if (size() == 0)
        __begin_node() = __end_node();
    else
        __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node());
    if (__t.size() == 0)
        __t.__begin_node() = __t.__end_node();
    else
        __t.__end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__t.__end_node());
}

template <class _Tp, class _Compare, class _Allocator>
void
__tree<_Tp, _Compare, _Allocator>::clear() _NOEXCEPT
{
    destroy(__root());
    size() = 0;
    __begin_node() = __end_node();
    __end_node()->__left_ = nullptr;
}

// Find lower_bound place to insert
// Set __parent to parent of null leaf
// Return reference to null leaf
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer&
__tree<_Tp, _Compare, _Allocator>::__find_leaf_low(__parent_pointer& __parent,
                                                   const key_type& __v)
{
    __node_pointer __nd = __root();
    if (__nd != nullptr)
    {
        while (true)
        {
            if (value_comp()(__nd->__value_, __v))
            {
                if (__nd->__right_ != nullptr)
                    __nd = static_cast<__node_pointer>(__nd->__right_);
                else
                {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __nd->__right_;
                }
            }
            else
            {
                if (__nd->__left_ != nullptr)
                    __nd = static_cast<__node_pointer>(__nd->__left_);
                else
                {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __parent->__left_;
                }
            }
        }
    }
    __parent = static_cast<__parent_pointer>(__end_node());
    return __parent->__left_;
}

// Find upper_bound place to insert
// Set __parent to parent of null leaf
// Return reference to null leaf
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer&
__tree<_Tp, _Compare, _Allocator>::__find_leaf_high(__parent_pointer& __parent,
                                                    const key_type& __v)
{
    __node_pointer __nd = __root();
    if (__nd != nullptr)
    {
        while (true)
        {
            if (value_comp()(__v, __nd->__value_))
            {
                if (__nd->__left_ != nullptr)
                    __nd = static_cast<__node_pointer>(__nd->__left_);
                else
                {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __parent->__left_;
                }
            }
            else
            {
                if (__nd->__right_ != nullptr)
                    __nd = static_cast<__node_pointer>(__nd->__right_);
                else
                {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __nd->__right_;
                }
            }
        }
    }
    __parent = static_cast<__parent_pointer>(__end_node());
    return __parent->__left_;
}

// Find leaf place to insert closest to __hint
// First check prior to __hint.
// Next check after __hint.
// Next do O(log N) search.
// Set __parent to parent of null leaf
// Return reference to null leaf
template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer&
__tree<_Tp, _Compare, _Allocator>::__find_leaf(const_iterator __hint,
                                               __parent_pointer& __parent,
                                               const key_type& __v)
{
    if (__hint == end() || !value_comp()(*__hint, __v))  // check before
    {
        // __v <= *__hint
        const_iterator __prior = __hint;
        if (__prior == begin() || !value_comp()(__v, *--__prior))
        {
            // *prev(__hint) <= __v <= *__hint
            if (__hint.__ptr_->__left_ == nullptr)
            {
                __parent = static_cast<__parent_pointer>(__hint.__ptr_);
                return __parent->__left_;
            }
            else
            {
                __parent = static_cast<__parent_pointer>(__prior.__ptr_);
                return static_cast<__node_base_pointer>(__prior.__ptr_)->__right_;
            }
        }
        // __v < *prev(__hint)
        return __find_leaf_high(__parent, __v);
    }
    // else __v > *__hint
    return __find_leaf_low(__parent, __v);
}

// Find place to insert if __v doesn't exist
// Set __parent to parent of null leaf
// Return reference to null leaf
// If __v exists, set parent to node of __v and return reference to node of __v
template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer&
__tree<_Tp, _Compare, _Allocator>::__find_equal(__parent_pointer& __parent,
                                                const _Key& __v)
{
    __node_pointer __nd = __root();
    __node_base_pointer* __nd_ptr = __root_ptr();
    if (__nd != nullptr)
    {
        while (true)
        {
            if (value_comp()(__v, __nd->__value_))
            {
                if (__nd->__left_ != nullptr) {
                    __nd_ptr = _VSTD::addressof(__nd->__left_);
                    __nd = static_cast<__node_pointer>(__nd->__left_);
                } else {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __parent->__left_;
                }
            }
            else if (value_comp()(__nd->__value_, __v))
            {
                if (__nd->__right_ != nullptr) {
                    __nd_ptr = _VSTD::addressof(__nd->__right_);
                    __nd = static_cast<__node_pointer>(__nd->__right_);
                } else {
                    __parent = static_cast<__parent_pointer>(__nd);
                    return __nd->__right_;
                }
            }
            else
            {
                __parent = static_cast<__parent_pointer>(__nd);
                return *__nd_ptr;
            }
        }
    }
    __parent = static_cast<__parent_pointer>(__end_node());
    return __parent->__left_;
}

// Find place to insert if __v doesn't exist
// First check prior to __hint.
// Next check after __hint.
// Next do O(log N) search.
// Set __parent to parent of null leaf
// Return reference to null leaf
// If __v exists, set parent to node of __v and return reference to node of __v
template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer&
__tree<_Tp, _Compare, _Allocator>::__find_equal(const_iterator __hint,
                                                __parent_pointer& __parent,
                                                __node_base_pointer& __dummy,
                                                const _Key& __v)
{
    if (__hint == end() || value_comp()(__v, *__hint))  // check before
    {
        // __v < *__hint
        const_iterator __prior = __hint;
        if (__prior == begin() || value_comp()(*--__prior, __v))
        {
            // *prev(__hint) < __v < *__hint
            if (__hint.__ptr_->__left_ == nullptr)
            {
                __parent = static_cast<__parent_pointer>(__hint.__ptr_);
                return __parent->__left_;
            }
            else
            {
                __parent = static_cast<__parent_pointer>(__prior.__ptr_);
                return static_cast<__node_base_pointer>(__prior.__ptr_)->__right_;
            }
        }
        // __v <= *prev(__hint)
        return __find_equal(__parent, __v);
    }
    else if (value_comp()(*__hint, __v))  // check after
    {
        // *__hint < __v
        const_iterator __next = _VSTD::next(__hint);
        if (__next == end() || value_comp()(__v, *__next))
        {
            // *__hint < __v < *_VSTD::next(__hint)
            if (__hint.__get_np()->__right_ == nullptr)
            {
                __parent = static_cast<__parent_pointer>(__hint.__ptr_);
                return static_cast<__node_base_pointer>(__hint.__ptr_)->__right_;
            }
            else
            {
                __parent = static_cast<__parent_pointer>(__next.__ptr_);
                return __parent->__left_;
            }
        }
        // *next(__hint) <= __v
        return __find_equal(__parent, __v);
    }
    // else __v == *__hint
    __parent = static_cast<__parent_pointer>(__hint.__ptr_);
    __dummy = static_cast<__node_base_pointer>(__hint.__ptr_);
    return __dummy;
}

template <class _Tp, class _Compare, class _Allocator>
void __tree<_Tp, _Compare, _Allocator>::__insert_node_at(
    __parent_pointer __parent, __node_base_pointer& __child,
    __node_base_pointer __new_node) _NOEXCEPT
{
    __new_node->__left_   = nullptr;
    __new_node->__right_  = nullptr;
    __new_node->__parent_ = __parent;
    // __new_node->__is_black_ is initialized in __tree_balance_after_insert
    __child = __new_node;
    if (__begin_node()->__left_ != nullptr)
        __begin_node() = static_cast<__iter_pointer>(__begin_node()->__left_);
    _VSTD::__tree_balance_after_insert(__end_node()->__left_, __child);
    ++size();
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key, class... _Args>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool>
__tree<_Tp, _Compare, _Allocator>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_equal(__parent, __k);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    bool __inserted = false;
    if (__child == nullptr)
    {
        __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
        __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
        __r = __h.release();
        __inserted = true;
    }
    return pair<iterator, bool>(iterator(__r), __inserted);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key, class... _Args>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool>
__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique_key_args(
    const_iterator __p, _Key const& __k, _Args&&... __args)
{
    __parent_pointer __parent;
    __node_base_pointer __dummy;
    __node_base_pointer& __child = __find_equal(__p, __parent, __dummy, __k);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    bool __inserted = false;
    if (__child == nullptr)
    {
        __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
        __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
        __r = __h.release();
        __inserted = true;
    }
    return pair<iterator, bool>(iterator(__r), __inserted);
}

template <class _Tp, class _Compare, class _Allocator>
template <class ..._Args>
typename __tree<_Tp, _Compare, _Allocator>::__node_holder
__tree<_Tp, _Compare, _Allocator>::__construct_node(_Args&& ...__args)
{
    static_assert(!__is_tree_value_type<_Args...>::value,
                  "Cannot construct from __value_type");
    __node_allocator& __na = __node_alloc();
    __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
    __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), _VSTD::forward<_Args>(__args)...);
    __h.get_deleter().__value_constructed = true;
    return __h;
}


template <class _Tp, class _Compare, class _Allocator>
template <class... _Args>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool>
__tree<_Tp, _Compare, _Allocator>::__emplace_unique_impl(_Args&&... __args)
{
    __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_equal(__parent, __h->__value_);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    bool __inserted = false;
    if (__child == nullptr)
    {
        __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
        __r = __h.release();
        __inserted = true;
    }
    return pair<iterator, bool>(iterator(__r), __inserted);
}

template <class _Tp, class _Compare, class _Allocator>
template <class... _Args>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique_impl(const_iterator __p, _Args&&... __args)
{
    __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
    __parent_pointer __parent;
    __node_base_pointer __dummy;
    __node_base_pointer& __child = __find_equal(__p, __parent, __dummy, __h->__value_);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    if (__child == nullptr)
    {
        __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
        __r = __h.release();
    }
    return iterator(__r);
}

template <class _Tp, class _Compare, class _Allocator>
template <class... _Args>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__emplace_multi(_Args&&... __args)
{
    __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf_high(__parent, _NodeTypes::__get_key(__h->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
    return iterator(static_cast<__node_pointer>(__h.release()));
}

template <class _Tp, class _Compare, class _Allocator>
template <class... _Args>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__emplace_hint_multi(const_iterator __p,
                                                        _Args&&... __args)
{
    __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf(__p, __parent, _NodeTypes::__get_key(__h->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
    return iterator(static_cast<__node_pointer>(__h.release()));
}

template <class _Tp, class _Compare, class _Allocator>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool>
__tree<_Tp, _Compare, _Allocator>::__node_assign_unique(const __container_value_type& __v, __node_pointer __nd)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_equal(__parent, _NodeTypes::__get_key(__v));
    __node_pointer __r = static_cast<__node_pointer>(__child);
    bool __inserted = false;
    if (__child == nullptr)
    {
        __nd->__value_ = __v;
        __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd));
        __r = __nd;
        __inserted = true;
    }
    return pair<iterator, bool>(iterator(__r), __inserted);
}


template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(__node_pointer __nd)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf_high(__parent, _NodeTypes::__get_key(__nd->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd));
    return iterator(__nd);
}

template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(const_iterator __p,
                                                       __node_pointer __nd)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf(__p, __parent, _NodeTypes::__get_key(__nd->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd));
    return iterator(__nd);
}

template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__remove_node_pointer(__node_pointer __ptr) _NOEXCEPT
{
    iterator __r(__ptr);
    ++__r;
    if (__begin_node() == __ptr)
        __begin_node() = __r.__ptr_;
    --size();
    _VSTD::__tree_remove(__end_node()->__left_,
                         static_cast<__node_base_pointer>(__ptr));
    return __r;
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2259 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle, class _InsertReturnType>
_LIBCPP_INLINE_VISIBILITY
_InsertReturnType
__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_unique(
    _NodeHandle&& __nh)
{
    if (__nh.empty())
        return _InsertReturnType{end(), false, _NodeHandle()};

    __node_pointer __ptr = __nh.__ptr_;
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_equal(__parent,
                                                __ptr->__value_);
    if (__child != nullptr)
        return _InsertReturnType{
            iterator(static_cast<__node_pointer>(__child)),
            false, _VSTD::move(__nh)};

    __insert_node_at(__parent, __child,
                     static_cast<__node_base_pointer>(__ptr));
    __nh.__release_ptr();
    return _InsertReturnType{iterator(__ptr), true, _NodeHandle()};
}

template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_unique(
    const_iterator __hint, _NodeHandle&& __nh)
{
    if (__nh.empty())
        return end();

    __node_pointer __ptr = __nh.__ptr_;
    __parent_pointer __parent;
    __node_base_pointer __dummy;
    __node_base_pointer& __child = __find_equal(__hint, __parent, __dummy,
                                                __ptr->__value_);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    if (__child == nullptr)
    {
        __insert_node_at(__parent, __child,
                         static_cast<__node_base_pointer>(__ptr));
        __r = __ptr;
        __nh.__release_ptr();
    }
    return iterator(__r);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
_NodeHandle
__tree<_Tp, _Compare, _Allocator>::__node_handle_extract(key_type const& __key)
{
    iterator __it = find(__key);
    if (__it == end())
        return _NodeHandle();
    return __node_handle_extract<_NodeHandle>(__it);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
_NodeHandle
__tree<_Tp, _Compare, _Allocator>::__node_handle_extract(const_iterator __p)
{
    __node_pointer __np = __p.__get_np();
    __remove_node_pointer(__np);
    return _NodeHandle(__np, __alloc());
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Tree>
_LIBCPP_INLINE_VISIBILITY
void
__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_unique(_Tree& __source)
{
    static_assert(is_same<typename _Tree::__node_pointer, __node_pointer>::value, "");

    for (typename _Tree::iterator __i = __source.begin();
         __i != __source.end();)
    {
        __node_pointer __src_ptr = __i.__get_np();
        __parent_pointer __parent;
        __node_base_pointer& __child =
            __find_equal(__parent, _NodeTypes::__get_key(__src_ptr->__value_));
        ++__i;
        if (__child != nullptr)
            continue;
        __source.__remove_node_pointer(__src_ptr);
        __insert_node_at(__parent, __child,
                         static_cast<__node_base_pointer>(__src_ptr));
    }
}

template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi(_NodeHandle&& __nh)
{
    if (__nh.empty())
        return end();
    __node_pointer __ptr = __nh.__ptr_;
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf_high(
        __parent, _NodeTypes::__get_key(__ptr->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
    __nh.__release_ptr();
    return iterator(__ptr);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _NodeHandle>
_LIBCPP_INLINE_VISIBILITY
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi(
    const_iterator __hint, _NodeHandle&& __nh)
{
    if (__nh.empty())
        return end();

    __node_pointer __ptr = __nh.__ptr_;
    __parent_pointer __parent;
    __node_base_pointer& __child = __find_leaf(__hint, __parent,
                                               _NodeTypes::__get_key(__ptr->__value_));
    __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
    __nh.__release_ptr();
    return iterator(__ptr);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Tree>
_LIBCPP_INLINE_VISIBILITY
void
__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_multi(_Tree& __source)
{
    static_assert(is_same<typename _Tree::__node_pointer, __node_pointer>::value, "");

    for (typename _Tree::iterator __i = __source.begin();
         __i != __source.end();)
    {
        __node_pointer __src_ptr = __i.__get_np();
        __parent_pointer __parent;
        __node_base_pointer& __child = __find_leaf_high(
            __parent, _NodeTypes::__get_key(__src_ptr->__value_));
        ++__i;
        __source.__remove_node_pointer(__src_ptr);
        __insert_node_at(__parent, __child,
                         static_cast<__node_base_pointer>(__src_ptr));
    }
}

#endif // _LIBCPP_STD_VER > 14
# 2416 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3

template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __p)
{
    __node_pointer __np = __p.__get_np();
    iterator __r = __remove_node_pointer(__np);
    __node_allocator& __na = __node_alloc();
    __node_traits::destroy(__na, _NodeTypes::__get_ptr(
        const_cast<__node_value_type&>(*__p)));
    __node_traits::deallocate(__na, __np, 1);
    return __r;
}

template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __f, const_iterator __l)
{
    while (__f != __l)
        __f = erase(__f);
    return iterator(__l.__ptr_);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::size_type
__tree<_Tp, _Compare, _Allocator>::__erase_unique(const _Key& __k)
{
    iterator __i = find(__k);
    if (__i == end())
        return 0;
    erase(__i);
    return 1;
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::size_type
__tree<_Tp, _Compare, _Allocator>::__erase_multi(const _Key& __k)
{
    pair<iterator, iterator> __p = __equal_range_multi(__k);
    size_type __r = 0;
    for (; __p.first != __p.second; ++__r)
        __p.first = erase(__p.first);
    return __r;
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v)
{
    iterator __p = __lower_bound(__v, __root(), __end_node());
    if (__p != end() && !value_comp()(__v, *__p))
        return __p;
    return end();
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::const_iterator
__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) const
{
    const_iterator __p = __lower_bound(__v, __root(), __end_node());
    if (__p != end() && !value_comp()(__v, *__p))
        return __p;
    return end();
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::size_type
__tree<_Tp, _Compare, _Allocator>::__count_unique(const _Key& __k) const
{
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return 1;
    }
    return 0;
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::size_type
__tree<_Tp, _Compare, _Allocator>::__count_multi(const _Key& __k) const
{
    __iter_pointer __result = __end_node();
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __result = static_cast<__iter_pointer>(__rt);
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return _VSTD::distance(
                __lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)),
                __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result)
            );
    }
    return 0;
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v,
                                                 __node_pointer __root,
                                                 __iter_pointer __result)
{
    while (__root != nullptr)
    {
        if (!value_comp()(__root->__value_, __v))
        {
            __result = static_cast<__iter_pointer>(__root);
            __root = static_cast<__node_pointer>(__root->__left_);
        }
        else
            __root = static_cast<__node_pointer>(__root->__right_);
    }
    return iterator(__result);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::const_iterator
__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v,
                                                 __node_pointer __root,
                                                 __iter_pointer __result) const
{
    while (__root != nullptr)
    {
        if (!value_comp()(__root->__value_, __v))
        {
            __result = static_cast<__iter_pointer>(__root);
            __root = static_cast<__node_pointer>(__root->__left_);
        }
        else
            __root = static_cast<__node_pointer>(__root->__right_);
    }
    return const_iterator(__result);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::iterator
__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v,
                                                 __node_pointer __root,
                                                 __iter_pointer __result)
{
    while (__root != nullptr)
    {
        if (value_comp()(__v, __root->__value_))
        {
            __result = static_cast<__iter_pointer>(__root);
            __root = static_cast<__node_pointer>(__root->__left_);
        }
        else
            __root = static_cast<__node_pointer>(__root->__right_);
    }
    return iterator(__result);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
typename __tree<_Tp, _Compare, _Allocator>::const_iterator
__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v,
                                                 __node_pointer __root,
                                                 __iter_pointer __result) const
{
    while (__root != nullptr)
    {
        if (value_comp()(__v, __root->__value_))
        {
            __result = static_cast<__iter_pointer>(__root);
            __root = static_cast<__node_pointer>(__root->__left_);
        }
        else
            __root = static_cast<__node_pointer>(__root->__right_);
    }
    return const_iterator(__result);
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator,
     typename __tree<_Tp, _Compare, _Allocator>::iterator>
__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k)
{
    typedef pair<iterator, iterator> _Pp;
    __iter_pointer __result = __end_node();
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __result = static_cast<__iter_pointer>(__rt);
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return _Pp(iterator(__rt),
                      iterator(
                          __rt->__right_ != nullptr ?
                              static_cast<__iter_pointer>(_VSTD::__tree_min(__rt->__right_))
                            : __result));
    }
    return _Pp(iterator(__result), iterator(__result));
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
pair<typename __tree<_Tp, _Compare, _Allocator>::const_iterator,
     typename __tree<_Tp, _Compare, _Allocator>::const_iterator>
__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) const
{
    typedef pair<const_iterator, const_iterator> _Pp;
    __iter_pointer __result = __end_node();
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __result = static_cast<__iter_pointer>(__rt);
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return _Pp(const_iterator(__rt),
                      const_iterator(
                          __rt->__right_ != nullptr ?
                              static_cast<__iter_pointer>(_VSTD::__tree_min(__rt->__right_))
                            : __result));
    }
    return _Pp(const_iterator(__result), const_iterator(__result));
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator,
     typename __tree<_Tp, _Compare, _Allocator>::iterator>
__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k)
{
    typedef pair<iterator, iterator> _Pp;
    __iter_pointer __result = __end_node();
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __result = static_cast<__iter_pointer>(__rt);
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)),
                      __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result));
    }
    return _Pp(iterator(__result), iterator(__result));
}

template <class _Tp, class _Compare, class _Allocator>
template <class _Key>
pair<typename __tree<_Tp, _Compare, _Allocator>::const_iterator,
     typename __tree<_Tp, _Compare, _Allocator>::const_iterator>
__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) const
{
    typedef pair<const_iterator, const_iterator> _Pp;
    __iter_pointer __result = __end_node();
    __node_pointer __rt = __root();
    while (__rt != nullptr)
    {
        if (value_comp()(__k, __rt->__value_))
        {
            __result = static_cast<__iter_pointer>(__rt);
            __rt = static_cast<__node_pointer>(__rt->__left_);
        }
        else if (value_comp()(__rt->__value_, __k))
            __rt = static_cast<__node_pointer>(__rt->__right_);
        else
            return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)),
                      __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result));
    }
    return _Pp(const_iterator(__result), const_iterator(__result));
}

template <class _Tp, class _Compare, class _Allocator>
typename __tree<_Tp, _Compare, _Allocator>::__node_holder
__tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) _NOEXCEPT
{
    __node_pointer __np = __p.__get_np();
    if (__begin_node() == __p.__ptr_)
    {
        if (__np->__right_ != nullptr)
            __begin_node() = static_cast<__iter_pointer>(__np->__right_);
        else
            __begin_node() = static_cast<__iter_pointer>(__np->__parent_);
    }
    --size();
    _VSTD::__tree_remove(__end_node()->__left_,
                         static_cast<__node_base_pointer>(__np));
    return __node_holder(__np, _Dp(__node_alloc(), true));
}

template <class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__tree<_Tp, _Compare, _Allocator>& __x,
     __tree<_Tp, _Compare, _Allocator>& __y)
    _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___TREE
# 2749 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/__tree" 3
# 497 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <__utility/forward.h>
#endif /* expanded by -frewrite-includes */
# 497 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <compare>
#endif /* expanded by -frewrite-includes */
# 498 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 499 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <functional>
#endif /* expanded by -frewrite-includes */
# 499 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 500 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <iterator> // __libcpp_erase_if_container
#endif /* expanded by -frewrite-includes */
# 501 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <memory>
#endif /* expanded by -frewrite-includes */
# 502 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 504 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#include <version>
#endif /* expanded by -frewrite-includes */
# 505 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 506 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

#if 0 /* disabled by -frewrite-includes */
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 508 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 509 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
#endif
# 510 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

_LIBCPP_BEGIN_NAMESPACE_STD

template <class _Key, class _CP, class _Compare,
          bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value>
class __map_value_compare
    : private _Compare
{
public:
    _LIBCPP_INLINE_VISIBILITY
    __map_value_compare()
        _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value)
        : _Compare() {}
    _LIBCPP_INLINE_VISIBILITY
    __map_value_compare(_Compare c)
        _NOEXCEPT_(is_nothrow_copy_constructible<_Compare>::value)
        : _Compare(c) {}
    _LIBCPP_INLINE_VISIBILITY
    const _Compare& key_comp() const _NOEXCEPT {return *this;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _CP& __x, const _CP& __y) const
        {return static_cast<const _Compare&>(*this)(__x.__get_value().first, __y.__get_value().first);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _CP& __x, const _Key& __y) const
        {return static_cast<const _Compare&>(*this)(__x.__get_value().first, __y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Key& __x, const _CP& __y) const
        {return static_cast<const _Compare&>(*this)(__x, __y.__get_value().first);}
    void swap(__map_value_compare&__y)
        _NOEXCEPT_(__is_nothrow_swappable<_Compare>::value)
    {
      using _VSTD::swap;
      swap(static_cast<_Compare&>(*this), static_cast<_Compare&>(__y));
    }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 546 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    operator () ( const _K2& __x, const _CP& __y ) const
        {return static_cast<const _Compare&>(*this) (__x, __y.__get_value().first);}

    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    operator () (const _CP& __x, const _K2& __y) const
        {return static_cast<const _Compare&>(*this) (__x.__get_value().first, __y);}
#endif
# 558 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
};

template <class _Key, class _CP, class _Compare>
class __map_value_compare<_Key, _CP, _Compare, false>
{
    _Compare comp;

public:
    _LIBCPP_INLINE_VISIBILITY
    __map_value_compare()
        _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value)
        : comp() {}
    _LIBCPP_INLINE_VISIBILITY
    __map_value_compare(_Compare c)
        _NOEXCEPT_(is_nothrow_copy_constructible<_Compare>::value)
        : comp(c) {}
    _LIBCPP_INLINE_VISIBILITY
    const _Compare& key_comp() const _NOEXCEPT {return comp;}

    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _CP& __x, const _CP& __y) const
        {return comp(__x.__get_value().first, __y.__get_value().first);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _CP& __x, const _Key& __y) const
        {return comp(__x.__get_value().first, __y);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator()(const _Key& __x, const _CP& __y) const
        {return comp(__x, __y.__get_value().first);}
    void swap(__map_value_compare&__y)
        _NOEXCEPT_(__is_nothrow_swappable<_Compare>::value)
    {
        using _VSTD::swap;
        swap(comp, __y.comp);
    }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 594 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    operator () ( const _K2& __x, const _CP& __y ) const
        {return comp (__x, __y.__get_value().first);}

    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    operator () (const _CP& __x, const _K2& __y) const
        {return comp (__x.__get_value().first, __y);}
#endif
# 606 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
};

template <class _Key, class _CP, class _Compare, bool __b>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(__map_value_compare<_Key, _CP, _Compare, __b>& __x,
     __map_value_compare<_Key, _CP, _Compare, __b>& __y)
    _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

template <class _Allocator>
class __map_node_destructor
{
    typedef _Allocator                          allocator_type;
    typedef allocator_traits<allocator_type>    __alloc_traits;

public:
    typedef typename __alloc_traits::pointer    pointer;

private:
    allocator_type& __na_;

    __map_node_destructor& operator=(const __map_node_destructor&);

public:
    bool __first_constructed;
    bool __second_constructed;

    _LIBCPP_INLINE_VISIBILITY
    explicit __map_node_destructor(allocator_type& __na) _NOEXCEPT
        : __na_(__na),
          __first_constructed(false),
          __second_constructed(false)
        {}

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    __map_node_destructor(__tree_node_destructor<allocator_type>&& __x) _NOEXCEPT
        : __na_(__x.__na_),
          __first_constructed(__x.__value_constructed),
          __second_constructed(__x.__value_constructed)
        {
            __x.__value_constructed = false;
        }
#endif // _LIBCPP_CXX03_LANG
# 653 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    void operator()(pointer __p) _NOEXCEPT
    {
        if (__second_constructed)
            __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.__get_value().second));
        if (__first_constructed)
            __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.__get_value().first));
        if (__p)
            __alloc_traits::deallocate(__na_, __p, 1);
    }
};

template <class _Key, class _Tp, class _Compare, class _Allocator>
    class map;
template <class _Key, class _Tp, class _Compare, class _Allocator>
    class multimap;
template <class _TreeIterator> class __map_const_iterator;

#ifndef _LIBCPP_CXX03_LANG

template <class _Key, class _Tp>
struct _LIBCPP_STANDALONE_DEBUG __value_type
{
    typedef _Key                                     key_type;
    typedef _Tp                                      mapped_type;
    typedef pair<const key_type, mapped_type>        value_type;
    typedef pair<key_type&, mapped_type&>            __nc_ref_pair_type;
    typedef pair<key_type&&, mapped_type&&>          __nc_rref_pair_type;

private:
    value_type __cc;

public:
    _LIBCPP_INLINE_VISIBILITY
    value_type& __get_value()
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 691 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        return *_VSTD::launder(_VSTD::addressof(__cc));
#else
# 693 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        return __cc;
#endif
# 695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    }

    _LIBCPP_INLINE_VISIBILITY
    const value_type& __get_value() const
    {
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 701 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        return *_VSTD::launder(_VSTD::addressof(__cc));
#else
# 703 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        return __cc;
#endif
# 705 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    }

    _LIBCPP_INLINE_VISIBILITY
    __nc_ref_pair_type __ref()
    {
        value_type& __v = __get_value();
        return __nc_ref_pair_type(const_cast<key_type&>(__v.first), __v.second);
    }

    _LIBCPP_INLINE_VISIBILITY
    __nc_rref_pair_type __move()
    {
        value_type& __v = __get_value();
        return __nc_rref_pair_type(
            _VSTD::move(const_cast<key_type&>(__v.first)),
            _VSTD::move(__v.second));
    }

    _LIBCPP_INLINE_VISIBILITY
    __value_type& operator=(const __value_type& __v)
    {
        __ref() = __v.__get_value();
        return *this;
    }

    _LIBCPP_INLINE_VISIBILITY
    __value_type& operator=(__value_type&& __v)
    {
        __ref() = __v.__move();
        return *this;
    }

    template <class _ValueTp,
              class = typename enable_if<
                    __is_same_uncvref<_ValueTp, value_type>::value
                 >::type
             >
    _LIBCPP_INLINE_VISIBILITY
    __value_type& operator=(_ValueTp&& __v)
    {
        __ref() = _VSTD::forward<_ValueTp>(__v);
        return *this;
    }

private:
    __value_type() _LIBCPP_EQUAL_DELETE;
    ~__value_type() _LIBCPP_EQUAL_DELETE;
    __value_type(const __value_type& __v) _LIBCPP_EQUAL_DELETE;
    __value_type(__value_type&& __v) _LIBCPP_EQUAL_DELETE;
};

#else
# 757 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

template <class _Key, class _Tp>
struct __value_type
{
    typedef _Key                                     key_type;
    typedef _Tp                                      mapped_type;
    typedef pair<const key_type, mapped_type>        value_type;

private:
    value_type __cc;

public:
    _LIBCPP_INLINE_VISIBILITY
    value_type& __get_value() { return __cc; }
    _LIBCPP_INLINE_VISIBILITY
    const value_type& __get_value() const { return __cc; }

private:
   __value_type();
   __value_type(__value_type const&);
   __value_type& operator=(__value_type const&);
   ~__value_type();
};

#endif // _LIBCPP_CXX03_LANG
# 782 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

template <class _Tp>
struct __extract_key_value_types;

template <class _Key, class _Tp>
struct __extract_key_value_types<__value_type<_Key, _Tp> >
{
  typedef _Key const __key_type;
  typedef _Tp        __mapped_type;
};

template <class _TreeIterator>
class _LIBCPP_TEMPLATE_VIS __map_iterator
{
    typedef typename _TreeIterator::_NodeTypes                   _NodeTypes;
    typedef typename _TreeIterator::__pointer_traits             __pointer_traits;

    _TreeIterator __i_;

public:
    typedef bidirectional_iterator_tag                           iterator_category;
    typedef typename _NodeTypes::__map_value_type                value_type;
    typedef typename _TreeIterator::difference_type              difference_type;
    typedef value_type&                                          reference;
    typedef typename _NodeTypes::__map_value_type_pointer        pointer;

    _LIBCPP_INLINE_VISIBILITY
    __map_iterator() _NOEXCEPT {}

    _LIBCPP_INLINE_VISIBILITY
    __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}

    _LIBCPP_INLINE_VISIBILITY
    reference operator*() const {return __i_->__get_value();}
    _LIBCPP_INLINE_VISIBILITY
    pointer operator->() const {return pointer_traits<pointer>::pointer_to(__i_->__get_value());}

    _LIBCPP_INLINE_VISIBILITY
    __map_iterator& operator++() {++__i_; return *this;}
    _LIBCPP_INLINE_VISIBILITY
    __map_iterator operator++(int)
    {
        __map_iterator __t(*this);
        ++(*this);
        return __t;
    }

    _LIBCPP_INLINE_VISIBILITY
    __map_iterator& operator--() {--__i_; return *this;}
    _LIBCPP_INLINE_VISIBILITY
    __map_iterator operator--(int)
    {
        __map_iterator __t(*this);
        --(*this);
        return __t;
    }

    friend _LIBCPP_INLINE_VISIBILITY
    bool operator==(const __map_iterator& __x, const __map_iterator& __y)
        {return __x.__i_ == __y.__i_;}
    friend
    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const __map_iterator& __x, const __map_iterator& __y)
        {return __x.__i_ != __y.__i_;}

    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap;
    template <class> friend class _LIBCPP_TEMPLATE_VIS __map_const_iterator;
};

template <class _TreeIterator>
class _LIBCPP_TEMPLATE_VIS __map_const_iterator
{
    typedef typename _TreeIterator::_NodeTypes                   _NodeTypes;
    typedef typename _TreeIterator::__pointer_traits             __pointer_traits;

    _TreeIterator __i_;

public:
    typedef bidirectional_iterator_tag                           iterator_category;
    typedef typename _NodeTypes::__map_value_type                value_type;
    typedef typename _TreeIterator::difference_type              difference_type;
    typedef const value_type&                                    reference;
    typedef typename _NodeTypes::__const_map_value_type_pointer  pointer;

    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator() _NOEXCEPT {}

    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}
    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator(__map_iterator<
        typename _TreeIterator::__non_const_iterator> __i) _NOEXCEPT
        : __i_(__i.__i_) {}

    _LIBCPP_INLINE_VISIBILITY
    reference operator*() const {return __i_->__get_value();}
    _LIBCPP_INLINE_VISIBILITY
    pointer operator->() const {return pointer_traits<pointer>::pointer_to(__i_->__get_value());}

    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator& operator++() {++__i_; return *this;}
    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator operator++(int)
    {
        __map_const_iterator __t(*this);
        ++(*this);
        return __t;
    }

    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator& operator--() {--__i_; return *this;}
    _LIBCPP_INLINE_VISIBILITY
    __map_const_iterator operator--(int)
    {
        __map_const_iterator __t(*this);
        --(*this);
        return __t;
    }

    friend _LIBCPP_INLINE_VISIBILITY
    bool operator==(const __map_const_iterator& __x, const __map_const_iterator& __y)
        {return __x.__i_ == __y.__i_;}
    friend _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const __map_const_iterator& __x, const __map_const_iterator& __y)
        {return __x.__i_ != __y.__i_;}

    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS map;
    template <class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS multimap;
    template <class, class, class> friend class _LIBCPP_TEMPLATE_VIS __tree_const_iterator;
};

template <class _Key, class _Tp, class _Compare = less<_Key>,
          class _Allocator = allocator<pair<const _Key, _Tp> > >
class _LIBCPP_TEMPLATE_VIS map
{
public:
    // types:
    typedef _Key                                     key_type;
    typedef _Tp                                      mapped_type;
    typedef pair<const key_type, mapped_type>        value_type;
    typedef __identity_t<_Compare>                   key_compare;
    typedef __identity_t<_Allocator>                 allocator_type;
    typedef value_type&                              reference;
    typedef const value_type&                        const_reference;

    static_assert((is_same<typename allocator_type::value_type, value_type>::value),
                  "Allocator::value_type must be same type as value_type");

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
    class _LIBCPP_TEMPLATE_VIS value_compare
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 934 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        : public binary_function<value_type, value_type, bool>
#endif
# 936 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    {
_LIBCPP_SUPPRESS_DEPRECATED_POP
        friend class map;
    protected:
        key_compare comp;

        _LIBCPP_INLINE_VISIBILITY value_compare(key_compare c) : comp(c) {}
    public:
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 945 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
        _LIBCPP_DEPRECATED_IN_CXX17 typedef value_type first_argument_type;
        _LIBCPP_DEPRECATED_IN_CXX17 typedef value_type second_argument_type;
#endif
# 949 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        _LIBCPP_INLINE_VISIBILITY
        bool operator()(const value_type& __x, const value_type& __y) const
            {return comp(__x.first, __y.first);}
    };

private:

    typedef _VSTD::__value_type<key_type, mapped_type>             __value_type;
    typedef __map_value_compare<key_type, __value_type, key_compare> __vc;
    typedef typename __rebind_alloc_helper<allocator_traits<allocator_type>,
                                                 __value_type>::type __allocator_type;
    typedef __tree<__value_type, __vc, __allocator_type>   __base;
    typedef typename __base::__node_traits                 __node_traits;
    typedef allocator_traits<allocator_type>               __alloc_traits;

    __base __tree_;

public:
    typedef typename __alloc_traits::pointer               pointer;
    typedef typename __alloc_traits::const_pointer         const_pointer;
    typedef typename __alloc_traits::size_type             size_type;
    typedef typename __alloc_traits::difference_type       difference_type;
    typedef __map_iterator<typename __base::iterator>             iterator;
    typedef __map_const_iterator<typename __base::const_iterator> const_iterator;
    typedef _VSTD::reverse_iterator<iterator>               reverse_iterator;
    typedef _VSTD::reverse_iterator<const_iterator>         const_reverse_iterator;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 977 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    typedef __map_node_handle<typename __base::__node, allocator_type> node_type;
    typedef __insert_return_type<iterator, node_type> insert_return_type;
#endif
# 980 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
        friend class _LIBCPP_TEMPLATE_VIS map;
    template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
        friend class _LIBCPP_TEMPLATE_VIS multimap;

    _LIBCPP_INLINE_VISIBILITY
    map()
        _NOEXCEPT_(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value)
        : __tree_(__vc(key_compare())) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit map(const key_compare& __comp)
        _NOEXCEPT_(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_copy_constructible<key_compare>::value)
        : __tree_(__vc(__comp)) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit map(const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a)) {}

    template <class _InputIterator>
    _LIBCPP_INLINE_VISIBILITY
        map(_InputIterator __f, _InputIterator __l,
            const key_compare& __comp = key_compare())
        : __tree_(__vc(__comp))
        {
            insert(__f, __l);
        }

    template <class _InputIterator>
    _LIBCPP_INLINE_VISIBILITY
        map(_InputIterator __f, _InputIterator __l,
            const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a))
        {
            insert(__f, __l);
        }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1024 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <class _InputIterator>
    _LIBCPP_INLINE_VISIBILITY
    map(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
        : map(__f, __l, key_compare(), __a) {}
#endif
# 1029 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    map(const map& __m)
        : __tree_(__m.__tree_)
        {
            insert(__m.begin(), __m.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    map& operator=(const map& __m)
        {
#ifndef _LIBCPP_CXX03_LANG
            __tree_ = __m.__tree_;
#else
# 1043 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
            if (this != &__m) {
                __tree_.clear();
                __tree_.value_comp() = __m.__tree_.value_comp();
                __tree_.__copy_assign_alloc(__m.__tree_);
                insert(__m.begin(), __m.end());
            }
#endif
# 1050 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
            return *this;
        }

#ifndef _LIBCPP_CXX03_LANG

    _LIBCPP_INLINE_VISIBILITY
    map(map&& __m)
        _NOEXCEPT_(is_nothrow_move_constructible<__base>::value)
        : __tree_(_VSTD::move(__m.__tree_))
        {
        }

    map(map&& __m, const allocator_type& __a);

    _LIBCPP_INLINE_VISIBILITY
    map& operator=(map&& __m)
        _NOEXCEPT_(is_nothrow_move_assignable<__base>::value)
        {
            __tree_ = _VSTD::move(__m.__tree_);
            return *this;
        }

    _LIBCPP_INLINE_VISIBILITY
    map(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
        : __tree_(__vc(__comp))
        {
            insert(__il.begin(), __il.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    map(initializer_list<value_type> __il, const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a))
        {
            insert(__il.begin(), __il.end());
        }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1087 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    map(initializer_list<value_type> __il, const allocator_type& __a)
        : map(__il, key_compare(), __a) {}
#endif
# 1091 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    map& operator=(initializer_list<value_type> __il)
        {
            __tree_.__assign_unique(__il.begin(), __il.end());
            return *this;
        }

#endif // _LIBCPP_CXX03_LANG
# 1100 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    explicit map(const allocator_type& __a)
        : __tree_(typename __base::allocator_type(__a))
        {
        }

    _LIBCPP_INLINE_VISIBILITY
    map(const map& __m, const allocator_type& __a)
        : __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a))
        {
            insert(__m.begin(), __m.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    ~map() {
        static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
    }

    _LIBCPP_INLINE_VISIBILITY
          iterator begin() _NOEXCEPT {return __tree_.begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT {return __tree_.begin();}
    _LIBCPP_INLINE_VISIBILITY
          iterator end() _NOEXCEPT {return __tree_.end();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end() const _NOEXCEPT {return __tree_.end();}

    _LIBCPP_INLINE_VISIBILITY
          reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin() const _NOEXCEPT
        {return const_reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
          reverse_iterator rend() _NOEXCEPT
            {return       reverse_iterator(begin());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend() const _NOEXCEPT
        {return const_reverse_iterator(begin());}

    _LIBCPP_INLINE_VISIBILITY
    const_iterator cbegin() const _NOEXCEPT {return begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator cend() const _NOEXCEPT {return end();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend() const _NOEXCEPT {return rend();}

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool      empty() const _NOEXCEPT {return __tree_.size() == 0;}
    _LIBCPP_INLINE_VISIBILITY
    size_type size() const _NOEXCEPT {return __tree_.size();}
    _LIBCPP_INLINE_VISIBILITY
    size_type max_size() const _NOEXCEPT {return __tree_.max_size();}

    mapped_type& operator[](const key_type& __k);
#ifndef _LIBCPP_CXX03_LANG
    mapped_type& operator[](key_type&& __k);
#endif
# 1160 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

          mapped_type& at(const key_type& __k);
    const mapped_type& at(const key_type& __k) const;

    _LIBCPP_INLINE_VISIBILITY
    allocator_type get_allocator() const _NOEXCEPT {return allocator_type(__tree_.__alloc());}
    _LIBCPP_INLINE_VISIBILITY
    key_compare    key_comp()      const {return __tree_.value_comp().key_comp();}
    _LIBCPP_INLINE_VISIBILITY
    value_compare  value_comp()    const {return value_compare(__tree_.value_comp().key_comp());}

#ifndef _LIBCPP_CXX03_LANG
    template <class ..._Args>
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool> emplace(_Args&& ...__args) {
        return __tree_.__emplace_unique(_VSTD::forward<_Args>(__args)...);
    }

    template <class ..._Args>
    _LIBCPP_INLINE_VISIBILITY
    iterator emplace_hint(const_iterator __p, _Args&& ...__args) {
        return __tree_.__emplace_hint_unique(__p.__i_, _VSTD::forward<_Args>(__args)...);
    }

    template <class _Pp,
              class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
        _LIBCPP_INLINE_VISIBILITY
        pair<iterator, bool> insert(_Pp&& __p)
            {return __tree_.__insert_unique(_VSTD::forward<_Pp>(__p));}

    template <class _Pp,
              class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
        _LIBCPP_INLINE_VISIBILITY
        iterator insert(const_iterator __pos, _Pp&& __p)
            {return __tree_.__insert_unique(__pos.__i_, _VSTD::forward<_Pp>(__p));}

#endif // _LIBCPP_CXX03_LANG
# 1197 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool>
        insert(const value_type& __v) {return __tree_.__insert_unique(__v);}

    _LIBCPP_INLINE_VISIBILITY
    iterator
        insert(const_iterator __p, const value_type& __v)
            {return __tree_.__insert_unique(__p.__i_, __v);}

#ifndef _LIBCPP_CXX03_LANG
    _LIBCPP_INLINE_VISIBILITY
    pair<iterator, bool>
    insert(value_type&& __v) {return __tree_.__insert_unique(_VSTD::move(__v));}

    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __p,  value_type&& __v)
    {return __tree_.__insert_unique(__p.__i_, _VSTD::move(__v));}

    _LIBCPP_INLINE_VISIBILITY
    void insert(initializer_list<value_type> __il)
        {insert(__il.begin(), __il.end());}
#endif
# 1220 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    template <class _InputIterator>
        _LIBCPP_INLINE_VISIBILITY
        void insert(_InputIterator __f, _InputIterator __l)
        {
            for (const_iterator __e = cend(); __f != __l; ++__f)
                insert(__e.__i_, *__f);
        }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1230 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    template <class... _Args>
        _LIBCPP_INLINE_VISIBILITY
        pair<iterator, bool> try_emplace(const key_type& __k, _Args&&... __args)
    {
        return __tree_.__emplace_unique_key_args(__k,
            _VSTD::piecewise_construct,
            _VSTD::forward_as_tuple(__k),
            _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...));
    }

    template <class... _Args>
        _LIBCPP_INLINE_VISIBILITY
        pair<iterator, bool> try_emplace(key_type&& __k, _Args&&... __args)
    {
        return __tree_.__emplace_unique_key_args(__k,
            _VSTD::piecewise_construct,
            _VSTD::forward_as_tuple(_VSTD::move(__k)),
            _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...));
    }

    template <class... _Args>
        _LIBCPP_INLINE_VISIBILITY
        iterator try_emplace(const_iterator __h, const key_type& __k, _Args&&... __args)
    {
        return __tree_.__emplace_hint_unique_key_args(__h.__i_, __k,
            _VSTD::piecewise_construct,
            _VSTD::forward_as_tuple(__k),
            _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)).first;
    }

    template <class... _Args>
        _LIBCPP_INLINE_VISIBILITY
        iterator try_emplace(const_iterator __h, key_type&& __k, _Args&&... __args)
    {
        return __tree_.__emplace_hint_unique_key_args(__h.__i_, __k,
            _VSTD::piecewise_construct,
            _VSTD::forward_as_tuple(_VSTD::move(__k)),
            _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)).first;
    }

    template <class _Vp>
        _LIBCPP_INLINE_VISIBILITY
        pair<iterator, bool> insert_or_assign(const key_type& __k, _Vp&& __v)
    {
        iterator __p = lower_bound(__k);
        if ( __p != end() && !key_comp()(__k, __p->first))
        {
            __p->second = _VSTD::forward<_Vp>(__v);
            return _VSTD::make_pair(__p, false);
        }
        return _VSTD::make_pair(emplace_hint(__p, __k, _VSTD::forward<_Vp>(__v)), true);
    }

    template <class _Vp>
        _LIBCPP_INLINE_VISIBILITY
        pair<iterator, bool> insert_or_assign(key_type&& __k, _Vp&& __v)
    {
        iterator __p = lower_bound(__k);
        if ( __p != end() && !key_comp()(__k, __p->first))
        {
            __p->second = _VSTD::forward<_Vp>(__v);
            return _VSTD::make_pair(__p, false);
        }
        return _VSTD::make_pair(emplace_hint(__p, _VSTD::move(__k), _VSTD::forward<_Vp>(__v)), true);
    }

    template <class _Vp>
    _LIBCPP_INLINE_VISIBILITY iterator insert_or_assign(const_iterator __h,
                                                        const key_type& __k,
                                                        _Vp&& __v) {
      auto [__r, __inserted] = __tree_.__emplace_hint_unique_key_args(
          __h.__i_, __k, __k, _VSTD::forward<_Vp>(__v));

      if (!__inserted)
        __r->__get_value().second = _VSTD::forward<_Vp>(__v);

      return __r;
    }

    template <class _Vp>
    _LIBCPP_INLINE_VISIBILITY iterator insert_or_assign(const_iterator __h,
                                                        key_type&& __k,
                                                        _Vp&& __v) {
      auto [__r, __inserted] = __tree_.__emplace_hint_unique_key_args(
          __h.__i_, __k, _VSTD::move(__k), _VSTD::forward<_Vp>(__v));

      if (!__inserted)
        __r->__get_value().second = _VSTD::forward<_Vp>(__v);

      return __r;
    }

#endif // _LIBCPP_STD_VER > 14
# 1324 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);}
    _LIBCPP_INLINE_VISIBILITY
    iterator erase(iterator __p)       {return __tree_.erase(__p.__i_);}
    _LIBCPP_INLINE_VISIBILITY
    size_type erase(const key_type& __k)
        {return __tree_.__erase_unique(__k);}
    _LIBCPP_INLINE_VISIBILITY
    iterator  erase(const_iterator __f, const_iterator __l)
        {return __tree_.erase(__f.__i_, __l.__i_);}
    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT {__tree_.clear();}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1339 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    insert_return_type insert(node_type&& __nh)
    {
        _LIBCPP_ASSERT(__nh.empty() || __nh.get_allocator() == get_allocator(),
            "node_type with incompatible allocator passed to map::insert()");
        return __tree_.template __node_handle_insert_unique<
            node_type, insert_return_type>(_VSTD::move(__nh));
    }
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __hint, node_type&& __nh)
    {
        _LIBCPP_ASSERT(__nh.empty() || __nh.get_allocator() == get_allocator(),
            "node_type with incompatible allocator passed to map::insert()");
        return __tree_.template __node_handle_insert_unique<node_type>(
            __hint.__i_, _VSTD::move(__nh));
    }
    _LIBCPP_INLINE_VISIBILITY
    node_type extract(key_type const& __key)
    {
        return __tree_.template __node_handle_extract<node_type>(__key);
    }
    _LIBCPP_INLINE_VISIBILITY
    node_type extract(const_iterator __it)
    {
        return __tree_.template __node_handle_extract<node_type>(__it.__i_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(map<key_type, mapped_type, _Compare2, allocator_type>& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        __tree_.__node_handle_merge_unique(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(map<key_type, mapped_type, _Compare2, allocator_type>&& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        __tree_.__node_handle_merge_unique(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        __tree_.__node_handle_merge_unique(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>&& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        __tree_.__node_handle_merge_unique(__source.__tree_);
    }
#endif
# 1398 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    void swap(map& __m)
        _NOEXCEPT_(__is_nothrow_swappable<__base>::value)
        {__tree_.swap(__m.__tree_);}

    _LIBCPP_INLINE_VISIBILITY
    iterator find(const key_type& __k)             {return __tree_.find(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1409 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    find(const _K2& __k)                           {return __tree_.find(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    find(const _K2& __k) const                     {return __tree_.find(__k);}
#endif
# 1418 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    size_type      count(const key_type& __k) const
        {return __tree_.__count_unique(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1423 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,size_type>::type
    count(const _K2& __k) const {return __tree_.__count_multi(__k);}
#endif
# 1428 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1430 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    bool contains(const key_type& __k) const {return find(__k) != end();}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    contains(const _K2& __k) const { return find(__k) != end(); }
#endif // _LIBCPP_STD_VER > 17
# 1437 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator lower_bound(const key_type& __k)
        {return __tree_.lower_bound(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator lower_bound(const key_type& __k) const
        {return __tree_.lower_bound(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1445 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    lower_bound(const _K2& __k)       {return __tree_.lower_bound(__k);}

    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
#endif
# 1455 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator upper_bound(const key_type& __k)
        {return __tree_.upper_bound(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator upper_bound(const key_type& __k) const
        {return __tree_.upper_bound(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1463 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    upper_bound(const _K2& __k)       {return __tree_.upper_bound(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
#endif
# 1472 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator,iterator> equal_range(const key_type& __k)
        {return __tree_.__equal_range_unique(__k);}
    _LIBCPP_INLINE_VISIBILITY
    pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
        {return __tree_.__equal_range_unique(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1480 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
    equal_range(const _K2& __k)       {return __tree_.__equal_range_multi(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
    equal_range(const _K2& __k) const {return __tree_.__equal_range_multi(__k);}
#endif
# 1489 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

private:
    typedef typename __base::__node                    __node;
    typedef typename __base::__node_allocator          __node_allocator;
    typedef typename __base::__node_pointer            __node_pointer;
    typedef typename __base::__node_base_pointer       __node_base_pointer;
    typedef typename __base::__parent_pointer          __parent_pointer;

    typedef __map_node_destructor<__node_allocator> _Dp;
    typedef unique_ptr<__node, _Dp> __node_holder;

#ifdef _LIBCPP_CXX03_LANG
    __node_holder __construct_node_with_key(const key_type& __k);
#endif
# 1503 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>,
         class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
         class = _EnableIf<!__is_allocator<_Compare>::value, void>,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
map(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
  -> map<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare, _Allocator>;

template<class _Key, class _Tp, class _Compare = less<remove_const_t<_Key>>,
         class _Allocator = allocator<pair<const _Key, _Tp>>,
         class = _EnableIf<!__is_allocator<_Compare>::value, void>,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
map(initializer_list<pair<_Key, _Tp>>, _Compare = _Compare(), _Allocator = _Allocator())
  -> map<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;

template<class _InputIterator, class _Allocator,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
map(_InputIterator, _InputIterator, _Allocator)
  -> map<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>,
         less<__iter_key_type<_InputIterator>>, _Allocator>;

template<class _Key, class _Tp, class _Allocator,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
map(initializer_list<pair<_Key, _Tp>>, _Allocator)
  -> map<remove_const_t<_Key>, _Tp, less<remove_const_t<_Key>>, _Allocator>;
#endif
# 1531 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

#ifndef _LIBCPP_CXX03_LANG
template <class _Key, class _Tp, class _Compare, class _Allocator>
map<_Key, _Tp, _Compare, _Allocator>::map(map&& __m, const allocator_type& __a)
    : __tree_(_VSTD::move(__m.__tree_), typename __base::allocator_type(__a))
{
    if (__a != __m.get_allocator())
    {
        const_iterator __e = cend();
        while (!__m.empty())
            __tree_.__insert_unique(__e.__i_,
                    __m.__tree_.remove(__m.begin().__i_)->__value_.__move());
    }
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
_Tp&
map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k)
{
    return __tree_.__emplace_unique_key_args(__k,
        _VSTD::piecewise_construct,
        _VSTD::forward_as_tuple(__k),
        _VSTD::forward_as_tuple()).first->__get_value().second;
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
_Tp&
map<_Key, _Tp, _Compare, _Allocator>::operator[](key_type&& __k)
{
    return __tree_.__emplace_unique_key_args(__k,
        _VSTD::piecewise_construct,
        _VSTD::forward_as_tuple(_VSTD::move(__k)),
        _VSTD::forward_as_tuple()).first->__get_value().second;
}

#else // _LIBCPP_CXX03_LANG
# 1567 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

template <class _Key, class _Tp, class _Compare, class _Allocator>
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder
map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(const key_type& __k)
{
    __node_allocator& __na = __tree_.__node_alloc();
    __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
    __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__get_value().first), __k);
    __h.get_deleter().__first_constructed = true;
    __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__get_value().second));
    __h.get_deleter().__second_constructed = true;
    return __h;
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
_Tp&
map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __tree_.__find_equal(__parent, __k);
    __node_pointer __r = static_cast<__node_pointer>(__child);
    if (__child == nullptr)
    {
        __node_holder __h = __construct_node_with_key(__k);
        __tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
        __r = __h.release();
    }
    return __r->__value_.__get_value().second;
}

#endif // _LIBCPP_CXX03_LANG
# 1598 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

template <class _Key, class _Tp, class _Compare, class _Allocator>
_Tp&
map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k)
{
    __parent_pointer __parent;
    __node_base_pointer& __child = __tree_.__find_equal(__parent, __k);
    if (__child == nullptr)
        __throw_out_of_range("map::at:  key not found");
    return static_cast<__node_pointer>(__child)->__value_.__get_value().second;
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
const _Tp&
map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) const
{
    __parent_pointer __parent;
    __node_base_pointer __child = __tree_.__find_equal(__parent, __k);
    if (__child == nullptr)
        __throw_out_of_range("map::at:  key not found");
    return static_cast<__node_pointer>(__child)->__value_.__get_value().second;
}


template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return __x.size() == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin());
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end());
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__x == __y);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return __y < __x;
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__x < __y);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __x,
           const map<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__y < __x);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(map<_Key, _Tp, _Compare, _Allocator>& __x,
     map<_Key, _Tp, _Compare, _Allocator>& __y)
    _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1687 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
template <class _Key, class _Tp, class _Compare, class _Allocator,
          class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY
    typename map<_Key, _Tp, _Compare, _Allocator>::size_type
    erase_if(map<_Key, _Tp, _Compare, _Allocator>& __c, _Predicate __pred) {
  return _VSTD::__libcpp_erase_if_container(__c, __pred);
}
#endif
# 1695 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3


template <class _Key, class _Tp, class _Compare = less<_Key>,
          class _Allocator = allocator<pair<const _Key, _Tp> > >
class _LIBCPP_TEMPLATE_VIS multimap
{
public:
    // types:
    typedef _Key                                     key_type;
    typedef _Tp                                      mapped_type;
    typedef pair<const key_type, mapped_type>        value_type;
    typedef __identity_t<_Compare>                   key_compare;
    typedef __identity_t<_Allocator>                 allocator_type;
    typedef value_type&                              reference;
    typedef const value_type&                        const_reference;

    static_assert((is_same<typename allocator_type::value_type, value_type>::value),
                  "Allocator::value_type must be same type as value_type");

_LIBCPP_SUPPRESS_DEPRECATED_PUSH
    class _LIBCPP_TEMPLATE_VIS value_compare
#if 0 /* disabled by -frewrite-includes */
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1717 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        : public binary_function<value_type, value_type, bool>
#endif
# 1719 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    {
_LIBCPP_SUPPRESS_DEPRECATED_POP
        friend class multimap;
    protected:
        key_compare comp;

        _LIBCPP_INLINE_VISIBILITY
        value_compare(key_compare c) : comp(c) {}
    public:
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1729 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        _LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
        _LIBCPP_DEPRECATED_IN_CXX17 typedef value_type first_argument_type;
        _LIBCPP_DEPRECATED_IN_CXX17 typedef value_type second_argument_type;
#endif
# 1733 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
        _LIBCPP_INLINE_VISIBILITY
        bool operator()(const value_type& __x, const value_type& __y) const
            {return comp(__x.first, __y.first);}
    };

private:

    typedef _VSTD::__value_type<key_type, mapped_type>             __value_type;
    typedef __map_value_compare<key_type, __value_type, key_compare> __vc;
    typedef typename __rebind_alloc_helper<allocator_traits<allocator_type>,
                                                 __value_type>::type __allocator_type;
    typedef __tree<__value_type, __vc, __allocator_type>            __base;
    typedef typename __base::__node_traits                          __node_traits;
    typedef allocator_traits<allocator_type>                        __alloc_traits;

    __base __tree_;

public:
    typedef typename __alloc_traits::pointer               pointer;
    typedef typename __alloc_traits::const_pointer         const_pointer;
    typedef typename __alloc_traits::size_type             size_type;
    typedef typename __alloc_traits::difference_type       difference_type;
    typedef __map_iterator<typename __base::iterator>      iterator;
    typedef __map_const_iterator<typename __base::const_iterator> const_iterator;
    typedef _VSTD::reverse_iterator<iterator>               reverse_iterator;
    typedef _VSTD::reverse_iterator<const_iterator>         const_reverse_iterator;

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1761 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    typedef __map_node_handle<typename __base::__node, allocator_type> node_type;
#endif
# 1763 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
        friend class _LIBCPP_TEMPLATE_VIS map;
    template <class _Key2, class _Value2, class _Comp2, class _Alloc2>
        friend class _LIBCPP_TEMPLATE_VIS multimap;

    _LIBCPP_INLINE_VISIBILITY
    multimap()
        _NOEXCEPT_(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value)
        : __tree_(__vc(key_compare())) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit multimap(const key_compare& __comp)
        _NOEXCEPT_(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_copy_constructible<key_compare>::value)
        : __tree_(__vc(__comp)) {}

    _LIBCPP_INLINE_VISIBILITY
    explicit multimap(const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a)) {}

    template <class _InputIterator>
        _LIBCPP_INLINE_VISIBILITY
        multimap(_InputIterator __f, _InputIterator __l,
            const key_compare& __comp = key_compare())
        : __tree_(__vc(__comp))
        {
            insert(__f, __l);
        }

    template <class _InputIterator>
        _LIBCPP_INLINE_VISIBILITY
        multimap(_InputIterator __f, _InputIterator __l,
            const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a))
        {
            insert(__f, __l);
        }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1807 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <class _InputIterator>
    _LIBCPP_INLINE_VISIBILITY
    multimap(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
        : multimap(__f, __l, key_compare(), __a) {}
#endif
# 1812 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    multimap(const multimap& __m)
        : __tree_(__m.__tree_.value_comp(),
          __alloc_traits::select_on_container_copy_construction(__m.__tree_.__alloc()))
        {
            insert(__m.begin(), __m.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    multimap& operator=(const multimap& __m)
        {
#ifndef _LIBCPP_CXX03_LANG
            __tree_ = __m.__tree_;
#else
# 1827 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
            if (this != &__m) {
                __tree_.clear();
                __tree_.value_comp() = __m.__tree_.value_comp();
                __tree_.__copy_assign_alloc(__m.__tree_);
                insert(__m.begin(), __m.end());
            }
#endif
# 1834 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
            return *this;
        }

#ifndef _LIBCPP_CXX03_LANG

    _LIBCPP_INLINE_VISIBILITY
    multimap(multimap&& __m)
        _NOEXCEPT_(is_nothrow_move_constructible<__base>::value)
        : __tree_(_VSTD::move(__m.__tree_))
        {
        }

    multimap(multimap&& __m, const allocator_type& __a);

    _LIBCPP_INLINE_VISIBILITY
    multimap& operator=(multimap&& __m)
        _NOEXCEPT_(is_nothrow_move_assignable<__base>::value)
        {
            __tree_ = _VSTD::move(__m.__tree_);
            return *this;
        }

    _LIBCPP_INLINE_VISIBILITY
    multimap(initializer_list<value_type> __il, const key_compare& __comp = key_compare())
        : __tree_(__vc(__comp))
        {
            insert(__il.begin(), __il.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    multimap(initializer_list<value_type> __il, const key_compare& __comp, const allocator_type& __a)
        : __tree_(__vc(__comp), typename __base::allocator_type(__a))
        {
            insert(__il.begin(), __il.end());
        }

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1871 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    multimap(initializer_list<value_type> __il, const allocator_type& __a)
        : multimap(__il, key_compare(), __a) {}
#endif
# 1875 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    multimap& operator=(initializer_list<value_type> __il)
        {
            __tree_.__assign_multi(__il.begin(), __il.end());
            return *this;
        }

#endif // _LIBCPP_CXX03_LANG
# 1884 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    explicit multimap(const allocator_type& __a)
        : __tree_(typename __base::allocator_type(__a))
        {
        }

    _LIBCPP_INLINE_VISIBILITY
    multimap(const multimap& __m, const allocator_type& __a)
        : __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a))
        {
            insert(__m.begin(), __m.end());
        }

    _LIBCPP_INLINE_VISIBILITY
    ~multimap() {
        static_assert(sizeof(__diagnose_non_const_comparator<_Key, _Compare>()), "");
    }

    _LIBCPP_INLINE_VISIBILITY
          iterator begin() _NOEXCEPT {return __tree_.begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator begin() const _NOEXCEPT {return __tree_.begin();}
    _LIBCPP_INLINE_VISIBILITY
          iterator end() _NOEXCEPT {return __tree_.end();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator end() const _NOEXCEPT {return __tree_.end();}

    _LIBCPP_INLINE_VISIBILITY
          reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rbegin() const _NOEXCEPT
        {return const_reverse_iterator(end());}
    _LIBCPP_INLINE_VISIBILITY
          reverse_iterator rend() _NOEXCEPT {return reverse_iterator(begin());}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator rend() const _NOEXCEPT
        {return const_reverse_iterator(begin());}

    _LIBCPP_INLINE_VISIBILITY
    const_iterator cbegin()  const _NOEXCEPT {return begin();}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator cend() const _NOEXCEPT {return end();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();}
    _LIBCPP_INLINE_VISIBILITY
    const_reverse_iterator crend() const _NOEXCEPT {return rend();}

    _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY
    bool empty() const _NOEXCEPT {return __tree_.size() == 0;}
    _LIBCPP_INLINE_VISIBILITY
    size_type size() const _NOEXCEPT {return __tree_.size();}
    _LIBCPP_INLINE_VISIBILITY
    size_type max_size() const _NOEXCEPT {return __tree_.max_size();}

    _LIBCPP_INLINE_VISIBILITY
    allocator_type get_allocator() const _NOEXCEPT {return allocator_type(__tree_.__alloc());}
    _LIBCPP_INLINE_VISIBILITY
    key_compare    key_comp() const {return __tree_.value_comp().key_comp();}
    _LIBCPP_INLINE_VISIBILITY
    value_compare  value_comp() const
        {return value_compare(__tree_.value_comp().key_comp());}

#ifndef _LIBCPP_CXX03_LANG

    template <class ..._Args>
    _LIBCPP_INLINE_VISIBILITY
    iterator emplace(_Args&& ...__args) {
        return __tree_.__emplace_multi(_VSTD::forward<_Args>(__args)...);
    }

    template <class ..._Args>
    _LIBCPP_INLINE_VISIBILITY
    iterator emplace_hint(const_iterator __p, _Args&& ...__args) {
        return __tree_.__emplace_hint_multi(__p.__i_, _VSTD::forward<_Args>(__args)...);
    }

    template <class _Pp,
              class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
        _LIBCPP_INLINE_VISIBILITY
        iterator insert(_Pp&& __p)
            {return __tree_.__insert_multi(_VSTD::forward<_Pp>(__p));}

    template <class _Pp,
              class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
        _LIBCPP_INLINE_VISIBILITY
        iterator insert(const_iterator __pos, _Pp&& __p)
            {return __tree_.__insert_multi(__pos.__i_, _VSTD::forward<_Pp>(__p));}

    _LIBCPP_INLINE_VISIBILITY
    iterator insert(value_type&& __v)
        {return __tree_.__insert_multi(_VSTD::move(__v));}

    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __p, value_type&& __v)
        {return __tree_.__insert_multi(__p.__i_, _VSTD::move(__v));}


    _LIBCPP_INLINE_VISIBILITY
    void insert(initializer_list<value_type> __il)
        {insert(__il.begin(), __il.end());}

#endif // _LIBCPP_CXX03_LANG
# 1987 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const value_type& __v) {return __tree_.__insert_multi(__v);}

    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __p, const value_type& __v)
            {return __tree_.__insert_multi(__p.__i_, __v);}

    template <class _InputIterator>
        _LIBCPP_INLINE_VISIBILITY
        void insert(_InputIterator __f, _InputIterator __l)
        {
            for (const_iterator __e = cend(); __f != __l; ++__f)
                __tree_.__insert_multi(__e.__i_, *__f);
        }

    _LIBCPP_INLINE_VISIBILITY
    iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);}
    _LIBCPP_INLINE_VISIBILITY
    iterator erase(iterator __p)       {return __tree_.erase(__p.__i_);}
    _LIBCPP_INLINE_VISIBILITY
    size_type erase(const key_type& __k) {return __tree_.__erase_multi(__k);}
    _LIBCPP_INLINE_VISIBILITY
    iterator  erase(const_iterator __f, const_iterator __l)
        {return __tree_.erase(__f.__i_, __l.__i_);}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 14
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2014 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(node_type&& __nh)
    {
        _LIBCPP_ASSERT(__nh.empty() || __nh.get_allocator() == get_allocator(),
            "node_type with incompatible allocator passed to multimap::insert()");
        return __tree_.template __node_handle_insert_multi<node_type>(
            _VSTD::move(__nh));
    }
    _LIBCPP_INLINE_VISIBILITY
    iterator insert(const_iterator __hint, node_type&& __nh)
    {
        _LIBCPP_ASSERT(__nh.empty() || __nh.get_allocator() == get_allocator(),
            "node_type with incompatible allocator passed to multimap::insert()");
        return __tree_.template __node_handle_insert_multi<node_type>(
            __hint.__i_, _VSTD::move(__nh));
    }
    _LIBCPP_INLINE_VISIBILITY
    node_type extract(key_type const& __key)
    {
        return __tree_.template __node_handle_extract<node_type>(__key);
    }
    _LIBCPP_INLINE_VISIBILITY
    node_type extract(const_iterator __it)
    {
        return __tree_.template __node_handle_extract<node_type>(
            __it.__i_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        return __tree_.__node_handle_merge_multi(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(multimap<key_type, mapped_type, _Compare2, allocator_type>&& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        return __tree_.__node_handle_merge_multi(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(map<key_type, mapped_type, _Compare2, allocator_type>& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        return __tree_.__node_handle_merge_multi(__source.__tree_);
    }
    template <class _Compare2>
    _LIBCPP_INLINE_VISIBILITY
    void merge(map<key_type, mapped_type, _Compare2, allocator_type>&& __source)
    {
        _LIBCPP_ASSERT(__source.get_allocator() == get_allocator(),
                       "merging container with incompatible allocator");
        return __tree_.__node_handle_merge_multi(__source.__tree_);
    }
#endif
# 2074 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    void clear() _NOEXCEPT {__tree_.clear();}

    _LIBCPP_INLINE_VISIBILITY
    void swap(multimap& __m)
        _NOEXCEPT_(__is_nothrow_swappable<__base>::value)
        {__tree_.swap(__m.__tree_);}

    _LIBCPP_INLINE_VISIBILITY
    iterator find(const key_type& __k)             {return __tree_.find(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2088 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    find(const _K2& __k)                           {return __tree_.find(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    find(const _K2& __k) const                     {return __tree_.find(__k);}
#endif
# 2097 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    size_type      count(const key_type& __k) const
        {return __tree_.__count_multi(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2102 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,size_type>::type
    count(const _K2& __k) const {return __tree_.__count_multi(__k);}
#endif
# 2107 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2109 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    _LIBCPP_INLINE_VISIBILITY
    bool contains(const key_type& __k) const {return find(__k) != end();}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
    contains(const _K2& __k) const { return find(__k) != end(); }
#endif // _LIBCPP_STD_VER > 17
# 2116 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator lower_bound(const key_type& __k)
        {return __tree_.lower_bound(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator lower_bound(const key_type& __k) const
            {return __tree_.lower_bound(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2124 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    lower_bound(const _K2& __k)       {return __tree_.lower_bound(__k);}

    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
#endif
# 2134 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    iterator upper_bound(const key_type& __k)
            {return __tree_.upper_bound(__k);}
    _LIBCPP_INLINE_VISIBILITY
    const_iterator upper_bound(const key_type& __k) const
            {return __tree_.upper_bound(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2142 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
    upper_bound(const _K2& __k)       {return __tree_.upper_bound(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
    upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
#endif
# 2151 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

    _LIBCPP_INLINE_VISIBILITY
    pair<iterator,iterator>             equal_range(const key_type& __k)
            {return __tree_.__equal_range_multi(__k);}
    _LIBCPP_INLINE_VISIBILITY
    pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
            {return __tree_.__equal_range_multi(__k);}
#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 11
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2159 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
    equal_range(const _K2& __k)       {return __tree_.__equal_range_multi(__k);}
    template <typename _K2>
    _LIBCPP_INLINE_VISIBILITY
    typename enable_if<__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
    equal_range(const _K2& __k) const {return __tree_.__equal_range_multi(__k);}
#endif
# 2168 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

private:
    typedef typename __base::__node                    __node;
    typedef typename __base::__node_allocator          __node_allocator;
    typedef typename __base::__node_pointer            __node_pointer;

    typedef __map_node_destructor<__node_allocator> _Dp;
    typedef unique_ptr<__node, _Dp> __node_holder;
};

#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
template<class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>,
         class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
         class = _EnableIf<!__is_allocator<_Compare>::value, void>,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
multimap(_InputIterator, _InputIterator, _Compare = _Compare(), _Allocator = _Allocator())
  -> multimap<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>, _Compare, _Allocator>;

template<class _Key, class _Tp, class _Compare = less<remove_const_t<_Key>>,
         class _Allocator = allocator<pair<const _Key, _Tp>>,
         class = _EnableIf<!__is_allocator<_Compare>::value, void>,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
multimap(initializer_list<pair<_Key, _Tp>>, _Compare = _Compare(), _Allocator = _Allocator())
  -> multimap<remove_const_t<_Key>, _Tp, _Compare, _Allocator>;

template<class _InputIterator, class _Allocator,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
multimap(_InputIterator, _InputIterator, _Allocator)
  -> multimap<__iter_key_type<_InputIterator>, __iter_mapped_type<_InputIterator>,
         less<__iter_key_type<_InputIterator>>, _Allocator>;

template<class _Key, class _Tp, class _Allocator,
         class = _EnableIf<__is_allocator<_Allocator>::value, void>>
multimap(initializer_list<pair<_Key, _Tp>>, _Allocator)
  -> multimap<remove_const_t<_Key>, _Tp, less<remove_const_t<_Key>>, _Allocator>;
#endif
# 2204 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

#ifndef _LIBCPP_CXX03_LANG
template <class _Key, class _Tp, class _Compare, class _Allocator>
multimap<_Key, _Tp, _Compare, _Allocator>::multimap(multimap&& __m, const allocator_type& __a)
    : __tree_(_VSTD::move(__m.__tree_), typename __base::allocator_type(__a))
{
    if (__a != __m.get_allocator())
    {
        const_iterator __e = cend();
        while (!__m.empty())
            __tree_.__insert_multi(__e.__i_,
                    _VSTD::move(__m.__tree_.remove(__m.begin().__i_)->__value_.__move()));
    }
}
#endif
# 2219 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return __x.size() == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin());
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator< (const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end());
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__x == __y);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator> (const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return __y < __x;
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__x < __y);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
bool
operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
           const multimap<_Key, _Tp, _Compare, _Allocator>& __y)
{
    return !(__y < __x);
}

template <class _Key, class _Tp, class _Compare, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
void
swap(multimap<_Key, _Tp, _Compare, _Allocator>& __x,
     multimap<_Key, _Tp, _Compare, _Allocator>& __y)
    _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
{
    __x.swap(__y);
}

#if 0 /* disabled by -frewrite-includes */
#if _LIBCPP_STD_VER > 17
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2285 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
template <class _Key, class _Tp, class _Compare, class _Allocator,
          class _Predicate>
inline _LIBCPP_INLINE_VISIBILITY
    typename multimap<_Key, _Tp, _Compare, _Allocator>::size_type
    erase_if(multimap<_Key, _Tp, _Compare, _Allocator>& __c,
             _Predicate __pred) {
  return _VSTD::__libcpp_erase_if_container(__c, __pred);
}
#endif
# 2294 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP_MAP
# 2298 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/map" 3
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <set>
#endif /* expanded by -frewrite-includes */
# 59 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/private/gtest/internal/gtest-internal.h"
# 1 "/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/set" 1 3
// -*- C++ -*-
//===---------------------------- set -------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_SET
#define _LIBCPP_SET

/*

    set synopsis

namespace std
{

template <class Key, class Compare = less<Key>,
          class Allocator = allocator<Key>>
class set
{
public:
    // types:
    typedef Key                                      key_type;
    typedef key_type                                 value_type;
    typedef Compare                                  key_compare;
    typedef key_compare                              value_compare;
    typedef Allocator                                allocator_type;
    typedef typename allocator_type::reference       reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef typename allocator_type::pointer         pointer;
    typedef typename allocator_type::const_pointer   const_pointer;

    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;
    typedef unspecified                              node_type;               // C++17
    typedef INSERT_RETURN_TYPE<iterator, node_type>  insert_return_type;      // C++17

    // construct/copy/destroy:
    set()
        noexcept(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value);
    explicit set(const value_compare& comp);
    set(const value_compare& comp, const allocator_type& a);
    template <class InputIterator>
        set(InputIterator first, InputIterator last,
            const value_compare& comp = value_compare());
    template <class InputIterator>
        set(InputIterator first, InputIterator last, const value_compare& comp,
            const allocator_type& a);
    set(const set& s);
    set(set&& s)
        noexcept(
            is_nothrow_move_constructible<allocator_type>::value &&
            is_nothrow_move_constructible<key_compare>::value);
    explicit set(const allocator_type& a);
    set(const set& s, const allocator_type& a);
    set(set&& s, const allocator_type& a);
    set(initializer_list<value_type> il, const value_compare& comp = value_compare());
    set(initializer_list<value_type> il, const value_compare& comp,
        const allocator_type& a);
    template <class InputIterator>
        set(InputIterator first, InputIterator last, const allocator_type& a)
            : set(first, last, Compare(), a) {}  // C++14
    set(initializer_list<value_type> il, const allocator_type& a)
        : set(il, Compare(), a) {}  // C++14
    ~set();

    set& operator=(const set& s);
    set& operator=(set&& s)
        noexcept(
            allocator_type::propagate_on_container_move_assignment::value &&
            is_nothrow_move_assignable<allocator_type>::value &&
            is_nothrow_move_assignable<key_compare>::value);
    set& operator=(initializer_list<value_type> il);

    // iterators:
          iterator begin() noexcept;
    const_iterator begin() const noexcept;
          iterator end() noexcept;
    const_iterator end()   const noexcept;

          reverse_iterator rbegin() noexcept;
    const_reverse_iterator rbegin() const noexcept;
          reverse_iterator rend() noexcept;
    const_reverse_iterator rend()   const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    // capacity:
    bool      empty()    const noexcept;
    size_type size()     const noexcept;
    size_type max_size() const noexcept;

    // modifiers:
    template <class... Args>
        pair<iterator, bool> emplace(Args&&... args);
    template <class... Args>
        iterator emplace_hint(const_iterator position, Args&&... args);
    pair<iterator,bool> insert(const value_type& v);
    pair<iterator,bool> insert(value_type&& v);
    iterator insert(const_iterator position, const value_type& v);
    iterator insert(const_iterator position, value_type&& v);
    template <class InputIterator>
        void insert(InputIterator first, InputIterator last);
    void insert(initializer_list<value_type> il);

    node_type extract(const_iterator position);                                       // C++17
    node_type extract(const key_type& x);                                             // C++17
    insert_return_type insert(node_type&& nh);                                        // C++17
    iterator insert(const_iterator hint, node_type&& nh);                             // C++17

    iterator  erase(const_iterator position);
    iterator  erase(iterator position);  // C++14
    size_type erase(const key_type& k);
    iterator  erase(const_iterator first, const_iterator last);
    void clear() noexcept;

    template<class C2>
      void merge(set<Key, C2, Allocator>& source);         // C++17
    template<class C2>
      void merge(set<Key, C2, Allocator>&& source);        // C++17
    template<class C2>
      void merge(multiset<Key, C2, Allocator>& source);    // C++17
    template<class C2>
      void merge(multiset<Key, C2, Allocator>&& source);   // C++17

    void swap(set& s)
        noexcept(
            __is_nothrow_swappable<key_compare>::value &&
            (!allocator_type::propagate_on_container_swap::value ||
             __is_nothrow_swappable<allocator_type>::value));

    // observers:
    allocator_type get_allocator() const noexcept;
    key_compare    key_comp()      const;
    value_compare  value_comp()    const;

    // set operations:
          iterator find(const key_type& k);
    const_iterator find(const key_type& k) const;
    template<typename K>
        iterator find(const K& x);
    template<typename K>
        const_iterator find(const K& x) const;  // C++14

    template<typename K>
        size_type count(const K& x) const;        // C++14
    size_type      count(const key_type& k) const;

    bool           contains(const key_type& x) const;  // C++20
    template<class K> bool contains(const K& x) const; // C++20

          iterator lower_bound(const key_type& k);
    const_iterator lower_bound(const key_type& k) const;
    template<typename K>
        iterator lower_bound(const K& x);              // C++14
    template<typename K>
        const_iterator lower_bound(const K& x) const;  // C++14

          iterator upper_bound(const key_type& k);
    const_iterator upper_bound(const key_type& k) const;
    template<typename K>
        iterator upper_bound(const K& x);              // C++14
    template<typename K>
        const_iterator upper_bound(const K& x) const;  // C++14
    pair<iterator,iterator>             equal_range(const key_type& k);
    pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
    template<typename K>
        pair<iterator,iterator>             equal_range(const K& x);        // C++14
    template<typename K>
        pair<const_iterator,const_iterator> equal_range(const K& x) const;  // C++14
};

template <class Key, class Compare, class Allocator>
bool
operator==(const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

template <class Key, class Compare, class Allocator>
bool
operator< (const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

template <class Key, class Compare, class Allocator>
bool
operator!=(const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

template <class Key, class Compare, class Allocator>
bool
operator> (const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

template <class Key, class Compare, class Allocator>
bool
operator>=(const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

template <class Key, class Compare, class Allocator>
bool
operator<=(const set<Key, Compare, Allocator>& x,
           const set<Key, Compare, Allocator>& y);

// specialized algorithms:
template <class Key, class Compare, class Allocator>
void
swap(set<Key, Compare, Allocator>& x, set<Key, Compare, Allocator>& y)
    noexcept(noexcept(x.swap(y)));

template <class Key, class Compare, class Allocator, class Predicate>
typename set<Key, Compare, Allocator>::size_type
erase_if(set<Key, Compare, Allocator>& c, Predicate pred);  // C++20

template <class Key, class Compare = less<Key>,
          class Allocator = allocator<Key>>
class multiset
{
public:
    // types:
    typedef Key                                      key_type;
    typedef key_type                                 value_type;
    typedef Compare                                  key_compare;
    typedef key_compare                              value_compare;
    typedef Allocator                                allocator_type;
    typedef typename allocator_type::reference       reference;
    typedef typename allocator_type::const_reference const_reference;
    typedef typename allocator_type::size_type       size_type;
    typedef typename allocator_type::difference_type difference_type;
    typedef typename allocator_type::pointer         pointer;
    typedef typename allocator_type::const_pointer   const_pointer;

    typedef implementation-defined                   iterator;
    typedef implementation-defined                   const_iterator;
    typedef std::reverse_iterator<iterator>          reverse_iterator;
    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;
    typedef unspecified                              node_type;               // C++17

    // construct/copy/destroy:
    multiset()
        noexcept(
            is_nothrow_default_constructible<allocator_type>::value &&
            is_nothrow_default_constructible<key_compare>::value &&
            is_nothrow_copy_constructible<key_compare>::value);
    explicit multiset(const value_compare& comp);
    multiset(const value_compare& comp, const allocator_type& a);
    template <class InputIterator>
        multiset(InputIterator first, InputIterator last,
                 const value_compare& comp = value_compare());
    template <class InputIterator>
        multiset(InputIterator first, InputIterator last,
                 const value_compare& comp, const allocator_type& a);
    multiset(const multiset& s);
    multiset(multiset&& s)
        noexcept(
            is_nothrow_move_constructible<allocator_type>::value &&
            is_nothrow_move_constructible<key_compare>::value);
    explicit multiset(const allocator_type& a);
    multiset(const multiset& s, const allocator_type& a);
    multiset(multiset&& s, const allocator_type& a);
    multiset(initializer_list<value_type> il, const value_compare& comp = value_compare());
    multiset(initializer_list<value_type> il, const value_compare& comp,
             const allocator_type& a);
    template <class InputIterator>
        multiset(InputIterator first, InputIterator last, const allocator_type& a)
            : set(first, last, Compare(), a) {}  // C++14
    multiset(initializer_list<value_type> il, const allocator_type& a)
        : set(il, Compare(), a) {}  // C++14
    ~multiset();

    multiset& operator=(const multiset& s);
    multiset& operator=(multiset&& s)
        noexcept(
            allocator_type::propagate_on_container_move_assignment::value &&
            is_nothrow_move_assignable<allocator_type>::value &&
            is_nothrow_move_assignable<key_compare>::value);
    multiset& operator=(initializer_list<value_type> il);

    // iterators:
          iterator begin() noexcept;
    const_iterator begin() const noexcept;
          iterator end() noexcept;
    const_iterator end()   const noexcept;

          reverse_iterator rbegin() noexcept;
    const_reverse_iterator rbegin() const noexcept;
          reverse_iterator rend() noexcept;
    const_reverse_iterator rend()   const noexcept;

    const_iterator         cbegin()  const noexcept;
    const_iterator         cend()    const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend()   const noexcept;

    // capacity:
    bool      empty()    const noexcept;
    size_type size()     const noexcept;
    size_type max_size() const noexcept;

    // modifiers:
    template <class... Args>
        iterator emplace(Args&&... args);
    template <class..