LLVMFuzzerTestOneInput:
   22|  1.28k|extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   23|  1.28k|  static std::shared_ptr<spdlog::logger> my_logger;
   24|  1.28k|  if (!my_logger.get()) {
  ------------------
  |  Branch (24:7): [True: 1, False: 1.28k]
  ------------------
   25|      1|    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
   26|      1|    spdlog::set_default_logger(my_logger);
   27|      1|  }
   28|       |
   29|  1.28k|  if (size == 0) {
  ------------------
  |  Branch (29:7): [True: 0, False: 1.28k]
  ------------------
   30|      0|    return 0;
   31|      0|  }
   32|       |
   33|  1.28k|  FuzzedDataProvider stream(data, size);
   34|  1.28k|  const std::string str = stream.ConsumeRemainingBytesAsString();
   35|  1.28k|  spdlog::set_pattern(str);
   36|       |
   37|  1.28k|  return 0;
   38|  1.28k|}

_ZN6spdlog19file_event_handlersC2Ev:
  336|      1|    {}
_ZN6spdlog7details11make_uniqueINS0_14full_formatterEJNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS4_14default_deleteIS6_EEEEDpOT0_:
  395|      3|{
  396|      3|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|      3|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|      3|}
_ZN6spdlog7details11make_uniqueINS_17pattern_formatterEJEEENSt3__110unique_ptrIT_NS3_14default_deleteIS5_EEEEDpOT0_:
  395|      2|{
  396|      2|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|      2|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|      2|}
_ZN6spdlog7details11make_uniqueINS0_14full_formatterEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS5_14default_deleteIS7_EEEEDpOT0_:
  395|  10.6k|{
  396|  10.6k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  10.6k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  10.6k|}
_ZN6spdlog7details11make_uniqueINS0_14name_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.82k|{
  396|  4.82k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.82k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.82k|}
_ZN6spdlog7details11make_uniqueINS0_15level_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  6.44k|{
  396|  6.44k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  6.44k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  6.44k|}
_ZN6spdlog7details11make_uniqueINS0_21short_level_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  5.24k|{
  396|  5.24k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.24k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.24k|}
_ZN6spdlog7details11make_uniqueINS0_11t_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  5.09k|{
  396|  5.09k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.09k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.09k|}
_ZN6spdlog7details11make_uniqueINS0_11v_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  7.00k|{
  396|  7.00k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  7.00k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  7.00k|}
_ZN6spdlog7details11make_uniqueINS0_11a_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  6.69k|{
  396|  6.69k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  6.69k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  6.69k|}
_ZN6spdlog7details11make_uniqueINS0_11A_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  32.6k|{
  396|  32.6k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  32.6k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  32.6k|}
_ZN6spdlog7details11make_uniqueINS0_11b_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  9.48k|{
  396|  9.48k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  9.48k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  9.48k|}
_ZN6spdlog7details11make_uniqueINS0_11B_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  19.1k|{
  396|  19.1k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  19.1k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  19.1k|}
_ZN6spdlog7details11make_uniqueINS0_11c_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  10.5k|{
  396|  10.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  10.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  10.5k|}
_ZN6spdlog7details11make_uniqueINS0_11C_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  11.6k|{
  396|  11.6k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  11.6k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  11.6k|}
_ZN6spdlog7details11make_uniqueINS0_11Y_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  2.86k|{
  396|  2.86k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.86k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.86k|}
_ZN6spdlog7details11make_uniqueINS0_11D_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  15.9k|{
  396|  15.9k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  15.9k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  15.9k|}
_ZN6spdlog7details11make_uniqueINS0_11m_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.32k|{
  396|  1.32k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.32k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.32k|}
_ZN6spdlog7details11make_uniqueINS0_11d_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.21k|{
  396|  1.21k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.21k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.21k|}
_ZN6spdlog7details11make_uniqueINS0_11H_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  10.5k|{
  396|  10.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  10.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  10.5k|}
_ZN6spdlog7details11make_uniqueINS0_11I_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  28.2k|{
  396|  28.2k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  28.2k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  28.2k|}
_ZN6spdlog7details11make_uniqueINS0_11M_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  15.5k|{
  396|  15.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  15.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  15.5k|}
_ZN6spdlog7details11make_uniqueINS0_11S_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.16k|{
  396|  1.16k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.16k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.16k|}
_ZN6spdlog7details11make_uniqueINS0_11e_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.96k|{
  396|  4.96k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.96k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.96k|}
_ZN6spdlog7details11make_uniqueINS0_11f_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.44k|{
  396|  4.44k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.44k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.44k|}
_ZN6spdlog7details11make_uniqueINS0_11F_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  9.67k|{
  396|  9.67k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  9.67k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  9.67k|}
_ZN6spdlog7details11make_uniqueINS0_11E_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.69k|{
  396|  1.69k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.69k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.69k|}
_ZN6spdlog7details11make_uniqueINS0_11p_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.59k|{
  396|  4.59k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.59k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.59k|}
_ZN6spdlog7details11make_uniqueINS0_11r_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.16k|{
  396|  3.16k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.16k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.16k|}
_ZN6spdlog7details11make_uniqueINS0_11R_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.05k|{
  396|  3.05k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.05k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.05k|}
_ZN6spdlog7details11make_uniqueINS0_11T_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  14.5k|{
  396|  14.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  14.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  14.5k|}
_ZN6spdlog7details11make_uniqueINS0_11z_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  6.37k|{
  396|  6.37k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  6.37k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  6.37k|}
_ZN6spdlog7details11make_uniqueINS0_13pid_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.51k|{
  396|  4.51k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.51k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.51k|}
_ZN6spdlog7details11make_uniqueINS0_21color_start_formatterEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS5_14default_deleteIS7_EEEEDpOT0_:
  395|  9.34k|{
  396|  9.34k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  9.34k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  9.34k|}
_ZN6spdlog7details11make_uniqueINS0_20color_stop_formatterEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS5_14default_deleteIS7_EEEEDpOT0_:
  395|  10.4k|{
  396|  10.4k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  10.4k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  10.4k|}
_ZN6spdlog7details11make_uniqueINS0_25source_location_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  7.42k|{
  396|  7.42k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  7.42k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  7.42k|}
_ZN6spdlog7details11make_uniqueINS0_24short_filename_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  8.44k|{
  396|  8.44k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  8.44k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  8.44k|}
_ZN6spdlog7details11make_uniqueINS0_25source_filename_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.70k|{
  396|  3.70k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.70k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.70k|}
_ZN6spdlog7details11make_uniqueINS0_24source_linenum_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.77k|{
  396|  4.77k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.77k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.77k|}
_ZN6spdlog7details11make_uniqueINS0_25source_funcname_formatterINS0_13scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  16.7k|{
  396|  16.7k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  16.7k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  16.7k|}
_ZN6spdlog7details11make_uniqueINS0_12ch_formatterEJcEEENSt3__110unique_ptrIT_NS3_14default_deleteIS5_EEEEDpOT0_:
  395|   106k|{
  396|   106k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   106k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   106k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000000000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  5.34k|{
  396|  5.34k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.34k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.34k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  2.98k|{
  396|  2.98k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.98k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.98k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  2.89k|{
  396|  2.89k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.89k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.89k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  19.5k|{
  396|  19.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  19.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  19.5k|}
_ZN6spdlog7details11make_uniqueINS0_14name_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  8.57k|{
  396|  8.57k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  8.57k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  8.57k|}
_ZN6spdlog7details11make_uniqueINS0_15level_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.98k|{
  396|  1.98k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.98k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.98k|}
_ZN6spdlog7details11make_uniqueINS0_21short_level_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  2.80k|{
  396|  2.80k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.80k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.80k|}
_ZN6spdlog7details11make_uniqueINS0_11t_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  2.37k|{
  396|  2.37k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.37k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.37k|}
_ZN6spdlog7details11make_uniqueINS0_11v_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.38k|{
  396|  1.38k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.38k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.38k|}
_ZN6spdlog7details11make_uniqueINS0_11a_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.64k|{
  396|  4.64k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.64k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.64k|}
_ZN6spdlog7details11make_uniqueINS0_11A_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  14.8k|{
  396|  14.8k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  14.8k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  14.8k|}
_ZN6spdlog7details11make_uniqueINS0_11b_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  15.3k|{
  396|  15.3k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  15.3k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  15.3k|}
_ZN6spdlog7details11make_uniqueINS0_11B_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  7.03k|{
  396|  7.03k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  7.03k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  7.03k|}
_ZN6spdlog7details11make_uniqueINS0_11c_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  6.27k|{
  396|  6.27k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  6.27k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  6.27k|}
_ZN6spdlog7details11make_uniqueINS0_11C_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.30k|{
  396|  4.30k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.30k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.30k|}
_ZN6spdlog7details11make_uniqueINS0_11Y_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  9.43k|{
  396|  9.43k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  9.43k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  9.43k|}
_ZN6spdlog7details11make_uniqueINS0_11D_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  12.9k|{
  396|  12.9k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  12.9k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  12.9k|}
_ZN6spdlog7details11make_uniqueINS0_11m_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  6.91k|{
  396|  6.91k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  6.91k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  6.91k|}
_ZN6spdlog7details11make_uniqueINS0_11d_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.69k|{
  396|  1.69k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.69k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.69k|}
_ZN6spdlog7details11make_uniqueINS0_11H_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|   693k|{
  396|   693k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   693k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   693k|}
_ZN6spdlog7details11make_uniqueINS0_11I_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.63k|{
  396|  3.63k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.63k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.63k|}
_ZN6spdlog7details11make_uniqueINS0_11M_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|   746k|{
  396|   746k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   746k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   746k|}
_ZN6spdlog7details11make_uniqueINS0_11S_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|   674k|{
  396|   674k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   674k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   674k|}
_ZN6spdlog7details11make_uniqueINS0_11e_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.53k|{
  396|  3.53k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.53k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.53k|}
_ZN6spdlog7details11make_uniqueINS0_11f_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|   119k|{
  396|   119k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   119k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   119k|}
_ZN6spdlog7details11make_uniqueINS0_11F_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  5.42k|{
  396|  5.42k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.42k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.42k|}
_ZN6spdlog7details11make_uniqueINS0_11E_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.47k|{
  396|  4.47k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.47k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.47k|}
_ZN6spdlog7details11make_uniqueINS0_11p_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.89k|{
  396|  1.89k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.89k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.89k|}
_ZN6spdlog7details11make_uniqueINS0_11r_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  7.27k|{
  396|  7.27k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  7.27k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  7.27k|}
_ZN6spdlog7details11make_uniqueINS0_11R_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  5.22k|{
  396|  5.22k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.22k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.22k|}
_ZN6spdlog7details11make_uniqueINS0_11T_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  14.5k|{
  396|  14.5k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  14.5k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  14.5k|}
_ZN6spdlog7details11make_uniqueINS0_11z_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|   682k|{
  396|   682k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|   682k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|   682k|}
_ZN6spdlog7details11make_uniqueINS0_13pid_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  8.16k|{
  396|  8.16k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  8.16k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  8.16k|}
_ZN6spdlog7details11make_uniqueINS0_25source_location_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  5.09k|{
  396|  5.09k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  5.09k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  5.09k|}
_ZN6spdlog7details11make_uniqueINS0_24short_filename_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  2.96k|{
  396|  2.96k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.96k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.96k|}
_ZN6spdlog7details11make_uniqueINS0_25source_filename_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  3.15k|{
  396|  3.15k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.15k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.15k|}
_ZN6spdlog7details11make_uniqueINS0_24source_linenum_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  1.96k|{
  396|  1.96k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.96k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.96k|}
_ZN6spdlog7details11make_uniqueINS0_25source_funcname_formatterINS0_18null_scoped_padderEEEJRNS0_12padding_infoEEEENSt3__110unique_ptrIT_NS7_14default_deleteIS9_EEEEDpOT0_:
  395|  4.52k|{
  396|  4.52k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.52k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.52k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000000000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  3.73k|{
  396|  3.73k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.73k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.73k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  4.33k|{
  396|  4.33k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  4.33k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  4.33k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1000EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  2.31k|{
  396|  2.31k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  2.31k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  2.31k|}
_ZN6spdlog7details11make_uniqueINS0_17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS4_5ratioILl1ELl1EEEEEEEJRNS0_12padding_infoEEEENS4_10unique_ptrIT_NS4_14default_deleteISE_EEEEDpOT0_:
  395|  3.62k|{
  396|  3.62k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.62k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.62k|}
_ZN6spdlog7details11make_uniqueINS0_19aggregate_formatterEJEEENSt3__110unique_ptrIT_NS3_14default_deleteIS5_EEEEDpOT0_:
  395|  3.25M|{
  396|  3.25M|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  3.25M|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  3.25M|}
_ZN6spdlog7details11make_uniqueINS_17pattern_formatterEJRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKNS_17pattern_time_typeESB_NS3_13unordered_mapIcNS3_10unique_ptrINS_21custom_flag_formatterENS3_14default_deleteISH_EEEENS3_4hashIcEENS3_8equal_toIcEENS7_INS3_4pairIKcSK_EEEEEEEEENSG_IT_NSI_ISU_EEEEDpOT0_:
  395|  1.28k|{
  396|  1.28k|    static_assert(!std::is_array<T>::value, "arrays not supported");
  397|  1.28k|    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  398|  1.28k|}

_ZN6spdlog7details10backtracerC2Ev:
   25|      2|    backtracer() = default;

_ZN6spdlog7details10circular_qINS0_14log_msg_bufferEEC2Ev:
   25|      2|    circular_q() = default;

_ZN6spdlog7details13console_mutex5mutexEv:
   16|      1|    {
   17|      1|        static mutex_t s_mutex;
   18|      1|        return s_mutex;
   19|      1|    }

_ZN6spdlog7details11file_helperC2ERKNS_19file_event_handlersE:
   25|      1|{}
_ZN6spdlog7details11file_helper4openERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEb:
   33|      1|{
   34|      1|    close();
   35|      1|    filename_ = fname;
   36|       |
   37|      1|    auto *mode = SPDLOG_FILENAME_T("ab");
  ------------------
  |  |  128|      1|#    define SPDLOG_FILENAME_T(s) s
  ------------------
   38|      1|    auto *trunc_mode = SPDLOG_FILENAME_T("wb");
  ------------------
  |  |  128|      1|#    define SPDLOG_FILENAME_T(s) s
  ------------------
   39|       |
   40|      1|    if (event_handlers_.before_open)
  ------------------
  |  Branch (40:9): [True: 0, False: 1]
  ------------------
   41|      0|    {
   42|      0|        event_handlers_.before_open(filename_);
   43|      0|    }
   44|      1|    for (int tries = 0; tries < open_tries_; ++tries)
  ------------------
  |  Branch (44:25): [True: 1, False: 0]
  ------------------
   45|      1|    {
   46|       |        // create containing folder if not exists already.
   47|      1|        os::create_dir(os::dir_name(fname));
   48|      1|        if (truncate)
  ------------------
  |  Branch (48:13): [True: 0, False: 1]
  ------------------
   49|      0|        {
   50|       |            // Truncate by opening-and-closing a tmp file in "wb" mode, always
   51|       |            // opening the actual log-we-write-to in "ab" mode, since that
   52|       |            // interacts more politely with eternal processes that might
   53|       |            // rotate/truncate the file underneath us.
   54|      0|            std::FILE *tmp;
   55|      0|            if (os::fopen_s(&tmp, fname, trunc_mode))
  ------------------
  |  Branch (55:17): [True: 0, False: 0]
  ------------------
   56|      0|            {
   57|      0|                continue;
   58|      0|            }
   59|      0|            std::fclose(tmp);
   60|      0|        }
   61|      1|        if (!os::fopen_s(&fd_, fname, mode))
  ------------------
  |  Branch (61:13): [True: 1, False: 0]
  ------------------
   62|      1|        {
   63|      1|            if (event_handlers_.after_open)
  ------------------
  |  Branch (63:17): [True: 0, False: 1]
  ------------------
   64|      0|            {
   65|      0|                event_handlers_.after_open(filename_, fd_);
   66|      0|            }
   67|      1|            return;
   68|      1|        }
   69|       |
   70|      0|        details::os::sleep_for_millis(open_interval_);
   71|      0|    }
   72|       |
   73|      0|    throw_spdlog_ex("Failed opening file " + os::filename_to_str(filename_) + " for writing", errno);
   74|      0|}
_ZN6spdlog7details11file_helper5closeEv:
  102|      2|{
  103|      2|    if (fd_ != nullptr)
  ------------------
  |  Branch (103:9): [True: 1, False: 1]
  ------------------
  104|      1|    {
  105|      1|        if (event_handlers_.before_close)
  ------------------
  |  Branch (105:13): [True: 0, False: 1]
  ------------------
  106|      0|        {
  107|      0|            event_handlers_.before_close(filename_, fd_);
  108|      0|        }
  109|       |
  110|      1|        std::fclose(fd_);
  111|      1|        fd_ = nullptr;
  112|       |
  113|      1|        if (event_handlers_.after_close)
  ------------------
  |  Branch (113:13): [True: 0, False: 1]
  ------------------
  114|      0|        {
  115|      0|            event_handlers_.after_close(filename_);
  116|      0|        }
  117|      1|    }
  118|      2|}
_ZN6spdlog7details11file_helperD2Ev:
   28|      1|{
   29|      1|    close();
   30|      1|}

_ZN6spdlog7details2os11in_terminalEP8_IO_FILE:
  462|      1|{
  463|       |
  464|       |#ifdef _WIN32
  465|       |    return ::_isatty(_fileno(file)) != 0;
  466|       |#else
  467|      1|    return ::isatty(fileno(file)) != 0;
  468|      1|#endif
  469|      1|}
_ZN6spdlog7details2os10create_dirERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  556|      1|{
  557|      1|    if (path_exists(path))
  ------------------
  |  Branch (557:9): [True: 1, False: 0]
  ------------------
  558|      1|    {
  559|      1|        return true;
  560|      1|    }
  561|       |
  562|      0|    if (path.empty())
  ------------------
  |  Branch (562:9): [True: 0, False: 0]
  ------------------
  563|      0|    {
  564|      0|        return false;
  565|      0|    }
  566|       |
  567|      0|    size_t search_offset = 0;
  568|      0|    do
  569|      0|    {
  570|      0|        auto token_pos = path.find_first_of(folder_seps_filename, search_offset);
  571|       |        // treat the entire path as a folder if no folder separator not found
  572|      0|        if (token_pos == filename_t::npos)
  ------------------
  |  Branch (572:13): [True: 0, False: 0]
  ------------------
  573|      0|        {
  574|      0|            token_pos = path.size();
  575|      0|        }
  576|       |
  577|      0|        auto subdir = path.substr(0, token_pos);
  578|       |
  579|      0|        if (!subdir.empty() && !path_exists(subdir) && !mkdir_(subdir))
  ------------------
  |  Branch (579:13): [True: 0, False: 0]
  |  Branch (579:32): [True: 0, False: 0]
  |  Branch (579:56): [True: 0, False: 0]
  ------------------
  580|      0|        {
  581|      0|            return false; // return error if failed creating dir
  582|      0|        }
  583|      0|        search_offset = token_pos + 1;
  584|      0|    } while (search_offset < path.size());
  ------------------
  |  Branch (584:14): [True: 0, False: 0]
  ------------------
  585|       |
  586|      0|    return true;
  587|      0|}
_ZN6spdlog7details2os11path_existsERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  194|      1|{
  195|       |#ifdef _WIN32
  196|       |#    ifdef SPDLOG_WCHAR_FILENAMES
  197|       |    auto attribs = ::GetFileAttributesW(filename.c_str());
  198|       |#    else
  199|       |    auto attribs = ::GetFileAttributesA(filename.c_str());
  200|       |#    endif
  201|       |    return attribs != INVALID_FILE_ATTRIBUTES;
  202|       |#else // common linux/unix all have the stat system call
  203|      1|    struct stat buffer;
  204|      1|    return (::stat(filename.c_str(), &buffer) == 0);
  205|      1|#endif
  206|      1|}
_ZN6spdlog7details2os8dir_nameERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  595|      1|{
  596|      1|    auto pos = path.find_last_of(folder_seps_filename);
  597|      1|    return pos != filename_t::npos ? path.substr(0, pos) : filename_t{};
  ------------------
  |  Branch (597:12): [True: 1, False: 0]
  ------------------
  598|      1|}
_ZN6spdlog7details2os7fopen_sEPP8_IO_FILERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEESD_:
  130|      1|{
  131|       |#ifdef _WIN32
  132|       |#    ifdef SPDLOG_WCHAR_FILENAMES
  133|       |    *fp = ::_wfsopen((filename.c_str()), mode.c_str(), _SH_DENYNO);
  134|       |#    else
  135|       |    *fp = ::_fsopen((filename.c_str()), mode.c_str(), _SH_DENYNO);
  136|       |#    endif
  137|       |#    if defined(SPDLOG_PREVENT_CHILD_FD)
  138|       |    if (*fp != nullptr)
  139|       |    {
  140|       |        auto file_handle = reinterpret_cast<HANDLE>(_get_osfhandle(::_fileno(*fp)));
  141|       |        if (!::SetHandleInformation(file_handle, HANDLE_FLAG_INHERIT, 0))
  142|       |        {
  143|       |            ::fclose(*fp);
  144|       |            *fp = nullptr;
  145|       |        }
  146|       |    }
  147|       |#    endif
  148|       |#else // unix
  149|       |#    if defined(SPDLOG_PREVENT_CHILD_FD)
  150|       |    const int mode_flag = mode == SPDLOG_FILENAME_T("ab") ? O_APPEND : O_TRUNC;
  151|       |    const int fd = ::open((filename.c_str()), O_CREAT | O_WRONLY | O_CLOEXEC | mode_flag, mode_t(0644));
  152|       |    if (fd == -1)
  153|       |    {
  154|       |        return true;
  155|       |    }
  156|       |    *fp = ::fdopen(fd, mode.c_str());
  157|       |    if (*fp == nullptr)
  158|       |    {
  159|       |        ::close(fd);
  160|       |    }
  161|       |#    else
  162|      1|    *fp = ::fopen((filename.c_str()), mode.c_str());
  163|      1|#    endif
  164|      1|#endif
  165|       |
  166|      1|    return *fp == nullptr;
  167|      1|}

_ZN6spdlog7details8registry8instanceEv:
  286|  1.28k|{
  287|  1.28k|    static registry s_instance;
  288|  1.28k|    return s_instance;
  289|  1.28k|}
_ZN6spdlog7details8registryC2Ev:
   35|      1|{
   36|       |
   37|      1|#ifndef SPDLOG_DISABLE_DEFAULT_LOGGER
   38|       |    // create default logger (ansicolor_stdout_sink_mt or wincolor_stdout_sink_mt in windows).
   39|       |#    ifdef _WIN32
   40|       |    auto color_sink = std::make_shared<sinks::wincolor_stdout_sink_mt>();
   41|       |#    else
   42|      1|    auto color_sink = std::make_shared<sinks::ansicolor_stdout_sink_mt>();
   43|      1|#    endif
   44|       |
   45|      1|    const char *default_logger_name = "";
   46|      1|    default_logger_ = std::make_shared<spdlog::logger>(default_logger_name, std::move(color_sink));
   47|      1|    loggers_[default_logger_name] = default_logger_;
   48|       |
   49|      1|#endif // SPDLOG_DISABLE_DEFAULT_LOGGER
   50|      1|}
_ZN6spdlog7details8registryD2Ev:
   52|      1|SPDLOG_INLINE registry::~registry() = default;
_ZN6spdlog7details8registry18set_default_loggerENSt3__110shared_ptrINS_6loggerEEE:
  113|      1|{
  114|      1|    std::lock_guard<std::mutex> lock(logger_map_mutex_);
  115|       |    // remove previous default logger from the map
  116|      1|    if (default_logger_ != nullptr)
  ------------------
  |  Branch (116:9): [True: 1, False: 0]
  ------------------
  117|      1|    {
  118|      1|        loggers_.erase(default_logger_->name());
  119|      1|    }
  120|      1|    if (new_default_logger != nullptr)
  ------------------
  |  Branch (120:9): [True: 1, False: 0]
  ------------------
  121|      1|    {
  122|      1|        loggers_[new_default_logger->name()] = new_default_logger;
  123|      1|    }
  124|      1|    default_logger_ = std::move(new_default_logger);
  125|      1|}
_ZN6spdlog7details8registry13set_formatterENSt3__110unique_ptrINS_9formatterENS2_14default_deleteIS4_EEEE:
  141|  1.28k|{
  142|  1.28k|    std::lock_guard<std::mutex> lock(logger_map_mutex_);
  143|  1.28k|    formatter_ = std::move(formatter);
  144|  1.28k|    for (auto &l : loggers_)
  ------------------
  |  Branch (144:18): [True: 1.28k, False: 1.28k]
  ------------------
  145|  1.28k|    {
  146|  1.28k|        l.second->set_formatter(formatter_->clone());
  147|  1.28k|    }
  148|  1.28k|}
_ZN6spdlog7details8registry17initialize_loggerENSt3__110shared_ptrINS_6loggerEEE:
   61|      1|{
   62|      1|    std::lock_guard<std::mutex> lock(logger_map_mutex_);
   63|      1|    new_logger->set_formatter(formatter_->clone());
   64|       |
   65|      1|    if (err_handler_)
  ------------------
  |  Branch (65:9): [True: 0, False: 1]
  ------------------
   66|      0|    {
   67|      0|        new_logger->set_error_handler(err_handler_);
   68|      0|    }
   69|       |
   70|       |    // set new level according to previously configured level or default level
   71|      1|    auto it = log_levels_.find(new_logger->name());
   72|      1|    auto new_level = it != log_levels_.end() ? it->second : global_log_level_;
  ------------------
  |  Branch (72:22): [True: 0, False: 1]
  ------------------
   73|      1|    new_logger->set_level(new_level);
   74|       |
   75|      1|    new_logger->flush_on(flush_level_);
   76|       |
   77|      1|    if (backtrace_n_messages_ > 0)
  ------------------
  |  Branch (77:9): [True: 0, False: 1]
  ------------------
   78|      0|    {
   79|      0|        new_logger->enable_backtrace(backtrace_n_messages_);
   80|      0|    }
   81|       |
   82|      1|    if (automatic_registration_)
  ------------------
  |  Branch (82:9): [True: 1, False: 0]
  ------------------
   83|      1|    {
   84|      1|        register_logger_(std::move(new_logger));
   85|      1|    }
   86|      1|}
_ZN6spdlog7details8registry16register_logger_ENSt3__110shared_ptrINS_6loggerEEE:
  308|      1|{
  309|      1|    auto logger_name = new_logger->name();
  310|      1|    throw_if_exists_(logger_name);
  311|      1|    loggers_[logger_name] = std::move(new_logger);
  312|      1|}
_ZN6spdlog7details8registry16throw_if_exists_ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  300|      1|{
  301|      1|    if (loggers_.find(logger_name) != loggers_.end())
  ------------------
  |  Branch (301:9): [True: 0, False: 1]
  ------------------
  302|      0|    {
  303|      0|        throw_spdlog_ex("logger with name '" + logger_name + "' already exists");
  304|      0|    }
  305|      1|}

_ZN6spdlog19synchronous_factory6createINS_5sinks15basic_file_sinkINSt3__15mutexEEEJRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERbRKNS_19file_event_handlersEEEENS4_10shared_ptrINS_6loggerEEESC_DpOT0_:
   17|      1|    {
   18|      1|        auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
   19|      1|        auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink));
   20|      1|        details::registry::instance().initialize_logger(new_logger);
   21|      1|        return new_logger;
   22|      1|    }

_ZN3fmt2v96detail6bufferIcEC2EPcmm:
  874|  10.6k|      : ptr_(p), size_(sz), capacity_(cap) {}
_ZN3fmt2v96detail6bufferIcE3setEPcm:
  880|  10.6k|  FMT_CONSTEXPR void set(T* buf_data, size_t buf_capacity) noexcept {
  881|  10.6k|    ptr_ = buf_data;
  882|  10.6k|    capacity_ = buf_capacity;
  883|  10.6k|  }
_ZN3fmt2v96detail6bufferIcE4dataEv:
  908|  10.6k|  FMT_CONSTEXPR auto data() noexcept -> T* { return ptr_; }
_ZNK3fmt2v917basic_string_viewIcE4dataEv:
  472|      7|  constexpr auto data() const noexcept -> const Char* { return data_; }
_ZNK3fmt2v917basic_string_viewIcE4sizeEv:
  475|      7|  constexpr auto size() const noexcept -> size_t { return size_; }
_ZN3fmt2v917basic_string_viewIcEC2EPKc:
  458|     27|                  : std::char_traits<Char>::length(s)) {}

_ZN3fmt2v919basic_memory_bufferIcLm250ENSt3__19allocatorIcEEEC2ERKS4_:
  841|  10.6k|      : alloc_(alloc) {
  842|  10.6k|    this->set(store_, SIZE);
  843|  10.6k|    if (detail::is_constant_evaluated()) detail::fill_n(store_, SIZE, T());
  ------------------
  |  Branch (843:9): [Folded - Ignored]
  ------------------
  844|  10.6k|  }
_ZN3fmt2v919basic_memory_bufferIcLm250ENSt3__19allocatorIcEEED2Ev:
  845|  10.6k|  FMT_CONSTEXPR20 ~basic_memory_buffer() { deallocate(); }
_ZN3fmt2v919basic_memory_bufferIcLm250ENSt3__19allocatorIcEEE10deallocateEv:
  827|  10.6k|  FMT_CONSTEXPR20 void deallocate() {
  828|  10.6k|    T* data = this->data();
  829|  10.6k|    if (data != store_) alloc_.deallocate(data, this->capacity());
  ------------------
  |  Branch (829:9): [True: 0, False: 10.6k]
  ------------------
  830|  10.6k|  }

_ZN6spdlog9formatterD2Ev:
   14|  2.56k|    virtual ~formatter() = default;

_ZNK6spdlog6logger4nameEv:
   78|      4|{
   79|      4|    return name_;
   80|      4|}
_ZN6spdlog6logger13set_formatterENSt3__110unique_ptrINS_9formatterENS1_14default_deleteIS3_EEEE:
   85|  1.28k|{
   86|  1.28k|    for (auto it = sinks_.begin(); it != sinks_.end(); ++it)
  ------------------
  |  Branch (86:36): [True: 1.28k, False: 0]
  ------------------
   87|  1.28k|    {
   88|  1.28k|        if (std::next(it) == sinks_.end())
  ------------------
  |  Branch (88:13): [True: 1.28k, False: 0]
  ------------------
   89|  1.28k|        {
   90|       |            // last element - we can be move it.
   91|  1.28k|            (*it)->set_formatter(std::move(f));
   92|  1.28k|            break; // to prevent clang-tidy warning
   93|  1.28k|        }
   94|      0|        else
   95|      0|        {
   96|      0|            (*it)->set_formatter(f->clone());
   97|      0|        }
   98|  1.28k|    }
   99|  1.28k|}
_ZN6spdlog6logger9set_levelENS_5level10level_enumE:
   68|      1|{
   69|      1|    level_.store(log_level);
   70|      1|}
_ZN6spdlog6logger8flush_onENS_5level10level_enumE:
  131|      1|{
  132|      1|    flush_level_.store(log_level);
  133|      1|}

_ZN6spdlog6loggerC2ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS1_10shared_ptrINS_5sinks4sinkEEE:
   73|      2|    {}
_ZN6spdlog6loggerC2ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEESt16initializer_listINS1_10shared_ptrINS_5sinks4sinkEEEE:
   78|      2|    {}
_ZN6spdlog6loggerC2IPKNSt3__110shared_ptrINS_5sinks4sinkEEEEENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEET_SF_:
   68|      2|    {}
_ZN6spdlog6loggerD2Ev:
   80|      2|    virtual ~logger() = default;

_ZNK6spdlog17pattern_formatter5cloneEv:
 1048|  1.28k|{
 1049|  1.28k|    custom_flags cloned_custom_formatters;
 1050|  1.28k|    for (auto &it : custom_handlers_)
  ------------------
  |  Branch (1050:19): [True: 0, False: 1.28k]
  ------------------
 1051|      0|    {
 1052|      0|        cloned_custom_formatters[it.first] = it.second->clone();
 1053|      0|    }
 1054|  1.28k|    auto cloned = details::make_unique<pattern_formatter>(pattern_, pattern_time_type_, eol_, std::move(cloned_custom_formatters));
 1055|  1.28k|    cloned->need_localtime(need_localtime_);
 1056|  1.28k|#if defined(__GNUC__) && __GNUC__ < 5
 1057|  1.28k|    return std::move(cloned);
 1058|       |#else
 1059|       |    return cloned;
 1060|       |#endif
 1061|  1.28k|}
_ZN6spdlog17pattern_formatter14need_localtimeEb:
 1091|  1.28k|{
 1092|  1.28k|    need_localtime_ = need;
 1093|  1.28k|}
_ZN6spdlog17pattern_formatterC2ENS_17pattern_time_typeENSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
 1042|      3|{
 1043|      3|    std::memset(&cached_tm_, 0, sizeof(cached_tm_));
 1044|      3|    formatters_.push_back(details::make_unique<details::full_formatter>(details::padding_info{}));
 1045|      3|}
_ZN6spdlog7details14full_formatterC2ENS0_12padding_infoE:
  939|  10.6k|    {}
_ZN6spdlog17pattern_formatterC2ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_17pattern_time_typeES7_NS1_13unordered_mapIcNS1_10unique_ptrINS_21custom_flag_formatterENS1_14default_deleteISB_EEEENS1_4hashIcEENS1_8equal_toIcEENS5_INS1_4pairIKcSE_EEEEEE:
 1030|  2.56k|{
 1031|  2.56k|    std::memset(&cached_tm_, 0, sizeof(cached_tm_));
 1032|  2.56k|    compile_pattern_(pattern_);
 1033|  2.56k|}
_ZN6spdlog17pattern_formatter16compile_pattern_ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
 1391|  2.56k|{
 1392|  2.56k|    auto end = pattern.end();
 1393|  2.56k|    std::unique_ptr<details::aggregate_formatter> user_chars;
 1394|  2.56k|    formatters_.clear();
 1395|  20.3M|    for (auto it = pattern.begin(); it != end; ++it)
  ------------------
  |  Branch (1395:37): [True: 20.3M, False: 2.03k]
  ------------------
 1396|  20.3M|    {
 1397|  20.3M|        if (*it == '%')
  ------------------
  |  Branch (1397:13): [True: 3.69M, False: 16.6M]
  ------------------
 1398|  3.69M|        {
 1399|  3.69M|            if (user_chars) // append user chars found so far
  ------------------
  |  Branch (1399:17): [True: 3.11M, False: 581k]
  ------------------
 1400|  3.11M|            {
 1401|  3.11M|                formatters_.push_back(std::move(user_chars));
 1402|  3.11M|            }
 1403|       |
 1404|  3.69M|            auto padding = handle_padspec_(++it, end);
 1405|       |
 1406|  3.69M|            if (it != end)
  ------------------
  |  Branch (1406:17): [True: 3.69M, False: 532]
  ------------------
 1407|  3.69M|            {
 1408|  3.69M|                if (padding.enabled())
  ------------------
  |  Branch (1408:21): [True: 427k, False: 3.26M]
  ------------------
 1409|   427k|                {
 1410|   427k|                    handle_flag_<details::scoped_padder>(*it, padding);
 1411|   427k|                }
 1412|  3.26M|                else
 1413|  3.26M|                {
 1414|  3.26M|                    handle_flag_<details::null_scoped_padder>(*it, padding);
 1415|  3.26M|                }
 1416|  3.69M|            }
 1417|    532|            else
 1418|    532|            {
 1419|    532|                break;
 1420|    532|            }
 1421|  3.69M|        }
 1422|  16.6M|        else // chars not following the % sign should be displayed as is
 1423|  16.6M|        {
 1424|  16.6M|            if (!user_chars)
  ------------------
  |  Branch (1424:17): [True: 3.11M, False: 13.5M]
  ------------------
 1425|  3.11M|            {
 1426|  3.11M|                user_chars = details::make_unique<details::aggregate_formatter>();
 1427|  3.11M|            }
 1428|  16.6M|            user_chars->add_ch(*it);
 1429|  16.6M|        }
 1430|  20.3M|    }
 1431|  2.56k|    if (user_chars) // append raw chars found so far
  ------------------
  |  Branch (1431:9): [True: 370, False: 2.19k]
  ------------------
 1432|    370|    {
 1433|    370|        formatters_.push_back(std::move(user_chars));
 1434|    370|    }
 1435|  2.56k|}
_ZN6spdlog17pattern_formatter15handle_padspec_ERNSt3__111__wrap_iterIPKcEES5_:
 1339|  3.69M|{
 1340|  3.69M|    using details::padding_info;
 1341|  3.69M|    using details::scoped_padder;
 1342|  3.69M|    const size_t max_width = 64;
 1343|  3.69M|    if (it == end)
  ------------------
  |  Branch (1343:9): [True: 126, False: 3.69M]
  ------------------
 1344|    126|    {
 1345|    126|        return padding_info{};
 1346|    126|    }
 1347|       |
 1348|  3.69M|    padding_info::pad_side side;
 1349|  3.69M|    switch (*it)
 1350|  3.69M|    {
 1351|  12.9k|    case '-':
  ------------------
  |  Branch (1351:5): [True: 12.9k, False: 3.68M]
  ------------------
 1352|  12.9k|        side = padding_info::pad_side::right;
 1353|  12.9k|        ++it;
 1354|  12.9k|        break;
 1355|  1.45k|    case '=':
  ------------------
  |  Branch (1355:5): [True: 1.45k, False: 3.69M]
  ------------------
 1356|  1.45k|        side = padding_info::pad_side::center;
 1357|  1.45k|        ++it;
 1358|  1.45k|        break;
 1359|  3.68M|    default:
  ------------------
  |  Branch (1359:5): [True: 3.68M, False: 14.4k]
  ------------------
 1360|  3.68M|        side = details::padding_info::pad_side::left;
 1361|  3.68M|        break;
 1362|  3.69M|    }
 1363|       |
 1364|  3.69M|    if (it == end || !std::isdigit(static_cast<unsigned char>(*it)))
  ------------------
  |  Branch (1364:9): [True: 24, False: 3.69M]
  |  Branch (1364:22): [True: 3.26M, False: 427k]
  ------------------
 1365|  3.26M|    {
 1366|  3.26M|        return padding_info{}; // no padding if no digit found here
 1367|  3.26M|    }
 1368|       |
 1369|   427k|    auto width = static_cast<size_t>(*it) - '0';
 1370|   615k|    for (++it; it != end && std::isdigit(static_cast<unsigned char>(*it)); ++it)
  ------------------
  |  Branch (1370:16): [True: 615k, False: 366]
  |  Branch (1370:29): [True: 187k, False: 427k]
  ------------------
 1371|   187k|    {
 1372|   187k|        auto digit = static_cast<size_t>(*it) - '0';
 1373|   187k|        width = width * 10 + digit;
 1374|   187k|    }
 1375|       |
 1376|       |    // search for the optional truncate marker '!'
 1377|   427k|    bool truncate;
 1378|   427k|    if (it != end && *it == '!')
  ------------------
  |  Branch (1378:9): [True: 427k, False: 366]
  |  Branch (1378:22): [True: 17.1k, False: 410k]
  ------------------
 1379|  17.1k|    {
 1380|  17.1k|        truncate = true;
 1381|  17.1k|        ++it;
 1382|  17.1k|    }
 1383|   410k|    else
 1384|   410k|    {
 1385|   410k|        truncate = false;
 1386|   410k|    }
 1387|   427k|    return details::padding_info{std::min<size_t>(width, max_width), side, truncate};
 1388|  3.69M|}
_ZN6spdlog17pattern_formatter12handle_flag_INS_7details13scoped_padderEEEvcNS2_12padding_infoE:
 1106|   427k|{
 1107|       |    // process custom flags
 1108|   427k|    auto it = custom_handlers_.find(flag);
 1109|   427k|    if (it != custom_handlers_.end())
  ------------------
  |  Branch (1109:9): [True: 0, False: 427k]
  ------------------
 1110|      0|    {
 1111|      0|        auto custom_handler = it->second->clone();
 1112|      0|        custom_handler->set_padding_info(padding);
 1113|      0|        formatters_.push_back(std::move(custom_handler));
 1114|      0|        return;
 1115|      0|    }
 1116|       |
 1117|       |    // process built-in flags
 1118|   427k|    switch (flag)
 1119|   427k|    {
 1120|  5.20k|    case ('+'): // default formatter
  ------------------
  |  Branch (1120:5): [True: 5.20k, False: 422k]
  ------------------
 1121|  5.20k|        formatters_.push_back(details::make_unique<details::full_formatter>(padding));
 1122|  5.20k|        need_localtime_ = true;
 1123|  5.20k|        break;
 1124|       |
 1125|  4.82k|    case 'n': // logger name
  ------------------
  |  Branch (1125:5): [True: 4.82k, False: 422k]
  ------------------
 1126|  4.82k|        formatters_.push_back(details::make_unique<details::name_formatter<Padder>>(padding));
 1127|  4.82k|        break;
 1128|       |
 1129|  6.44k|    case 'l': // level
  ------------------
  |  Branch (1129:5): [True: 6.44k, False: 420k]
  ------------------
 1130|  6.44k|        formatters_.push_back(details::make_unique<details::level_formatter<Padder>>(padding));
 1131|  6.44k|        break;
 1132|       |
 1133|  5.24k|    case 'L': // short level
  ------------------
  |  Branch (1133:5): [True: 5.24k, False: 422k]
  ------------------
 1134|  5.24k|        formatters_.push_back(details::make_unique<details::short_level_formatter<Padder>>(padding));
 1135|  5.24k|        break;
 1136|       |
 1137|  5.09k|    case ('t'): // thread id
  ------------------
  |  Branch (1137:5): [True: 5.09k, False: 422k]
  ------------------
 1138|  5.09k|        formatters_.push_back(details::make_unique<details::t_formatter<Padder>>(padding));
 1139|  5.09k|        break;
 1140|       |
 1141|  7.00k|    case ('v'): // the message text
  ------------------
  |  Branch (1141:5): [True: 7.00k, False: 420k]
  ------------------
 1142|  7.00k|        formatters_.push_back(details::make_unique<details::v_formatter<Padder>>(padding));
 1143|  7.00k|        break;
 1144|       |
 1145|  6.69k|    case ('a'): // weekday
  ------------------
  |  Branch (1145:5): [True: 6.69k, False: 420k]
  ------------------
 1146|  6.69k|        formatters_.push_back(details::make_unique<details::a_formatter<Padder>>(padding));
 1147|  6.69k|        need_localtime_ = true;
 1148|  6.69k|        break;
 1149|       |
 1150|  32.6k|    case ('A'): // short weekday
  ------------------
  |  Branch (1150:5): [True: 32.6k, False: 394k]
  ------------------
 1151|  32.6k|        formatters_.push_back(details::make_unique<details::A_formatter<Padder>>(padding));
 1152|  32.6k|        need_localtime_ = true;
 1153|  32.6k|        break;
 1154|       |
 1155|  7.37k|    case ('b'):
  ------------------
  |  Branch (1155:5): [True: 7.37k, False: 419k]
  ------------------
 1156|  9.48k|    case ('h'): // month
  ------------------
  |  Branch (1156:5): [True: 2.10k, False: 425k]
  ------------------
 1157|  9.48k|        formatters_.push_back(details::make_unique<details::b_formatter<Padder>>(padding));
 1158|  9.48k|        need_localtime_ = true;
 1159|  9.48k|        break;
 1160|       |
 1161|  19.1k|    case ('B'): // short month
  ------------------
  |  Branch (1161:5): [True: 19.1k, False: 408k]
  ------------------
 1162|  19.1k|        formatters_.push_back(details::make_unique<details::B_formatter<Padder>>(padding));
 1163|  19.1k|        need_localtime_ = true;
 1164|  19.1k|        break;
 1165|       |
 1166|  10.5k|    case ('c'): // datetime
  ------------------
  |  Branch (1166:5): [True: 10.5k, False: 416k]
  ------------------
 1167|  10.5k|        formatters_.push_back(details::make_unique<details::c_formatter<Padder>>(padding));
 1168|  10.5k|        need_localtime_ = true;
 1169|  10.5k|        break;
 1170|       |
 1171|  11.6k|    case ('C'): // year 2 digits
  ------------------
  |  Branch (1171:5): [True: 11.6k, False: 415k]
  ------------------
 1172|  11.6k|        formatters_.push_back(details::make_unique<details::C_formatter<Padder>>(padding));
 1173|  11.6k|        need_localtime_ = true;
 1174|  11.6k|        break;
 1175|       |
 1176|  2.86k|    case ('Y'): // year 4 digits
  ------------------
  |  Branch (1176:5): [True: 2.86k, False: 424k]
  ------------------
 1177|  2.86k|        formatters_.push_back(details::make_unique<details::Y_formatter<Padder>>(padding));
 1178|  2.86k|        need_localtime_ = true;
 1179|  2.86k|        break;
 1180|       |
 1181|  4.66k|    case ('D'):
  ------------------
  |  Branch (1181:5): [True: 4.66k, False: 422k]
  ------------------
 1182|  15.9k|    case ('x'): // datetime MM/DD/YY
  ------------------
  |  Branch (1182:5): [True: 11.3k, False: 416k]
  ------------------
 1183|  15.9k|        formatters_.push_back(details::make_unique<details::D_formatter<Padder>>(padding));
 1184|  15.9k|        need_localtime_ = true;
 1185|  15.9k|        break;
 1186|       |
 1187|  1.32k|    case ('m'): // month 1-12
  ------------------
  |  Branch (1187:5): [True: 1.32k, False: 426k]
  ------------------
 1188|  1.32k|        formatters_.push_back(details::make_unique<details::m_formatter<Padder>>(padding));
 1189|  1.32k|        need_localtime_ = true;
 1190|  1.32k|        break;
 1191|       |
 1192|  1.21k|    case ('d'): // day of month 1-31
  ------------------
  |  Branch (1192:5): [True: 1.21k, False: 426k]
  ------------------
 1193|  1.21k|        formatters_.push_back(details::make_unique<details::d_formatter<Padder>>(padding));
 1194|  1.21k|        need_localtime_ = true;
 1195|  1.21k|        break;
 1196|       |
 1197|  10.5k|    case ('H'): // hours 24
  ------------------
  |  Branch (1197:5): [True: 10.5k, False: 416k]
  ------------------
 1198|  10.5k|        formatters_.push_back(details::make_unique<details::H_formatter<Padder>>(padding));
 1199|  10.5k|        need_localtime_ = true;
 1200|  10.5k|        break;
 1201|       |
 1202|  28.2k|    case ('I'): // hours 12
  ------------------
  |  Branch (1202:5): [True: 28.2k, False: 399k]
  ------------------
 1203|  28.2k|        formatters_.push_back(details::make_unique<details::I_formatter<Padder>>(padding));
 1204|  28.2k|        need_localtime_ = true;
 1205|  28.2k|        break;
 1206|       |
 1207|  15.5k|    case ('M'): // minutes
  ------------------
  |  Branch (1207:5): [True: 15.5k, False: 411k]
  ------------------
 1208|  15.5k|        formatters_.push_back(details::make_unique<details::M_formatter<Padder>>(padding));
 1209|  15.5k|        need_localtime_ = true;
 1210|  15.5k|        break;
 1211|       |
 1212|  1.16k|    case ('S'): // seconds
  ------------------
  |  Branch (1212:5): [True: 1.16k, False: 426k]
  ------------------
 1213|  1.16k|        formatters_.push_back(details::make_unique<details::S_formatter<Padder>>(padding));
 1214|  1.16k|        need_localtime_ = true;
 1215|  1.16k|        break;
 1216|       |
 1217|  4.96k|    case ('e'): // milliseconds
  ------------------
  |  Branch (1217:5): [True: 4.96k, False: 422k]
  ------------------
 1218|  4.96k|        formatters_.push_back(details::make_unique<details::e_formatter<Padder>>(padding));
 1219|  4.96k|        break;
 1220|       |
 1221|  4.44k|    case ('f'): // microseconds
  ------------------
  |  Branch (1221:5): [True: 4.44k, False: 422k]
  ------------------
 1222|  4.44k|        formatters_.push_back(details::make_unique<details::f_formatter<Padder>>(padding));
 1223|  4.44k|        break;
 1224|       |
 1225|  9.67k|    case ('F'): // nanoseconds
  ------------------
  |  Branch (1225:5): [True: 9.67k, False: 417k]
  ------------------
 1226|  9.67k|        formatters_.push_back(details::make_unique<details::F_formatter<Padder>>(padding));
 1227|  9.67k|        break;
 1228|       |
 1229|  1.69k|    case ('E'): // seconds since epoch
  ------------------
  |  Branch (1229:5): [True: 1.69k, False: 425k]
  ------------------
 1230|  1.69k|        formatters_.push_back(details::make_unique<details::E_formatter<Padder>>(padding));
 1231|  1.69k|        break;
 1232|       |
 1233|  4.59k|    case ('p'): // am/pm
  ------------------
  |  Branch (1233:5): [True: 4.59k, False: 422k]
  ------------------
 1234|  4.59k|        formatters_.push_back(details::make_unique<details::p_formatter<Padder>>(padding));
 1235|  4.59k|        need_localtime_ = true;
 1236|  4.59k|        break;
 1237|       |
 1238|  3.16k|    case ('r'): // 12 hour clock 02:55:02 pm
  ------------------
  |  Branch (1238:5): [True: 3.16k, False: 424k]
  ------------------
 1239|  3.16k|        formatters_.push_back(details::make_unique<details::r_formatter<Padder>>(padding));
 1240|  3.16k|        need_localtime_ = true;
 1241|  3.16k|        break;
 1242|       |
 1243|  3.05k|    case ('R'): // 24-hour HH:MM time
  ------------------
  |  Branch (1243:5): [True: 3.05k, False: 424k]
  ------------------
 1244|  3.05k|        formatters_.push_back(details::make_unique<details::R_formatter<Padder>>(padding));
 1245|  3.05k|        need_localtime_ = true;
 1246|  3.05k|        break;
 1247|       |
 1248|  1.69k|    case ('T'):
  ------------------
  |  Branch (1248:5): [True: 1.69k, False: 425k]
  ------------------
 1249|  14.5k|    case ('X'): // ISO 8601 time format (HH:MM:SS)
  ------------------
  |  Branch (1249:5): [True: 12.8k, False: 414k]
  ------------------
 1250|  14.5k|        formatters_.push_back(details::make_unique<details::T_formatter<Padder>>(padding));
 1251|  14.5k|        need_localtime_ = true;
 1252|  14.5k|        break;
 1253|       |
 1254|  6.37k|    case ('z'): // timezone
  ------------------
  |  Branch (1254:5): [True: 6.37k, False: 420k]
  ------------------
 1255|  6.37k|        formatters_.push_back(details::make_unique<details::z_formatter<Padder>>(padding));
 1256|  6.37k|        need_localtime_ = true;
 1257|  6.37k|        break;
 1258|       |
 1259|  4.51k|    case ('P'): // pid
  ------------------
  |  Branch (1259:5): [True: 4.51k, False: 422k]
  ------------------
 1260|  4.51k|        formatters_.push_back(details::make_unique<details::pid_formatter<Padder>>(padding));
 1261|  4.51k|        break;
 1262|       |
 1263|  5.85k|    case ('^'): // color range start
  ------------------
  |  Branch (1263:5): [True: 5.85k, False: 421k]
  ------------------
 1264|  5.85k|        formatters_.push_back(details::make_unique<details::color_start_formatter>(padding));
 1265|  5.85k|        break;
 1266|       |
 1267|  6.20k|    case ('$'): // color range end
  ------------------
  |  Branch (1267:5): [True: 6.20k, False: 421k]
  ------------------
 1268|  6.20k|        formatters_.push_back(details::make_unique<details::color_stop_formatter>(padding));
 1269|  6.20k|        break;
 1270|       |
 1271|  7.42k|    case ('@'): // source location (filename:filenumber)
  ------------------
  |  Branch (1271:5): [True: 7.42k, False: 419k]
  ------------------
 1272|  7.42k|        formatters_.push_back(details::make_unique<details::source_location_formatter<Padder>>(padding));
 1273|  7.42k|        break;
 1274|       |
 1275|  8.44k|    case ('s'): // short source filename - without directory name
  ------------------
  |  Branch (1275:5): [True: 8.44k, False: 418k]
  ------------------
 1276|  8.44k|        formatters_.push_back(details::make_unique<details::short_filename_formatter<Padder>>(padding));
 1277|  8.44k|        break;
 1278|       |
 1279|  3.70k|    case ('g'): // full source filename
  ------------------
  |  Branch (1279:5): [True: 3.70k, False: 423k]
  ------------------
 1280|  3.70k|        formatters_.push_back(details::make_unique<details::source_filename_formatter<Padder>>(padding));
 1281|  3.70k|        break;
 1282|       |
 1283|  4.77k|    case ('#'): // source line number
  ------------------
  |  Branch (1283:5): [True: 4.77k, False: 422k]
  ------------------
 1284|  4.77k|        formatters_.push_back(details::make_unique<details::source_linenum_formatter<Padder>>(padding));
 1285|  4.77k|        break;
 1286|       |
 1287|  10.8k|    case ('!'): // source funcname
  ------------------
  |  Branch (1287:5): [True: 10.8k, False: 416k]
  ------------------
 1288|  10.8k|        formatters_.push_back(details::make_unique<details::source_funcname_formatter<Padder>>(padding));
 1289|  10.8k|        break;
 1290|       |
 1291|  25.0k|    case ('%'): // % char
  ------------------
  |  Branch (1291:5): [True: 25.0k, False: 402k]
  ------------------
 1292|  25.0k|        formatters_.push_back(details::make_unique<details::ch_formatter>('%'));
 1293|  25.0k|        break;
 1294|       |
 1295|  5.34k|    case ('u'): // elapsed time since last log message in nanos
  ------------------
  |  Branch (1295:5): [True: 5.34k, False: 422k]
  ------------------
 1296|  5.34k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::nanoseconds>>(padding));
 1297|  5.34k|        break;
 1298|       |
 1299|  2.98k|    case ('i'): // elapsed time since last log message in micros
  ------------------
  |  Branch (1299:5): [True: 2.98k, False: 424k]
  ------------------
 1300|  2.98k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::microseconds>>(padding));
 1301|  2.98k|        break;
 1302|       |
 1303|  2.89k|    case ('o'): // elapsed time since last log message in millis
  ------------------
  |  Branch (1303:5): [True: 2.89k, False: 424k]
  ------------------
 1304|  2.89k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::milliseconds>>(padding));
 1305|  2.89k|        break;
 1306|       |
 1307|  19.5k|    case ('O'): // elapsed time since last log message in seconds
  ------------------
  |  Branch (1307:5): [True: 19.5k, False: 407k]
  ------------------
 1308|  19.5k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::seconds>>(padding));
 1309|  19.5k|        break;
 1310|       |
 1311|  66.4k|    default: // Unknown flag appears as is
  ------------------
  |  Branch (1311:5): [True: 66.4k, False: 360k]
  ------------------
 1312|  66.4k|        auto unknown_flag = details::make_unique<details::aggregate_formatter>();
 1313|       |
 1314|  66.4k|        if (!padding.truncate_)
  ------------------
  |  Branch (1314:13): [True: 60.5k, False: 5.90k]
  ------------------
 1315|  60.5k|        {
 1316|  60.5k|            unknown_flag->add_ch('%');
 1317|  60.5k|            unknown_flag->add_ch(flag);
 1318|  60.5k|            formatters_.push_back((std::move(unknown_flag)));
 1319|  60.5k|        }
 1320|       |        // fix issue #1617 (prev char was '!' and should have been treated as funcname flag instead of truncating flag)
 1321|       |        // spdlog::set_pattern("[%10!] %v") => "[      main] some message"
 1322|       |        // spdlog::set_pattern("[%3!!] %v") => "[mai] some message"
 1323|  5.90k|        else
 1324|  5.90k|        {
 1325|  5.90k|            padding.truncate_ = false;
 1326|  5.90k|            formatters_.push_back(details::make_unique<details::source_funcname_formatter<Padder>>(padding));
 1327|  5.90k|            unknown_flag->add_ch(flag);
 1328|  5.90k|            formatters_.push_back((std::move(unknown_flag)));
 1329|  5.90k|        }
 1330|       |
 1331|  66.4k|        break;
 1332|   427k|    }
 1333|   427k|}
_ZN6spdlog7details14name_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  112|  4.82k|    {}
_ZN6spdlog7details15level_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  128|  6.44k|    {}
_ZN6spdlog7details21short_level_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  145|  5.24k|    {}
_ZN6spdlog7details11t_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  651|  5.09k|    {}
_ZN6spdlog7details11v_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  685|  7.00k|    {}
_ZN6spdlog7details11a_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  178|  6.69k|    {}
_ZN6spdlog7details11A_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  197|  32.6k|    {}
_ZN6spdlog7details11b_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  216|  9.48k|    {}
_ZN6spdlog7details11B_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  236|  19.1k|    {}
_ZN6spdlog7details11c_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  253|  10.5k|    {}
_ZN6spdlog7details11C_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  285|  11.6k|    {}
_ZN6spdlog7details11Y_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  324|  2.86k|    {}
_ZN6spdlog7details11D_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  302|  15.9k|    {}
_ZN6spdlog7details11m_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  341|  1.32k|    {}
_ZN6spdlog7details11d_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  358|  1.21k|    {}
_ZN6spdlog7details11H_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  375|  10.5k|    {}
_ZN6spdlog7details11I_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  392|  28.2k|    {}
_ZN6spdlog7details11M_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  409|  15.5k|    {}
_ZN6spdlog7details11S_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  426|  1.16k|    {}
_ZN6spdlog7details11e_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  443|  4.96k|    {}
_ZN6spdlog7details11f_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  461|  4.44k|    {}
_ZN6spdlog7details11F_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  480|  9.67k|    {}
_ZN6spdlog7details11E_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  498|  1.69k|    {}
_ZN6spdlog7details11p_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  517|  4.59k|    {}
_ZN6spdlog7details11r_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  534|  3.16k|    {}
_ZN6spdlog7details11R_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  558|  3.05k|    {}
_ZN6spdlog7details11T_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  578|  14.5k|    {}
_ZN6spdlog7details11z_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  600|  6.37k|    {}
_ZN6spdlog7details13pid_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  668|  4.51k|    {}
_ZN6spdlog7details21color_start_formatterC2ENS0_12padding_infoE:
  735|  9.34k|    {}
_ZN6spdlog7details20color_stop_formatterC2ENS0_12padding_infoE:
  748|  10.4k|    {}
_ZN6spdlog7details25source_location_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  763|  7.42k|    {}
_ZN6spdlog7details24short_filename_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  819|  8.44k|    {}
_ZN6spdlog7details25source_filename_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  798|  3.70k|    {}
_ZN6spdlog7details24source_linenum_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  867|  4.77k|    {}
_ZN6spdlog7details25source_funcname_formatterINS0_13scoped_padderEEC2ENS0_12padding_infoE:
  890|  16.7k|    {}
_ZN6spdlog7details12ch_formatterC2Ec:
  699|   106k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000000000EEEEEEC2ENS0_12padding_infoE:
  915|  5.34k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000000EEEEEEC2ENS0_12padding_infoE:
  915|  2.98k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000EEEEEEC2ENS0_12padding_infoE:
  915|  2.89k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_13scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1EEEEEEC2ENS0_12padding_infoE:
  915|  19.5k|    {}
_ZN6spdlog17pattern_formatter12handle_flag_INS_7details18null_scoped_padderEEEvcNS2_12padding_infoE:
 1106|  3.26M|{
 1107|       |    // process custom flags
 1108|  3.26M|    auto it = custom_handlers_.find(flag);
 1109|  3.26M|    if (it != custom_handlers_.end())
  ------------------
  |  Branch (1109:9): [True: 0, False: 3.26M]
  ------------------
 1110|      0|    {
 1111|      0|        auto custom_handler = it->second->clone();
 1112|      0|        custom_handler->set_padding_info(padding);
 1113|      0|        formatters_.push_back(std::move(custom_handler));
 1114|      0|        return;
 1115|      0|    }
 1116|       |
 1117|       |    // process built-in flags
 1118|  3.26M|    switch (flag)
 1119|  3.26M|    {
 1120|  5.40k|    case ('+'): // default formatter
  ------------------
  |  Branch (1120:5): [True: 5.40k, False: 3.26M]
  ------------------
 1121|  5.40k|        formatters_.push_back(details::make_unique<details::full_formatter>(padding));
 1122|  5.40k|        need_localtime_ = true;
 1123|  5.40k|        break;
 1124|       |
 1125|  8.57k|    case 'n': // logger name
  ------------------
  |  Branch (1125:5): [True: 8.57k, False: 3.26M]
  ------------------
 1126|  8.57k|        formatters_.push_back(details::make_unique<details::name_formatter<Padder>>(padding));
 1127|  8.57k|        break;
 1128|       |
 1129|  1.98k|    case 'l': // level
  ------------------
  |  Branch (1129:5): [True: 1.98k, False: 3.26M]
  ------------------
 1130|  1.98k|        formatters_.push_back(details::make_unique<details::level_formatter<Padder>>(padding));
 1131|  1.98k|        break;
 1132|       |
 1133|  2.80k|    case 'L': // short level
  ------------------
  |  Branch (1133:5): [True: 2.80k, False: 3.26M]
  ------------------
 1134|  2.80k|        formatters_.push_back(details::make_unique<details::short_level_formatter<Padder>>(padding));
 1135|  2.80k|        break;
 1136|       |
 1137|  2.37k|    case ('t'): // thread id
  ------------------
  |  Branch (1137:5): [True: 2.37k, False: 3.26M]
  ------------------
 1138|  2.37k|        formatters_.push_back(details::make_unique<details::t_formatter<Padder>>(padding));
 1139|  2.37k|        break;
 1140|       |
 1141|  1.38k|    case ('v'): // the message text
  ------------------
  |  Branch (1141:5): [True: 1.38k, False: 3.26M]
  ------------------
 1142|  1.38k|        formatters_.push_back(details::make_unique<details::v_formatter<Padder>>(padding));
 1143|  1.38k|        break;
 1144|       |
 1145|  4.64k|    case ('a'): // weekday
  ------------------
  |  Branch (1145:5): [True: 4.64k, False: 3.26M]
  ------------------
 1146|  4.64k|        formatters_.push_back(details::make_unique<details::a_formatter<Padder>>(padding));
 1147|  4.64k|        need_localtime_ = true;
 1148|  4.64k|        break;
 1149|       |
 1150|  14.8k|    case ('A'): // short weekday
  ------------------
  |  Branch (1150:5): [True: 14.8k, False: 3.25M]
  ------------------
 1151|  14.8k|        formatters_.push_back(details::make_unique<details::A_formatter<Padder>>(padding));
 1152|  14.8k|        need_localtime_ = true;
 1153|  14.8k|        break;
 1154|       |
 1155|  10.5k|    case ('b'):
  ------------------
  |  Branch (1155:5): [True: 10.5k, False: 3.25M]
  ------------------
 1156|  15.3k|    case ('h'): // month
  ------------------
  |  Branch (1156:5): [True: 4.73k, False: 3.26M]
  ------------------
 1157|  15.3k|        formatters_.push_back(details::make_unique<details::b_formatter<Padder>>(padding));
 1158|  15.3k|        need_localtime_ = true;
 1159|  15.3k|        break;
 1160|       |
 1161|  7.03k|    case ('B'): // short month
  ------------------
  |  Branch (1161:5): [True: 7.03k, False: 3.26M]
  ------------------
 1162|  7.03k|        formatters_.push_back(details::make_unique<details::B_formatter<Padder>>(padding));
 1163|  7.03k|        need_localtime_ = true;
 1164|  7.03k|        break;
 1165|       |
 1166|  6.27k|    case ('c'): // datetime
  ------------------
  |  Branch (1166:5): [True: 6.27k, False: 3.26M]
  ------------------
 1167|  6.27k|        formatters_.push_back(details::make_unique<details::c_formatter<Padder>>(padding));
 1168|  6.27k|        need_localtime_ = true;
 1169|  6.27k|        break;
 1170|       |
 1171|  4.30k|    case ('C'): // year 2 digits
  ------------------
  |  Branch (1171:5): [True: 4.30k, False: 3.26M]
  ------------------
 1172|  4.30k|        formatters_.push_back(details::make_unique<details::C_formatter<Padder>>(padding));
 1173|  4.30k|        need_localtime_ = true;
 1174|  4.30k|        break;
 1175|       |
 1176|  9.43k|    case ('Y'): // year 4 digits
  ------------------
  |  Branch (1176:5): [True: 9.43k, False: 3.25M]
  ------------------
 1177|  9.43k|        formatters_.push_back(details::make_unique<details::Y_formatter<Padder>>(padding));
 1178|  9.43k|        need_localtime_ = true;
 1179|  9.43k|        break;
 1180|       |
 1181|  1.71k|    case ('D'):
  ------------------
  |  Branch (1181:5): [True: 1.71k, False: 3.26M]
  ------------------
 1182|  12.9k|    case ('x'): // datetime MM/DD/YY
  ------------------
  |  Branch (1182:5): [True: 11.2k, False: 3.25M]
  ------------------
 1183|  12.9k|        formatters_.push_back(details::make_unique<details::D_formatter<Padder>>(padding));
 1184|  12.9k|        need_localtime_ = true;
 1185|  12.9k|        break;
 1186|       |
 1187|  6.91k|    case ('m'): // month 1-12
  ------------------
  |  Branch (1187:5): [True: 6.91k, False: 3.26M]
  ------------------
 1188|  6.91k|        formatters_.push_back(details::make_unique<details::m_formatter<Padder>>(padding));
 1189|  6.91k|        need_localtime_ = true;
 1190|  6.91k|        break;
 1191|       |
 1192|  1.69k|    case ('d'): // day of month 1-31
  ------------------
  |  Branch (1192:5): [True: 1.69k, False: 3.26M]
  ------------------
 1193|  1.69k|        formatters_.push_back(details::make_unique<details::d_formatter<Padder>>(padding));
 1194|  1.69k|        need_localtime_ = true;
 1195|  1.69k|        break;
 1196|       |
 1197|   693k|    case ('H'): // hours 24
  ------------------
  |  Branch (1197:5): [True: 693k, False: 2.57M]
  ------------------
 1198|   693k|        formatters_.push_back(details::make_unique<details::H_formatter<Padder>>(padding));
 1199|   693k|        need_localtime_ = true;
 1200|   693k|        break;
 1201|       |
 1202|  3.63k|    case ('I'): // hours 12
  ------------------
  |  Branch (1202:5): [True: 3.63k, False: 3.26M]
  ------------------
 1203|  3.63k|        formatters_.push_back(details::make_unique<details::I_formatter<Padder>>(padding));
 1204|  3.63k|        need_localtime_ = true;
 1205|  3.63k|        break;
 1206|       |
 1207|   746k|    case ('M'): // minutes
  ------------------
  |  Branch (1207:5): [True: 746k, False: 2.52M]
  ------------------
 1208|   746k|        formatters_.push_back(details::make_unique<details::M_formatter<Padder>>(padding));
 1209|   746k|        need_localtime_ = true;
 1210|   746k|        break;
 1211|       |
 1212|   674k|    case ('S'): // seconds
  ------------------
  |  Branch (1212:5): [True: 674k, False: 2.59M]
  ------------------
 1213|   674k|        formatters_.push_back(details::make_unique<details::S_formatter<Padder>>(padding));
 1214|   674k|        need_localtime_ = true;
 1215|   674k|        break;
 1216|       |
 1217|  3.53k|    case ('e'): // milliseconds
  ------------------
  |  Branch (1217:5): [True: 3.53k, False: 3.26M]
  ------------------
 1218|  3.53k|        formatters_.push_back(details::make_unique<details::e_formatter<Padder>>(padding));
 1219|  3.53k|        break;
 1220|       |
 1221|   119k|    case ('f'): // microseconds
  ------------------
  |  Branch (1221:5): [True: 119k, False: 3.14M]
  ------------------
 1222|   119k|        formatters_.push_back(details::make_unique<details::f_formatter<Padder>>(padding));
 1223|   119k|        break;
 1224|       |
 1225|  5.42k|    case ('F'): // nanoseconds
  ------------------
  |  Branch (1225:5): [True: 5.42k, False: 3.26M]
  ------------------
 1226|  5.42k|        formatters_.push_back(details::make_unique<details::F_formatter<Padder>>(padding));
 1227|  5.42k|        break;
 1228|       |
 1229|  4.47k|    case ('E'): // seconds since epoch
  ------------------
  |  Branch (1229:5): [True: 4.47k, False: 3.26M]
  ------------------
 1230|  4.47k|        formatters_.push_back(details::make_unique<details::E_formatter<Padder>>(padding));
 1231|  4.47k|        break;
 1232|       |
 1233|  1.89k|    case ('p'): // am/pm
  ------------------
  |  Branch (1233:5): [True: 1.89k, False: 3.26M]
  ------------------
 1234|  1.89k|        formatters_.push_back(details::make_unique<details::p_formatter<Padder>>(padding));
 1235|  1.89k|        need_localtime_ = true;
 1236|  1.89k|        break;
 1237|       |
 1238|  7.27k|    case ('r'): // 12 hour clock 02:55:02 pm
  ------------------
  |  Branch (1238:5): [True: 7.27k, False: 3.26M]
  ------------------
 1239|  7.27k|        formatters_.push_back(details::make_unique<details::r_formatter<Padder>>(padding));
 1240|  7.27k|        need_localtime_ = true;
 1241|  7.27k|        break;
 1242|       |
 1243|  5.22k|    case ('R'): // 24-hour HH:MM time
  ------------------
  |  Branch (1243:5): [True: 5.22k, False: 3.26M]
  ------------------
 1244|  5.22k|        formatters_.push_back(details::make_unique<details::R_formatter<Padder>>(padding));
 1245|  5.22k|        need_localtime_ = true;
 1246|  5.22k|        break;
 1247|       |
 1248|  13.1k|    case ('T'):
  ------------------
  |  Branch (1248:5): [True: 13.1k, False: 3.25M]
  ------------------
 1249|  14.5k|    case ('X'): // ISO 8601 time format (HH:MM:SS)
  ------------------
  |  Branch (1249:5): [True: 1.34k, False: 3.26M]
  ------------------
 1250|  14.5k|        formatters_.push_back(details::make_unique<details::T_formatter<Padder>>(padding));
 1251|  14.5k|        need_localtime_ = true;
 1252|  14.5k|        break;
 1253|       |
 1254|   682k|    case ('z'): // timezone
  ------------------
  |  Branch (1254:5): [True: 682k, False: 2.58M]
  ------------------
 1255|   682k|        formatters_.push_back(details::make_unique<details::z_formatter<Padder>>(padding));
 1256|   682k|        need_localtime_ = true;
 1257|   682k|        break;
 1258|       |
 1259|  8.16k|    case ('P'): // pid
  ------------------
  |  Branch (1259:5): [True: 8.16k, False: 3.26M]
  ------------------
 1260|  8.16k|        formatters_.push_back(details::make_unique<details::pid_formatter<Padder>>(padding));
 1261|  8.16k|        break;
 1262|       |
 1263|  3.48k|    case ('^'): // color range start
  ------------------
  |  Branch (1263:5): [True: 3.48k, False: 3.26M]
  ------------------
 1264|  3.48k|        formatters_.push_back(details::make_unique<details::color_start_formatter>(padding));
 1265|  3.48k|        break;
 1266|       |
 1267|  4.21k|    case ('$'): // color range end
  ------------------
  |  Branch (1267:5): [True: 4.21k, False: 3.26M]
  ------------------
 1268|  4.21k|        formatters_.push_back(details::make_unique<details::color_stop_formatter>(padding));
 1269|  4.21k|        break;
 1270|       |
 1271|  5.09k|    case ('@'): // source location (filename:filenumber)
  ------------------
  |  Branch (1271:5): [True: 5.09k, False: 3.26M]
  ------------------
 1272|  5.09k|        formatters_.push_back(details::make_unique<details::source_location_formatter<Padder>>(padding));
 1273|  5.09k|        break;
 1274|       |
 1275|  2.96k|    case ('s'): // short source filename - without directory name
  ------------------
  |  Branch (1275:5): [True: 2.96k, False: 3.26M]
  ------------------
 1276|  2.96k|        formatters_.push_back(details::make_unique<details::short_filename_formatter<Padder>>(padding));
 1277|  2.96k|        break;
 1278|       |
 1279|  3.15k|    case ('g'): // full source filename
  ------------------
  |  Branch (1279:5): [True: 3.15k, False: 3.26M]
  ------------------
 1280|  3.15k|        formatters_.push_back(details::make_unique<details::source_filename_formatter<Padder>>(padding));
 1281|  3.15k|        break;
 1282|       |
 1283|  1.96k|    case ('#'): // source line number
  ------------------
  |  Branch (1283:5): [True: 1.96k, False: 3.26M]
  ------------------
 1284|  1.96k|        formatters_.push_back(details::make_unique<details::source_linenum_formatter<Padder>>(padding));
 1285|  1.96k|        break;
 1286|       |
 1287|  4.52k|    case ('!'): // source funcname
  ------------------
  |  Branch (1287:5): [True: 4.52k, False: 3.26M]
  ------------------
 1288|  4.52k|        formatters_.push_back(details::make_unique<details::source_funcname_formatter<Padder>>(padding));
 1289|  4.52k|        break;
 1290|       |
 1291|  81.0k|    case ('%'): // % char
  ------------------
  |  Branch (1291:5): [True: 81.0k, False: 3.18M]
  ------------------
 1292|  81.0k|        formatters_.push_back(details::make_unique<details::ch_formatter>('%'));
 1293|  81.0k|        break;
 1294|       |
 1295|  3.73k|    case ('u'): // elapsed time since last log message in nanos
  ------------------
  |  Branch (1295:5): [True: 3.73k, False: 3.26M]
  ------------------
 1296|  3.73k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::nanoseconds>>(padding));
 1297|  3.73k|        break;
 1298|       |
 1299|  4.33k|    case ('i'): // elapsed time since last log message in micros
  ------------------
  |  Branch (1299:5): [True: 4.33k, False: 3.26M]
  ------------------
 1300|  4.33k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::microseconds>>(padding));
 1301|  4.33k|        break;
 1302|       |
 1303|  2.31k|    case ('o'): // elapsed time since last log message in millis
  ------------------
  |  Branch (1303:5): [True: 2.31k, False: 3.26M]
  ------------------
 1304|  2.31k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::milliseconds>>(padding));
 1305|  2.31k|        break;
 1306|       |
 1307|  3.62k|    case ('O'): // elapsed time since last log message in seconds
  ------------------
  |  Branch (1307:5): [True: 3.62k, False: 3.26M]
  ------------------
 1308|  3.62k|        formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::seconds>>(padding));
 1309|  3.62k|        break;
 1310|       |
 1311|  71.5k|    default: // Unknown flag appears as is
  ------------------
  |  Branch (1311:5): [True: 71.5k, False: 3.19M]
  ------------------
 1312|  71.5k|        auto unknown_flag = details::make_unique<details::aggregate_formatter>();
 1313|       |
 1314|  71.5k|        if (!padding.truncate_)
  ------------------
  |  Branch (1314:13): [True: 71.5k, False: 0]
  ------------------
 1315|  71.5k|        {
 1316|  71.5k|            unknown_flag->add_ch('%');
 1317|  71.5k|            unknown_flag->add_ch(flag);
 1318|  71.5k|            formatters_.push_back((std::move(unknown_flag)));
 1319|  71.5k|        }
 1320|       |        // fix issue #1617 (prev char was '!' and should have been treated as funcname flag instead of truncating flag)
 1321|       |        // spdlog::set_pattern("[%10!] %v") => "[      main] some message"
 1322|       |        // spdlog::set_pattern("[%3!!] %v") => "[mai] some message"
 1323|      0|        else
 1324|      0|        {
 1325|      0|            padding.truncate_ = false;
 1326|      0|            formatters_.push_back(details::make_unique<details::source_funcname_formatter<Padder>>(padding));
 1327|      0|            unknown_flag->add_ch(flag);
 1328|      0|            formatters_.push_back((std::move(unknown_flag)));
 1329|      0|        }
 1330|       |
 1331|  71.5k|        break;
 1332|  3.26M|    }
 1333|  3.26M|}
_ZN6spdlog7details14name_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  112|  8.57k|    {}
_ZN6spdlog7details15level_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  128|  1.98k|    {}
_ZN6spdlog7details21short_level_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  145|  2.80k|    {}
_ZN6spdlog7details11t_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  651|  2.37k|    {}
_ZN6spdlog7details11v_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  685|  1.38k|    {}
_ZN6spdlog7details11a_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  178|  4.64k|    {}
_ZN6spdlog7details11A_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  197|  14.8k|    {}
_ZN6spdlog7details11b_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  216|  15.3k|    {}
_ZN6spdlog7details11B_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  236|  7.03k|    {}
_ZN6spdlog7details11c_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  253|  6.27k|    {}
_ZN6spdlog7details11C_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  285|  4.30k|    {}
_ZN6spdlog7details11Y_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  324|  9.43k|    {}
_ZN6spdlog7details11D_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  302|  12.9k|    {}
_ZN6spdlog7details11m_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  341|  6.91k|    {}
_ZN6spdlog7details11d_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  358|  1.69k|    {}
_ZN6spdlog7details11H_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  375|   693k|    {}
_ZN6spdlog7details11I_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  392|  3.63k|    {}
_ZN6spdlog7details11M_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  409|   746k|    {}
_ZN6spdlog7details11S_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  426|   674k|    {}
_ZN6spdlog7details11e_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  443|  3.53k|    {}
_ZN6spdlog7details11f_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  461|   119k|    {}
_ZN6spdlog7details11F_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  480|  5.42k|    {}
_ZN6spdlog7details11E_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  498|  4.47k|    {}
_ZN6spdlog7details11p_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  517|  1.89k|    {}
_ZN6spdlog7details11r_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  534|  7.27k|    {}
_ZN6spdlog7details11R_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  558|  5.22k|    {}
_ZN6spdlog7details11T_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  578|  14.5k|    {}
_ZN6spdlog7details11z_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  600|   682k|    {}
_ZN6spdlog7details13pid_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  668|  8.16k|    {}
_ZN6spdlog7details25source_location_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  763|  5.09k|    {}
_ZN6spdlog7details24short_filename_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  819|  2.96k|    {}
_ZN6spdlog7details25source_filename_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  798|  3.15k|    {}
_ZN6spdlog7details24source_linenum_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  867|  1.96k|    {}
_ZN6spdlog7details25source_funcname_formatterINS0_18null_scoped_padderEEC2ENS0_12padding_infoE:
  890|  4.52k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000000000EEEEEEC2ENS0_12padding_infoE:
  915|  3.73k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000000EEEEEEC2ENS0_12padding_infoE:
  915|  4.33k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1000EEEEEEC2ENS0_12padding_infoE:
  915|  2.31k|    {}
_ZN6spdlog7details17elapsed_formatterINS0_18null_scoped_padderENSt3__16chrono8durationIxNS3_5ratioILl1ELl1EEEEEEC2ENS0_12padding_infoE:
  915|  3.62k|    {}
_ZN6spdlog7details19aggregate_formatterC2Ev:
  714|  3.25M|    aggregate_formatter() = default;
_ZN6spdlog7details19aggregate_formatter6add_chEc:
  717|  16.9M|    {
  718|  16.9M|        str_ += ch;
  719|  16.9M|    }

_ZN6spdlog7details14flag_formatterC2ENS0_12padding_infoE:
   55|  3.45M|    {}
_ZN6spdlog7details14flag_formatterD2Ev:
   57|  6.81M|    virtual ~flag_formatter() = default;
_ZN6spdlog7details12padding_infoC2Ev:
   32|  6.62M|    padding_info() = default;
_ZN6spdlog7details12padding_infoC2EmNS1_8pad_sideEb:
   38|   427k|    {}
_ZNK6spdlog7details12padding_info7enabledEv:
   41|  3.69M|    {
   42|  3.69M|        return enabled_;
   43|  3.69M|    }
_ZN6spdlog7details14flag_formatterC2Ev:
   56|  3.36M|    flag_formatter() = default;

_ZN6spdlog5sinks21ansicolor_stdout_sinkINS_7details13console_mutexEEC2ENS_10color_modeE:
  136|      1|{}
_ZN6spdlog5sinks14ansicolor_sinkINS_7details13console_mutexEEC2EP8_IO_FILENS_10color_modeE:
   22|      1|{
   23|      1|    set_color_mode(mode);
   24|      1|    colors_[level::trace] = to_string_(white);
   25|      1|    colors_[level::debug] = to_string_(cyan);
   26|      1|    colors_[level::info] = to_string_(green);
   27|      1|    colors_[level::warn] = to_string_(yellow_bold);
   28|      1|    colors_[level::err] = to_string_(red_bold);
   29|      1|    colors_[level::critical] = to_string_(bold_on_red);
   30|      1|    colors_[level::off] = to_string_(reset);
   31|      1|}
_ZN6spdlog5sinks14ansicolor_sinkINS_7details13console_mutexEE14set_color_modeENS_10color_modeE:
   97|      1|{
   98|      1|    switch (mode)
   99|      1|    {
  100|      0|    case color_mode::always:
  ------------------
  |  Branch (100:5): [True: 0, False: 1]
  ------------------
  101|      0|        should_do_colors_ = true;
  102|      0|        return;
  103|      1|    case color_mode::automatic:
  ------------------
  |  Branch (103:5): [True: 1, False: 0]
  ------------------
  104|      1|        should_do_colors_ = details::os::in_terminal(target_file_) && details::os::is_color_terminal();
  ------------------
  |  Branch (104:29): [True: 0, False: 1]
  |  Branch (104:71): [True: 0, False: 0]
  ------------------
  105|      1|        return;
  106|      0|    case color_mode::never:
  ------------------
  |  Branch (106:5): [True: 0, False: 1]
  ------------------
  107|      0|        should_do_colors_ = false;
  108|      0|        return;
  109|      0|    default:
  ------------------
  |  Branch (109:5): [True: 0, False: 1]
  ------------------
  110|      0|        should_do_colors_ = false;
  111|      1|    }
  112|      1|}
_ZN6spdlog5sinks14ansicolor_sinkINS_7details13console_mutexEE10to_string_ERKN3fmt2v917basic_string_viewIcEE:
  128|      7|{
  129|      7|    return std::string(sv.data(), sv.size());
  130|      7|}

_ZN6spdlog5sinks14ansicolor_sinkINS_7details13console_mutexEED2Ev:
   30|      1|    ~ansicolor_sink() override = default;

_ZN6spdlog5sinks9base_sinkINSt3__15mutexEEC2Ev:
   18|      1|{}
_ZN6spdlog5sinks9base_sinkINSt3__15mutexEE13set_formatterENS2_10unique_ptrINS_9formatterENS2_14default_deleteIS6_EEEE:
   48|  1.28k|{
   49|  1.28k|    std::lock_guard<Mutex> lock(mutex_);
   50|  1.28k|    set_formatter_(std::move(sink_formatter));
   51|  1.28k|}
_ZN6spdlog5sinks9base_sinkINSt3__15mutexEE14set_formatter_ENS2_10unique_ptrINS_9formatterENS2_14default_deleteIS6_EEEE:
   61|  1.28k|{
   62|  1.28k|    formatter_ = std::move(sink_formatter);
   63|  1.28k|}

_ZN6spdlog5sinks9base_sinkINSt3__15mutexEED2Ev:
   24|      1|    ~base_sink() override = default;

_ZN6spdlog5sinks15basic_file_sinkINSt3__15mutexEEC2ERKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEbRKNS_19file_event_handlersE:
   19|      1|{
   20|      1|    file_helper_.open(filename, truncate);
   21|      1|}

_ZN6spdlog15basic_logger_mtINS_19synchronous_factoryEEENSt3__110shared_ptrINS_6loggerEEERKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEESD_bRKNS_19file_event_handlersE:
   45|      1|{
   46|      1|    return Factory::template create<sinks::basic_file_sink_mt>(logger_name, filename, truncate, event_handlers);
   47|      1|}

_ZN6spdlog5sinks4sinkD2Ev:
   15|      2|    virtual ~sink() = default;

_ZN6spdlog18set_default_loggerENSt3__110shared_ptrINS_6loggerEEE:
  116|      1|{
  117|      1|    details::registry::instance().set_default_logger(std::move(default_logger));
  118|      1|}
_ZN6spdlog11set_patternENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEENS_17pattern_time_typeE:
   31|  1.28k|{
   32|  1.28k|    set_formatter(std::unique_ptr<spdlog::formatter>(new pattern_formatter(std::move(pattern), time_type)));
   33|  1.28k|}
_ZN6spdlog13set_formatterENSt3__110unique_ptrINS_9formatterENS0_14default_deleteIS2_EEEE:
   26|  1.28k|{
   27|  1.28k|    details::registry::instance().set_formatter(std::move(formatter));
   28|  1.28k|}

