_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
32970|  4.46k|    {
32971|  4.46k|        return m_data.m_type == value_t::discarded;
32972|  4.46k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
32842|  18.5k|    {
32843|  18.5k|        string_t result;
32844|  18.5k|        detail::output_string_adapter<char, string_t> string_adapter(result);
32845|       |
32846|  18.5k|        if (indent >= 0)
  ------------------
  |  Branch (32846:13): [True: 0, False: 18.5k]
  ------------------
32847|      0|        {
32848|      0|            serializer s(string_adapter, indent_char,
32849|      0|                         true, ensure_ascii, static_cast<std::size_t>(indent), error_handler);
32850|      0|            s.dump(*this);
32851|      0|        }
32852|  18.5k|        else
32853|  18.5k|        {
32854|  18.5k|            serializer s(string_adapter, indent_char,
32855|  18.5k|                         false, ensure_ascii, 0, error_handler);
32856|  18.5k|            s.dump(*this);
32857|  18.5k|        }
32858|       |
32859|  18.5k|        return result;
32860|  18.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
22821|  18.5k|        : str(s)
22822|  18.5k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
22716|  18.5k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
22714|  18.5k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
22830|  20.3k|    {
22831|  20.3k|        str.append(s, length);
22832|  20.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEC2ERNS1_23output_adapter_protocolIcEEcbbmNS1_15error_handler_tE:
28044|  18.5k|        : o(&s)
28045|  18.5k|        , indent_char(ichar)
28046|  18.5k|        , pretty_print(pretty_print_)
28047|  18.5k|        , ensure_ascii(ensure_ascii_)
28048|  18.5k|        , indent_step(indent_step_)
28049|  18.5k|        , error_handler(error_handler_)
28050|  18.5k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE4dumpERKSG_m:
28079|  18.5k|    {
28080|  18.5k|        dump_internal(val, current_indent);
28081|  18.5k|        flush();
28082|  18.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13dump_internalERKSG_mm:
28105|   597k|    {
28106|   597k|        switch (val.m_data.m_type)
28107|   597k|        {
28108|  30.5k|            case value_t::object:
  ------------------
  |  Branch (28108:13): [True: 30.5k, False: 566k]
  ------------------
28109|  30.5k|            {
28110|  30.5k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|  30.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.94k, False: 26.6k]
  |  |  ------------------
  ------------------
28111|  3.94k|                {
28112|  3.94k|                    dump_iteratively(val, current_indent);
28113|  3.94k|                    return;
28114|  3.94k|                }
28115|       |
28116|  26.6k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28116:21): [True: 6.69k, False: 19.9k]
  ------------------
28117|  6.69k|                {
28118|  6.69k|                    put_literal("{}");
28119|  6.69k|                    return;
28120|  6.69k|                }
28121|       |
28122|  19.9k|                if (pretty_print)
  ------------------
  |  Branch (28122:21): [True: 0, False: 19.9k]
  ------------------
28123|      0|                {
28124|      0|                    put_literal("{\n");
28125|       |
28126|       |                    // variable to hold indentation for recursive calls
28127|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28128|       |
28129|       |                    // first n-1 elements
28130|      0|                    auto i = val.m_data.m_value.object->cbegin();
28131|      0|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28131:47): [True: 0, False: 0]
  ------------------
28132|      0|                    {
28133|      0|                        put_indent(new_indent);
28134|      0|                        put_char('"');
28135|      0|                        dump_escaped(i->first);
28136|      0|                        put_literal("\": ");
28137|      0|                        dump_internal(i->second, new_indent, depth + 1);
28138|      0|                        put_literal(",\n");
28139|      0|                    }
28140|       |
28141|       |                    // last element
28142|      0|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28142:21): [True: 0, False: 0]
  ------------------
28143|      0|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28143:21): [True: 0, False: 0]
  ------------------
28144|      0|                    put_indent(new_indent);
28145|      0|                    put_char('"');
28146|      0|                    dump_escaped(i->first);
28147|      0|                    put_literal("\": ");
28148|      0|                    dump_internal(i->second, new_indent, depth + 1);
28149|       |
28150|      0|                    put_char('\n');
28151|      0|                    put_indent(current_indent);
28152|      0|                    put_char('}');
28153|      0|                }
28154|  19.9k|                else
28155|  19.9k|                {
28156|  19.9k|                    put_char('{');
28157|       |
28158|       |                    // first n-1 elements
28159|  19.9k|                    auto i = val.m_data.m_value.object->cbegin();
28160|  49.6k|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28160:47): [True: 29.6k, False: 19.9k]
  ------------------
28161|  29.6k|                    {
28162|  29.6k|                        put_char('"');
28163|  29.6k|                        dump_escaped(i->first);
28164|  29.6k|                        put_literal("\":");
28165|  29.6k|                        dump_internal(i->second, current_indent, depth + 1);
28166|  29.6k|                        put_char(',');
28167|  29.6k|                    }
28168|       |
28169|       |                    // last element
28170|  19.9k|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  19.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28170:21): [True: 19.9k, False: 0]
  ------------------
28171|  19.9k|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  19.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28171:21): [True: 19.9k, False: 0]
  ------------------
28172|  19.9k|                    put_char('"');
28173|  19.9k|                    dump_escaped(i->first);
28174|  19.9k|                    put_literal("\":");
28175|  19.9k|                    dump_internal(i->second, current_indent, depth + 1);
28176|       |
28177|  19.9k|                    put_char('}');
28178|  19.9k|                }
28179|       |
28180|  19.9k|                return;
28181|  19.9k|            }
28182|       |
28183|   286k|            case value_t::array:
  ------------------
  |  Branch (28183:13): [True: 286k, False: 310k]
  ------------------
28184|   286k|            {
28185|   286k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|   286k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4.23k, False: 282k]
  |  |  ------------------
  ------------------
28186|  4.23k|                {
28187|  4.23k|                    dump_iteratively(val, current_indent);
28188|  4.23k|                    return;
28189|  4.23k|                }
28190|       |
28191|   282k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28191:21): [True: 12.1k, False: 269k]
  ------------------
28192|  12.1k|                {
28193|  12.1k|                    put_literal("[]");
28194|  12.1k|                    return;
28195|  12.1k|                }
28196|       |
28197|   269k|                if (pretty_print)
  ------------------
  |  Branch (28197:21): [True: 0, False: 269k]
  ------------------
28198|      0|                {
28199|      0|                    put_literal("[\n");
28200|       |
28201|       |                    // variable to hold indentation for recursive calls
28202|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28203|       |
28204|       |                    // first n-1 elements
28205|      0|                    for (auto i = val.m_data.m_value.array->cbegin();
28206|      0|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28206:29): [True: 0, False: 0]
  ------------------
28207|      0|                    {
28208|      0|                        put_indent(new_indent);
28209|      0|                        dump_internal(*i, new_indent, depth + 1);
28210|      0|                        put_literal(",\n");
28211|      0|                    }
28212|       |
28213|       |                    // last element
28214|      0|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28214:21): [True: 0, False: 0]
  ------------------
28215|      0|                    put_indent(new_indent);
28216|      0|                    dump_internal(val.m_data.m_value.array->back(), new_indent, depth + 1);
28217|       |
28218|      0|                    put_char('\n');
28219|      0|                    put_indent(current_indent);
28220|      0|                    put_char(']');
28221|      0|                }
28222|   269k|                else
28223|   269k|                {
28224|   269k|                    put_char('[');
28225|       |
28226|       |                    // first n-1 elements
28227|   269k|                    for (auto i = val.m_data.m_value.array->cbegin();
28228|   529k|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28228:29): [True: 259k, False: 269k]
  ------------------
28229|   259k|                    {
28230|   259k|                        dump_internal(*i, current_indent, depth + 1);
28231|   259k|                        put_char(',');
28232|   259k|                    }
28233|       |
28234|       |                    // last element
28235|   269k|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|   269k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28235:21): [True: 269k, False: 0]
  ------------------
28236|   269k|                    dump_internal(val.m_data.m_value.array->back(), current_indent, depth + 1);
28237|       |
28238|   269k|                    put_char(']');
28239|   269k|                }
28240|       |
28241|   269k|                return;
28242|   269k|            }
28243|       |
28244|   269k|            case value_t::string:
  ------------------
  |  Branch (28244:13): [True: 106k, False: 490k]
  ------------------
28245|   106k|            case value_t::binary:
  ------------------
  |  Branch (28245:13): [True: 0, False: 597k]
  ------------------
28246|   168k|            case value_t::boolean:
  ------------------
  |  Branch (28246:13): [True: 61.7k, False: 535k]
  ------------------
28247|   198k|            case value_t::number_integer:
  ------------------
  |  Branch (28247:13): [True: 29.4k, False: 567k]
  ------------------
28248|   233k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28248:13): [True: 35.7k, False: 561k]
  ------------------
28249|   269k|            case value_t::number_float:
  ------------------
  |  Branch (28249:13): [True: 35.9k, False: 561k]
  ------------------
28250|   269k|            case value_t::discarded:
  ------------------
  |  Branch (28250:13): [True: 0, False: 597k]
  ------------------
28251|   280k|            case value_t::null:
  ------------------
  |  Branch (28251:13): [True: 10.5k, False: 586k]
  ------------------
28252|   280k|            default:
  ------------------
  |  Branch (28252:13): [True: 0, False: 597k]
  ------------------
28253|   280k|                dump_scalar(val, current_indent);
28254|   280k|                return;
28255|   597k|        }
28256|   597k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8044|  1.01M|{
 8045|  1.01M|    return 128;
 8046|  1.01M|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_iterativelyERKSG_m:
28270|  8.18k|    {
28271|       |        // Scalars, empty containers and binary values are written by dump_value
28272|       |        // alone, so nothing is allocated for them: only a container with
28273|       |        // elements is ever pushed.
28274|  8.18k|        std::vector<dump_frame> stack;
28275|       |
28276|  8.18k|        dump_value(val, current_indent, stack);
28277|       |
28278|   385k|        while (!stack.empty())
  ------------------
  |  Branch (28278:16): [True: 377k, False: 8.18k]
  ------------------
28279|   377k|        {
28280|   377k|            dump_frame& frame = stack.back();
28281|       |
28282|   377k|            if (frame.value->m_data.m_type == value_t::object)
  ------------------
  |  Branch (28282:17): [True: 33.6k, False: 343k]
  ------------------
28283|  33.6k|            {
28284|  33.6k|                const auto* object = frame.value->m_data.m_value.object;
28285|       |
28286|  33.6k|                if (frame.object_it == object->cend())
  ------------------
  |  Branch (28286:21): [True: 8.17k, False: 25.5k]
  ------------------
28287|  8.17k|                {
28288|  8.17k|                    if (pretty_print)
  ------------------
  |  Branch (28288:25): [True: 0, False: 8.17k]
  ------------------
28289|      0|                    {
28290|      0|                        put_char('\n');
28291|      0|                        put_indent(frame.current_indent);
28292|      0|                    }
28293|       |
28294|  8.17k|                    put_char('}');
28295|  8.17k|                    stack.pop_back();
28296|  8.17k|                    continue;
28297|  8.17k|                }
28298|       |
28299|       |                // the separator goes in front of every element but the first,
28300|       |                // which puts exactly one between each pair and none at the end
28301|  25.5k|                if (frame.object_it != object->cbegin())
  ------------------
  |  Branch (28301:21): [True: 17.3k, False: 8.17k]
  ------------------
28302|  17.3k|                {
28303|  17.3k|                    if (pretty_print)
  ------------------
  |  Branch (28303:25): [True: 0, False: 17.3k]
  ------------------
28304|      0|                    {
28305|      0|                        put_literal(",\n");
28306|      0|                    }
28307|  17.3k|                    else
28308|  17.3k|                    {
28309|  17.3k|                        put_char(',');
28310|  17.3k|                    }
28311|  17.3k|                }
28312|       |
28313|  25.5k|                if (pretty_print)
  ------------------
  |  Branch (28313:21): [True: 0, False: 25.5k]
  ------------------
28314|      0|                {
28315|      0|                    put_indent(frame.child_indent);
28316|      0|                }
28317|       |
28318|  25.5k|                put_char('"');
28319|  25.5k|                dump_escaped(frame.object_it->first);
28320|       |
28321|  25.5k|                if (pretty_print)
  ------------------
  |  Branch (28321:21): [True: 0, False: 25.5k]
  ------------------
28322|      0|                {
28323|      0|                    put_literal("\": ");
28324|      0|                }
28325|  25.5k|                else
28326|  25.5k|                {
28327|  25.5k|                    put_literal("\":");
28328|  25.5k|                }
28329|       |
28330|  25.5k|                const BasicJsonType& element = frame.object_it->second;
28331|  25.5k|                ++frame.object_it;
28332|       |
28333|       |                // read everything needed from the frame before this: entering a
28334|       |                // container pushes another one and can move them all
28335|  25.5k|                const std::size_t element_indent = frame.child_indent;
28336|  25.5k|                dump_value(element, element_indent, stack);
28337|  25.5k|            }
28338|   343k|            else
28339|   343k|            {
28340|   343k|                const auto* array = frame.value->m_data.m_value.array;
28341|       |
28342|   343k|                if (frame.array_it == array->cend())
  ------------------
  |  Branch (28342:21): [True: 159k, False: 184k]
  ------------------
28343|   159k|                {
28344|   159k|                    if (pretty_print)
  ------------------
  |  Branch (28344:25): [True: 0, False: 159k]
  ------------------
28345|      0|                    {
28346|      0|                        put_char('\n');
28347|      0|                        put_indent(frame.current_indent);
28348|      0|                    }
28349|       |
28350|   159k|                    put_char(']');
28351|   159k|                    stack.pop_back();
28352|   159k|                    continue;
28353|   159k|                }
28354|       |
28355|   184k|                if (frame.array_it != array->cbegin())
  ------------------
  |  Branch (28355:21): [True: 25.2k, False: 159k]
  ------------------
28356|  25.2k|                {
28357|  25.2k|                    if (pretty_print)
  ------------------
  |  Branch (28357:25): [True: 0, False: 25.2k]
  ------------------
28358|      0|                    {
28359|      0|                        put_literal(",\n");
28360|      0|                    }
28361|  25.2k|                    else
28362|  25.2k|                    {
28363|  25.2k|                        put_char(',');
28364|  25.2k|                    }
28365|  25.2k|                }
28366|       |
28367|   184k|                if (pretty_print)
  ------------------
  |  Branch (28367:21): [True: 0, False: 184k]
  ------------------
28368|      0|                {
28369|      0|                    put_indent(frame.child_indent);
28370|      0|                }
28371|       |
28372|   184k|                const BasicJsonType& element = *frame.array_it;
28373|   184k|                ++frame.array_it;
28374|       |
28375|       |                // see above
28376|   184k|                const std::size_t element_indent = frame.child_indent;
28377|   184k|                dump_value(element, element_indent, stack);
28378|   184k|            }
28379|   377k|        }
28380|  8.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_valueERKSG_mRNS6_INSH_10dump_frameENSA_ISK_EEEE:
28418|   218k|    {
28419|   218k|        switch (val.m_data.m_type)
28420|   218k|        {
28421|  17.7k|            case value_t::object:
  ------------------
  |  Branch (28421:13): [True: 17.7k, False: 200k]
  ------------------
28422|  17.7k|            {
28423|  17.7k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28423:21): [True: 9.52k, False: 8.17k]
  ------------------
28424|  9.52k|                {
28425|  9.52k|                    put_literal("{}");
28426|  9.52k|                    return;
28427|  9.52k|                }
28428|       |
28429|  8.17k|                std::size_t child_indent = current_indent;
28430|       |
28431|  8.17k|                if (pretty_print)
  ------------------
  |  Branch (28431:21): [True: 0, False: 8.17k]
  ------------------
28432|      0|                {
28433|      0|                    put_literal("{\n");
28434|      0|                    child_indent = next_indent(current_indent, indent_step);
28435|      0|                }
28436|  8.17k|                else
28437|  8.17k|                {
28438|  8.17k|                    put_char('{');
28439|  8.17k|                }
28440|       |
28441|  8.17k|                stack.emplace_back(&val, current_indent, child_indent);
28442|  8.17k|                stack.back().object_it = val.m_data.m_value.object->cbegin();
28443|  8.17k|                return;
28444|  17.7k|            }
28445|       |
28446|   161k|            case value_t::array:
  ------------------
  |  Branch (28446:13): [True: 161k, False: 56.3k]
  ------------------
28447|   161k|            {
28448|   161k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28448:21): [True: 2.61k, False: 159k]
  ------------------
28449|  2.61k|                {
28450|  2.61k|                    put_literal("[]");
28451|  2.61k|                    return;
28452|  2.61k|                }
28453|       |
28454|   159k|                std::size_t child_indent = current_indent;
28455|       |
28456|   159k|                if (pretty_print)
  ------------------
  |  Branch (28456:21): [True: 0, False: 159k]
  ------------------
28457|      0|                {
28458|      0|                    put_literal("[\n");
28459|      0|                    child_indent = next_indent(current_indent, indent_step);
28460|      0|                }
28461|   159k|                else
28462|   159k|                {
28463|   159k|                    put_char('[');
28464|   159k|                }
28465|       |
28466|   159k|                stack.emplace_back(&val, current_indent, child_indent);
28467|   159k|                stack.back().array_it = val.m_data.m_value.array->cbegin();
28468|   159k|                return;
28469|   161k|            }
28470|       |
28471|  11.5k|            case value_t::string:
  ------------------
  |  Branch (28471:13): [True: 11.5k, False: 206k]
  ------------------
28472|  11.5k|            case value_t::binary:
  ------------------
  |  Branch (28472:13): [True: 0, False: 218k]
  ------------------
28473|  16.6k|            case value_t::boolean:
  ------------------
  |  Branch (28473:13): [True: 5.07k, False: 212k]
  ------------------
28474|  21.2k|            case value_t::number_integer:
  ------------------
  |  Branch (28474:13): [True: 4.57k, False: 213k]
  ------------------
28475|  29.4k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28475:13): [True: 8.25k, False: 209k]
  ------------------
28476|  34.4k|            case value_t::number_float:
  ------------------
  |  Branch (28476:13): [True: 4.93k, False: 213k]
  ------------------
28477|  34.4k|            case value_t::discarded:
  ------------------
  |  Branch (28477:13): [True: 0, False: 218k]
  ------------------
28478|  38.6k|            case value_t::null:
  ------------------
  |  Branch (28478:13): [True: 4.20k, False: 213k]
  ------------------
28479|  38.6k|            default:
  ------------------
  |  Branch (28479:13): [True: 0, False: 218k]
  ------------------
28480|  38.6k|                dump_scalar(val, current_indent);
28481|  38.6k|                return;
28482|   218k|        }
28483|   218k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_frameC2EPKSG_mm:
28388|   167k|            : value(value_)
28389|   167k|            , current_indent(current_indent_)
28390|   167k|            , child_indent(child_indent_)
28391|   167k|        {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
29090|   106k|    {
29091|   106k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|   106k|        constexpr std::size_t length = N - 1;
29094|   106k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|   106k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|   106k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 138, False: 105k]
  |  |  ------------------
  ------------------
29097|    138|        {
29098|    138|            flush();
29099|    138|        }
29100|   106k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|   106k|        write_buffer_pos += length;
29102|   106k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
29019|  1.55M|    {
29020|  1.55M|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1667|  1.55M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 738, False: 1.55M]
  |  |  ------------------
  ------------------
29021|    738|        {
29022|    738|            flush();
29023|    738|        }
29024|  1.55M|        write_buffer[write_buffer_pos++] = c;
29025|  1.55M|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
28657|   193k|    {
28658|       |        // dispatch once here rather than test the flag inside the loop: it does
28659|       |        // not change while a string is written, and folding it lets each of the
28660|       |        // two scanners be inlined into a loop of its own
28661|   193k|        if (ensure_ascii)
  ------------------
  |  Branch (28661:13): [True: 0, False: 193k]
  ------------------
28662|      0|        {
28663|      0|            dump_escaped_impl<true>(s);
28664|      0|        }
28665|   193k|        else
28666|   193k|        {
28667|   193k|            dump_escaped_impl<false>(s);
28668|   193k|        }
28669|   193k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9376|  86.0k|{
 9377|  86.0k|#if defined(_MSC_VER) || defined(__x86_64__) || defined(__i386__) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
 9378|       |    // the byte order already matches (all MSVC targets are little-endian)
 9379|  86.0k|    std::uint64_t result = 0;
 9380|  86.0k|    std::memcpy(&result, b, sizeof(result));
 9381|  86.0k|    return result;
 9382|       |#else
 9383|       |    return static_cast<std::uint64_t>(b[0]) | (static_cast<std::uint64_t>(b[1]) << 8u)
 9384|       |           | (static_cast<std::uint64_t>(b[2]) << 16u) | (static_cast<std::uint64_t>(b[3]) << 24u)
 9385|       |           | (static_cast<std::uint64_t>(b[4]) << 32u) | (static_cast<std::uint64_t>(b[5]) << 40u)
 9386|       |           | (static_cast<std::uint64_t>(b[6]) << 48u) | (static_cast<std::uint64_t>(b[7]) << 56u);
 9387|       |#endif
 9388|  86.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9319|  85.1k|{
 9320|  85.1k|#if defined(__GNUC__) || defined(__clang__)
 9321|  85.1k|    return __builtin_ctzll(x);
 9322|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9323|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9324|       |    _BitScanForward64(&index, x);
 9325|       |    return static_cast<int>(index);
 9326|       |#else
 9327|       |    int n = 0;
 9328|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9329|       |    {
 9330|       |        if ((x << (64 - shift)) == 0)
 9331|       |        {
 9332|       |            n += shift;
 9333|       |            x >>= shift;
 9334|       |        }
 9335|       |    }
 9336|       |    return n;
 9337|       |#endif
 9338|  85.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
29115|  83.8k|    {
29116|  83.8k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  83.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 83.8k, False: 0]
  ------------------
29117|  83.8k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  83.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 83.8k, False: 0]
  ------------------
29118|       |
29119|  83.8k|        const char* const s = str.data() + start;
29120|  83.8k|        const std::size_t length = end - start;
29121|       |
29122|  83.8k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  83.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 83.8k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  83.8k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  83.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 24, False: 83.8k]
  |  |  ------------------
  ------------------
29129|     24|        {
29130|     24|            flush();
29131|     24|        }
29132|  83.8k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  83.8k|        write_buffer_pos += length;
29134|  83.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
29208|   220k|    {
29209|   220k|        static const std::array<std::array<char, 8>, 0x60> escapes =
29210|   220k|        {
29211|   220k|            {
29212|   220k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
29213|   220k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
29214|   220k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
29215|   220k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
29216|   220k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
29217|   220k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
29218|   220k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
29219|   220k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
29220|   220k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
29221|   220k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
29222|   220k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
29223|   220k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
29224|   220k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
29225|   220k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
29226|   220k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
29227|   220k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
29228|   220k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
29229|   220k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
29230|   220k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
29231|   220k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
29232|   220k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
29233|   220k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
29234|   220k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
29235|   220k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
29236|   220k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
29237|   220k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
29238|   220k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
29239|   220k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
29240|   220k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
29241|   220k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
29242|   220k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
29243|   220k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
29244|   220k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
29245|   220k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
29246|   220k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
29247|   220k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
29248|   220k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
29249|   220k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
29250|   220k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
29251|   220k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
29252|   220k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
29253|   220k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
29254|   220k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
29255|   220k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
29256|   220k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
29257|   220k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
29258|   220k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
29259|   220k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
29260|   220k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
29261|   220k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
29262|   220k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
29263|   220k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
29264|   220k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
29265|   220k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
29266|   220k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
29267|   220k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
29268|   220k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
29269|   220k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
29270|   220k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
29271|   220k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
29272|   220k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
29273|   220k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
29274|   220k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
29275|   220k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
29276|   220k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
29277|   220k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
29278|   220k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
29279|   220k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
29280|   220k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
29281|   220k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
29282|   220k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
29283|   220k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
29284|   220k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
29285|   220k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
29286|   220k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
29287|   220k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
29288|   220k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
29289|   220k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
29290|   220k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
29291|   220k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
29292|   220k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
29293|   220k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
29294|   220k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
29295|   220k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
29296|   220k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
29297|   220k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
29298|   220k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
29299|   220k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
29300|   220k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
29301|   220k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
29302|   220k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
29303|   220k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
29304|   220k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
29305|   220k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
29306|   220k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
29307|   220k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
29308|   220k|            }
29309|   220k|        };
29310|   220k|        return escapes;
29311|   220k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5228|  26.6k|{
 5229|  26.6k|    return str.size() + concat_length(rest...);
 5230|  26.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5204|  34.8k|{
 5205|  34.8k|    return 0;
 5206|  34.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  16.4k|{
 5282|  16.4k|    out.append(std::forward<Arg>(arg));
 5283|  16.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  16.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5234|  34.8k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5446|  8.23k|    {
 5447|  8.23k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5448|  8.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5318|  8.23k|{
 5319|  8.23k|    OutStringType str;
 5320|  8.23k|    str.reserve(concat_length(args...));
 5321|  8.23k|    concat_into(str, std::forward<Args>(args)...);
 5322|  8.23k|    return str;
 5323|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5222|  8.23k|{
 5223|  8.23k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5216|  8.23k|{
 5217|  8.23k|    return 1 + concat_length(rest...);
 5218|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5222|  8.23k|{
 5223|  8.23k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA17_KcJRKS9_cS9_RA3_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJS9_RA3_KcETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISE_SF_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5290|  8.23k|{
 5291|  8.23k|    out += std::forward<Arg>(arg);
 5292|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5451|  8.23k|    {
 5452|  8.23k|        return "";
 5453|  8.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5443|  8.23k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5434|  5.49k|    {
 5435|  5.49k|        return m.what();
 5436|  5.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  18.3k|{
 5223|  18.3k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  18.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA5_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  1.35k|{
 5282|  1.35k|    out.append(std::forward<Arg>(arg));
 5283|  1.35k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.35k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5281|  10.1k|{
 5282|  10.1k|    out.append(std::forward<Arg>(arg));
 5283|  10.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  10.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 6692|  3.82k|{
 6693|  3.82k|    std::string result = "00";
 6694|  3.82k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 6695|  3.82k|    result[0] = nibble_to_hex[byte / 16];
 6696|  3.82k|    result[1] = nibble_to_hex[byte % 16];
 6697|  3.82k|    return result;
 6698|  3.82k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_escaped_implILb0EEEvRKSC_:
28684|   193k|    {
28685|   193k|        std::uint32_t codepoint{};
28686|   193k|        std::uint8_t state = UTF8_ACCEPT;
28687|   193k|        std::size_t bytes = 0;  // number of bytes written to string_buffer
28688|       |
28689|       |        // number of bytes written at the point of the last valid byte
28690|   193k|        std::size_t bytes_after_last_accept = 0;
28691|   193k|        std::size_t undumped_chars = 0;
28692|       |
28693|   414k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (28693:33): [True: 294k, False: 120k]
  ------------------
28694|   294k|        {
28695|       |            // Fast path: at a character boundary (state == UTF8_ACCEPT),
28696|       |            // bulk-copy the longest run of bytes that need no escaping using a
28697|       |            // SWAR scanner shared with the lexer's contiguous path. The scanner
28698|       |            // stops exactly at the first byte dump_escaped would handle
28699|       |            // individually, so that byte is left to the byte-at-a-time path
28700|       |            // below, keeping escaping output and error diagnostics unchanged.
28701|       |            //
28702|       |            // - EnsureAscii == false: string_bulk_run() copies ordinary bytes
28703|       |            //   and complete well-formed UTF-8, stopping at a quote, backslash,
28704|       |            //   control character (< 0x20), or ill-formed/truncated sequence.
28705|       |            // - EnsureAscii == true: only printable ASCII may be copied
28706|       |            //   verbatim; find_ascii_copyable_run() additionally stops at 0x7F
28707|       |            //   and every non-ASCII byte (>= 0x80), which must be \u-escaped.
28708|   294k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (28708:17): [True: 294k, False: 0]
  ------------------
28709|   294k|            {
28710|   294k|                const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
28711|       |                // A run can only be non-empty when the very first byte is one
28712|       |                // the scanner may copy, so test that single byte before paying
28713|       |                // for the scan. Without it, text whose characters all have to be
28714|       |                // escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
28715|       |                // runs the scanner once per character only to be told zero.
28716|   294k|                std::size_t run = 0;
28717|   294k|                if (!EnsureAscii)
  ------------------
  |  Branch (28717:21): [True: 294k, Folded]
  ------------------
28718|   294k|                {
28719|   294k|                    run = string_bulk_run(data + i, s.size() - i);
28720|   294k|                }
28721|      0|                else if (is_ascii_copyable(data[i]))
  ------------------
  |  Branch (28721:26): [True: 0, False: 0]
  ------------------
28722|      0|                {
28723|      0|                    run = find_ascii_copyable_run(data + i, s.size() - i);
28724|      0|                }
28725|   294k|                if (run != 0)
  ------------------
  |  Branch (28725:21): [True: 83.8k, False: 210k]
  ------------------
28726|  83.8k|                {
28727|       |                    // emit any bytes still pending in string_buffer first to
28728|       |                    // preserve output order, then write the run directly
28729|  83.8k|                    if (bytes != 0)
  ------------------
  |  Branch (28729:25): [True: 0, False: 83.8k]
  ------------------
28730|      0|                    {
28731|      0|                        put_buffer(string_buffer, bytes);
28732|      0|                        bytes = 0;
28733|      0|                    }
28734|  83.8k|                    put_string(s, i, i + run);
28735|  83.8k|                    bytes_after_last_accept = 0;
28736|  83.8k|                    undumped_chars = 0;
28737|  83.8k|                    i += run;
28738|  83.8k|                    if (i >= s.size())
  ------------------
  |  Branch (28738:25): [True: 73.6k, False: 10.2k]
  ------------------
28739|  73.6k|                    {
28740|  73.6k|                        break;
28741|  73.6k|                    }
28742|  83.8k|                }
28743|       |
28744|       |                // A byte below 0x60 is a complete code point and needs no
28745|       |                // UTF-8 decoding. The scanner stops only at a control
28746|       |                // character, a quote, or a backslash in that range, so look up
28747|       |                // its escape sequence and write all 8 bytes of the table entry
28748|       |                // straight into the write buffer; only the length stored in the
28749|       |                // last byte of the entry is kept.
28750|   220k|                if (data[i] < 0x60)
  ------------------
  |  Branch (28750:21): [True: 220k, False: 0]
  ------------------
28751|   220k|                {
28752|       |                    // emit any bytes still pending in string_buffer first to
28753|       |                    // preserve output order
28754|   220k|                    if (bytes != 0)
  ------------------
  |  Branch (28754:25): [True: 0, False: 220k]
  ------------------
28755|      0|                    {
28756|      0|                        put_buffer(string_buffer, bytes);
28757|      0|                        bytes = 0;
28758|      0|                    }
28759|   220k|                    const auto& escape = ascii_escapes()[data[i]];
28760|   220k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1667|   220k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 162, False: 220k]
  |  |  ------------------
  ------------------
28761|    162|                    {
28762|    162|                        flush();
28763|    162|                    }
28764|   220k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
28765|   220k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
28766|   220k|                    bytes_after_last_accept = 0;
28767|   220k|                    undumped_chars = 0;
28768|   220k|                    continue;
28769|   220k|                }
28770|   220k|            }
28771|       |
28772|      0|            const auto byte = static_cast<std::uint8_t>(s[i]);
28773|       |
28774|      0|            switch (decode(state, codepoint, byte))
28775|      0|            {
28776|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (28776:17): [True: 0, False: 0]
  ------------------
28777|      0|                {
28778|       |                    // the code point is at least 0x60 (smaller ones are handled
28779|       |                    // above) and is not printable ASCII (which the scanner
28780|       |                    // copies): it is DEL (0x7F) under EnsureAscii or a non-ASCII
28781|       |                    // character
28782|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28782:25): [Folded, False: 0]
  ------------------
28783|      0|                    {
28784|      0|                        JSON_ASSERT(codepoint >= 0x7F);
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28784:25): [True: 0, False: 0]
  ------------------
28785|      0|                        if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28785:29): [True: 0, False: 0]
  ------------------
28786|      0|                        {
28787|       |                            // this character was buffered as raw bytes below
28788|       |                            // in case it turned out to be part of an
28789|       |                            // ill-formed sequence (which is kept as is); now
28790|       |                            // that it decoded to a well-formed code point,
28791|       |                            // undo that and \u-escape it like any other
28792|       |                            // character instead
28793|      0|                            bytes = bytes_after_last_accept;
28794|      0|                        }
28795|      0|                        if (codepoint <= 0xFFFF)
  ------------------
  |  Branch (28795:29): [True: 0, False: 0]
  ------------------
28796|      0|                        {
28797|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(codepoint));
28798|      0|                        }
28799|      0|                        else
28800|      0|                        {
28801|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)));
28802|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
28803|      0|                        }
28804|      0|                    }
28805|      0|                    else
28806|      0|                    {
28807|       |                        // copy byte to buffer (all previous bytes of the
28808|       |                        // sequence have been copied in the default case below)
28809|      0|                        string_buffer[bytes++] = s[i];
28810|      0|                    }
28811|       |
28812|       |                    // write buffer and reset index; there must be 13 bytes
28813|       |                    // left, as this is the maximal number of bytes to be
28814|       |                    // written ("\uxxxx\uxxxx\0") for one code point
28815|      0|                    if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28815:25): [True: 0, False: 0]
  ------------------
28816|      0|                    {
28817|      0|                        put_buffer(string_buffer, bytes);
28818|      0|                        bytes = 0;
28819|      0|                    }
28820|       |
28821|       |                    // remember the byte position of this accept
28822|      0|                    bytes_after_last_accept = bytes;
28823|      0|                    undumped_chars = 0;
28824|      0|                    break;
28825|      0|                }
28826|       |
28827|      0|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (28827:17): [True: 0, False: 0]
  ------------------
28828|      0|                {
28829|      0|                    switch (error_handler)
28830|      0|                    {
28831|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (28831:25): [True: 0, False: 0]
  ------------------
28832|      0|                        {
28833|      0|                            JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("invalid UTF-8 byte at index ", std::to_string(i), ": 0x", detail::hex_byte(byte)), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28834|      0|                        }
28835|       |
28836|      0|                        case error_handler_t::ignore:
  ------------------
  |  Branch (28836:25): [True: 0, False: 0]
  ------------------
28837|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (28837:25): [True: 0, False: 0]
  ------------------
28838|      0|                        {
28839|       |                            // in case we saw this character the first time, we
28840|       |                            // would like to read it again, because the byte
28841|       |                            // may be OK for itself, but just not OK for the
28842|       |                            // previous sequence
28843|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28843:33): [True: 0, False: 0]
  ------------------
28844|      0|                            {
28845|      0|                                --i;
28846|      0|                            }
28847|       |
28848|       |                            // reset length buffer to the last accepted index;
28849|       |                            // thus removing/ignoring the invalid characters
28850|      0|                            bytes = bytes_after_last_accept;
28851|       |
28852|      0|                            if (error_handler == error_handler_t::replace)
  ------------------
  |  Branch (28852:33): [True: 0, False: 0]
  ------------------
28853|      0|                            {
28854|       |                                // add a replacement character
28855|      0|                                if (EnsureAscii)
  ------------------
  |  Branch (28855:37): [Folded, False: 0]
  ------------------
28856|      0|                                {
28857|      0|                                    string_buffer[bytes++] = '\\';
28858|      0|                                    string_buffer[bytes++] = 'u';
28859|      0|                                    string_buffer[bytes++] = 'f';
28860|      0|                                    string_buffer[bytes++] = 'f';
28861|      0|                                    string_buffer[bytes++] = 'f';
28862|      0|                                    string_buffer[bytes++] = 'd';
28863|      0|                                }
28864|      0|                                else
28865|      0|                                {
28866|      0|                                    string_buffer[bytes++] = '\xEF';
28867|      0|                                    string_buffer[bytes++] = '\xBF';
28868|      0|                                    string_buffer[bytes++] = '\xBD';
28869|      0|                                }
28870|       |
28871|       |                                // write buffer and reset index; there must be 13 bytes
28872|       |                                // left, as this is the maximal number of bytes to be
28873|       |                                // written ("\uxxxx\uxxxx\0") for one code point
28874|      0|                                if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28874:37): [True: 0, False: 0]
  ------------------
28875|      0|                                {
28876|      0|                                    put_buffer(string_buffer, bytes);
28877|      0|                                    bytes = 0;
28878|      0|                                }
28879|       |
28880|      0|                                bytes_after_last_accept = bytes;
28881|      0|                            }
28882|       |
28883|      0|                            undumped_chars = 0;
28884|       |
28885|       |                            // continue processing the string
28886|      0|                            state = UTF8_ACCEPT;
28887|      0|                            break;
28888|      0|                        }
28889|       |
28890|      0|                        case error_handler_t::keep:
  ------------------
  |  Branch (28890:25): [True: 0, False: 0]
  ------------------
28891|      0|                        {
28892|       |                            // the bytes of this (now abandoned) ill-formed
28893|       |                            // sequence seen so far are already buffered below
28894|       |                            // and are kept unchanged in the output
28895|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28895:33): [True: 0, False: 0]
  ------------------
28896|      0|                            {
28897|       |                                // the byte that ended the sequence may be OK
28898|       |                                // for itself (e.g., a quote that must still be
28899|       |                                // escaped, or the lead byte of a well-formed
28900|       |                                // code point), so read it again
28901|      0|                                --i;
28902|      0|                            }
28903|      0|                            else
28904|      0|                            {
28905|       |                                // a byte that cannot start a sequence (e.g.,
28906|       |                                // 0xFF or a stray continuation byte) is kept
28907|       |                                // as well
28908|      0|                                string_buffer[bytes++] = s[i];
28909|      0|                            }
28910|       |
28911|       |                            // write buffer and reset index; there must be 13 bytes
28912|       |                            // left, as this is the maximal number of bytes to be
28913|       |                            // written ("\uxxxx\uxxxx\0") for one code point
28914|      0|                            if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28914:33): [True: 0, False: 0]
  ------------------
28915|      0|                            {
28916|      0|                                put_buffer(string_buffer, bytes);
28917|      0|                                bytes = 0;
28918|      0|                            }
28919|       |
28920|      0|                            bytes_after_last_accept = bytes;
28921|      0|                            undumped_chars = 0;
28922|       |
28923|       |                            // continue processing the string
28924|      0|                            state = UTF8_ACCEPT;
28925|      0|                            break;
28926|      0|                        }
28927|       |
28928|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28928:25): [True: 0, False: 0]
  ------------------
28929|      0|                            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28929:29): [Folded, False: 0]
  ------------------
28930|      0|                    }
28931|      0|                    break;
28932|      0|                }
28933|       |
28934|      0|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (28934:17): [True: 0, False: 0]
  ------------------
28935|      0|                {
28936|      0|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28936:25): [True: 0, Folded]
  |  Branch (28936:41): [True: 0, False: 0]
  ------------------
28937|      0|                    {
28938|       |                        // code point will not be escaped (or will be kept as
28939|       |                        // is if it turns out to be ill-formed) - copy byte to
28940|       |                        // buffer; dropped again above if it decodes to a
28941|       |                        // well-formed code point that needs \u-escaping
28942|      0|                        string_buffer[bytes++] = s[i];
28943|      0|                    }
28944|      0|                    ++undumped_chars;
28945|      0|                    break;
28946|      0|                }
28947|      0|            }
28948|      0|        }
28949|       |
28950|       |        // we finished processing the string
28951|   193k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1666|   193k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 193k, False: 0]
  |  |  ------------------
  ------------------
28952|   193k|        {
28953|       |            // write buffer
28954|   193k|            if (bytes > 0)
  ------------------
  |  Branch (28954:17): [True: 0, False: 193k]
  ------------------
28955|      0|            {
28956|      0|                put_buffer(string_buffer, bytes);
28957|      0|            }
28958|   193k|        }
28959|      0|        else
28960|      0|        {
28961|       |            // we finish reading, but do not accept: string was incomplete
28962|      0|            switch (error_handler)
28963|      0|            {
28964|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (28964:17): [True: 0, False: 0]
  ------------------
28965|      0|                {
28966|      0|                    JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("incomplete UTF-8 string; last byte: 0x", detail::hex_byte(static_cast<std::uint8_t>(s[s.size() - 1]))), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28967|      0|                }
28968|       |
28969|      0|                case error_handler_t::ignore:
  ------------------
  |  Branch (28969:17): [True: 0, False: 0]
  ------------------
28970|      0|                {
28971|       |                    // write all accepted bytes
28972|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28973|      0|                    break;
28974|      0|                }
28975|       |
28976|      0|                case error_handler_t::replace:
  ------------------
  |  Branch (28976:17): [True: 0, False: 0]
  ------------------
28977|      0|                {
28978|       |                    // write all accepted bytes
28979|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28980|       |                    // add a replacement character
28981|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28981:25): [Folded, False: 0]
  ------------------
28982|      0|                    {
28983|      0|                        put_literal("\\ufffd");
28984|      0|                    }
28985|      0|                    else
28986|      0|                    {
28987|      0|                        put_literal("\xEF\xBF\xBD");
28988|      0|                    }
28989|      0|                    break;
28990|      0|                }
28991|       |
28992|      0|                case error_handler_t::keep:
  ------------------
  |  Branch (28992:17): [True: 0, False: 0]
  ------------------
28993|      0|                {
28994|       |                    // write the ill-formed trailing bytes as is; they were
28995|       |                    // buffered above regardless of EnsureAscii
28996|      0|                    put_buffer(string_buffer, bytes);
28997|      0|                    break;
28998|      0|                }
28999|       |
29000|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (29000:17): [True: 0, False: 0]
  ------------------
29001|       |                    JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29001:21): [Folded, False: 0]
  ------------------
29002|      0|            }
29003|      0|        }
29004|   193k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
11148|   294k|{
11149|       |#if defined(JSON_USE_SIMDUTF) && defined(JSON_HAS_CPP_17)
11150|       |    const std::size_t run = find_string_delimiter(data, n);
11151|       |    if (run != 0 && simdutf::validate_utf8(reinterpret_cast<const char*>(data), run))
11152|       |    {
11153|       |        return run;
11154|       |    }
11155|       |#endif
11156|   294k|    return scalar_string_bulk_run(data, n);
11157|   294k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
11084|   294k|{
11085|   294k|    std::size_t pos = 0;
11086|   303k|    while (pos < n)
  ------------------
  |  Branch (11086:12): [True: 296k, False: 7.27k]
  ------------------
11087|   296k|    {
11088|   296k|        pos += find_string_special(data + pos, n - pos);
11089|   296k|        if (pos >= n || data[pos] < 0x80u)
  ------------------
  |  Branch (11089:13): [True: 66.3k, False: 229k]
  |  Branch (11089:25): [True: 220k, False: 9.12k]
  ------------------
11090|   287k|        {
11091|   287k|            break; // end of buffer, or a quote/escape/control byte
11092|   287k|        }
11093|       |        // a run of multi-byte sequences (e.g. CJK text) is validated sequence
11094|       |        // by sequence without searching for the next special byte in between
11095|  9.12k|        do
11096|  12.4k|        {
11097|  12.4k|            const std::size_t seq = validate_one_utf8(data + pos, n - pos);
11098|  12.4k|            if (seq == 0)
  ------------------
  |  Branch (11098:17): [True: 0, False: 12.4k]
  ------------------
11099|      0|            {
11100|      0|                return pos; // ill-formed or truncated: let the byte path diagnose it
11101|      0|            }
11102|  12.4k|            pos += seq;
11103|  12.4k|        }
11104|  12.4k|        while (pos < n && data[pos] >= 0x80u);
  ------------------
  |  Branch (11104:16): [True: 5.16k, False: 7.27k]
  |  Branch (11104:27): [True: 3.31k, False: 1.85k]
  ------------------
11105|  9.12k|    }
11106|   294k|    return pos;
11107|   294k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
10910|   296k|{
10911|   296k|    std::size_t i = 0;
10912|   298k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (10912:12): [True: 86.0k, False: 212k]
  ------------------
10913|  86.0k|    {
10914|  86.0k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
10915|  86.0k|        if (special != 0)
  ------------------
  |  Branch (10915:13): [True: 83.6k, False: 2.34k]
  ------------------
10916|  83.6k|        {
10917|       |            // the lowest flagged byte is the first special one: the borrows of
10918|       |            // the subtractions can only flag bytes above a true hit
10919|  83.6k|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
10920|  83.6k|        }
10921|  86.0k|    }
10922|   296k|    for (; i < n; ++i)
  ------------------
  |  Branch (10922:12): [True: 230k, False: 66.3k]
  ------------------
10923|   230k|    {
10924|   230k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (10924:13): [True: 146k, False: 84.1k]
  ------------------
10925|   146k|        {
10926|   146k|            return i;
10927|   146k|        }
10928|   230k|    }
10929|  66.3k|    return n;
10930|   212k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
10895|  86.0k|{
10896|  86.0k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
10897|  86.0k|    constexpr std::uint64_t high = 0x8080808080808080ull;
10898|  86.0k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
10899|  86.0k|    const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\' (0x5C)
10900|  86.0k|    const std::uint64_t has_quote     = (q - ones) & ~q & high;
10901|  86.0k|    const std::uint64_t has_backslash = (b - ones) & ~b & high;
10902|  86.0k|    const std::uint64_t has_control   = (v - 0x2020202020202020ull) & ~v & high; // < 0x20
10903|  86.0k|    const std::uint64_t has_non_ascii = v & high;                                // >= 0x80
10904|  86.0k|    return has_quote | has_backslash | has_control | has_non_ascii;
10905|  86.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
10888|   230k|{
10889|   230k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (10889:12): [True: 1.22k, False: 229k]
  |  Branch (10889:25): [True: 972, False: 228k]
  |  Branch (10889:38): [True: 135k, False: 92.4k]
  |  Branch (10889:51): [True: 8.25k, False: 84.1k]
  ------------------
10890|   230k|}
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
10987|   164k|{
10988|   164k|    const unsigned char c0 = data[0];
10989|   164k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (10989:9): [True: 99.2k, False: 65.4k]
  |  Branch (10989:23): [True: 17.9k, False: 81.2k]
  ------------------
10990|  17.9k|    {
10991|  17.9k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (10991:13): [True: 17.9k, False: 12]
  |  Branch (10991:27): [True: 14.4k, False: 3.47k]
  |  Branch (10991:46): [True: 13.1k, False: 1.34k]
  ------------------
10992|  13.1k|        {
10993|  13.1k|            return 2;
10994|  13.1k|        }
10995|  17.9k|    }
10996|   146k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (10996:14): [True: 3.31k, False: 143k]
  ------------------
10997|  3.31k|    {
10998|  3.31k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (10998:13): [True: 3.28k, False: 27]
  |  Branch (10998:27): [True: 3.01k, False: 269]
  |  Branch (10998:46): [True: 2.80k, False: 207]
  |  Branch (10998:65): [True: 2.80k, False: 3]
  |  Branch (10998:84): [True: 2.79k, False: 12]
  ------------------
10999|  2.79k|        {
11000|  2.79k|            return 3;
11001|  2.79k|        }
11002|  3.31k|    }
11003|   143k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (11003:15): [True: 77.9k, False: 65.4k]
  |  Branch (11003:29): [True: 979, False: 76.9k]
  |  Branch (11003:44): [True: 388, False: 142k]
  |  Branch (11003:58): [True: 787, False: 141k]
  ------------------
11004|  2.15k|    {
11005|  2.15k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11005:13): [True: 2.12k, False: 30]
  |  Branch (11005:27): [True: 1.46k, False: 658]
  |  Branch (11005:46): [True: 1.13k, False: 330]
  |  Branch (11005:65): [True: 1.11k, False: 21]
  |  Branch (11005:84): [True: 1.10k, False: 15]
  ------------------
11006|  1.10k|        {
11007|  1.10k|            return 3;
11008|  1.10k|        }
11009|  2.15k|    }
11010|   141k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (11010:14): [True: 3.03k, False: 138k]
  ------------------
11011|  3.03k|    {
11012|  3.03k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11012:13): [True: 3.00k, False: 24]
  |  Branch (11012:27): [True: 2.78k, False: 217]
  |  Branch (11012:46): [True: 2.58k, False: 208]
  |  Branch (11012:65): [True: 2.57k, False: 3]
  |  Branch (11012:84): [True: 2.57k, False: 6]
  ------------------
11013|  2.57k|        {
11014|  2.57k|            return 3;
11015|  2.57k|        }
11016|  3.03k|    }
11017|   138k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (11017:14): [True: 1.62k, False: 136k]
  ------------------
11018|  1.62k|    {
11019|  1.62k|        if (avail >= 4 && data[1] >= 0x90 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11019:13): [True: 1.59k, False: 33]
  |  Branch (11019:27): [True: 1.06k, False: 524]
  |  Branch (11019:46): [True: 838, False: 229]
  |  Branch (11019:65): [True: 832, False: 6]
  |  Branch (11019:84): [True: 826, False: 6]
  |  Branch (11019:103): [True: 823, False: 3]
  |  Branch (11019:122): [True: 811, False: 12]
  ------------------
11020|    811|        {
11021|    811|            return 4;
11022|    811|        }
11023|  1.62k|    }
11024|   136k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (11024:14): [True: 71.1k, False: 65.4k]
  |  Branch (11024:28): [True: 3.16k, False: 68.0k]
  ------------------
11025|  3.16k|    {
11026|  3.16k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11026:13): [True: 3.15k, False: 12]
  |  Branch (11026:27): [True: 2.91k, False: 241]
  |  Branch (11026:46): [True: 2.68k, False: 230]
  |  Branch (11026:65): [True: 2.68k, False: 3]
  |  Branch (11026:84): [True: 2.67k, False: 6]
  |  Branch (11026:103): [True: 2.67k, False: 3]
  |  Branch (11026:122): [True: 2.66k, False: 12]
  ------------------
11027|  2.66k|        {
11028|  2.66k|            return 4;
11029|  2.66k|        }
11030|  3.16k|    }
11031|   133k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (11031:14): [True: 2.18k, False: 131k]
  ------------------
11032|  2.18k|    {
11033|  2.18k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0x8F && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11033:13): [True: 2.15k, False: 33]
  |  Branch (11033:27): [True: 1.95k, False: 201]
  |  Branch (11033:46): [True: 1.74k, False: 214]
  |  Branch (11033:65): [True: 1.73k, False: 3]
  |  Branch (11033:84): [True: 1.72k, False: 9]
  |  Branch (11033:103): [True: 1.71k, False: 15]
  |  Branch (11033:122): [True: 1.69k, False: 15]
  ------------------
11034|  1.69k|        {
11035|  1.69k|            return 4;
11036|  1.69k|        }
11037|  2.18k|    }
11038|   139k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
11039|   164k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
28497|   319k|    {
28498|   319k|        switch (val.m_data.m_type)
28499|   319k|        {
28500|   118k|            case value_t::string:
  ------------------
  |  Branch (28500:13): [True: 118k, False: 200k]
  ------------------
28501|   118k|            {
28502|   118k|                put_char('"');
28503|   118k|                dump_escaped(*val.m_data.m_value.string);
28504|   118k|                put_char('"');
28505|   118k|                return;
28506|      0|            }
28507|       |
28508|      0|            case value_t::binary:
  ------------------
  |  Branch (28508:13): [True: 0, False: 319k]
  ------------------
28509|      0|            {
28510|      0|                if (pretty_print)
  ------------------
  |  Branch (28510:21): [True: 0, False: 0]
  ------------------
28511|      0|                {
28512|      0|                    put_literal("{\n");
28513|       |
28514|       |                    // variable to hold indentation for the bytes
28515|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28516|       |
28517|      0|                    put_indent(new_indent);
28518|       |
28519|      0|                    put_literal("\"bytes\": [");
28520|       |
28521|      0|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28521:25): [True: 0, False: 0]
  ------------------
28522|      0|                    {
28523|      0|                        for (auto i = val.m_data.m_value.binary->cbegin();
28524|      0|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28524:33): [True: 0, False: 0]
  ------------------
28525|      0|                        {
28526|      0|                            dump_byte(*i);
28527|      0|                            put_literal(", ");
28528|      0|                        }
28529|      0|                        dump_byte(val.m_data.m_value.binary->back());
28530|      0|                    }
28531|       |
28532|      0|                    put_literal("],\n");
28533|      0|                    put_indent(new_indent);
28534|       |
28535|      0|                    put_literal("\"subtype\": ");
28536|      0|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28536:25): [True: 0, False: 0]
  ------------------
28537|      0|                    {
28538|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28539|      0|                    }
28540|      0|                    else
28541|      0|                    {
28542|      0|                        put_literal("null");
28543|      0|                    }
28544|      0|                    put_char('\n');
28545|      0|                    put_indent(current_indent);
28546|      0|                    put_char('}');
28547|      0|                }
28548|      0|                else
28549|      0|                {
28550|      0|                    put_literal("{\"bytes\":[");
28551|       |
28552|      0|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28552:25): [True: 0, False: 0]
  ------------------
28553|      0|                    {
28554|      0|                        for (auto i = val.m_data.m_value.binary->cbegin();
28555|      0|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28555:33): [True: 0, False: 0]
  ------------------
28556|      0|                        {
28557|      0|                            dump_byte(*i);
28558|      0|                            put_char(',');
28559|      0|                        }
28560|      0|                        dump_byte(val.m_data.m_value.binary->back());
28561|      0|                    }
28562|       |
28563|      0|                    put_literal("],\"subtype\":");
28564|      0|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28564:25): [True: 0, False: 0]
  ------------------
28565|      0|                    {
28566|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28567|      0|                        put_char('}');
28568|      0|                    }
28569|      0|                    else
28570|      0|                    {
28571|      0|                        put_literal("null}");
28572|      0|                    }
28573|      0|                }
28574|      0|                return;
28575|      0|            }
28576|       |
28577|  66.8k|            case value_t::boolean:
  ------------------
  |  Branch (28577:13): [True: 66.8k, False: 252k]
  ------------------
28578|  66.8k|            {
28579|  66.8k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (28579:21): [True: 8.52k, False: 58.3k]
  ------------------
28580|  8.52k|                {
28581|  8.52k|                    put_literal("true");
28582|  8.52k|                }
28583|  58.3k|                else
28584|  58.3k|                {
28585|  58.3k|                    put_literal("false");
28586|  58.3k|                }
28587|  66.8k|                return;
28588|      0|            }
28589|       |
28590|  33.9k|            case value_t::number_integer:
  ------------------
  |  Branch (28590:13): [True: 33.9k, False: 285k]
  ------------------
28591|  33.9k|            {
28592|  33.9k|                dump_integer(val.m_data.m_value.number_integer);
28593|  33.9k|                return;
28594|      0|            }
28595|       |
28596|  43.9k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28596:13): [True: 43.9k, False: 275k]
  ------------------
28597|  43.9k|            {
28598|  43.9k|                dump_integer(val.m_data.m_value.number_unsigned);
28599|  43.9k|                return;
28600|      0|            }
28601|       |
28602|  40.9k|            case value_t::number_float:
  ------------------
  |  Branch (28602:13): [True: 40.9k, False: 278k]
  ------------------
28603|  40.9k|            {
28604|  40.9k|                dump_float(val.m_data.m_value.number_float);
28605|  40.9k|                return;
28606|      0|            }
28607|       |
28608|      0|            case value_t::discarded:
  ------------------
  |  Branch (28608:13): [True: 0, False: 319k]
  ------------------
28609|      0|            {
28610|      0|                put_literal("<discarded>");
28611|      0|                return;
28612|      0|            }
28613|       |
28614|  14.7k|            case value_t::null:
  ------------------
  |  Branch (28614:13): [True: 14.7k, False: 304k]
  ------------------
28615|  14.7k|            {
28616|  14.7k|                put_literal("null");
28617|  14.7k|                return;
28618|      0|            }
28619|       |
28620|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (28620:13): [True: 0, False: 319k]
  ------------------
28621|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (28621:13): [True: 0, False: 319k]
  ------------------
28622|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28622:13): [True: 0, False: 319k]
  ------------------
28623|       |                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28623:17): [Folded, False: 0]
  ------------------
28624|   319k|        }
28625|   319k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerImTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  43.9k|    {
29440|  43.9k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  43.9k|        {
29442|  43.9k|            {
29443|  43.9k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  43.9k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  43.9k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  43.9k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  43.9k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  43.9k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  43.9k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  43.9k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  43.9k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  43.9k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  43.9k|            }
29454|  43.9k|        };
29455|       |
29456|       |        // special case for "0"
29457|  43.9k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 1.69k, False: 42.3k]
  ------------------
29458|  1.69k|        {
29459|  1.69k|            put_char('0');
29460|  1.69k|            return;
29461|  1.69k|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  42.3k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  42.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 186, False: 42.1k]
  |  |  ------------------
  ------------------
29465|    186|        {
29466|    186|            flush();
29467|    186|        }
29468|  42.3k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  42.3k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  42.3k|        unsigned int n_chars = 0;
29474|       |
29475|  42.3k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 0, False: 42.3k]
  ------------------
29476|      0|        {
29477|      0|            *buffer_ptr = '-';
29478|      0|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|      0|            n_chars = 1;
29480|      0|        }
29481|  42.3k|        else
29482|  42.3k|        {
29483|  42.3k|            abs_value = static_cast<number_magnitude_t>(x);
29484|  42.3k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  42.3k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 39.4k, False: 2.82k]
  ------------------
29489|  39.4k|        {
29490|  39.4k|            const std::uint64_t value = abs_value;
29491|  39.4k|            const std::uint64_t upper = value / 100000000u;
29492|  39.4k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.38k, False: 37.0k]
  ------------------
29493|  39.4k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  39.4k|            char* const p = buffer_ptr + n_chars;
29495|  39.4k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  39.4k|            n_chars += 8 - leading;
29497|  39.4k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.38k, False: 37.0k]
  ------------------
29498|  2.38k|            {
29499|  2.38k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.38k|                n_chars += 8;
29501|  2.38k|            }
29502|  39.4k|            write_buffer_pos += n_chars;
29503|  39.4k|            return;
29504|  39.4k|        }
29505|       |
29506|  2.82k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  2.82k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  2.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 2.82k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  2.82k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  26.7k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 23.9k, False: 2.82k]
  ------------------
29518|  23.9k|        {
29519|  23.9k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  23.9k|            abs_value /= 100;
29521|  23.9k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  23.9k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  23.9k|        }
29524|       |
29525|  2.82k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 804, False: 2.02k]
  ------------------
29526|    804|        {
29527|    804|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|    804|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|    804|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|    804|        }
29531|  2.02k|        else
29532|  2.02k|        {
29533|  2.02k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  2.02k|        }
29535|       |
29536|  2.82k|        write_buffer_pos += n_chars;
29537|  2.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberImTnNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEEbSK_:
29361|  42.3k|    {
29362|  42.3k|        return false;
29363|  42.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
29661|  33.9k|    {
29662|  33.9k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2591|  33.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29662:9): [True: 33.9k, False: 0]
  ------------------
29663|  33.9k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
29664|  33.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
27559|  78.4k|{
27560|  78.4k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
27561|  78.4k|    const std::uint64_t ab_cd_ef_gh = abcd_efgh + (((std::uint64_t{1} << 16u) - 100u) * (((abcd_efgh * (((std::uint64_t{1} << 19u) / 100u) + 1u)) >> 19u) & 0x7F0000007Fu));
27562|  78.4k|    return ab_cd_ef_gh + (((std::uint64_t{1} << 8u) - 10u) * (((ab_cd_ef_gh * (((std::uint64_t{1} << 10u) / 10u) + 1u)) >> 10u) & 0x000F000F000F000Fu));
27563|  78.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 9296|   102k|{
 9297|   102k|#if defined(__GNUC__) || defined(__clang__)
 9298|   102k|    return __builtin_clzll(x);
 9299|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9300|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9301|       |    _BitScanReverse64(&index, x);
 9302|       |    return 63 - static_cast<int>(index);
 9303|       |#else
 9304|       |    int n = 0;
 9305|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9306|       |    {
 9307|       |        if ((x >> (64 - shift)) == 0)
 9308|       |        {
 9309|       |            n += shift;
 9310|       |            x <<= shift;
 9311|       |        }
 9312|       |    }
 9313|       |    return n;
 9314|       |#endif
 9315|   102k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
27569|  79.9k|{
27570|  79.9k|#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
27571|  79.9k|    v = __builtin_bswap64(v);
27572|  79.9k|    std::memcpy(p, &v, sizeof(v));
27573|       |#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
27574|       |    std::memcpy(p, &v, sizeof(v));
27575|       |#elif defined(_MSC_VER) // (little-endian on all its targets)
27576|       |    v = _byteswap_uint64(v);
27577|       |    std::memcpy(p, &v, sizeof(v));
27578|       |#else
27579|       |    for (unsigned i = 0; i < 8; ++i)
27580|       |    {
27581|       |        p[i] = static_cast<char>(v >> (56u - (8u * i)));
27582|       |    }
27583|       |#endif
27584|  79.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12count_digitsEm:
29173|  5.83k|    {
29174|  5.83k|        unsigned int n_digits = 1;
29175|  5.83k|        for (;;)
29176|  29.1k|        {
29177|  29.1k|            if (x < 10)
  ------------------
  |  Branch (29177:17): [True: 1.34k, False: 27.8k]
  ------------------
29178|  1.34k|            {
29179|  1.34k|                return n_digits;
29180|  1.34k|            }
29181|  27.8k|            if (x < 100)
  ------------------
  |  Branch (29181:17): [True: 972, False: 26.8k]
  ------------------
29182|    972|            {
29183|    972|                return n_digits + 1;
29184|    972|            }
29185|  26.8k|            if (x < 1000)
  ------------------
  |  Branch (29185:17): [True: 3.52k, False: 23.3k]
  ------------------
29186|  3.52k|            {
29187|  3.52k|                return n_digits + 2;
29188|  3.52k|            }
29189|  23.3k|            if (x < 10000)
  ------------------
  |  Branch (29189:17): [True: 0, False: 23.3k]
  ------------------
29190|      0|            {
29191|      0|                return n_digits + 3;
29192|      0|            }
29193|  23.3k|            x = x / 10000u;
29194|  23.3k|            n_digits += 4;
29195|  23.3k|        }
29196|  5.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
29090|  25.2k|    {
29091|  25.2k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  25.2k|        constexpr std::size_t length = N - 1;
29094|  25.2k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  25.2k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  25.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 108, False: 25.1k]
  |  |  ------------------
  ------------------
29097|    108|        {
29098|    108|            flush();
29099|    108|        }
29100|  25.2k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  25.2k|        write_buffer_pos += length;
29102|  25.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
29090|  58.3k|    {
29091|  58.3k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  58.3k|        constexpr std::size_t length = N - 1;
29094|  58.3k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  58.3k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  58.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 58.2k]
  |  |  ------------------
  ------------------
29097|     48|        {
29098|     48|            flush();
29099|     48|        }
29100|  58.3k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  58.3k|        write_buffer_pos += length;
29102|  58.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerIlTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  33.9k|    {
29440|  33.9k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  33.9k|        {
29442|  33.9k|            {
29443|  33.9k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  33.9k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  33.9k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  33.9k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  33.9k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  33.9k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  33.9k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  33.9k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  33.9k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  33.9k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  33.9k|            }
29454|  33.9k|        };
29455|       |
29456|       |        // special case for "0"
29457|  33.9k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 0, False: 33.9k]
  ------------------
29458|      0|        {
29459|      0|            put_char('0');
29460|      0|            return;
29461|      0|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  33.9k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  33.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 144, False: 33.8k]
  |  |  ------------------
  ------------------
29465|    144|        {
29466|    144|            flush();
29467|    144|        }
29468|  33.9k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  33.9k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  33.9k|        unsigned int n_chars = 0;
29474|       |
29475|  33.9k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 33.9k, False: 0]
  ------------------
29476|  33.9k|        {
29477|  33.9k|            *buffer_ptr = '-';
29478|  33.9k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|  33.9k|            n_chars = 1;
29480|  33.9k|        }
29481|      0|        else
29482|      0|        {
29483|      0|            abs_value = static_cast<number_magnitude_t>(x);
29484|      0|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  33.9k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 30.9k, False: 3.01k]
  ------------------
29489|  30.9k|        {
29490|  30.9k|            const std::uint64_t value = abs_value;
29491|  30.9k|            const std::uint64_t upper = value / 100000000u;
29492|  30.9k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.79k, False: 28.1k]
  ------------------
29493|  30.9k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  30.9k|            char* const p = buffer_ptr + n_chars;
29495|  30.9k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  30.9k|            n_chars += 8 - leading;
29497|  30.9k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.79k, False: 28.1k]
  ------------------
29498|  2.79k|            {
29499|  2.79k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.79k|                n_chars += 8;
29501|  2.79k|            }
29502|  30.9k|            write_buffer_pos += n_chars;
29503|  30.9k|            return;
29504|  30.9k|        }
29505|       |
29506|  3.01k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  3.01k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  3.01k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 3.01k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  3.01k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  29.3k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 26.3k, False: 3.01k]
  ------------------
29518|  26.3k|        {
29519|  26.3k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  26.3k|            abs_value /= 100;
29521|  26.3k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  26.3k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  26.3k|        }
29524|       |
29525|  3.01k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 168, False: 2.84k]
  ------------------
29526|    168|        {
29527|    168|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|    168|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|    168|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|    168|        }
29531|  2.84k|        else
29532|  2.84k|        {
29533|  2.84k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  2.84k|        }
29535|       |
29536|  3.01k|        write_buffer_pos += n_chars;
29537|  3.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberIlTnNS4_9enable_ifIXsr9is_signedIT_EE5valueEiE4typeELi0EEEbSK_:
29355|  33.9k|    {
29356|  33.9k|        return x < 0;
29357|  33.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
29547|  40.9k|    {
29548|       |        // NaN / inf
29549|  40.9k|        if (!std::isfinite(x))
  ------------------
  |  Branch (29549:13): [True: 1.95k, False: 38.9k]
  ------------------
29550|  1.95k|        {
29551|  1.95k|            put_literal("null");
29552|  1.95k|            return;
29553|  1.95k|        }
29554|       |
29555|       |        // If number_float_t is an IEEE-754 single or double precision number,
29556|       |        // use the Grisu2 algorithm to produce short numbers which are
29557|       |        // guaranteed to round-trip, using strtof and strtod, resp.
29558|       |        //
29559|       |        // NB: The test below works if <long double> == <double>.
29560|  38.9k|        static constexpr bool is_ieee_single_or_double
29561|  38.9k|            = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
  ------------------
  |  Branch (29561:16): [True: 0, Folded]
  |  Branch (29561:66): [Folded, False: 0]
  |  Branch (29561:119): [Folded, False: 0]
  ------------------
29562|      0|              (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
  ------------------
  |  Branch (29562:16): [True: 0, Folded]
  |  Branch (29562:66): [True: 0, Folded]
  |  Branch (29562:119): [True: 0, Folded]
  ------------------
29563|       |
29564|  38.9k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
29565|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
29568|  38.9k|    {
29569|       |        // directly into the write buffer: copying the text from number_buffer
29570|       |        // right after to_chars() wrote it waits until its stores are done
29571|  38.9k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  38.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 258, False: 38.7k]
  |  |  ------------------
  ------------------
29572|    258|        {
29573|    258|            flush();
29574|    258|        }
29575|  38.9k|        auto* begin = write_buffer.data() + write_buffer_pos;
29576|  38.9k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
29577|  38.9k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
29578|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
27946|  38.9k|{
27947|  38.9k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2591|  38.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27947:5): [True: 38.9k, False: 0]
  ------------------
27948|       |
27949|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
27950|  38.9k|    if (std::signbit(value))
  ------------------
  |  Branch (27950:9): [True: 14.6k, False: 24.3k]
  ------------------
27951|  14.6k|    {
27952|  14.6k|        value = -value;
27953|  14.6k|        *first++ = '-';
27954|  14.6k|    }
27955|       |
27956|  38.9k|#ifdef __GNUC__
27957|  38.9k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
27958|  38.9k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
27959|  38.9k|#endif
27960|  38.9k|    if (value == 0) // +-0
  ------------------
  |  Branch (27960:9): [True: 6.98k, False: 31.9k]
  ------------------
27961|  6.98k|    {
27962|  6.98k|        *first++ = '0';
27963|       |        // Make it look like a floating-point number (#362, #378)
27964|  6.98k|        *first++ = '.';
27965|  6.98k|        *first++ = '0';
27966|  6.98k|        return first;
27967|  6.98k|    }
27968|  31.9k|#ifdef __GNUC__
27969|  31.9k|    JSON_HEDLEY_DIAGNOSTIC_POP
27970|  31.9k|#endif
27971|       |
27972|  31.9k|    return dtoa_impl::write_positive(first, last, value);
27973|  38.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
27926|  31.9k|{
27927|  31.9k|    return write_positive(first, last, value, is_binary64<FloatType> {});
27928|  31.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
27908|  31.9k|{
27909|  31.9k|    return write_positive_zmij(first, last, value);
27910|  31.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
27885|  31.9k|{
27886|  31.9k|    static_assert(is_binary64<FloatType>::value,
27887|  31.9k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
27888|  31.9k|    std::uint64_t bits = 0;
27889|  31.9k|    std::memcpy(&bits, &value, sizeof(bits));
27890|  31.9k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
27891|  31.9k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1666|  31.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 31.9k, False: 0]
  |  |  ------------------
  ------------------
27892|  31.9k|    {
27893|  31.9k|        return write_shortest(first, d);
27894|  31.9k|    }
27895|      0|    std::array<char, 64> buf; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27896|      0|    const auto len = static_cast<std::size_t>(write_shortest(buf.data(), d) - buf.data());
27897|      0|    JSON_ASSERT(last - first >= static_cast<std::ptrdiff_t>(len));
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27897:5): [True: 0, False: 0]
  ------------------
27898|      0|    std::memcpy(first, buf.data(), len);
27899|      0|    return first + len;
27900|      0|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
26468|  31.9k|{
26469|  31.9k|    constexpr int extra_shift = 9;
26470|  31.9k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
26471|  31.9k|    std::uint64_t bin_sig = bits & ((std::uint64_t{1} << 52u) - 1);
26472|       |    // a power of two has a narrower interval below (except the smallest normal)
26473|  31.9k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (26473:26): [True: 10.3k, False: 21.6k]
  |  Branch (26473:42): [True: 6, False: 21.6k]
  ------------------
26474|  31.9k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (26474:26): [True: 1.59k, False: 30.4k]
  ------------------
26475|  31.9k|    if (raw_exp != 0)
  ------------------
  |  Branch (26475:9): [True: 30.4k, False: 1.59k]
  ------------------
26476|  30.4k|    {
26477|  30.4k|        bin_sig |= std::uint64_t{1} << 52u;
26478|  30.4k|    }
26479|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
26480|  31.9k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (26480:48): [True: 10.3k, False: 21.6k]
  ------------------
26481|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
26482|  31.9k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
26483|  31.9k|    const uint128_parts p10 = pow10(-dec_exp - 1);
26484|  31.9k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
26485|  31.9k|    std::uint64_t integral = p.high >> static_cast<unsigned>(extra_shift);
26486|       |    // (no casts in the shifts: MSVC 2015 warns C4554 on them despite the parentheses)
26487|  31.9k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
26488|  31.9k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
26489|  31.9k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
26490|  31.9k|    std::uint64_t digit = 0;
26491|  31.9k|    bool round_up = false;
26492|  31.9k|    bool round_down = false;
26493|  31.9k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1666|  31.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 10.3k, False: 21.6k]
  |  |  ------------------
  ------------------
26494|  10.3k|    {
26495|  10.3k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
26496|  10.3k|        round_up = fractional + half_ulp < fractional;
26497|  10.3k|        round_down = half_ulp > fractional;
26498|       |        // the last digit of the longer candidate, rounded to nearest
26499|  10.3k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
26500|  10.3k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (26500:13): [True: 210, False: 10.0k]
  ------------------
26501|    210|        {
26502|    210|            digit = 2; // 2.5 rounds to 2
26503|    210|        }
26504|  10.3k|    }
26505|  21.6k|    else
26506|  21.6k|    {
26507|  21.6k|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
26508|  21.6k|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
26509|  21.6k|        round_down = (half_ulp >> 1u) > fractional;
26510|  21.6k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
26511|  21.6k|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
26512|  21.6k|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (26512:17): [True: 21.0k, False: 606]
  ------------------
26513|  21.6k|    }
26514|  31.9k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (26514:17): [True: 2.66k, False: 29.3k]
  ------------------
26515|       |    // if the shorter candidate is outside the rounding interval: one digit more
26516|  31.9k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (26516:83): [True: 29.3k, False: 2.66k]
  |  Branch (26516:96): [True: 6.72k, False: 22.6k]
  ------------------
26517|  31.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
26422|  31.9k|{
26423|  31.9k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (26423:9): [True: 2.20k, False: 29.7k]
  ------------------
26424|  2.20k|    {
26425|  2.20k|        return compute_pow10(k); // (only for the smallest doubles)
26426|  2.20k|    }
26427|  29.7k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
26428|  29.7k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
26429|  29.7k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (26429:34): [True: 780, False: 29.0k]
  ------------------
26430|  29.7k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (26430:15): [True: 0, False: 29.7k]
  ------------------
26431|  29.7k|    r.low -= adjust;
26432|  29.7k|    return r;
26433|  31.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
26392|  2.20k|{
26393|  2.20k|    const auto i = static_cast<unsigned>(k + 307);
26394|  2.20k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
26395|  2.20k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
26396|  2.20k|    const std::uint64_t h_hi = pow10_major()[j];
26397|  2.20k|    const std::uint64_t h_lo = pow10_major()[j + 1];
26398|  2.20k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
26399|  2.20k|    const std::uint64_t c0 = h_lo * m;
26400|  2.20k|    const std::uint64_t c1 = h1 + (h_hi * m);
26401|  2.20k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (26401:31): [True: 18, False: 2.18k]
  ------------------
26402|  2.20k|    uint128_parts r{};
26403|  2.20k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (26403:9): [True: 582, False: 1.62k]
  ------------------
26404|    582|    {
26405|    582|        r.high = c2;
26406|    582|        r.low = c1;
26407|    582|    }
26408|  1.62k|    else
26409|  1.62k|    {
26410|  1.62k|        r.high = (c2 << 1u) | (c1 >> 63u);
26411|  1.62k|        r.low = (c1 << 1u) | (c0 >> 63u);
26412|  1.62k|    }
26413|  2.20k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
26414|  2.20k|    return r;
26415|  2.20k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
26340|  2.20k|{
26341|  2.20k|    static const std::array<std::uint64_t, 28> table =
26342|  2.20k|    {
26343|  2.20k|        {
26344|  2.20k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
26345|  2.20k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
26346|  2.20k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
26347|  2.20k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
26348|  2.20k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
26349|  2.20k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
26350|  2.20k|        }
26351|  2.20k|    };
26352|  2.20k|    return table;
26353|  2.20k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
26357|  4.40k|{
26358|  4.40k|    static const std::array<std::uint64_t, 50> table =
26359|  4.40k|    {
26360|  4.40k|        {
26361|  4.40k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
26362|  4.40k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
26363|  4.40k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
26364|  4.40k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
26365|  4.40k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
26366|  4.40k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
26367|  4.40k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
26368|  4.40k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
26369|  4.40k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
26370|  4.40k|        }
26371|  4.40k|    };
26372|  4.40k|    return table;
26373|  4.40k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9348|   122k|{
 9349|   122k|#if defined(__SIZEOF_INT128__)
 9350|   122k|    __extension__ using uint128 = unsigned __int128;
 9351|   122k|    const uint128 r = static_cast<uint128>(a) * b;
 9352|   122k|    return {static_cast<std::uint64_t>(r), static_cast<std::uint64_t>(r >> 64u)};
 9353|       |#elif defined(_MSC_VER) && defined(_M_X64)
 9354|       |    std::uint64_t high = 0;
 9355|       |    const std::uint64_t low = _umul128(a, b, &high);
 9356|       |    return {low, high};
 9357|       |#elif defined(_MSC_VER) && defined(_M_ARM64)
 9358|       |    return {a * b, __umulh(a, b)};
 9359|       |#else
 9360|       |    const std::uint64_t a_lo = a & 0xFFFFFFFFu;
 9361|       |    const std::uint64_t a_hi = a >> 32u;
 9362|       |    const std::uint64_t b_lo = b & 0xFFFFFFFFu;
 9363|       |    const std::uint64_t b_hi = b >> 32u;
 9364|       |    const std::uint64_t lo_lo = a_lo * b_lo;
 9365|       |    const std::uint64_t hi_lo = a_hi * b_lo;
 9366|       |    const std::uint64_t lo_hi = a_lo * b_hi;
 9367|       |    const std::uint64_t hi_hi = a_hi * b_hi;
 9368|       |    const std::uint64_t cross = (lo_lo >> 32u) + (hi_lo & 0xFFFFFFFFu) + lo_hi;
 9369|       |    return {(cross << 32u) | (lo_lo & 0xFFFFFFFFu), (hi_lo >> 32u) + (cross >> 32u) + hi_hi};
 9370|       |#endif
 9371|   122k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
26377|  2.20k|{
26378|  2.20k|    static const std::array<std::uint32_t, 21> table =
26379|  2.20k|    {
26380|  2.20k|        {
26381|  2.20k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
26382|  2.20k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
26383|  2.20k|            0x0000003du
26384|  2.20k|        }
26385|  2.20k|    };
26386|  2.20k|    return table;
26387|  2.20k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
 9468|  59.5k|{
 9469|  59.5k|    static const std::array<std::uint64_t, 1302> table =
 9470|  59.5k|    {
 9471|  59.5k|        {
 9472|  59.5k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
 9473|  59.5k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
 9474|  59.5k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
 9475|  59.5k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
 9476|  59.5k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
 9477|  59.5k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
 9478|  59.5k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
 9479|  59.5k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
 9480|  59.5k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
 9481|  59.5k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
 9482|  59.5k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
 9483|  59.5k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
 9484|  59.5k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
 9485|  59.5k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
 9486|  59.5k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
 9487|  59.5k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
 9488|  59.5k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
 9489|  59.5k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
 9490|  59.5k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
 9491|  59.5k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
 9492|  59.5k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
 9493|  59.5k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
 9494|  59.5k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
 9495|  59.5k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
 9496|  59.5k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
 9497|  59.5k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
 9498|  59.5k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
 9499|  59.5k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
 9500|  59.5k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
 9501|  59.5k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
 9502|  59.5k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
 9503|  59.5k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
 9504|  59.5k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
 9505|  59.5k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
 9506|  59.5k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
 9507|  59.5k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
 9508|  59.5k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
 9509|  59.5k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
 9510|  59.5k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
 9511|  59.5k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
 9512|  59.5k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
 9513|  59.5k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
 9514|  59.5k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
 9515|  59.5k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
 9516|  59.5k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
 9517|  59.5k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
 9518|  59.5k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
 9519|  59.5k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
 9520|  59.5k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
 9521|  59.5k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
 9522|  59.5k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
 9523|  59.5k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
 9524|  59.5k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
 9525|  59.5k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
 9526|  59.5k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
 9527|  59.5k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
 9528|  59.5k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
 9529|  59.5k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
 9530|  59.5k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
 9531|  59.5k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
 9532|  59.5k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
 9533|  59.5k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
 9534|  59.5k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
 9535|  59.5k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
 9536|  59.5k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
 9537|  59.5k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
 9538|  59.5k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
 9539|  59.5k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
 9540|  59.5k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
 9541|  59.5k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
 9542|  59.5k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
 9543|  59.5k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
 9544|  59.5k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
 9545|  59.5k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
 9546|  59.5k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
 9547|  59.5k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
 9548|  59.5k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
 9549|  59.5k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
 9550|  59.5k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
 9551|  59.5k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
 9552|  59.5k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
 9553|  59.5k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
 9554|  59.5k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
 9555|  59.5k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
 9556|  59.5k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
 9557|  59.5k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
 9558|  59.5k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
 9559|  59.5k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
 9560|  59.5k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
 9561|  59.5k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
 9562|  59.5k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
 9563|  59.5k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
 9564|  59.5k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
 9565|  59.5k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
 9566|  59.5k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
 9567|  59.5k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
 9568|  59.5k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
 9569|  59.5k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
 9570|  59.5k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
 9571|  59.5k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
 9572|  59.5k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
 9573|  59.5k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
 9574|  59.5k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
 9575|  59.5k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
 9576|  59.5k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
 9577|  59.5k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
 9578|  59.5k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
 9579|  59.5k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
 9580|  59.5k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
 9581|  59.5k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
 9582|  59.5k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
 9583|  59.5k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
 9584|  59.5k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
 9585|  59.5k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
 9586|  59.5k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
 9587|  59.5k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
 9588|  59.5k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
 9589|  59.5k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
 9590|  59.5k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
 9591|  59.5k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
 9592|  59.5k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
 9593|  59.5k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
 9594|  59.5k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
 9595|  59.5k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
 9596|  59.5k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
 9597|  59.5k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
 9598|  59.5k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
 9599|  59.5k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
 9600|  59.5k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
 9601|  59.5k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
 9602|  59.5k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
 9603|  59.5k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
 9604|  59.5k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
 9605|  59.5k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
 9606|  59.5k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
 9607|  59.5k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
 9608|  59.5k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
 9609|  59.5k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
 9610|  59.5k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
 9611|  59.5k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
 9612|  59.5k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
 9613|  59.5k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
 9614|  59.5k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
 9615|  59.5k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
 9616|  59.5k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
 9617|  59.5k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
 9618|  59.5k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
 9619|  59.5k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
 9620|  59.5k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
 9621|  59.5k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
 9622|  59.5k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
 9623|  59.5k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
 9624|  59.5k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
 9625|  59.5k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
 9626|  59.5k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
 9627|  59.5k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
 9628|  59.5k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
 9629|  59.5k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
 9630|  59.5k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
 9631|  59.5k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
 9632|  59.5k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
 9633|  59.5k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
 9634|  59.5k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
 9635|  59.5k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
 9636|  59.5k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
 9637|  59.5k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
 9638|  59.5k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
 9639|  59.5k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
 9640|  59.5k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
 9641|  59.5k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
 9642|  59.5k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
 9643|  59.5k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
 9644|  59.5k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
 9645|  59.5k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
 9646|  59.5k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
 9647|  59.5k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
 9648|  59.5k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
 9649|  59.5k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
 9650|  59.5k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
 9651|  59.5k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
 9652|  59.5k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
 9653|  59.5k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
 9654|  59.5k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
 9655|  59.5k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
 9656|  59.5k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
 9657|  59.5k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
 9658|  59.5k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
 9659|  59.5k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
 9660|  59.5k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
 9661|  59.5k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
 9662|  59.5k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
 9663|  59.5k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
 9664|  59.5k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
 9665|  59.5k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
 9666|  59.5k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
 9667|  59.5k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
 9668|  59.5k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
 9669|  59.5k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
 9670|  59.5k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
 9671|  59.5k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
 9672|  59.5k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
 9673|  59.5k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
 9674|  59.5k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
 9675|  59.5k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
 9676|  59.5k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
 9677|  59.5k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
 9678|  59.5k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
 9679|  59.5k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
 9680|  59.5k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
 9681|  59.5k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
 9682|  59.5k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
 9683|  59.5k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
 9684|  59.5k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
 9685|  59.5k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
 9686|  59.5k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
 9687|  59.5k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
 9688|  59.5k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
 9689|  59.5k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
 9690|  59.5k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
 9691|  59.5k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
 9692|  59.5k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
 9693|  59.5k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
 9694|  59.5k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
 9695|  59.5k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
 9696|  59.5k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
 9697|  59.5k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
 9698|  59.5k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
 9699|  59.5k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
 9700|  59.5k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
 9701|  59.5k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
 9702|  59.5k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
 9703|  59.5k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
 9704|  59.5k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
 9705|  59.5k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
 9706|  59.5k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
 9707|  59.5k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
 9708|  59.5k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
 9709|  59.5k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
 9710|  59.5k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
 9711|  59.5k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
 9712|  59.5k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
 9713|  59.5k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
 9714|  59.5k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
 9715|  59.5k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
 9716|  59.5k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
 9717|  59.5k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
 9718|  59.5k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
 9719|  59.5k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
 9720|  59.5k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
 9721|  59.5k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
 9722|  59.5k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
 9723|  59.5k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
 9724|  59.5k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
 9725|  59.5k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
 9726|  59.5k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
 9727|  59.5k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
 9728|  59.5k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
 9729|  59.5k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
 9730|  59.5k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
 9731|  59.5k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
 9732|  59.5k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
 9733|  59.5k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
 9734|  59.5k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
 9735|  59.5k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
 9736|  59.5k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
 9737|  59.5k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
 9738|  59.5k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
 9739|  59.5k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
 9740|  59.5k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
 9741|  59.5k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
 9742|  59.5k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
 9743|  59.5k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
 9744|  59.5k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
 9745|  59.5k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
 9746|  59.5k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
 9747|  59.5k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
 9748|  59.5k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
 9749|  59.5k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
 9750|  59.5k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
 9751|  59.5k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
 9752|  59.5k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
 9753|  59.5k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
 9754|  59.5k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
 9755|  59.5k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
 9756|  59.5k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
 9757|  59.5k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
 9758|  59.5k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
 9759|  59.5k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
 9760|  59.5k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
 9761|  59.5k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
 9762|  59.5k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
 9763|  59.5k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
 9764|  59.5k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
 9765|  59.5k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
 9766|  59.5k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
 9767|  59.5k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
 9768|  59.5k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
 9769|  59.5k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
 9770|  59.5k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
 9771|  59.5k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
 9772|  59.5k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
 9773|  59.5k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
 9774|  59.5k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
 9775|  59.5k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
 9776|  59.5k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
 9777|  59.5k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
 9778|  59.5k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
 9779|  59.5k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
 9780|  59.5k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
 9781|  59.5k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
 9782|  59.5k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
 9783|  59.5k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
 9784|  59.5k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
 9785|  59.5k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
 9786|  59.5k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
 9787|  59.5k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
 9788|  59.5k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
 9789|  59.5k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
 9790|  59.5k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
 9791|  59.5k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
 9792|  59.5k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
 9793|  59.5k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
 9794|  59.5k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
 9795|  59.5k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
 9796|  59.5k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
 9797|  59.5k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
 9798|  59.5k|        }
 9799|  59.5k|    };
 9800|  59.5k|    return table;
 9801|  59.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
26437|  31.9k|{
26438|  31.9k|    const uint128_parts p = full_multiplication(x_hi, y);
26439|  31.9k|    uint128_parts r{};
26440|  31.9k|    r.low = p.low + full_multiplication(x_lo, y).high;
26441|  31.9k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (26441:24): [True: 348, False: 31.6k]
  ------------------
26442|  31.9k|    return r;
26443|  31.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
26447|  53.6k|{
26448|  53.6k|    const uint128_parts p = full_multiplication(x, y);
26449|  53.6k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (26449:22): [True: 26.3k, False: 27.3k]
  ------------------
26450|  53.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
27689|  31.9k|{
27690|  31.9k|    const std::uint64_t sig = d.integral;
27691|  31.9k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1667|  62.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.44k, False: 30.5k]
  |  |  |  Branch (1667:94): [True: 1.44k, False: 30.5k]
  |  |  |  Branch (1667:94): [True: 0, False: 30.5k]
  |  |  ------------------
  ------------------
27692|  1.44k|    {
27693|       |        // (subnormals)
27694|  1.44k|        return d.has_digit ? write_decimal(first, (sig * 10) + d.digit, d.exponent) : write_decimal(first, sig, d.exponent + 1);
  ------------------
  |  Branch (27694:16): [True: 798, False: 642]
  ------------------
27695|  1.44k|    }
27696|  30.5k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
27697|  30.5k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (27697:22): [True: 5.92k, False: 24.6k]
  ------------------
27698|  30.5k|    const std::uint64_t upper = sig / 100000000u;
27699|  30.5k|#if JSON_DTOA_SSE2
27700|       |    // NOLINTBEGIN(portability-simd-intrinsics)
27701|       |    // the two halves in the 64-bit lanes, each as abcd * 2^32 + efgh, then as
27702|       |    // bytes (as eight_digit_bytes(), one lane each)
27703|  30.5k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
27704|  30.5k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
27705|  30.5k|    const __m128i abcd_efgh = _mm_add_epi64(x, _mm_mul_epu32(abcd, _mm_set1_epi64x(4294957296))); // 2^32 - 10000
27706|       |    // 32-bit lanes in the order of the text: abcd, efgh of both halves
27707|  30.5k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
27708|  30.5k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
27709|  30.5k|    const __m128i ab_cd = _mm_or_si128(_mm_slli_epi32(_mm_sub_epi16(fours, _mm_mullo_epi16(ab, _mm_set1_epi32(100))), 16), ab);
27710|       |    // 16-bit lanes ab (< 100) -> bytes a, b: 256 * ab - 2559 * (ab / 10)
27711|  30.5k|    const __m128i bytes = _mm_sub_epi16(_mm_slli_epi16(ab_cd, 8), _mm_mullo_epi16(_mm_set1_epi16(2559), _mm_mulhi_epu16(ab_cd, _mm_set1_epi16(6554))));
27712|       |    // the last digit that is not 0 (sig is not 0)
27713|  30.5k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
27714|  30.5k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (27714:61): [True: 28.0k, False: 2.49k]
  ------------------
27715|  30.5k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
27716|       |    // the 16 characters from the first digit
27717|  30.5k|    const __m128i s = sixteen ? chars : _mm_or_si128(_mm_srli_si128(chars, 1), _mm_slli_si128(_mm_cvtsi32_si128('0' + last), 15));
  ------------------
  |  Branch (27717:23): [True: 28.0k, False: 2.49k]
  ------------------
27718|  30.5k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (27718:40): [True: 28.0k, False: 2.49k]
  ------------------
27719|  30.5k|    const auto store_16 = [&s](char* p) noexcept
27720|  30.5k|    {
27721|  30.5k|        std::memcpy(p, &s, 16);
27722|  30.5k|    };
27723|  30.5k|    const char first_digit = static_cast<char>(_mm_cvtsi128_si32(s));
27724|       |    // NOLINTEND(portability-simd-intrinsics)
27725|       |#elif JSON_DTOA_NEON
27726|       |    // as with SSE2: the halves in 32-bit lanes, then abcd, efgh of both
27727|       |    const uint32x2_t halves = vcreate_u32(upper | ((sig - (upper * 100000000u)) << 32u));
27728|       |    const uint32x2_t abcd = vmovn_u64(vshrq_n_u64(vmull_n_u32(halves, static_cast<std::uint32_t>(((std::uint64_t{1} << 40u) / 10000u) + 1u)), 40));
27729|       |    const uint32x2_t efgh = vmls_n_u32(halves, abcd, 10000u);
27730|       |    const uint32x4_t fours = vcombine_u32(vzip1_u32(abcd, efgh), vzip2_u32(abcd, efgh));
27731|       |    const uint32x4_t ab = vshrq_n_u32(vmulq_n_u32(fours, 5243u), 19);
27732|       |    const uint16x8_t ab_cd = vreinterpretq_u16_u32(vorrq_u32(ab, vshlq_n_u32(vmlsq_n_u32(fours, ab, 100u), 16)));
27733|       |    const uint16x8_t tens = vshrq_n_u16(vmulq_n_u16(ab_cd, 103u), 10);
27734|       |    const uint8x16_t bytes = vreinterpretq_u8_u16(vorrq_u16(tens, vshlq_n_u16(vmlsq_n_u16(ab_cd, tens, 10u), 8)));
27735|       |    // the last digit that is not 0 (sig is not 0): a nibble per byte
27736|       |    const std::uint64_t nonzero = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(bytes, bytes)), 4)), 0);
27737|       |    const int digits = ((63 - count_leading_zeros(nonzero)) / 4) + (sixteen ? 1 : 0); // without trailing zeros
27738|       |    const uint8x16_t chars = vaddq_u8(bytes, vdupq_n_u8('0'));
27739|       |    // the 16 characters from the first digit
27740|       |    const uint8x16_t s = sixteen ? chars : vextq_u8(chars, vdupq_n_u8(static_cast<std::uint8_t>('0' + last)), 1);
27741|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27742|       |    const auto store_16 = [&s](char* p) noexcept
27743|       |    {
27744|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(p), s); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27745|       |    };
27746|       |    const auto first_digit = static_cast<char>(vgetq_lane_u8(s, 0));
27747|       |#else
27748|       |    const std::uint64_t hi = eight_digit_bytes(upper);
27749|       |    const std::uint64_t lo = eight_digit_bytes(sig - (upper * 100000000u));
27750|       |    // trailing zero digits: zero bytes (sig is not 0)
27751|       |    const int zeros = lo != 0 ? count_trailing_zeros(lo) / 8 : 8 + (count_trailing_zeros(hi) / 8);
27752|       |    const int digits = 15 - zeros + (sixteen ? 1 : 0); // without trailing zeros
27753|       |    // the 16 characters from the first digit
27754|       |    const std::uint64_t s_hi = (sixteen ? hi : (hi << 8u) | (lo >> 56u)) + 0x3030303030303030u;
27755|       |    const std::uint64_t s_lo = (sixteen ? lo : (lo << 8u) | static_cast<std::uint64_t>(last)) + 0x3030303030303030u;
27756|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27757|       |    const auto store_16 = [s_hi, s_lo](char* p) noexcept
27758|       |    {
27759|       |        store_msb_first(p, s_hi);
27760|       |        store_msb_first(p + 8, s_lo);
27761|       |    };
27762|       |    const auto first_digit = static_cast<char>(s_hi >> 56u);
27763|       |#endif
27764|  30.5k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (27764:21): [True: 5.92k, False: 24.6k]
  |  Branch (27764:41): [True: 3.89k, False: 2.02k]
  ------------------
27765|  30.5k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (27765:25): [True: 28.0k, False: 2.49k]
  ------------------
27766|       |
27767|  30.5k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1666|  54.7k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 22.0k, False: 8.50k]
  |  |  |  Branch (1666:94): [True: 24.2k, False: 6.34k]
  |  |  |  Branch (1666:94): [True: 22.0k, False: 2.15k]
  |  |  ------------------
  ------------------
27768|  22.0k|    {
27769|       |        // "dig.its" and "digits[000].0": the digits after the point move by
27770|       |        // one byte ('0's follow the digits)
27771|  22.0k|#if JSON_DTOA_SSE2
27772|       |        // NOLINTBEGIN(portability-simd-intrinsics)
27773|       |        // (in the register: reading the digits back from memory right after
27774|       |        // storing them waits until the stores are done)
27775|  22.0k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
27776|  22.0k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
27777|  22.0k|        const __m128i before = _mm_cmpgt_epi8(at, index);
27778|  22.0k|        const __m128i after = _mm_cmpgt_epi8(index, at);
27779|  22.0k|        const __m128i text = _mm_or_si128(_mm_or_si128(_mm_and_si128(s, before), _mm_and_si128(_mm_slli_si128(s, 1), after)),
27780|  22.0k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
27781|  22.0k|        std::memcpy(first, &text, 16);
27782|  22.0k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
27783|  22.0k|        first[17] = s16;
27784|       |        // NOLINTEND(portability-simd-intrinsics)
27785|       |#elif JSON_DTOA_NEON
27786|       |        const uint8x16_t index = vcombine_u8(vcreate_u8(0x0706050403020100u), vcreate_u8(0x0F0E0D0C0B0A0908u));
27787|       |        const uint8x16_t at = vdupq_n_u8(static_cast<std::uint8_t>(n));
27788|       |        const uint8x16_t after_point = vbslq_u8(vcgtq_u8(index, at), vextq_u8(vdupq_n_u8(0), s, 15), vdupq_n_u8('.'));
27789|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(first), vbslq_u8(vcltq_u8(index, at), s, after_point)); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27790|       |        first[16] = static_cast<char>(vgetq_lane_u8(s, 15));
27791|       |        first[17] = s16;
27792|       |#else
27793|       |        store_16(first);
27794|       |        first[16] = s16;
27795|       |        std::uint64_t after_point[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27796|       |        std::memcpy(after_point, first + n, 16);
27797|       |        std::memcpy(first + n + 1, after_point, 16);
27798|       |        first[n] = '.';
27799|       |#endif
27800|  22.0k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (27800:25): [True: 21.1k, False: 954]
  ------------------
27801|  22.0k|    }
27802|  8.50k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (27802:9): [True: 6.34k, False: 2.15k]
  |  Branch (27802:19): [True: 792, False: 5.55k]
  ------------------
27803|    792|    {
27804|       |        // "0.[000]digits"
27805|    792|        std::memset(first, '0', 8);
27806|    792|        first[1] = '.';
27807|    792|        store_16(first + 2 - n);
27808|    792|        first[18 - n] = s16;
27809|    792|        return first + 2 - n + len;
27810|    792|    }
27811|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27812|  7.71k|    store_16(first + 1);
27813|  7.71k|    first[17] = s16;
27814|  7.71k|    first[0] = first_digit;
27815|  7.71k|    first[1] = '.';
27816|  7.71k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (27816:32): [True: 0, False: 7.71k]
  ------------------
27817|  7.71k|    const int e = n - 1;
27818|  7.71k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27818:21): [True: 5.55k, False: 2.15k]
  ------------------
27819|  7.71k|    const bool three = ea >= 100;
27820|  7.71k|    end[0] = 'e';
27821|  7.71k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27821:14): [True: 5.55k, False: 2.15k]
  ------------------
27822|  7.71k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27822:39): [True: 2.89k, False: 4.81k]
  ------------------
27823|  7.71k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27823:39): [True: 2.89k, False: 4.81k]
  ------------------
27824|  7.71k|    end[4] = static_cast<char>('0' + (ea % 10));
27825|  7.71k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27825:19): [True: 2.89k, False: 4.81k]
  ------------------
27826|  8.50k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
27601|  1.44k|{
27602|  1.44k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2591|  1.44k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27602:5): [True: 1.44k, False: 0]
  |  Branch (27602:5): [True: 1.44k, False: 0]
  |  Branch (27602:5): [True: 1.44k, False: 0]
  ------------------
27603|  1.44k|    const std::uint64_t upper = digits / 100000000u;
27604|  1.44k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
27605|  1.44k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
27606|  1.44k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
27607|       |    // leading and trailing zero digits: zero bytes, counted without division
27608|  1.44k|    int leading = 16;
27609|  1.44k|    int zeros = 16;
27610|  1.44k|    if (b0 != 0)
  ------------------
  |  Branch (27610:9): [True: 0, False: 1.44k]
  ------------------
27611|      0|    {
27612|      0|        leading = count_leading_zeros(b0) / 8;
27613|      0|    }
27614|  1.44k|    else if (b1 != 0)
  ------------------
  |  Branch (27614:14): [True: 924, False: 516]
  ------------------
27615|    924|    {
27616|    924|        leading = 8 + (count_leading_zeros(b1) / 8);
27617|    924|    }
27618|    516|    else
27619|    516|    {
27620|    516|        leading += count_leading_zeros(b2) / 8;
27621|    516|    }
27622|  1.44k|    if (b2 != 0)
  ------------------
  |  Branch (27622:9): [True: 1.44k, False: 0]
  ------------------
27623|  1.44k|    {
27624|  1.44k|        zeros = count_trailing_zeros(b2) / 8;
27625|  1.44k|    }
27626|      0|    else if (b1 != 0)
  ------------------
  |  Branch (27626:14): [True: 0, False: 0]
  ------------------
27627|      0|    {
27628|      0|        zeros = 8 + (count_trailing_zeros(b1) / 8);
27629|      0|    }
27630|       |    // (else: 16, b0 is the one digit that is not 0)
27631|       |    // the digits as text at text + leading, then '0's, so that fixed-size
27632|       |    // moves need not check how many digits there are
27633|  1.44k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27634|  1.44k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
27635|  1.44k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
27636|  1.44k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
27637|  1.44k|    std::memset(text.data() + 24, '0', 40);
27638|  1.44k|    const int k = 24 - leading - zeros; // significant digits
27639|  1.44k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
27640|  1.44k|    const char* const s0 = text.data() + leading;
27641|       |
27642|  1.44k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (27642:9): [True: 0, False: 1.44k]
  |  Branch (27642:19): [True: 0, False: 0]
  ------------------
27643|      0|    {
27644|       |        // "0.[000]digits" (n <= 0) is the digits after 1 - n leading '0's
27645|       |        // with the point after the first; "digits[000].0" (n >= k) and
27646|       |        // "dig.its" put the point after n characters
27647|      0|        const int pad = n <= 0 ? 1 - n : 0;
  ------------------
  |  Branch (27647:25): [True: 0, False: 0]
  ------------------
27648|      0|        const char* const s = s0 - pad;
27649|      0|        const int len = k + pad;
27650|      0|        const int point = n + pad;
27651|      0|        std::memcpy(first, s, 16);
27652|      0|        std::memcpy(first + point + 1, s + point, 24);
27653|      0|        first[point] = '.';
27654|      0|        return first + (point >= len ? point + 2 : len + 1);
  ------------------
  |  Branch (27654:25): [True: 0, False: 0]
  ------------------
27655|      0|    }
27656|       |
27657|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27658|  1.44k|    std::memcpy(first, s0, 16);
27659|  1.44k|    std::memcpy(first + 2, s0 + 1, 16);
27660|  1.44k|    first[1] = '.';
27661|  1.44k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (27661:32): [True: 264, False: 1.17k]
  ------------------
27662|  1.44k|    const int e = n - 1;
27663|  1.44k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27663:21): [True: 1.44k, False: 0]
  ------------------
27664|  1.44k|    const bool three = ea >= 100;
27665|  1.44k|    end[0] = 'e';
27666|  1.44k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27666:14): [True: 1.44k, False: 0]
  ------------------
27667|  1.44k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27667:39): [True: 1.44k, False: 0]
  ------------------
27668|  1.44k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27668:39): [True: 1.44k, False: 0]
  ------------------
27669|  1.44k|    end[4] = static_cast<char>('0' + (ea % 10));
27670|  1.44k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27670:19): [True: 1.44k, False: 0]
  ------------------
27671|  1.44k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
27720|  8.50k|    {
27721|  8.50k|        std::memcpy(p, &s, 16);
27722|  8.50k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
29158|  20.3k|    {
29159|  20.3k|        o->write_characters(write_buffer.data(), write_buffer_pos);
29160|  20.3k|        write_buffer_pos = 0;
29161|  20.3k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
32820|  2.36M|    {
32821|  2.36M|        assert_invariant(false);
32822|  2.36M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
31150|  6.14M|    {
31151|  6.14M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2591|  6.14M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31151:9): [True: 5.89M, False: 250k]
  |  Branch (31151:9): [True: 250k, False: 0]
  |  Branch (31151:9): [True: 6.14M, False: 0]
  ------------------
31152|  6.14M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2591|  6.14M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31152:9): [True: 5.39M, False: 744k]
  |  Branch (31152:9): [True: 744k, False: 0]
  |  Branch (31152:9): [True: 6.14M, False: 0]
  ------------------
31153|  6.14M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2591|  6.14M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31153:9): [True: 5.17M, False: 970k]
  |  Branch (31153:9): [True: 970k, False: 0]
  |  Branch (31153:9): [True: 6.14M, False: 0]
  ------------------
31154|  6.14M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2591|  6.14M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31154:9): [True: 6.14M, False: 0]
  |  Branch (31154:9): [True: 0, False: 0]
  |  Branch (31154:9): [True: 6.14M, False: 0]
  ------------------
31155|       |
31156|       |#if JSON_DIAGNOSTICS
31157|       |        JSON_TRY
31158|       |        {
31159|       |            JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
31160|       |            {
31161|       |                return j.m_parent == this;
31162|       |            }));
31163|       |        }
31164|       |        JSON_CATCH(...) {} // LCOV_EXCL_LINE
31165|       |#endif
31166|  6.14M|        static_cast<void>(check_parents);
31167|  6.14M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
36341|  2.36M|        {
36342|  2.36M|            m_value.destroy(m_type);
36343|  2.36M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
31094|  2.83M|        {
31095|  2.83M|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1667|  2.83M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 208k, False: 2.62M]
  |  |  ------------------
  ------------------
31096|   208k|            {
31097|   208k|                destroy_owned(t);
31098|   208k|            }
31099|  2.83M|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3350|  2.83M|{
 3351|  2.83M|    switch (t)
 3352|  2.83M|    {
 3353|  14.7k|        case value_t::object:
  ------------------
  |  Branch (3353:9): [True: 14.7k, False: 2.82M]
  ------------------
 3354|  33.0k|        case value_t::array:
  ------------------
  |  Branch (3354:9): [True: 18.3k, False: 2.81M]
  ------------------
 3355|   208k|        case value_t::string:
  ------------------
  |  Branch (3355:9): [True: 175k, False: 2.66M]
  ------------------
 3356|   208k|        case value_t::binary:
  ------------------
  |  Branch (3356:9): [True: 0, False: 2.83M]
  ------------------
 3357|   208k|            return true;
 3358|       |
 3359|  2.32M|        case value_t::null:
  ------------------
  |  Branch (3359:9): [True: 2.32M, False: 508k]
  ------------------
 3360|  2.42M|        case value_t::boolean:
  ------------------
  |  Branch (3360:9): [True: 91.4k, False: 2.74M]
  ------------------
 3361|  2.48M|        case value_t::number_integer:
  ------------------
  |  Branch (3361:9): [True: 63.7k, False: 2.77M]
  ------------------
 3362|  2.55M|        case value_t::number_unsigned:
  ------------------
  |  Branch (3362:9): [True: 74.6k, False: 2.76M]
  ------------------
 3363|  2.62M|        case value_t::number_float:
  ------------------
  |  Branch (3363:9): [True: 68.1k, False: 2.76M]
  ------------------
 3364|  2.62M|        case value_t::discarded:
  ------------------
  |  Branch (3364:9): [True: 1.37k, False: 2.83M]
  ------------------
 3365|  2.62M|        default:
  ------------------
  |  Branch (3365:9): [True: 0, False: 2.83M]
  ------------------
 3366|  2.62M|            return false;
 3367|  2.83M|    }
 3368|  2.83M|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
31102|   208k|        {
31103|   208k|            switch (t)
31104|   208k|            {
31105|   175k|                case value_t::string:
  ------------------
  |  Branch (31105:17): [True: 175k, False: 33.0k]
  ------------------
31106|   175k|                    destroy_string();
31107|   175k|                    break;
31108|       |
31109|      0|                case value_t::binary:
  ------------------
  |  Branch (31109:17): [True: 0, False: 208k]
  ------------------
31110|      0|                    destroy_binary();
31111|      0|                    break;
31112|       |
31113|  14.7k|                case value_t::object:
  ------------------
  |  Branch (31113:17): [True: 14.7k, False: 194k]
  ------------------
31114|  33.0k|                case value_t::array:
  ------------------
  |  Branch (31114:17): [True: 18.3k, False: 190k]
  ------------------
31115|  33.0k|                    destroy_container(t);
31116|  33.0k|                    break;
31117|       |
31118|      0|                case value_t::null:
  ------------------
  |  Branch (31118:17): [True: 0, False: 208k]
  ------------------
31119|      0|                case value_t::boolean:
  ------------------
  |  Branch (31119:17): [True: 0, False: 208k]
  ------------------
31120|      0|                case value_t::number_integer:
  ------------------
  |  Branch (31120:17): [True: 0, False: 208k]
  ------------------
31121|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (31121:17): [True: 0, False: 208k]
  ------------------
31122|      0|                case value_t::number_float:
  ------------------
  |  Branch (31122:17): [True: 0, False: 208k]
  ------------------
31123|      0|                case value_t::discarded:
  ------------------
  |  Branch (31123:17): [True: 0, False: 208k]
  ------------------
31124|      0|                default:
  ------------------
  |  Branch (31124:17): [True: 0, False: 208k]
  ------------------
31125|      0|                    break;
31126|   208k|            }
31127|   208k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_stringEv:
30920|   175k|        {
30921|   175k|            if (string == nullptr)
  ------------------
  |  Branch (30921:17): [True: 0, False: 175k]
  ------------------
30922|      0|            {
30923|       |                // not initialized (e.g., due to exception in the ctor)
30924|      0|                return;
30925|      0|            }
30926|   175k|            AllocatorType<string_t> alloc;
30927|   175k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
30928|   175k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
30929|   175k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
30945|  33.0k|        {
30946|  33.0k|            if (
30947|  33.0k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (30947:18): [True: 14.7k, False: 18.3k]
  |  Branch (30947:42): [True: 0, False: 14.7k]
  ------------------
30948|  33.0k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (30948:18): [True: 18.3k, False: 14.7k]
  |  Branch (30948:41): [True: 0, False: 18.3k]
  ------------------
30949|  33.0k|            )
30950|      0|            {
30951|       |                // not initialized (e.g., due to exception in the ctor)
30952|      0|                return;
30953|      0|            }
30954|       |
30955|       |            // This json_value is not itself a basic_json, so the top-level
30956|       |            // container is first moved into a local stand-in ("cur"); a
30957|       |            // default-constructed basic_json has a null pointer in its
30958|       |            // m_value (see data::m_value's initializer), so swapping it
30959|       |            // with *this leaves this union's own pointer null, and it is
30960|       |            // never looked at or freed a second time.
30961|  33.0k|            basic_json cur;
30962|  33.0k|            cur.m_data.m_type = t;
30963|  33.0k|            using std::swap;
30964|  33.0k|            swap(cur.m_data.m_value, *this);
30965|       |
30966|  33.0k|            destroy_bounded(cur, 0);
30967|  33.0k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
32392|   630k|    {
32393|   630k|        assert_invariant();
32394|   630k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
36334|  1.10M|        data() noexcept = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_boundedERSE_m:
30974|   482k|        {
30975|   482k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1667|   482k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10.6k, False: 471k]
  |  |  ------------------
  ------------------
30976|  10.6k|            {
30977|  10.6k|                destroy_walk(v);
30978|  10.6k|                return;
30979|  10.6k|            }
30980|       |
30981|   471k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30981:17): [True: 412k, False: 59.3k]
  ------------------
30982|   412k|            {
30983|   412k|                for (auto& child : *v.m_data.m_value.array)
  ------------------
  |  Branch (30983:34): [True: 776k, False: 412k]
  ------------------
30984|   776k|                {
30985|   776k|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30985:25): [True: 392k, False: 384k]
  |  Branch (30985:66): [True: 24.4k, False: 360k]
  ------------------
30986|   416k|                    {
30987|   416k|                        destroy_bounded(child, depth + 1);
30988|   416k|                    }
30989|   776k|                }
30990|   412k|            }
30991|  59.3k|            else
30992|  59.3k|            {
30993|  59.3k|                for (auto& child : *v.m_data.m_value.object)
  ------------------
  |  Branch (30993:34): [True: 85.7k, False: 59.3k]
  ------------------
30994|  85.7k|                {
30995|  85.7k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30995:25): [True: 7.47k, False: 78.2k]
  |  Branch (30995:73): [True: 25.0k, False: 53.2k]
  ------------------
30996|  32.5k|                    {
30997|  32.5k|                        destroy_bounded(child.second, depth + 1);
30998|  32.5k|                    }
30999|  85.7k|                }
31000|  59.3k|            }
31001|       |
31002|       |            // only leaves and already destroyed (null) children remain
31003|   471k|            free_container(v);
31004|   471k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value12destroy_walkERSE_:
31031|  10.6k|        {
31032|  10.6k|            basic_json cur;
31033|  10.6k|            take(cur, top);
31034|       |
31035|  10.6k|            basic_json prev; // value_t::null: no parent
31036|       |
31037|       |            // true right after cur was entered: its children have not been
31038|       |            // looked at yet. If none of them has children of its own, cur is
31039|       |            // freed in one go instead of child by child; this is tried once
31040|       |            // per container, so the walk stays linear.
31041|  10.6k|            bool fresh = true;
31042|       |
31043|   441k|            while (true)
  ------------------
  |  Branch (31043:20): [True: 441k, Folded]
  ------------------
31044|   441k|            {
31045|   441k|                const bool fresh_now = fresh;
31046|   441k|                fresh = false;
31047|   441k|                if (has_no_children(cur) || (fresh_now && all_children_leaves(cur)))
  ------------------
  |  Branch (31047:21): [True: 199k, False: 241k]
  |  Branch (31047:46): [True: 203k, False: 38.3k]
  |  Branch (31047:59): [True: 8.06k, False: 194k]
  ------------------
31048|   207k|                {
31049|   207k|                    if (prev.m_data.m_type == value_t::null)
  ------------------
  |  Branch (31049:25): [True: 10.6k, False: 197k]
  ------------------
31050|  10.6k|                    {
31051|  10.6k|                        free_container(cur);
31052|  10.6k|                        return; // back at the top with nothing left to do
31053|  10.6k|                    }
31054|       |
31055|       |                    // ascend: detach the grandparent link from prev's
31056|       |                    // walk_child() slot, drop that (now null) slot, free cur
31057|       |                    // (it is empty), then move up one level
31058|   197k|                    basic_json gp;
31059|   197k|                    take(gp, walk_child(prev));
31060|   197k|                    pop_walk_child(prev);
31061|       |
31062|   197k|                    free_container(cur);
31063|       |
31064|   197k|                    take(cur, prev);
31065|   197k|                    take(prev, gp);
31066|   197k|                    continue;
31067|   207k|                }
31068|       |
31069|   233k|                basic_json& cur_child_ref = walk_child(cur);
31070|       |
31071|   233k|                if (has_no_children(cur_child_ref))
  ------------------
  |  Branch (31071:21): [True: 36.2k, False: 197k]
  ------------------
31072|  36.2k|                {
31073|       |                    // scalar, or already-empty array/object
31074|  36.2k|                    pop_walk_child(cur);
31075|  36.2k|                    continue;
31076|  36.2k|                }
31077|       |
31078|       |                // descend into the non-empty child, reversing the
31079|       |                // link: its slot takes over prev, and the child becomes
31080|       |                // the new cur
31081|   197k|                basic_json tmp;
31082|   197k|                take(tmp, cur_child_ref);
31083|   197k|                take(cur_child_ref, prev);
31084|   197k|                take(prev, cur);
31085|   197k|                take(cur, tmp);
31086|   197k|                fresh = true;
31087|   197k|            }
31088|  10.6k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value4takeERSE_SG_:
30789|  1.39M|        {
30790|  1.39M|            dst.m_data.m_type = src.m_data.m_type;
30791|  1.39M|            dst.m_data.m_value = src.m_data.m_value;
30792|  1.39M|            src.m_data.m_type = value_t::null;
30793|  1.39M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKSE_:
30797|  2.48M|        {
30798|  2.48M|            switch (v.m_data.m_type)
30799|  2.48M|            {
30800|  1.37M|                case value_t::array:
  ------------------
  |  Branch (30800:17): [True: 1.37M, False: 1.10M]
  ------------------
30801|  1.37M|                    return v.m_data.m_value.array->empty();
30802|   151k|                case value_t::object:
  ------------------
  |  Branch (30802:17): [True: 151k, False: 2.33M]
  ------------------
30803|   151k|                    return v.m_data.m_value.object->empty();
30804|   480k|                case value_t::null:
  ------------------
  |  Branch (30804:17): [True: 480k, False: 2.00M]
  ------------------
30805|   655k|                case value_t::string:
  ------------------
  |  Branch (30805:17): [True: 175k, False: 2.31M]
  ------------------
30806|   749k|                case value_t::boolean:
  ------------------
  |  Branch (30806:17): [True: 94.0k, False: 2.39M]
  ------------------
30807|   811k|                case value_t::number_integer:
  ------------------
  |  Branch (30807:17): [True: 61.7k, False: 2.42M]
  ------------------
30808|   889k|                case value_t::number_unsigned:
  ------------------
  |  Branch (30808:17): [True: 78.1k, False: 2.40M]
  ------------------
30809|   955k|                case value_t::number_float:
  ------------------
  |  Branch (30809:17): [True: 65.8k, False: 2.42M]
  ------------------
30810|   955k|                case value_t::binary:
  ------------------
  |  Branch (30810:17): [True: 0, False: 2.48M]
  ------------------
30811|   955k|                case value_t::discarded:
  ------------------
  |  Branch (30811:17): [True: 0, False: 2.48M]
  ------------------
30812|   955k|                default:
  ------------------
  |  Branch (30812:17): [True: 0, False: 2.48M]
  ------------------
30813|   955k|                    return true;
30814|  2.48M|            }
30815|  2.48M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_:
30822|   637k|        {
30823|       |            // array_t only needs forward iterators (see custom_array_type)
30824|   637k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30824:17): [True: 584k, False: 52.7k]
  ------------------
30825|   584k|            {
30826|   584k|                const auto& a = *v.m_data.m_value.array;
30827|   584k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
30828|   584k|                {
30829|   584k|                    return has_no_children(el);
30830|   584k|                });
30831|   584k|            }
30832|  52.7k|            const auto& o = *v.m_data.m_value.object;
30833|  52.7k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
30834|  52.7k|            {
30835|  52.7k|                return has_no_children(el.second);
30836|  52.7k|            });
30837|   637k|        }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlSH_E_clESH_:
30828|  1.01M|                {
30829|  1.01M|                    return has_no_children(el);
30830|  1.01M|                });
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlRKNS2_4pairIKSA_SE_EEE_clESM_:
30834|   121k|            {
30835|   121k|                return has_no_children(el.second);
30836|   121k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10walk_childERSE_:
30868|   430k|        {
30869|   430k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30869:17): [True: 391k, False: 38.8k]
  ------------------
30870|   391k|            {
30871|   391k|                return v.m_data.m_value.array->back();
30872|   391k|            }
30873|  38.8k|            JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  38.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30873:13): [True: 38.8k, False: 0]
  ------------------
30874|  38.8k|            return walk_child_it(*v.m_data.m_value.object)->second;
30875|  38.8k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_:
30860|  67.7k|        {
30861|  67.7k|            JSON_ASSERT(!o.empty());
  ------------------
  |  | 2591|  67.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30861:13): [True: 67.7k, False: 0]
  ------------------
30862|  67.7k|            return walk_child_it(o, typename std::iterator_traits<typename ObjectType_::iterator>::iterator_category());
30863|  67.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_NS2_26bidirectional_iterator_tagE:
30848|  67.7k|        {
30849|  67.7k|            return std::prev(o.end());
30850|  67.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14pop_walk_childERSE_:
30882|   233k|        {
30883|   233k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30883:17): [True: 204k, False: 28.8k]
  ------------------
30884|   204k|            {
30885|   204k|                v.m_data.m_value.array->pop_back();
30886|   204k|            }
30887|  28.8k|            else
30888|  28.8k|            {
30889|  28.8k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  28.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30889:17): [True: 28.8k, False: 0]
  ------------------
30890|  28.8k|                v.m_data.m_value.object->erase(walk_child_it(*v.m_data.m_value.object));
30891|  28.8k|            }
30892|   233k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERSE_:
30900|   679k|        {
30901|   679k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2591|   679k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30901:13): [True: 244k, False: 434k]
  |  Branch (30901:13): [True: 434k, False: 0]
  |  Branch (30901:13): [True: 679k, False: 0]
  ------------------
30902|   679k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30902:17): [True: 604k, False: 74.6k]
  ------------------
30903|   604k|            {
30904|   604k|                AllocatorType<array_t> alloc;
30905|   604k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.array);
30906|   604k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.array, 1);
30907|   604k|            }
30908|  74.6k|            else
30909|  74.6k|            {
30910|  74.6k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  74.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30910:17): [True: 74.6k, False: 0]
  ------------------
30911|  74.6k|                AllocatorType<object_t> alloc;
30912|  74.6k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.object);
30913|  74.6k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.object, 1);
30914|  74.6k|            }
30915|   679k|            v.m_data.m_type = value_t::null; // avoid a double free if v is later destructed
30916|   679k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRKSD_EESE_OT_bb:
36780|  12.0k|    {
36781|  12.0k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
36782|  12.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterIPKhSJ_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  16.4k|    {
36386|  16.4k|        basic_json result;
36387|  16.4k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  16.4k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  16.4k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 1.37k, False: 15.1k]
  ------------------
36390|  1.37k|        {
36391|  1.37k|            result = value_t::discarded;
36392|  1.37k|        }
36393|  16.4k|        return result;
36394|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEEC2ERSG_bPNS1_5lexerISG_SK_EE:
13873|  16.4k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  16.4k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
14944|  16.4k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  16.4k|    {
14946|  16.4k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4299|  1.47M|    {
 4300|  1.47M|        return static_cast<int_type>(std::char_traits<char>::eof());
 4301|  1.47M|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
14882|  36.0k|{
14883|  36.0k|    return *reinterpret_cast<char*>(&num) == 1;
14884|  36.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
14969|  16.4k|    {
14970|  16.4k|        sax = sax_;
14971|  16.4k|        container_stack.clear();
14972|  16.4k|        bon8_pushback_size = 0;
14973|  16.4k|        bool result = false;
14974|       |
14975|  16.4k|        switch (input_format)
14976|  16.4k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 16.4k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 16.4k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 16.4k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 16.4k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 16.4k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|  16.4k|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 16.4k, False: 0]
  ------------------
14995|  16.4k|                result = parse_bon8_internal();
14996|  16.4k|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 16.4k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 16.4k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  16.4k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  13.9k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 12.6k, False: 1.28k]
  |  Branch (15004:23): [True: 12.6k, False: 0]
  ------------------
15005|  12.6k|        {
15006|  12.6k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 12.6k]
  |  Branch (15006:59): [True: 0, False: 12.6k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  12.6k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 12.6k, False: 0]
  ------------------
15011|  12.6k|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|  12.6k|                get_bon8();
15014|  12.6k|            }
15015|      0|            else
15016|      0|            {
15017|      0|                get();
15018|      0|            }
15019|       |
15020|  12.6k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  12.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 279, False: 12.3k]
  |  |  ------------------
  ------------------
15021|    279|            {
15022|    279|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    279|            }
15024|  12.6k|        }
15025|       |
15026|  13.6k|        return result;
15027|  13.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIiEEbRT_PKc:
18667|  3.90k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  3.90k|        auto new_chars_read = ia.get_elements(&dest);
18671|  3.90k|        chars_read += new_chars_read;
18672|  3.90k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  3.90k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 45, False: 3.86k]
  |  |  ------------------
  ------------------
18673|     45|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     45|            ++chars_read;
18676|     45|            static_cast<void>(report_eof(context));
18677|     45|            return false;
18678|     45|        }
18679|  3.86k|        return true;
18680|  3.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIiEEmPT_m:
 8644|  3.90k|    {
 8645|  3.90k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  3.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIiEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  3.90k|    {
 8703|  3.90k|        const std::size_t wanted = count * sizeof(T);
 8704|  3.90k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  3.90k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  3.90k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  3.90k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.88k, False: 24]
  |  |  ------------------
  ------------------
 8707|  3.88k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  3.88k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  3.88k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 3.88k, False: 0]
  ------------------
 8712|  3.88k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  3.88k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 3.88k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  3.88k|            std::memcpy(dest, &*current, copied);
 8716|  3.88k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  3.88k|        }
 8718|  3.90k|        return copied;
 8719|  3.90k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
 8663|   160k|    {
 8664|       |#if JSON_HAS_RANGES && defined(__cpp_lib_concepts) && defined(JSON_HAS_CPP_20)
 8665|       |        // std::ranges::distance also supports sized sentinels of a different
 8666|       |        // type (e.g. std::counted_iterator + std::default_sentinel_t)
 8667|       |        return static_cast<std::size_t>(std::ranges::distance(current, end));
 8668|       |#else
 8669|   160k|        return static_cast<std::size_t>(std::distance(current, end));
 8670|   160k|#endif
 8671|   160k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10report_eofEPKc:
19058|  3.16k|    {
19059|  3.16k|        return sax->parse_error(chars_read, "<end of file>",
19060|  3.16k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  3.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  4.11k|    {
14005|  4.11k|        errored = true;
14006|  4.11k|        static_cast<void>(ex);
14007|  4.11k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.74k, False: 1.37k]
  ------------------
14008|  2.74k|        {
14009|  2.74k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.74k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.74k|        }
14011|  1.37k|        return false;
14012|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5585|  8.23k|    {
 5586|  8.23k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5587|  8.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5570|  8.23k|    {
 5571|  8.23k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5572|  8.23k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5572:39): [True: 8.23k, False: 0]
  ------------------
 5573|  8.23k|                                     ": ", exception::diagnostics(context), what_arg);
 5574|  8.23k|        return {id_, byte_, w.c_str()};
 5575|  8.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5318|  8.23k|{
 5319|  8.23k|    OutStringType str;
 5320|  8.23k|    str.reserve(concat_length(args...));
 5321|  8.23k|    concat_into(str, std::forward<Args>(args)...);
 5322|  8.23k|    return str;
 5323|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5222|  8.23k|{
 5223|  8.23k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5222|  8.23k|{
 5223|  8.23k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA12_KcS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA12_KcJS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5318|  8.23k|{
 5319|  8.23k|    OutStringType str;
 5320|  8.23k|    str.reserve(concat_length(args...));
 5321|  8.23k|    concat_into(str, std::forward<Args>(args)...);
 5322|  8.23k|    return str;
 5323|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA10_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5602|  8.23k|        : exception(id_, what_arg), byte(byte_) {}
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17exception_messageERKSC_SP_:
19163|  4.11k|    {
19164|  4.11k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  4.11k|        switch (input_format)
19167|  4.11k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 4.11k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 4.11k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 4.11k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 4.11k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 4.11k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|  4.11k|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 4.11k, False: 0]
  ------------------
19189|  4.11k|                error_msg += "BON8";
19190|  4.11k|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 4.11k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 4.11k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  4.11k|        }
19196|       |
19197|  4.11k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5318|  8.23k|{
 5319|  8.23k|    OutStringType str;
 5320|  8.23k|    str.reserve(concat_length(args...));
 5321|  8.23k|    concat_into(str, std::forward<Args>(args)...);
 5322|  8.23k|    return str;
 5323|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5216|  8.23k|{
 5217|  8.23k|    return 1 + concat_length(rest...);
 5218|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5228|  8.23k|{
 5229|  8.23k|    return str.size() + concat_length(rest...);
 5230|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERS9_JcRKS9_RA3_KcSC_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSH_OSI_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJRKS9_RA3_KcSB_ETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISG_SH_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5290|  8.23k|{
 5291|  8.23k|    out += std::forward<Arg>(arg);
 5292|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  8.23k|{
 5282|  8.23k|    out.append(std::forward<Arg>(arg));
 5283|  8.23k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.23k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIiEEvRT_:
18698|  3.86k|    {
18699|  3.86k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.86k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  11.5k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 7.72k, False: 3.86k]
  ------------------
18715|  7.72k|            {
18716|  7.72k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  7.72k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15enter_containerEbmm:
15082|   380k|    {
15083|   380k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   760k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 380k]
  |  |  |  Branch (1667:94): [True: 41.0k, False: 339k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   380k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   380k|        return true;
15090|   380k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12start_objectEm:
13930|  41.0k|    {
13931|  41.0k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  41.0k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  41.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   380k|    {
14031|   380k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 10.1k, False: 370k]
  ------------------
14032|  10.1k|        {
14033|  10.1k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  10.1k|            return &root;
14040|  10.1k|        }
14041|       |
14042|   370k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   370k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 344k, False: 25.3k]
  |  Branch (14042:9): [True: 25.3k, False: 0]
  |  Branch (14042:9): [True: 370k, False: 0]
  ------------------
14043|       |
14044|   370k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 344k, False: 25.3k]
  ------------------
14045|   344k|        {
14046|   344k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|   344k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|   344k|        }
14054|       |
14055|  25.3k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 25.3k, False: 0]
  ------------------
14056|  25.3k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  25.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 25.3k, False: 0]
  ------------------
14057|  25.3k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  25.3k|        return object_element;
14064|  25.3k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
32946|  3.10M|    {
32947|  3.10M|        return m_data.m_type == value_t::array;
32948|  3.10M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
32938|   595k|    {
32939|   595k|        return m_data.m_type == value_t::object;
32940|   595k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EOSE_:
32765|   578k|        : json_base_class_t(std::move(static_cast<json_base_class_t&>(other))),
32766|   578k|          m_data(std::move(other.m_data))
32767|       |#if JSON_DIAGNOSTIC_POSITIONS
32768|       |        , start_position(other.start_position)
32769|       |        , end_position(other.end_position)
32770|       |#endif
32771|   578k|    {
32772|       |        // check that the passed value is valid
32773|   578k|        other.assert_invariant(false);
32774|       |
32775|       |        // invalidate payload
32776|   578k|        other.m_data.m_type = value_t::null;
32777|   578k|        other.m_data.m_value = {};
32778|       |
32779|       |#if JSON_DIAGNOSTIC_POSITIONS
32780|       |        other.start_position = std::string::npos;
32781|       |        other.end_position = std::string::npos;
32782|       |#endif
32783|       |
32784|   578k|        set_parents();
32785|   578k|        assert_invariant();
32786|   578k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
31170|  2.29M|    {
31171|       |#if JSON_DIAGNOSTICS
31172|       |        switch (m_data.m_type)
31173|       |        {
31174|       |            case value_t::array:
31175|       |            {
31176|       |                for (auto& element : *m_data.m_value.array)
31177|       |                {
31178|       |                    element.m_parent = this;
31179|       |                }
31180|       |                break;
31181|       |            }
31182|       |
31183|       |            case value_t::object:
31184|       |            {
31185|       |                for (auto& element : *m_data.m_value.object)
31186|       |                {
31187|       |                    element.second.m_parent = this;
31188|       |                }
31189|       |                break;
31190|       |            }
31191|       |
31192|       |            case value_t::null:
31193|       |            case value_t::string:
31194|       |            case value_t::boolean:
31195|       |            case value_t::number_integer:
31196|       |            case value_t::number_unsigned:
31197|       |            case value_t::number_float:
31198|       |            case value_t::binary:
31199|       |            case value_t::discarded:
31200|       |            default:
31201|       |                break;
31202|       |        }
31203|       |#endif
31204|  2.29M|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
13724|   380k|{
13725|   380k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   729k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 380k]
  |  |  |  Branch (1667:94): [True: 349k, False: 31.0k]
  |  |  |  Branch (1667:94): [True: 0, False: 349k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|   380k|    return true;
13730|   380k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8max_sizeEv:
34667|   619k|    {
34668|   619k|        switch (m_data.m_type)
34669|   619k|        {
34670|   557k|            case value_t::array:
  ------------------
  |  Branch (34670:13): [True: 557k, False: 61.6k]
  ------------------
34671|   557k|            {
34672|       |                // delegate call to array_t::max_size()
34673|   557k|                return m_data.m_value.array->max_size();
34674|      0|            }
34675|       |
34676|  61.6k|            case value_t::object:
  ------------------
  |  Branch (34676:13): [True: 61.6k, False: 557k]
  ------------------
34677|  61.6k|            {
34678|       |                // delegate call to object_t::max_size()
34679|  61.6k|                return m_data.m_value.object->max_size();
34680|      0|            }
34681|       |
34682|      0|            case value_t::null:
  ------------------
  |  Branch (34682:13): [True: 0, False: 619k]
  ------------------
34683|      0|            case value_t::string:
  ------------------
  |  Branch (34683:13): [True: 0, False: 619k]
  ------------------
34684|      0|            case value_t::boolean:
  ------------------
  |  Branch (34684:13): [True: 0, False: 619k]
  ------------------
34685|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34685:13): [True: 0, False: 619k]
  ------------------
34686|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34686:13): [True: 0, False: 619k]
  ------------------
34687|      0|            case value_t::number_float:
  ------------------
  |  Branch (34687:13): [True: 0, False: 619k]
  ------------------
34688|      0|            case value_t::binary:
  ------------------
  |  Branch (34688:13): [True: 0, False: 619k]
  ------------------
34689|      0|            case value_t::discarded:
  ------------------
  |  Branch (34689:13): [True: 0, False: 619k]
  ------------------
34690|      0|            default:
  ------------------
  |  Branch (34690:13): [True: 0, False: 619k]
  ------------------
34691|      0|            {
34692|       |                // all other types have max_size() == size()
34693|      0|                return size();
34694|      0|            }
34695|   619k|        }
34696|   619k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
34627|   119k|    {
34628|   119k|        switch (m_data.m_type)
34629|   119k|        {
34630|      0|            case value_t::null:
  ------------------
  |  Branch (34630:13): [True: 0, False: 119k]
  ------------------
34631|      0|            {
34632|       |                // null values are empty
34633|      0|                return 0;
34634|      0|            }
34635|       |
34636|   109k|            case value_t::array:
  ------------------
  |  Branch (34636:13): [True: 109k, False: 9.25k]
  ------------------
34637|   109k|            {
34638|       |                // delegate call to array_t::size()
34639|   109k|                return m_data.m_value.array->size();
34640|      0|            }
34641|       |
34642|  9.25k|            case value_t::object:
  ------------------
  |  Branch (34642:13): [True: 9.25k, False: 109k]
  ------------------
34643|  9.25k|            {
34644|       |                // delegate call to object_t::size()
34645|  9.25k|                return m_data.m_value.object->size();
34646|      0|            }
34647|       |
34648|      0|            case value_t::string:
  ------------------
  |  Branch (34648:13): [True: 0, False: 119k]
  ------------------
34649|      0|            case value_t::boolean:
  ------------------
  |  Branch (34649:13): [True: 0, False: 119k]
  ------------------
34650|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34650:13): [True: 0, False: 119k]
  ------------------
34651|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34651:13): [True: 0, False: 119k]
  ------------------
34652|      0|            case value_t::number_float:
  ------------------
  |  Branch (34652:13): [True: 0, False: 119k]
  ------------------
34653|      0|            case value_t::binary:
  ------------------
  |  Branch (34653:13): [True: 0, False: 119k]
  ------------------
34654|      0|            case value_t::discarded:
  ------------------
  |  Branch (34654:13): [True: 0, False: 119k]
  ------------------
34655|      0|            default:
  ------------------
  |  Branch (34655:13): [True: 0, False: 119k]
  ------------------
34656|      0|            {
34657|       |                // all other types have size 1
34658|      0|                return 1;
34659|      0|            }
34660|   119k|        }
34661|   119k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11start_arrayEm:
13966|   339k|    {
13967|   339k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|   339k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|   339k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 339k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|   339k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 314k, False: 24.3k]
  ------------------
13980|   314k|        {
13981|   314k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|   314k|        }
13983|       |
13984|   339k|        return true;
13985|   339k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13reserve_arrayINSt3__16vectorINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS4_IhNSA_IhEEEEvEENSA_ISG_EEEEEEDTcmcldtfp_7reservefp0_Ecvv_EERT_mNS1_12priority_tagILj1EEE:
13695|   557k|{
13696|   557k|    constexpr std::size_t reserve_cap = 16384;
13697|   557k|    arr.reserve((std::min)(len, reserve_cap));
13698|   557k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15container_frameC2Embm:
15051|   380k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
13677|  1.28M|{
13678|  1.28M|    return (std::numeric_limits<std::size_t>::max)();
13679|  1.28M|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15leave_containerEv:
15114|   337k|    {
15115|   337k|        const bool is_object = container_stack.back().is_object;
15116|   337k|        container_stack.pop_back();
15117|   337k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 33.9k, False: 303k]
  ------------------
15118|   337k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE10end_objectEv:
13952|  33.9k|    {
13953|  33.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  33.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 33.9k, False: 0]
  ------------------
13954|  33.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  33.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 33.9k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  33.9k|        ref_stack.back()->set_parents();
13961|  33.9k|        ref_stack.pop_back();
13962|  33.9k|        return true;
13963|  33.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE9end_arrayEv:
13988|   303k|    {
13989|   303k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|   303k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 303k, False: 0]
  ------------------
13990|   303k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|   303k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 303k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|   303k|        ref_stack.back()->set_parents();
13997|   303k|        ref_stack.pop_back();
13998|   303k|        return true;
13999|   303k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12unexpect_eofEPKc:
19041|  18.8k|    {
19042|  18.8k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  18.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.95k, False: 15.9k]
  |  |  ------------------
  ------------------
19043|  2.95k|        {
19044|  2.95k|            return report_eof(context);
19045|  2.95k|        }
19046|  15.9k|        return true;
19047|  18.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E14bulk_remainingEv:
 8688|   140k|    {
 8689|   140k|        return remaining_count();
 8690|   140k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_dataEv:
 8682|   140k|    {
 8683|   140k|        return &*current;
 8684|   140k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_skipEm:
 8694|  26.2k|    {
 8695|  26.2k|        std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(n));
 8696|  26.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE3keyERSC_:
13942|  82.3k|    {
13943|  82.3k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  82.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 82.3k, False: 0]
  ------------------
13944|  82.3k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  82.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 82.3k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  82.3k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  82.3k|        return true;
13949|  82.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIdEEbRT_PKc:
18667|  4.30k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.30k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.30k|        chars_read += new_chars_read;
18672|  4.30k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.30k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 4.24k]
  |  |  ------------------
  ------------------
18673|     57|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     57|            ++chars_read;
18676|     57|            static_cast<void>(report_eof(context));
18677|     57|            return false;
18678|     57|        }
18679|  4.24k|        return true;
18680|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
 8644|  4.30k|    {
 8645|  4.30k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  4.30k|    {
 8703|  4.30k|        const std::size_t wanted = count * sizeof(T);
 8704|  4.30k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  4.30k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  4.30k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  4.30k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.26k, False: 33]
  |  |  ------------------
  ------------------
 8707|  4.26k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  4.26k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  4.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 4.26k, False: 0]
  ------------------
 8712|  4.26k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  4.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 4.26k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  4.26k|            std::memcpy(dest, &*current, copied);
 8716|  4.26k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  4.26k|        }
 8718|  4.30k|        return copied;
 8719|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIdEEvRT_:
18698|  4.24k|    {
18699|  4.24k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.24k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  21.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 16.9k, False: 4.24k]
  ------------------
18715|  16.9k|            {
18716|  16.9k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  16.9k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.24k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIdEEbT_:
18825|  4.24k|    {
18826|  4.24k|        const auto result = static_cast<number_float_t>(number);
18827|  4.24k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  8.43k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.24k]
  |  |  |  Branch (1667:94): [True: 4.19k, False: 51]
  |  |  |  Branch (1667:94): [True: 0, False: 4.19k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  4.24k|        return sax->number_float(result, "");
18832|  4.24k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16get_token_stringEv:
19152|  1.91k|    {
19153|  1.91k|        return hex_byte(static_cast<std::uint8_t>(current));
19154|  1.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12number_floatEdRKSC_:
13908|  37.4k|    {
13909|  37.4k|        handle_value(val);
13910|  37.4k|        return true;
13911|  37.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRdEEPSG_OT_:
14030|  37.4k|    {
14031|  37.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.82k, False: 35.6k]
  ------------------
14032|  1.82k|        {
14033|  1.82k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.82k|            return &root;
14040|  1.82k|        }
14041|       |
14042|  35.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  35.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 25.0k, False: 10.6k]
  |  Branch (14042:9): [True: 10.6k, False: 0]
  |  Branch (14042:9): [True: 35.6k, False: 0]
  ------------------
14043|       |
14044|  35.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 25.0k, False: 10.6k]
  ------------------
14045|  25.0k|        {
14046|  25.0k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  25.0k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  25.0k|        }
14054|       |
14055|  10.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  10.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 10.6k, False: 0]
  ------------------
14056|  10.6k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  10.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 10.6k, False: 0]
  ------------------
14057|  10.6k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  10.6k|        return object_element;
14064|  10.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRddTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  68.1k|    {
32411|  68.1k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  68.1k|        set_parents();
32413|  68.1k|        assert_invariant();
32414|  68.1k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIdvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERdEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  68.1k|    {
 7869|  68.1k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  68.1k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERdEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  68.1k|    {
 7813|  68.1k|        return to_json(j, std::forward<T>(val));
 7814|  68.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEdTnNS4_9enable_ifIXsr3std17is_floating_pointIT0_EE5valueEiE4typeELi0EEEvRT_SI_:
 7505|  68.1k|{
 7506|  68.1k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 7507|  68.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE7EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_14number_float_tE:
 7295|  68.1k|    {
 7296|  68.1k|        j.replace_value(value_t::number_float, val);
 7297|  68.1k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
31210|   473k|    {
31211|   473k|        m_data.m_value.destroy(m_data.m_type);
31212|   473k|        m_data.m_value = v;
31213|   473k|        m_data.m_type = t;
31214|   473k|        set_parents();
31215|   473k|        assert_invariant();
31216|   473k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
30661|  68.1k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6stringERSC_:
13914|  97.7k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  97.7k|        handle_value(std::move(val));
13918|  97.7k|        return true;
13919|  97.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
14030|  97.7k|    {
14031|  97.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 825, False: 96.9k]
  ------------------
14032|    825|        {
14033|    825|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    825|            return &root;
14040|    825|        }
14041|       |
14042|  96.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  96.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 85.6k, False: 11.2k]
  |  Branch (14042:9): [True: 11.2k, False: 0]
  |  Branch (14042:9): [True: 96.9k, False: 0]
  ------------------
14043|       |
14044|  96.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 85.6k, False: 11.2k]
  ------------------
14045|  85.6k|        {
14046|  85.6k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  85.6k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  85.6k|        }
14054|       |
14055|  11.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  11.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 11.2k, False: 0]
  ------------------
14056|  11.2k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  11.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 11.2k, False: 0]
  ------------------
14057|  11.2k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  11.2k|        return object_element;
14064|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ISA_SA_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SH_EE5valueEiE4typeELi0EEEOT_:
32410|   175k|    {
32411|   175k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   175k|        set_parents();
32413|   175k|        assert_invariant();
32414|   175k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE7to_jsonINS0_10basic_jsonINS2_3mapENS2_6vectorES8_blmdS6_S1_NSD_IhNS6_IhEEEEvEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7868|   175k|    {
 7869|   175k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   175k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEESD_EEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7812|   175k|    {
 7813|   175k|        return to_json(j, std::forward<T>(val));
 7814|   175k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 7498|   175k|{
 7499|   175k|    external_constructor<value_t::string>::construct(j, std::move(s));
 7500|   175k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE3EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_ONSK_8string_tE:
 7257|   175k|    {
 7258|   175k|        const typename BasicJsonType::json_value value(std::move(s));
 7259|   175k|        j.replace_value(value_t::string, value);
 7260|   175k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
30752|   175k|        json_value(string_t&& value) : string(create<string_t>(std::move(value))) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createISA_JSA_EEEPT_DpOT0_:
30589|   175k|    {
30590|   175k|        AllocatorType<T> alloc;
30591|   175k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   175k|        auto deleter = [&](T * obj)
30594|   175k|        {
30595|   175k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   175k|        };
30597|   175k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   175k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   175k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   175k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 175k, False: 0]
  ------------------
30600|   175k|        return obj.release();
30601|   175k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE7booleanEb:
13890|  51.3k|    {
13891|  51.3k|        handle_value(val);
13892|  51.3k|        return true;
13893|  51.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
14030|  51.3k|    {
14031|  51.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 11, False: 51.3k]
  ------------------
14032|     11|        {
14033|     11|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|     11|            return &root;
14040|     11|        }
14041|       |
14042|  51.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  51.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 48.6k, False: 2.66k]
  |  Branch (14042:9): [True: 2.66k, False: 0]
  |  Branch (14042:9): [True: 51.3k, False: 0]
  ------------------
14043|       |
14044|  51.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 48.6k, False: 2.66k]
  ------------------
14045|  48.6k|        {
14046|  48.6k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  48.6k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  48.6k|        }
14054|       |
14055|  2.66k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.66k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.66k, False: 0]
  ------------------
14056|  2.66k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.66k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.66k, False: 0]
  ------------------
14057|  2.66k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.66k|        return object_element;
14064|  2.66k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRbbTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  91.4k|    {
32411|  91.4k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  91.4k|        set_parents();
32413|  91.4k|        assert_invariant();
32414|  91.4k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIbvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERbEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  91.4k|    {
 7869|  91.4k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  91.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERbEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  91.4k|    {
 7813|  91.4k|        return to_json(j, std::forward<T>(val));
 7814|  91.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEbTnNS4_9enable_ifIXsr3std7is_sameIT0_NT_9boolean_tEEE5valueEiE4typeELi0EEEvRSJ_SI_:
 7472|  91.4k|{
 7473|  91.4k|    external_constructor<value_t::boolean>::construct(j, b);
 7474|  91.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE4EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_9boolean_tE:
 7240|  91.4k|    {
 7241|  91.4k|        j.replace_value(value_t::boolean, b);
 7242|  91.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
30655|  91.4k|        json_value(boolean_t v) noexcept : boolean(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE4nullEv:
13884|  15.4k|    {
13885|  15.4k|        handle_value(nullptr);
13886|  15.4k|        return true;
13887|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIDnEEPSG_OT_:
14030|  15.4k|    {
14031|  15.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 7, False: 15.4k]
  ------------------
14032|      7|        {
14033|      7|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      7|            return &root;
14040|      7|        }
14041|       |
14042|  15.4k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 8.58k, False: 6.85k]
  |  Branch (14042:9): [True: 6.85k, False: 0]
  |  Branch (14042:9): [True: 15.4k, False: 0]
  ------------------
14043|       |
14044|  15.4k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 8.58k, False: 6.85k]
  ------------------
14045|  8.58k|        {
14046|  8.58k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  8.58k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  8.58k|        }
14054|       |
14055|  6.85k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.85k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 6.85k, False: 0]
  ------------------
14056|  6.85k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  6.85k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 6.85k, False: 0]
  ------------------
14057|  6.85k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  6.85k|        return object_element;
14064|  6.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE14number_integerEl:
13896|  34.7k|    {
13897|  34.7k|        handle_value(val);
13898|  34.7k|        return true;
13899|  34.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
14030|  34.7k|    {
14031|  34.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.50k, False: 33.2k]
  ------------------
14032|  1.50k|        {
14033|  1.50k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.50k|            return &root;
14040|  1.50k|        }
14041|       |
14042|  33.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  33.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 22.8k, False: 10.4k]
  |  Branch (14042:9): [True: 10.4k, False: 0]
  |  Branch (14042:9): [True: 33.2k, False: 0]
  ------------------
14043|       |
14044|  33.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 22.8k, False: 10.4k]
  ------------------
14045|  22.8k|        {
14046|  22.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  22.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  22.8k|        }
14054|       |
14055|  10.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  10.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 10.4k, False: 0]
  ------------------
14056|  10.4k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  10.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 10.4k, False: 0]
  ------------------
14057|  10.4k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  10.4k|        return object_element;
14064|  10.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRllTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  63.7k|    {
32411|  63.7k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  63.7k|        set_parents();
32413|  63.7k|        assert_invariant();
32414|  63.7k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIlvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERlEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  63.7k|    {
 7869|  63.7k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  63.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERlEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  63.7k|    {
 7813|  63.7k|        return to_json(j, std::forward<T>(val));
 7814|  63.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEElTnNS4_9enable_ifIXsr33is_compatible_number_integer_typeIT_T0_EE5valueEiE4typeELi0EEEvRSI_SJ_:
 7519|  63.7k|{
 7520|  63.7k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 7521|  63.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE5EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_16number_integer_tE:
 7315|  63.7k|    {
 7316|  63.7k|        j.replace_value(value_t::number_integer, val);
 7317|  63.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
30657|  63.7k|        json_value(number_integer_t v) noexcept : number_integer(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE15number_unsignedEm:
13902|  40.9k|    {
13903|  40.9k|        handle_value(val);
13904|  40.9k|        return true;
13905|  40.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
14030|  40.9k|    {
14031|  40.9k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.25k, False: 39.7k]
  ------------------
14032|  1.25k|        {
14033|  1.25k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.25k|            return &root;
14040|  1.25k|        }
14041|       |
14042|  39.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  39.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 24.8k, False: 14.8k]
  |  Branch (14042:9): [True: 14.8k, False: 0]
  |  Branch (14042:9): [True: 39.7k, False: 0]
  ------------------
14043|       |
14044|  39.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 24.8k, False: 14.8k]
  ------------------
14045|  24.8k|        {
14046|  24.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  24.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  24.8k|        }
14054|       |
14055|  14.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  14.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 14.8k, False: 0]
  ------------------
14056|  14.8k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  14.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 14.8k, False: 0]
  ------------------
14057|  14.8k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  14.8k|        return object_element;
14064|  14.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRmmTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  74.6k|    {
32411|  74.6k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  74.6k|        set_parents();
32413|  74.6k|        assert_invariant();
32414|  74.6k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerImvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERmEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  74.6k|    {
 7869|  74.6k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  74.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERmEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  74.6k|    {
 7813|  74.6k|        return to_json(j, std::forward<T>(val));
 7814|  74.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEmTnNS4_9enable_ifIXsr26is_compatible_integer_typeINS4_11conditionalIXsr3std7is_sameINT_16number_integer_tENSJ_17number_unsigned_tEEE5valueENS1_27same_as_number_integer_typeESL_E4typeET0_EE5valueEiE4typeELi0EEEvRSJ_SP_:
 7512|  74.6k|{
 7513|  74.6k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 7514|  74.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE6EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_17number_unsigned_tE:
 7305|  74.6k|    {
 7306|  74.6k|        j.replace_value(value_t::number_unsigned, val);
 7307|  74.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
30659|  74.6k|        json_value(detail::number_unsigned_overload_type<NumberIntegerType, NumberUnsignedType> v) noexcept : number_unsigned(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIlEEbRT_PKc:
18667|  5.27k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  5.27k|        auto new_chars_read = ia.get_elements(&dest);
18671|  5.27k|        chars_read += new_chars_read;
18672|  5.27k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  5.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 5.21k]
  |  |  ------------------
  ------------------
18673|     57|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     57|            ++chars_read;
18676|     57|            static_cast<void>(report_eof(context));
18677|     57|            return false;
18678|     57|        }
18679|  5.21k|        return true;
18680|  5.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIlEEmPT_m:
 8644|  5.27k|    {
 8645|  5.27k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  5.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIlEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  5.27k|    {
 8703|  5.27k|        const std::size_t wanted = count * sizeof(T);
 8704|  5.27k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  5.27k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  5.27k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  5.27k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.24k, False: 30]
  |  |  ------------------
  ------------------
 8707|  5.24k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  5.24k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  5.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 5.24k, False: 0]
  ------------------
 8712|  5.24k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  5.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 5.24k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  5.24k|            std::memcpy(dest, &*current, copied);
 8716|  5.24k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  5.24k|        }
 8718|  5.27k|        return copied;
 8719|  5.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIlEEvRT_:
18698|  5.21k|    {
18699|  5.21k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.21k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  26.0k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 20.8k, False: 5.21k]
  ------------------
18715|  20.8k|            {
18716|  20.8k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  20.8k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11emit_signedIlEEbT_:
18771|  12.9k|    {
18772|  12.9k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  12.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 12.9k, False: 0]
  |  |  ------------------
  ------------------
18773|  12.9k|        {
18774|  12.9k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  12.9k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIllEEbT0_:
 5101|  23.5k|{
 5102|  23.5k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  23.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IllLb1EvE4testEl:
 5094|  23.5k|    {
 5095|  23.5k|        return true;
 5096|  23.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedImEEbT_:
18799|  12.0k|    {
18800|  12.0k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  12.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 12.0k, False: 0]
  |  |  ------------------
  ------------------
18801|  12.0k|        {
18802|  12.0k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  12.0k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  12.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5101|  21.4k|{
 5102|  21.4k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  21.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5094|  21.4k|    {
 5095|  21.4k|        return true;
 5096|  21.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|    558|{
 5223|    558|    return ::strlen(cstr) + concat_length(rest...);
 5224|    558|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|    558|{
 5282|    558|    out.append(std::forward<Arg>(arg));
 5283|    558|    concat_into(out, std::forward<Args>(rest)...);
 5284|    558|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|    558|{
 5282|    558|    out.append(std::forward<Arg>(arg));
 5283|    558|    concat_into(out, std::forward<Args>(rest)...);
 5284|    558|}
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castIllTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4994|  40.2k|{
 4995|  40.2k|    return value;
 4996|  40.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11enter_arrayEmm:
15094|   339k|    {
15095|   339k|        return enter_container(/*is_object*/false, len, type_marker);
15096|   339k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12enter_objectEmm:
15100|  41.0k|    {
15101|  41.0k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  41.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15unexpected_byteEPKcSP_:
19130|    678|    {
19131|    678|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    678|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcRA5_SA_S9_EEET_DpOT0_:
 5318|  1.35k|{
 5319|  1.35k|    OutStringType str;
 5320|  1.35k|    str.reserve(concat_length(args...));
 5321|  1.35k|    concat_into(str, std::forward<Args>(args)...);
 5322|  1.35k|    return str;
 5323|  1.35k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA5_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  1.35k|{
 5223|  1.35k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  1.35k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA5_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  1.35k|{
 5282|  1.35k|    out.append(std::forward<Arg>(arg));
 5283|  1.35k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.35k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIfLb0EEEbRT_:
18739|  6.03k|    {
18740|       |        // read in the original format
18741|       |
18742|  6.03k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  6.03k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 6.01k]
  |  |  ------------------
  ------------------
18743|     15|        {
18744|     15|            return false;
18745|     15|        }
18746|  6.01k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.98k, False: 30]
  |  Branch (18746:34): [Folded, False: 5.98k]
  |  Branch (18746:57): [True: 0, False: 5.98k]
  ------------------
18747|  5.98k|        {
18748|  5.98k|            byte_swap(result);
18749|  5.98k|        }
18750|  6.01k|        return true;
18751|  6.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIfEEbRT_PKc:
18667|  6.03k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  6.03k|        auto new_chars_read = ia.get_elements(&dest);
18671|  6.03k|        chars_read += new_chars_read;
18672|  6.03k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  6.03k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 45, False: 5.98k]
  |  |  ------------------
  ------------------
18673|     45|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     45|            ++chars_read;
18676|     45|            static_cast<void>(report_eof(context));
18677|     45|            return false;
18678|     45|        }
18679|  5.98k|        return true;
18680|  6.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIfEEmPT_m:
 8644|  6.03k|    {
 8645|  6.03k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  6.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIfEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  6.03k|    {
 8703|  6.03k|        const std::size_t wanted = count * sizeof(T);
 8704|  6.03k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  6.03k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  6.03k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  6.03k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.00k, False: 24]
  |  |  ------------------
  ------------------
 8707|  6.00k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  6.00k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  6.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 6.00k, False: 0]
  ------------------
 8712|  6.00k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  6.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 6.00k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  6.00k|            std::memcpy(dest, &*current, copied);
 8716|  6.00k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  6.00k|        }
 8718|  6.03k|        return copied;
 8719|  6.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIfEEvRT_:
18698|  5.98k|    {
18699|  5.98k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.98k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  17.9k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.9k, False: 5.98k]
  ------------------
18715|  11.9k|            {
18716|  11.9k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.9k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.98k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIfEEbT_:
18825|  5.98k|    {
18826|  5.98k|        const auto result = static_cast<number_float_t>(number);
18827|  5.98k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  10.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.98k]
  |  |  |  Branch (1667:94): [True: 4.67k, False: 1.30k]
  |  |  |  Branch (1667:94): [True: 0, False: 4.67k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  5.98k|        return sax->number_float(result, "");
18832|  5.98k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIdLb0EEEbRT_:
18739|  4.30k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.30k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.30k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 4.28k]
  |  |  ------------------
  ------------------
18743|     19|        {
18744|     19|            return false;
18745|     19|        }
18746|  4.28k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.24k, False: 38]
  |  Branch (18746:34): [Folded, False: 4.24k]
  |  Branch (18746:57): [True: 0, False: 4.24k]
  ------------------
18747|  4.24k|        {
18748|  4.24k|            byte_swap(result);
18749|  4.24k|        }
18750|  4.28k|        return true;
18751|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIiLb0EEEbRT_:
18739|  3.90k|    {
18740|       |        // read in the original format
18741|       |
18742|  3.90k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  3.90k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 3.89k]
  |  |  ------------------
  ------------------
18743|     15|        {
18744|     15|            return false;
18745|     15|        }
18746|  3.89k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.86k, False: 30]
  |  Branch (18746:34): [Folded, False: 3.86k]
  |  Branch (18746:57): [True: 0, False: 3.86k]
  ------------------
18747|  3.86k|        {
18748|  3.86k|            byte_swap(result);
18749|  3.86k|        }
18750|  3.89k|        return true;
18751|  3.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIlLb0EEEbRT_:
18739|  5.27k|    {
18740|       |        // read in the original format
18741|       |
18742|  5.27k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  5.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 5.25k]
  |  |  ------------------
  ------------------
18743|     19|        {
18744|     19|            return false;
18745|     19|        }
18746|  5.25k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.21k, False: 38]
  |  Branch (18746:34): [Folded, False: 5.21k]
  |  Branch (18746:57): [True: 0, False: 5.21k]
  ------------------
18747|  5.21k|        {
18748|  5.21k|            byte_swap(result);
18749|  5.21k|        }
18750|  5.25k|        return true;
18751|  5.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE19parse_bon8_internalEv:
18162|  16.4k|    {
18163|       |        // the key currently being read; hoisted out of the loop so that its
18164|       |        // capacity is reused across elements and across nesting levels
18165|  16.4k|        string_t key;
18166|       |
18167|  1.00M|        while (true)
  ------------------
  |  Branch (18167:16): [True: 999k, Folded]
  ------------------
18168|   999k|        {
18169|   999k|            if (!container_stack.empty())
  ------------------
  |  Branch (18169:17): [True: 982k, False: 16.4k]
  ------------------
18170|   982k|            {
18171|       |                // a copy, not a reference: it must stay valid across the
18172|       |                // pop_back() below, which destroys the container_stack element
18173|       |                // it would otherwise alias
18174|   982k|                const container_frame top = container_stack.back();
18175|   982k|                bool at_end = false;
18176|       |
18177|   982k|                if (top.remaining != npos)
  ------------------
  |  Branch (18177:21): [True: 663k, False: 318k]
  ------------------
18178|   663k|                {
18179|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
18180|       |                    // its elements have been read
18181|   663k|                    at_end = (top.remaining == 0);
18182|   663k|                    if (!at_end)
  ------------------
  |  Branch (18182:25): [True: 341k, False: 322k]
  ------------------
18183|   341k|                    {
18184|       |                        // claim the element about to be read
18185|   341k|                        --container_stack.back().remaining;
18186|   341k|                    }
18187|   663k|                }
18188|   318k|                else
18189|   318k|                {
18190|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
18191|       |                    // marker (0xFE); any other byte begins the next element
18192|   318k|                    at_end = (get_bon8() == 0xFE);
18193|   318k|                    if (!at_end)
  ------------------
  |  Branch (18193:25): [True: 304k, False: 14.5k]
  ------------------
18194|   304k|                    {
18195|   304k|                        unget_bon8(current);
18196|   304k|                    }
18197|   318k|                }
18198|       |
18199|   982k|                if (at_end)
  ------------------
  |  Branch (18199:21): [True: 337k, False: 645k]
  ------------------
18200|   337k|                {
18201|   337k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|   337k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 337k]
  |  |  ------------------
  ------------------
18202|      0|                    {
18203|      0|                        return false;
18204|      0|                    }
18205|       |                    // the value begun here is complete once its container is
18206|   337k|                    if (container_stack.empty())
  ------------------
  |  Branch (18206:25): [True: 7.22k, False: 330k]
  ------------------
18207|  7.22k|                    {
18208|  7.22k|                        return true;
18209|  7.22k|                    }
18210|   330k|                    continue;
18211|   337k|                }
18212|       |
18213|   645k|                if (top.is_object)
  ------------------
  |  Branch (18213:21): [True: 83.4k, False: 561k]
  ------------------
18214|  83.4k|                {
18215|  83.4k|                    key.clear();
18216|  83.4k|                    if (JSON_HEDLEY_UNLIKELY(!get_bon8_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|   165k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 367, False: 83.1k]
  |  |  |  Branch (1667:94): [True: 1.10k, False: 82.3k]
  |  |  |  Branch (1667:94): [True: 0, False: 82.3k]
  |  |  ------------------
  ------------------
18217|    367|                    {
18218|    367|                        return false;
18219|    367|                    }
18220|  83.4k|                }
18221|   645k|            }
18222|       |
18223|   661k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1667|   661k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 913, False: 660k]
  |  |  ------------------
  ------------------
18224|    913|            {
18225|    913|                return false;
18226|    913|            }
18227|       |
18228|       |            // a value that opened a container left it on the stack; one that
18229|       |            // did not, and that was not inside a container, was the whole value
18230|   660k|            if (container_stack.empty())
  ------------------
  |  Branch (18230:17): [True: 5.42k, False: 655k]
  ------------------
18231|  5.42k|            {
18232|  5.42k|                return true;
18233|  5.42k|            }
18234|   660k|        }
18235|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10unget_bon8Em:
18131|   595k|    {
18132|       |        // At most two bytes are ever handed back: a byte is only handed back
18133|       |        // right after it was read with get_bon8(), and the only place that
18134|       |        // hands back two bytes (a lead byte and the byte after it) read both
18135|       |        // of them in a row, which emptied the buffer first. This is an
18136|       |        // invariant of the reader rather than a property of the input, so
18137|       |        // an assertion suffices (the fuzzers are built with assertions).
18138|   595k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2591|   595k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18138:9): [True: 595k, False: 0]
  ------------------
18139|   595k|        bon8_pushback[bon8_pushback_size++] = c;
18140|   595k|        --chars_read;
18141|   595k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12get_bon8_keyERSC_:
18457|  83.4k|    {
18458|  83.4k|        const auto byte = get_bon8();
18459|       |
18460|  83.4k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18460:13): [True: 690, False: 82.8k]
  ------------------
18461|    690|        {
18462|    690|            return unexpect_eof("key");
18463|    690|        }
18464|       |
18465|  82.8k|        if (byte == 0xFF)
  ------------------
  |  Branch (18465:13): [True: 12.0k, False: 70.7k]
  ------------------
18466|  12.0k|        {
18467|  12.0k|            return true;
18468|  12.0k|        }
18469|       |
18470|  70.7k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18470:13): [True: 67.2k, False: 3.46k]
  ------------------
18471|  67.2k|        {
18472|  67.2k|            unget_bon8(byte);
18473|  67.2k|            return get_bon8_string(result);
18474|  67.2k|        }
18475|       |
18476|  3.46k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (18476:13): [True: 3.34k, False: 120]
  |  Branch (18476:29): [True: 3.29k, False: 51]
  ------------------
18477|  3.29k|        {
18478|  3.29k|            const auto second = get_bon8();
18479|  3.29k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18479:17): [True: 24, False: 3.26k]
  ------------------
18480|     24|            {
18481|       |                // the input ends inside a character or an integer
18482|     24|                return unexpect_eof("key");
18483|     24|            }
18484|  3.26k|            unget_bon8(second);
18485|  3.26k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18485:17): [True: 3.21k, False: 54]
  ------------------
18486|  3.21k|            {
18487|  3.21k|                unget_bon8(byte);
18488|  3.21k|                return get_bon8_string(result);
18489|  3.21k|            }
18490|       |            // an integer: report its first byte rather than the one after it
18491|     54|            current = byte;
18492|     54|        }
18493|       |
18494|    225|        return unexpected_byte("expected a string; last byte", "key");
18495|  3.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15get_bon8_stringERSC_:
18546|   140k|    {
18547|   281k|        while (true)
  ------------------
  |  Branch (18547:16): [True: 281k, Folded]
  ------------------
18548|   281k|        {
18549|   281k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
18550|       |
18551|   281k|            const auto byte = get_bon8();
18552|       |
18553|   281k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18553:17): [True: 519, False: 280k]
  ------------------
18554|    519|            {
18555|    519|                return unexpect_eof("string");
18556|    519|            }
18557|       |
18558|       |            // end of string
18559|   280k|            if (byte == 0xFF)
  ------------------
  |  Branch (18559:17): [True: 6.04k, False: 274k]
  ------------------
18560|  6.04k|            {
18561|  6.04k|                return true;
18562|  6.04k|            }
18563|       |
18564|       |            // ASCII character
18565|   274k|            if (byte <= 0x7F)
  ------------------
  |  Branch (18565:17): [True: 132k, False: 142k]
  ------------------
18566|   132k|            {
18567|   132k|                result.push_back(static_cast<typename string_t::value_type>(byte));
18568|   132k|                continue;
18569|   132k|            }
18570|       |
18571|       |            // a byte that cannot begin a character ends the string and begins
18572|       |            // the next value
18573|   142k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (18573:17): [True: 65.4k, False: 76.8k]
  |  Branch (18573:32): [True: 59.5k, False: 17.2k]
  ------------------
18574|   125k|            {
18575|   125k|                unget_bon8(byte);
18576|   125k|                return true;
18577|   125k|            }
18578|       |
18579|       |            // a lead byte ends the string if no continuation byte follows: it
18580|       |            // is then the first byte of an integer
18581|  17.2k|            const auto second = get_bon8();
18582|  17.2k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18582:17): [True: 51, False: 17.2k]
  ------------------
18583|     51|            {
18584|       |                // the input ends inside a character or an integer: either
18585|       |                // way, the message is incomplete
18586|     51|                return unexpect_eof("string");
18587|     51|            }
18588|  17.2k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (18588:17): [True: 8.51k, False: 8.73k]
  ------------------
18589|  8.51k|            {
18590|  8.51k|                unget_bon8(second);
18591|  8.51k|                unget_bon8(byte);
18592|  8.51k|                return true;
18593|  8.51k|            }
18594|       |
18595|       |            // the valid range of the second byte excludes overlong forms,
18596|       |            // surrogates, and code points above U+10FFFF
18597|       |            // (RFC 3629, section 4)
18598|  8.73k|            int continuation_bytes = 0;
18599|  8.73k|            bool valid_second = true;
18600|  8.73k|            if (byte <= 0xDF)
  ------------------
  |  Branch (18600:17): [True: 4.49k, False: 4.23k]
  ------------------
18601|  4.49k|            {
18602|  4.49k|                continuation_bytes = 1;
18603|  4.49k|            }
18604|  4.23k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (18604:22): [True: 1.90k, False: 2.33k]
  ------------------
18605|  1.90k|            {
18606|  1.90k|                continuation_bytes = 2;
18607|  1.90k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (18607:33): [True: 1.06k, False: 839]
  |  Branch (18607:49): [True: 800, False: 39]
  |  Branch (18607:69): [True: 1.02k, False: 839]
  |  Branch (18607:85): [True: 821, False: 18]
  ------------------
18608|  1.90k|            }
18609|  2.33k|            else
18610|  2.33k|            {
18611|  2.33k|                continuation_bytes = 3;
18612|  2.33k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (18612:32): [True: 2.32k, False: 9]
  |  Branch (18612:49): [True: 1.72k, False: 593]
  |  Branch (18612:65): [True: 554, False: 39]
  |  Branch (18612:85): [True: 1.59k, False: 692]
  |  Branch (18612:101): [True: 677, False: 15]
  ------------------
18613|  2.33k|            }
18614|       |
18615|  8.73k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1667|  8.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 120, False: 8.61k]
  |  |  ------------------
  ------------------
18616|    120|            {
18617|    120|                return unexpected_byte("invalid UTF-8 byte", "string");
18618|    120|            }
18619|       |
18620|  8.61k|            result.push_back(static_cast<typename string_t::value_type>(byte));
18621|  8.61k|            result.push_back(static_cast<typename string_t::value_type>(second));
18622|       |
18623|  14.5k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (18623:29): [True: 6.27k, False: 8.25k]
  ------------------
18624|  6.27k|            {
18625|  6.27k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  6.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 180, False: 6.09k]
  |  |  ------------------
  ------------------
18626|    180|                {
18627|    180|                    return unexpect_eof("string");
18628|    180|                }
18629|  6.09k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1667|  6.09k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 180, False: 5.91k]
  |  |  ------------------
  ------------------
18630|    180|                {
18631|    180|                    return unexpected_byte("invalid UTF-8 byte", "string");
18632|    180|                }
18633|  5.91k|                result.push_back(static_cast<typename string_t::value_type>(current));
18634|  5.91k|            }
18635|  8.61k|        }
18636|   140k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb1EEE:
18509|   281k|    {
18510|       |        // bytes handed back must be read through get_bon8() first
18511|   281k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (18511:13): [True: 140k, False: 140k]
  ------------------
18512|   140k|        {
18513|   140k|            return;
18514|   140k|        }
18515|   140k|        const std::size_t remaining = ia.bulk_remaining();
18516|   140k|        if (remaining == 0)
  ------------------
  |  Branch (18516:13): [True: 234, False: 140k]
  ------------------
18517|    234|        {
18518|    234|            return;
18519|    234|        }
18520|   140k|        const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
18521|   140k|        const std::size_t length = valid_utf8_prefix(data, remaining);
18522|   140k|        if (length != 0)
  ------------------
  |  Branch (18522:13): [True: 26.2k, False: 114k]
  ------------------
18523|  26.2k|        {
18524|  26.2k|            result.append(reinterpret_cast<const typename string_t::value_type*>(data), length);
18525|  26.2k|            ia.bulk_skip(length);
18526|  26.2k|            chars_read += length;
18527|  26.2k|        }
18528|   140k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17valid_utf8_prefixEPKhm:
11046|   204k|{
11047|   204k|    constexpr std::uint64_t high = 0x8080808080808080ull;
11048|   204k|    std::size_t pos = 0;
11049|   354k|    while (pos < n)
  ------------------
  |  Branch (11049:12): [True: 289k, False: 64.8k]
  ------------------
11050|   289k|    {
11051|   289k|        if (pos + 8 <= n)
  ------------------
  |  Branch (11051:13): [True: 196k, False: 93.2k]
  ------------------
11052|   196k|        {
11053|   196k|            std::uint64_t word = 0;
11054|   196k|            std::memcpy(&word, data + pos, sizeof(word));
11055|   196k|            if ((word & high) == 0)
  ------------------
  |  Branch (11055:17): [True: 15.8k, False: 180k]
  ------------------
11056|  15.8k|            {
11057|  15.8k|                pos += 8;
11058|  15.8k|                continue;
11059|  15.8k|            }
11060|   196k|        }
11061|       |
11062|   273k|        if (data[pos] < 0x80u)
  ------------------
  |  Branch (11062:13): [True: 121k, False: 152k]
  ------------------
11063|   121k|        {
11064|   121k|            ++pos;
11065|   121k|            continue;
11066|   121k|        }
11067|       |
11068|   152k|        const std::size_t seq = validate_one_utf8(data + pos, n - pos);
11069|   152k|        if (seq == 0)
  ------------------
  |  Branch (11069:13): [True: 139k, False: 12.3k]
  ------------------
11070|   139k|        {
11071|   139k|            break; // ill-formed or truncated
11072|   139k|        }
11073|  12.3k|        pos += seq;
11074|  12.3k|    }
11075|   204k|    return pos;
11076|   204k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE20is_bon8_continuationEm:
18148|  47.8k|    {
18149|  47.8k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (18149:16): [True: 33.8k, False: 13.9k]
  |  Branch (18149:29): [True: 23.0k, False: 10.7k]
  ------------------
18150|  47.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16parse_bon8_valueEv:
18248|   660k|    {
18249|   660k|        const auto byte = get_bon8();
18250|       |
18251|   660k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18251:13): [True: 1.36k, False: 659k]
  ------------------
18252|  1.36k|        {
18253|  1.36k|            return unexpect_eof("value");
18254|  1.36k|        }
18255|       |
18256|       |        // string: ASCII character
18257|   659k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18257:13): [True: 64.9k, False: 594k]
  ------------------
18258|  64.9k|        {
18259|  64.9k|            string_t s;
18260|  64.9k|            unget_bon8(byte);
18261|  64.9k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18261:20): [True: 64.4k, False: 504]
  |  Branch (18261:42): [True: 64.4k, False: 0]
  ------------------
18262|  64.9k|        }
18263|       |
18264|       |        // array with 0..4 elements
18265|   594k|        if (byte <= 0x84)
  ------------------
  |  Branch (18265:13): [True: 314k, False: 279k]
  ------------------
18266|   314k|        {
18267|   314k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
18268|   314k|        }
18269|       |
18270|       |        // array terminated by 0xFE
18271|   279k|        if (byte == 0x85)
  ------------------
  |  Branch (18271:13): [True: 24.3k, False: 255k]
  ------------------
18272|  24.3k|        {
18273|  24.3k|            return enter_array(npos);
18274|  24.3k|        }
18275|       |
18276|       |        // object with 0..4 members
18277|   255k|        if (byte <= 0x8A)
  ------------------
  |  Branch (18277:13): [True: 34.3k, False: 220k]
  ------------------
18278|  34.3k|        {
18279|  34.3k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
18280|  34.3k|        }
18281|       |
18282|   220k|        switch (byte)
18283|   220k|        {
18284|  6.68k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (18284:13): [True: 6.68k, False: 214k]
  ------------------
18285|  6.68k|                return enter_object(npos);
18286|       |
18287|  3.90k|            case 0x8C: // int32
  ------------------
  |  Branch (18287:13): [True: 3.90k, False: 216k]
  ------------------
18288|  3.90k|            {
18289|  3.90k|                std::int32_t number{};
18290|  3.90k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18290:24): [True: 3.86k, False: 45]
  |  Branch (18290:46): [True: 3.86k, False: 0]
  ------------------
18291|      0|            }
18292|       |
18293|  5.27k|            case 0x8D: // int64
  ------------------
  |  Branch (18293:13): [True: 5.27k, False: 215k]
  ------------------
18294|  5.27k|            {
18295|  5.27k|                std::int64_t number{};
18296|  5.27k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18296:24): [True: 5.21k, False: 57]
  |  Branch (18296:46): [True: 5.21k, False: 0]
  ------------------
18297|      0|            }
18298|       |
18299|  6.03k|            case 0x8E: // binary32
  ------------------
  |  Branch (18299:13): [True: 6.03k, False: 214k]
  ------------------
18300|  6.03k|            {
18301|  6.03k|                float number{};
18302|  6.03k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18302:24): [True: 5.98k, False: 45]
  |  Branch (18302:46): [True: 5.98k, False: 0]
  ------------------
18303|      0|            }
18304|       |
18305|  4.30k|            case 0x8F: // binary64
  ------------------
  |  Branch (18305:13): [True: 4.30k, False: 216k]
  ------------------
18306|  4.30k|            {
18307|  4.30k|                double number{};
18308|  4.30k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18308:24): [True: 4.24k, False: 57]
  |  Branch (18308:46): [True: 4.24k, False: 0]
  ------------------
18309|      0|            }
18310|       |
18311|  43.3k|            case 0xF8:
  ------------------
  |  Branch (18311:13): [True: 43.3k, False: 177k]
  ------------------
18312|  43.3k|                return sax->boolean(false);
18313|       |
18314|  7.99k|            case 0xF9:
  ------------------
  |  Branch (18314:13): [True: 7.99k, False: 212k]
  ------------------
18315|  7.99k|                return sax->boolean(true);
18316|       |
18317|  15.4k|            case 0xFA:
  ------------------
  |  Branch (18317:13): [True: 15.4k, False: 205k]
  ------------------
18318|  15.4k|                return sax->null();
18319|       |
18320|  8.12k|            case 0xFB:
  ------------------
  |  Branch (18320:13): [True: 8.12k, False: 212k]
  ------------------
18321|  8.12k|                return sax->number_float(static_cast<number_float_t>(-1.0), "");
18322|       |
18323|  6.60k|            case 0xFC:
  ------------------
  |  Branch (18323:13): [True: 6.60k, False: 214k]
  ------------------
18324|  6.60k|                return sax->number_float(static_cast<number_float_t>(0.0), "");
18325|       |
18326|  12.5k|            case 0xFD:
  ------------------
  |  Branch (18326:13): [True: 12.5k, False: 208k]
  ------------------
18327|  12.5k|                return sax->number_float(static_cast<number_float_t>(1.0), "");
18328|       |
18329|  28.4k|            case 0xFF: // empty string
  ------------------
  |  Branch (18329:13): [True: 28.4k, False: 192k]
  ------------------
18330|  28.4k|            {
18331|  28.4k|                string_t s;
18332|  28.4k|                return sax->string(s);
18333|      0|            }
18334|       |
18335|  72.1k|            default:
  ------------------
  |  Branch (18335:13): [True: 72.1k, False: 148k]
  ------------------
18336|  72.1k|                break;
18337|   220k|        }
18338|       |
18339|       |        // integer 0..39
18340|  72.1k|        if (byte <= 0xB7)
  ------------------
  |  Branch (18340:13): [True: 28.9k, False: 43.1k]
  ------------------
18341|  28.9k|        {
18342|  28.9k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
18343|  28.9k|        }
18344|       |
18345|       |        // integer -1..-10
18346|  43.1k|        if (byte <= 0xC1)
  ------------------
  |  Branch (18346:13): [True: 21.8k, False: 21.3k]
  ------------------
18347|  21.8k|        {
18348|  21.8k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
18349|  21.8k|        }
18350|       |
18351|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
18352|       |        // byte follows and an integer otherwise
18353|  21.3k|        if (byte <= 0xF7)
  ------------------
  |  Branch (18353:13): [True: 21.2k, False: 153]
  ------------------
18354|  21.2k|        {
18355|  21.2k|            const auto second = get_bon8();
18356|  21.2k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18356:17): [True: 5.22k, False: 15.9k]
  ------------------
18357|  5.22k|            {
18358|  5.22k|                string_t s;
18359|  5.22k|                unget_bon8(second);
18360|  5.22k|                unget_bon8(byte);
18361|  5.22k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18361:24): [True: 4.84k, False: 384]
  |  Branch (18361:46): [True: 4.84k, False: 0]
  ------------------
18362|  5.22k|            }
18363|  15.9k|            return get_bon8_integer(byte, second);
18364|  21.2k|        }
18365|       |
18366|       |        // 0xFE: end of container where a value is expected
18367|    153|        return unexpected_byte("invalid byte", "value");
18368|  21.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17emit_bon8_integerEl:
18382|  24.9k|    {
18383|  24.9k|        if (number >= 0)
  ------------------
  |  Branch (18383:13): [True: 12.0k, False: 12.9k]
  ------------------
18384|  12.0k|        {
18385|  12.0k|            return emit_unsigned(static_cast<std::uint64_t>(number));
18386|  12.0k|        }
18387|  12.9k|        return emit_signed(number);
18388|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16get_bon8_integerEmm:
18406|  15.9k|    {
18407|  15.9k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  15.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 18, False: 15.9k]
  |  |  ------------------
  ------------------
18408|     18|        {
18409|     18|            return false;
18410|     18|        }
18411|       |
18412|  15.9k|        const bool negative = second >= 0xC0;
18413|  15.9k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (18413:48): [True: 7.76k, False: 8.19k]
  ------------------
18414|  15.9k|        std::int64_t offset = 0;
18415|  15.9k|        int extra_bytes = 0;
18416|       |
18417|  15.9k|        if (lead <= 0xDF)
  ------------------
  |  Branch (18417:13): [True: 8.33k, False: 7.62k]
  ------------------
18418|  8.33k|        {
18419|  8.33k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (18419:65): [True: 3.38k, False: 4.95k]
  ------------------
18420|  8.33k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (18420:22): [True: 3.38k, False: 4.95k]
  ------------------
18421|  8.33k|        }
18422|  7.62k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (18422:18): [True: 3.88k, False: 3.73k]
  ------------------
18423|  3.88k|        {
18424|  3.88k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (18424:65): [True: 2.24k, False: 1.64k]
  ------------------
18425|  3.88k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (18425:22): [True: 2.24k, False: 1.64k]
  ------------------
18426|  3.88k|            extra_bytes = 1;
18427|  3.88k|        }
18428|  3.73k|        else
18429|  3.73k|        {
18430|  3.73k|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (18430:65): [True: 2.13k, False: 1.60k]
  ------------------
18431|  3.73k|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (18431:22): [True: 2.13k, False: 1.60k]
  ------------------
18432|  3.73k|            extra_bytes = 2;
18433|  3.73k|        }
18434|       |
18435|  27.1k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (18435:25): [True: 11.2k, False: 15.8k]
  ------------------
18436|  11.2k|        {
18437|  11.2k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  11.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 78, False: 11.1k]
  |  |  ------------------
  ------------------
18438|     78|            {
18439|     78|                return unexpect_eof("number");
18440|     78|            }
18441|  11.1k|            value = (value << 8) | static_cast<std::int64_t>(current);
18442|  11.1k|        }
18443|       |
18444|  15.8k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (18444:34): [True: 7.71k, False: 8.16k]
  ------------------
18445|  15.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE8get_bon8Ev:
18115|  1.41M|    {
18116|  1.41M|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (18116:13): [True: 595k, False: 820k]
  ------------------
18117|   595k|        {
18118|   595k|            ++chars_read;
18119|   595k|            return current = bon8_pushback[--bon8_pushback_size];
18120|   595k|        }
18121|   820k|        return get();
18122|  1.41M|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE3getEv:
18652|   820k|    {
18653|   820k|        ++chars_read;
18654|   820k|        return current = ia.get_character();
18655|   820k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
 8590|   820k|    {
 8591|   820k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   820k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 805k, False: 15.3k]
  |  |  ------------------
  ------------------
 8592|   805k|        {
 8593|   805k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   805k|            std::advance(current, 1);
 8595|   805k|            return result;
 8596|   805k|        }
 8597|       |
 8598|  15.3k|        ++eof_reads;
 8599|  15.3k|        return char_traits<char_type>::eof();
 8600|   820k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4289|  1.06M|    {
 4290|  1.06M|        return static_cast<int_type>(c);
 4291|  1.06M|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSS_:
19116|    957|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    957|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    957|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 678, False: 279]
  ------------------
19120|    957|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5318|    558|{
 5319|    558|    OutStringType str;
 5320|    558|    str.reserve(concat_length(args...));
 5321|    558|    concat_into(str, std::forward<Args>(args)...);
 5322|    558|    return str;
 5323|    558|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5228|    558|{
 5229|    558|    return str.size() + concat_length(rest...);
 5230|    558|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRPKcRA16_SC_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|    558|{
 5282|    558|    out.append(std::forward<Arg>(arg));
 5283|    558|    concat_into(out, std::forward<Args>(rest)...);
 5284|    558|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
32384|   680k|        : m_data(stored_kind(v))
32385|   680k|    {
32386|   680k|        assert_invariant();
32387|   680k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
30581|   680k|    {
30582|   680k|        return (std::is_same<number_integer_t, number_unsigned_t>::value && t == value_t::number_unsigned) ? value_t::number_integer : t;
  ------------------
  |  Branch (30582:17): [Folded, False: 680k]
  |  Branch (30582:77): [True: 0, False: 0]
  ------------------
30583|   680k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
36324|   680k|            : m_type(v), m_value(v)
36325|   680k|        {
36326|   680k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
30664|   680k|        {
30665|   680k|            switch (t)
30666|   680k|            {
30667|  74.6k|                case value_t::object:
  ------------------
  |  Branch (30667:17): [True: 74.6k, False: 605k]
  ------------------
30668|   679k|                case value_t::array:
  ------------------
  |  Branch (30668:17): [True: 604k, False: 76.0k]
  ------------------
30669|   679k|                case value_t::string:
  ------------------
  |  Branch (30669:17): [True: 0, False: 680k]
  ------------------
30670|   679k|                case value_t::binary:
  ------------------
  |  Branch (30670:17): [True: 0, False: 680k]
  ------------------
30671|   679k|                {
30672|       |                    // allocating: kept out of line, so the scalar cases below inline
30673|   679k|                    init_owned(t);
30674|   679k|                    break;
30675|   679k|                }
30676|       |
30677|      0|                case value_t::boolean:
  ------------------
  |  Branch (30677:17): [True: 0, False: 680k]
  ------------------
30678|      0|                {
30679|      0|                    boolean = static_cast<boolean_t>(false);
30680|      0|                    break;
30681|   679k|                }
30682|       |
30683|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30683:17): [True: 0, False: 680k]
  ------------------
30684|      0|                {
30685|      0|                    number_integer = static_cast<number_integer_t>(0);
30686|      0|                    break;
30687|   679k|                }
30688|       |
30689|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30689:17): [True: 0, False: 680k]
  ------------------
30690|      0|                {
30691|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
30692|      0|                    break;
30693|   679k|                }
30694|       |
30695|      0|                case value_t::number_float:
  ------------------
  |  Branch (30695:17): [True: 0, False: 680k]
  ------------------
30696|      0|                {
30697|      0|                    number_float = static_cast<number_float_t>(0.0);
30698|      0|                    break;
30699|   679k|                }
30700|       |
30701|      0|                case value_t::null:
  ------------------
  |  Branch (30701:17): [True: 0, False: 680k]
  ------------------
30702|      0|                {
30703|      0|                    object = nullptr;  // silence warning, see #821
30704|      0|                    break;
30705|   679k|                }
30706|       |
30707|  1.37k|                case value_t::discarded:
  ------------------
  |  Branch (30707:17): [True: 1.37k, False: 679k]
  ------------------
30708|  1.37k|                default:
  ------------------
  |  Branch (30708:17): [True: 0, False: 680k]
  ------------------
30709|  1.37k|                {
30710|  1.37k|                    object = nullptr;  // silence warning, see #821
30711|  1.37k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1667|  1.37k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.37k]
  |  |  ------------------
  ------------------
30712|      0|                    {
30713|      0|                        detail::throw_literal<other_error>(detail::exception_id::internal_error, "961c151d2e87f2686a955a9be24d316f1362bf21 3.12.0", nullptr); // LCOV_EXCL_LINE
30714|      0|                    }
30715|  1.37k|                    break;
30716|  1.37k|                }
30717|   680k|            }
30718|   680k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
30722|   679k|        {
30723|   679k|            switch (t)
30724|   679k|            {
30725|  74.6k|                case value_t::object:
  ------------------
  |  Branch (30725:17): [True: 74.6k, False: 604k]
  ------------------
30726|  74.6k|                    object = create<object_t>();
30727|  74.6k|                    break;
30728|   604k|                case value_t::array:
  ------------------
  |  Branch (30728:17): [True: 604k, False: 74.6k]
  ------------------
30729|   604k|                    array = create<array_t>();
30730|   604k|                    break;
30731|      0|                case value_t::string:
  ------------------
  |  Branch (30731:17): [True: 0, False: 679k]
  ------------------
30732|      0|                    string = create<string_t>("");
30733|      0|                    break;
30734|      0|                case value_t::binary:
  ------------------
  |  Branch (30734:17): [True: 0, False: 679k]
  ------------------
30735|      0|                    binary = create<binary_t>();
30736|      0|                    break;
30737|      0|                case value_t::null:
  ------------------
  |  Branch (30737:17): [True: 0, False: 679k]
  ------------------
30738|      0|                case value_t::boolean:
  ------------------
  |  Branch (30738:17): [True: 0, False: 679k]
  ------------------
30739|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30739:17): [True: 0, False: 679k]
  ------------------
30740|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30740:17): [True: 0, False: 679k]
  ------------------
30741|      0|                case value_t::number_float:
  ------------------
  |  Branch (30741:17): [True: 0, False: 679k]
  ------------------
30742|      0|                case value_t::discarded:
  ------------------
  |  Branch (30742:17): [True: 0, False: 679k]
  ------------------
30743|      0|                default:
  ------------------
  |  Branch (30743:17): [True: 0, False: 679k]
  ------------------
30744|      0|                    break;
30745|   679k|            }
30746|   679k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEJEEEPT_DpOT0_:
30589|  74.6k|    {
30590|  74.6k|        AllocatorType<T> alloc;
30591|  74.6k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  74.6k|        auto deleter = [&](T * obj)
30594|  74.6k|        {
30595|  74.6k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  74.6k|        };
30597|  74.6k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  74.6k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  74.6k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  74.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 74.6k, False: 0]
  ------------------
30600|  74.6k|        return obj.release();
30601|  74.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
30589|   604k|    {
30590|   604k|        AllocatorType<T> alloc;
30591|   604k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   604k|        auto deleter = [&](T * obj)
30594|   604k|        {
30595|   604k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   604k|        };
30597|   604k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   604k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   604k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   604k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 604k, False: 0]
  ------------------
30600|   604k|        return obj.release();
30601|   604k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
32797|   180k|    {
32798|       |        // check that the passed value is valid
32799|   180k|        other.assert_invariant();
32800|       |
32801|   180k|        using std::swap;
32802|   180k|        swap(m_data.m_type, other.m_data.m_type);
32803|   180k|        swap(m_data.m_value, other.m_data.m_value);
32804|       |
32805|       |#if JSON_DIAGNOSTIC_POSITIONS
32806|       |        swap(start_position, other.start_position);
32807|       |        swap(end_position, other.end_position);
32808|       |#endif
32809|       |
32810|   180k|        json_base_class_t::operator=(std::move(other));
32811|       |
32812|   180k|        set_parents();
32813|   180k|        assert_invariant();
32814|   180k|        return *this;
32815|   180k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEED2Ev:
14954|  16.4k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEED2Ev:
13881|  16.4k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__16vectorIhNS3_9allocatorIhEEEETnNS3_9enable_ifIXsr28is_contiguous_byte_containerIT_EE5valueEiE4typeELi0EEEDTcl13input_adaptercldtfp_4dataEplcldtfp_4dataEcldtfp_4sizeEEERKS9_:
 9104|  12.0k|{
 9105|  12.0k|    return input_adapter(container.data(), container.data() + container.size());
 9106|  12.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
 9007|  16.4k|{
 9008|  16.4k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  16.4k|    return factory_type::create(first, last);
 9010|  16.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
 8935|  16.4k|    {
 8936|  16.4k|        return adapter_type(std::move(first), std::move(last));
 8937|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
 8586|  16.4k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  16.4k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_bon8ERKSE_:
36553|  6.18k|    {
36554|  6.18k|        std::vector<std::uint8_t> result;
36555|  6.18k|        result.reserve(detail::binary_reserve_hint(j));
36556|  6.18k|        vector_writer(result).write_bon8(j);
36557|  6.18k|        return result;
36558|  6.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
23013|  6.18k|{
23014|  6.18k|    if (j.is_array())
  ------------------
  |  Branch (23014:9): [True: 2.97k, False: 3.20k]
  ------------------
23015|  2.97k|    {
23016|  2.97k|        return j.size() + 1;
23017|  2.97k|    }
23018|       |
23019|  3.20k|    if (j.is_object())
  ------------------
  |  Branch (23019:9): [True: 628, False: 2.57k]
  ------------------
23020|    628|    {
23021|    628|        return (j.size() * 2) + 1;
23022|    628|    }
23023|       |
23024|  2.57k|    return 0;
23025|  3.20k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13vector_writerIhEENS0_6detail13binary_writerISE_T_NSG_18output_vector_sinkISI_NS8_ISI_EEEEEERNS4_ISI_SK_EENSG_15error_handler_tE:
30271|  6.18k|    {
30272|  6.18k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
30273|  6.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
22740|  6.18k|        : v(vec)
22741|  6.18k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEEC2ESI_NS1_15error_handler_tE:
23055|  6.18k|        : oa(std::move(sink)), error_handler(error_handler_)
23056|  6.18k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail35binary_writer_default_error_handlerEv:
 6658|  6.18k|{
 6659|       |#if JSON_STRICT_BINARY_UTF8
 6660|       |    return error_handler_t::strict;
 6661|       |#else
 6662|  6.18k|    return error_handler_t::keep;
 6663|  6.18k|#endif
 6664|  6.18k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10write_bon8ERKSG_:
23750|  6.18k|    {
23751|  6.18k|        bool string_open = false;
23752|  6.18k|        write_bon8_value(j, string_open);
23753|       |
23754|       |        // the last string of a message must be terminated
23755|  6.18k|        if (string_open)
  ------------------
  |  Branch (23755:13): [True: 554, False: 5.63k]
  ------------------
23756|    554|        {
23757|    554|            oa.write_character(to_char_type(0xFF));
23758|    554|        }
23759|  6.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_valueERKSG_Rbm:
25572|   211k|    {
25573|   211k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()) && (j.is_array() || j.is_object()))
  ------------------
  |  | 1667|   423k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.61k, False: 208k]
  |  |  ------------------
  ------------------
  |  Branch (25573:72): [True: 1.41k, False: 2.20k]
  |  Branch (25573:88): [True: 1.31k, False: 886]
  ------------------
25574|  2.72k|        {
25575|  2.72k|            write_bon8_iterative(j, string_open);
25576|  2.72k|            return;
25577|  2.72k|        }
25578|       |
25579|   209k|        switch (j.type())
25580|   209k|        {
25581|  4.93k|            case value_t::null:
  ------------------
  |  Branch (25581:13): [True: 4.93k, False: 204k]
  ------------------
25582|  4.93k|            {
25583|  4.93k|                write_bon8_marker(0xFA, string_open);
25584|  4.93k|                break;
25585|      0|            }
25586|       |
25587|  22.2k|            case value_t::boolean:
  ------------------
  |  Branch (25587:13): [True: 22.2k, False: 186k]
  ------------------
25588|  22.2k|            {
25589|  22.2k|                write_bon8_marker(j.m_data.m_value.boolean ? 0xF9 : 0xF8, string_open);
  ------------------
  |  Branch (25589:35): [True: 2.84k, False: 19.4k]
  ------------------
25590|  22.2k|                break;
25591|      0|            }
25592|       |
25593|  14.6k|            case value_t::number_unsigned:
  ------------------
  |  Branch (25593:13): [True: 14.6k, False: 194k]
  ------------------
25594|  14.6k|            {
25595|  14.6k|                if (j.m_data.m_value.number_unsigned > static_cast<typename BasicJsonType::number_unsigned_t>((std::numeric_limits<std::int64_t>::max)()))
  ------------------
  |  Branch (25595:21): [True: 0, False: 14.6k]
  ------------------
25596|      0|                {
25597|      0|                    JSON_THROW(out_of_range::create(exception_id::integer_too_large, concat("integer number ", std::to_string(j.m_data.m_value.number_unsigned), " cannot be represented by BON8 as it does not fit int64"), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
25598|      0|                }
25599|  14.6k|                write_bon8_integer(static_cast<std::int64_t>(j.m_data.m_value.number_unsigned));
25600|  14.6k|                string_open = false;
25601|  14.6k|                break;
25602|  14.6k|            }
25603|       |
25604|  11.3k|            case value_t::number_integer:
  ------------------
  |  Branch (25604:13): [True: 11.3k, False: 197k]
  ------------------
25605|  11.3k|            {
25606|  11.3k|                write_bon8_integer(static_cast<std::int64_t>(j.m_data.m_value.number_integer));
25607|  11.3k|                string_open = false;
25608|  11.3k|                break;
25609|  14.6k|            }
25610|       |
25611|  13.6k|            case value_t::number_float:
  ------------------
  |  Branch (25611:13): [True: 13.6k, False: 195k]
  ------------------
25612|  13.6k|            {
25613|  13.6k|                write_bon8_float(j.m_data.m_value.number_float);
25614|  13.6k|                string_open = false;
25615|  13.6k|                break;
25616|  14.6k|            }
25617|       |
25618|  39.4k|            case value_t::string:
  ------------------
  |  Branch (25618:13): [True: 39.4k, False: 169k]
  ------------------
25619|  39.4k|            {
25620|  39.4k|                write_bon8_string(*j.m_data.m_value.string, string_open, j);
25621|  39.4k|                break;
25622|  14.6k|            }
25623|       |
25624|  94.0k|            case value_t::array:
  ------------------
  |  Branch (25624:13): [True: 94.0k, False: 115k]
  ------------------
25625|  94.0k|            {
25626|  94.0k|                const auto N = j.m_data.m_value.array->size();
25627|       |                // 0x80..0x84: array with 0..4 elements; 0x85: array ended by 0xFE
25628|  94.0k|                write_bon8_marker(static_cast<std::uint8_t>(N <= 4 ? 0x80 + N : 0x85), string_open);
  ------------------
  |  Branch (25628:61): [True: 90.5k, False: 3.49k]
  ------------------
25629|       |
25630|  94.0k|                for (const auto& el : *j.m_data.m_value.array)
  ------------------
  |  Branch (25630:37): [True: 176k, False: 94.0k]
  ------------------
25631|   176k|                {
25632|   176k|                    write_bon8_value(el, string_open, depth + 1);
25633|   176k|                }
25634|       |
25635|  94.0k|                if (N > 4)
  ------------------
  |  Branch (25635:21): [True: 3.49k, False: 90.5k]
  ------------------
25636|  3.49k|                {
25637|  3.49k|                    write_bon8_marker(0xFE, string_open);
25638|  3.49k|                }
25639|  94.0k|                break;
25640|  14.6k|            }
25641|       |
25642|  8.88k|            case value_t::object:
  ------------------
  |  Branch (25642:13): [True: 8.88k, False: 200k]
  ------------------
25643|  8.88k|            {
25644|  8.88k|                const auto N = j.m_data.m_value.object->size();
25645|       |                // 0x86..0x8A: object with 0..4 members; 0x8B: object ended by 0xFE
25646|  8.88k|                write_bon8_marker(static_cast<std::uint8_t>(N <= 4 ? 0x86 + N : 0x8B), string_open);
  ------------------
  |  Branch (25646:61): [True: 8.46k, False: 420]
  ------------------
25647|       |
25648|  8.88k|                for (const auto& el : *j.m_data.m_value.object)
  ------------------
  |  Branch (25648:37): [True: 16.5k, False: 8.88k]
  ------------------
25649|  16.5k|                {
25650|  16.5k|                    write_bon8_string(el.first, string_open, j);
25651|  16.5k|                    write_bon8_value(el.second, string_open, depth + 1);
25652|  16.5k|                }
25653|       |
25654|  8.88k|                if (N > 4)
  ------------------
  |  Branch (25654:21): [True: 420, False: 8.46k]
  ------------------
25655|    420|                {
25656|    420|                    write_bon8_marker(0xFE, string_open);
25657|    420|                }
25658|  8.88k|                break;
25659|  14.6k|            }
25660|       |
25661|      0|            case value_t::binary:
  ------------------
  |  Branch (25661:13): [True: 0, False: 209k]
  ------------------
25662|      0|            {
25663|       |                // BON8 has no binary type: write the bytes as an array of
25664|       |                // integers, like UBJSON and BJData do
25665|      0|                const auto N = j.m_data.m_value.binary->size();
25666|      0|                write_bon8_marker(static_cast<std::uint8_t>(N <= 4 ? 0x80 + N : 0x85), string_open);
  ------------------
  |  Branch (25666:61): [True: 0, False: 0]
  ------------------
25667|       |
25668|      0|                for (std::size_t i = 0; i < N; ++i)
  ------------------
  |  Branch (25668:41): [True: 0, False: 0]
  ------------------
25669|      0|                {
25670|       |                    // the cast is needed for binary types whose value type
25671|       |                    // is not an integer (e.g., std::byte)
25672|      0|                    write_bon8_integer(static_cast<std::uint8_t>(j.m_data.m_value.binary->data()[i]));
25673|      0|                }
25674|       |
25675|      0|                if (N > 4)
  ------------------
  |  Branch (25675:21): [True: 0, False: 0]
  ------------------
25676|      0|                {
25677|      0|                    write_bon8_marker(0xFE, string_open);
25678|      0|                }
25679|      0|                break;
25680|  14.6k|            }
25681|       |
25682|      0|            case value_t::discarded:
  ------------------
  |  Branch (25682:13): [True: 0, False: 209k]
  ------------------
25683|      0|            default:
  ------------------
  |  Branch (25683:13): [True: 0, False: 209k]
  ------------------
25684|      0|                throw_on_discarded(j, "BON8");
25685|   209k|        }
25686|   209k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_bon8_iterativeERKSG_Rb:
25725|  2.72k|    {
25726|       |        // only a container with elements is ever pushed; see write_bon8_value_or_push
25727|  2.72k|        std::vector<binary_container_frame> stack;
25728|  2.72k|        write_bon8_value_or_push(root, string_open, stack);
25729|       |
25730|   128k|        while (!stack.empty())
  ------------------
  |  Branch (25730:16): [True: 125k, False: 2.72k]
  ------------------
25731|   125k|        {
25732|   125k|            const binary_container_frame current = stack.back();
25733|   125k|            const bool is_array = current.value->is_array();
25734|   125k|            const bool at_end = is_array
  ------------------
  |  Branch (25734:33): [True: 114k, False: 11.2k]
  ------------------
25735|   125k|                                ? current.array_it == current.value->m_data.m_value.array->cend()
25736|   125k|                                : current.object_it == current.value->m_data.m_value.object->cend();
25737|       |
25738|   125k|            if (at_end)
  ------------------
  |  Branch (25738:17): [True: 55.7k, False: 69.9k]
  ------------------
25739|  55.7k|            {
25740|  55.7k|                if (current.value->size() > 4)
  ------------------
  |  Branch (25740:21): [True: 420, False: 55.3k]
  ------------------
25741|    420|                {
25742|    420|                    write_bon8_marker(0xFE, string_open);
25743|    420|                }
25744|  55.7k|                stack.pop_back();
25745|  55.7k|                continue;
25746|  55.7k|            }
25747|       |
25748|       |            // read the child before pushing: entering it can move every frame
25749|  69.9k|            const BasicJsonType* child = nullptr;
25750|  69.9k|            if (is_array)
  ------------------
  |  Branch (25750:17): [True: 61.4k, False: 8.50k]
  ------------------
25751|  61.4k|            {
25752|  61.4k|                child = &(*current.array_it);
25753|  61.4k|                ++stack.back().array_it;
25754|  61.4k|            }
25755|  8.50k|            else
25756|  8.50k|            {
25757|  8.50k|                write_bon8_string(current.object_it->first, string_open, *current.value);
25758|  8.50k|                child = &(current.object_it->second);
25759|  8.50k|                ++stack.back().object_it;
25760|  8.50k|            }
25761|  69.9k|            write_bon8_value_or_push(*child, string_open, stack);
25762|  69.9k|        }
25763|  2.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE24write_bon8_value_or_pushERKSG_RbRNS6_INSJ_22binary_container_frameENSA_ISN_EEEE:
25698|  72.6k|    {
25699|  72.6k|        if (j.is_array() || j.is_object())
  ------------------
  |  Branch (25699:13): [True: 53.9k, False: 18.7k]
  |  Branch (25699:29): [True: 5.90k, False: 12.8k]
  ------------------
25700|  59.8k|        {
25701|       |            // arrays use the markers 0x80..0x85, objects 0x86..0x8B; the last
25702|       |            // one stands for more than four elements, closed later with 0xFE
25703|  59.8k|            const auto N = j.size();
25704|  59.8k|            const std::size_t base = j.is_array() ? 0x80 : 0x86;
  ------------------
  |  Branch (25704:38): [True: 53.9k, False: 5.90k]
  ------------------
25705|  59.8k|            write_bon8_marker(static_cast<std::uint8_t>(base + (N <= 4 ? N : 5)), string_open);
  ------------------
  |  Branch (25705:65): [True: 59.4k, False: 420]
  ------------------
25706|  59.8k|            if (N != 0)
  ------------------
  |  Branch (25706:17): [True: 55.7k, False: 4.04k]
  ------------------
25707|  55.7k|            {
25708|  55.7k|                stack.emplace_back(&j);
25709|  55.7k|            }
25710|  59.8k|            return;
25711|  59.8k|        }
25712|       |
25713|  12.8k|        write_bon8_value(j, string_open);
25714|  12.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22binary_container_frameC2EPKSG_:
23823|  55.7k|            : value(value_)
23824|  55.7k|        {
23825|  55.7k|            if (value->is_object())
  ------------------
  |  Branch (23825:17): [True: 2.72k, False: 53.0k]
  ------------------
23826|  2.72k|            {
23827|  2.72k|                object_it = value->m_data.m_value.object->cbegin();
23828|  2.72k|            }
23829|  53.0k|            else
23830|  53.0k|            {
23831|  53.0k|                array_it = value->m_data.m_value.array->cbegin();
23832|  53.0k|            }
23833|  55.7k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
32866|   209k|    {
32867|   209k|        return m_data.m_type;
32868|   209k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bon8_markerEhRb:
25773|   194k|    {
25774|   194k|        oa.write_character(to_char_type(marker));
25775|   194k|        string_open = false;
25776|   194k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_bon8_integerEl:
25904|  25.9k|    {
25905|  25.9k|        if (value < (std::numeric_limits<std::int32_t>::min)() || value > (std::numeric_limits<std::int32_t>::max)())
  ------------------
  |  Branch (25905:13): [True: 1.20k, False: 24.7k]
  |  Branch (25905:67): [True: 1.05k, False: 23.7k]
  ------------------
25906|  2.25k|        {
25907|  2.25k|            oa.write_character(to_char_type(0x8D));
25908|  2.25k|            write_number(value);
25909|  2.25k|        }
25910|  23.7k|        else if (value < -33818506 || value > 67637031)
  ------------------
  |  Branch (25910:18): [True: 840, False: 22.8k]
  |  Branch (25910:39): [True: 722, False: 22.1k]
  ------------------
25911|  1.56k|        {
25912|  1.56k|            oa.write_character(to_char_type(0x8C));
25913|  1.56k|            write_number(static_cast<std::int32_t>(value));
25914|  1.56k|        }
25915|  22.1k|        else if (value <= -264075)
  ------------------
  |  Branch (25915:18): [True: 838, False: 21.3k]
  ------------------
25916|    838|        {
25917|    838|            value = -(value + 264075);
25918|    838|            write_bon8_bytes(0xF0 + ((value >> 22) & 0x07), 0xC0 + ((value >> 16) & 0x3F), value >> 8, value);
25919|    838|        }
25920|  21.3k|        else if (value <= -1931)
  ------------------
  |  Branch (25920:18): [True: 752, False: 20.5k]
  ------------------
25921|    752|        {
25922|    752|            value = -(value + 1931);
25923|    752|            write_bon8_bytes(0xE0 + ((value >> 14) & 0x0F), 0xC0 + ((value >> 8) & 0x3F), value);
25924|    752|        }
25925|  20.5k|        else if (value <= -11)
  ------------------
  |  Branch (25925:18): [True: 904, False: 19.6k]
  ------------------
25926|    904|        {
25927|    904|            value = -(value + 11);
25928|    904|            write_bon8_bytes(0xC2 + ((value >> 6) & 0x1F), 0xC0 + (value & 0x3F));
25929|    904|        }
25930|  19.6k|        else if (value <= -1)
  ------------------
  |  Branch (25930:18): [True: 6.79k, False: 12.8k]
  ------------------
25931|  6.79k|        {
25932|  6.79k|            write_bon8_bytes(0xB8 - (value + 1));
25933|  6.79k|        }
25934|  12.8k|        else if (value <= 39)
  ------------------
  |  Branch (25934:18): [True: 9.50k, False: 3.39k]
  ------------------
25935|  9.50k|        {
25936|  9.50k|            write_bon8_bytes(0x90 + value);
25937|  9.50k|        }
25938|  3.39k|        else if (value <= 3879)
  ------------------
  |  Branch (25938:18): [True: 1.86k, False: 1.52k]
  ------------------
25939|  1.86k|        {
25940|  1.86k|            value -= 40;
25941|  1.86k|            write_bon8_bytes(0xC2 + ((value >> 7) & 0x1F), value & 0x7F);
25942|  1.86k|        }
25943|  1.52k|        else if (value <= 528167)
  ------------------
  |  Branch (25943:18): [True: 760, False: 762]
  ------------------
25944|    760|        {
25945|    760|            value -= 3880;
25946|    760|            write_bon8_bytes(0xE0 + ((value >> 15) & 0x0F), (value >> 8) & 0x7F, value);
25947|    760|        }
25948|    762|        else
25949|    762|        {
25950|    762|            value -= 528168;
25951|    762|            write_bon8_bytes(0xF0 + ((value >> 23) & 0x07), (value >> 16) & 0x7F, value >> 8, value);
25952|    762|        }
25953|  25.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIlEEvT_b:
26103|  2.25k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  2.25k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  2.25k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  2.25k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 2.25k, False: 0]
  ------------------
26110|  2.25k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  2.25k|            reverse_bytes(vec);
26113|  2.25k|        }
26114|       |
26115|  2.25k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  2.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm8EEE:
26078|  4.05k|    {
26079|  4.05k|        byte_swap_buffer<std::uint64_t>(a);
26080|  4.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferImLm8EEEvRNS4_5arrayIhXT0_EEE:
26057|  4.05k|    {
26058|  4.05k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  4.05k|        UIntType v{};
26060|  4.05k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  4.05k|        v = byte_swap(v);
26062|  4.05k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  4.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEm:
26033|  4.05k|    {
26034|  4.05k|#if defined(__GNUC__) || defined(__clang__)
26035|  4.05k|        return __builtin_bswap64(x);
26036|       |#elif defined(_MSC_VER)
26037|       |        return _byteswap_uint64(x);
26038|       |#else
26039|       |        x = ((x & 0x00000000FFFFFFFFull) << 32) | ((x & 0xFFFFFFFF00000000ull) >> 32);
26040|       |        x = ((x & 0x0000FFFF0000FFFFull) << 16) | ((x & 0xFFFF0000FFFF0000ull) >> 16);
26041|       |        x = ((x & 0x00FF00FF00FF00FFull) << 8) | ((x & 0xFF00FF00FF00FF00ull) >> 8);
26042|       |        return x;
26043|       |#endif
26044|  4.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
22753|  84.8k|    {
22754|  84.8k|        v.insert(v.end(), s, s + length);
22755|  84.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIiEEvT_b:
26103|  1.56k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.56k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.56k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.56k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.56k, False: 0]
  ------------------
26110|  1.56k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.56k|            reverse_bytes(vec);
26113|  1.56k|        }
26114|       |
26115|  1.56k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm4EEE:
26073|  3.94k|    {
26074|  3.94k|        byte_swap_buffer<std::uint32_t>(a);
26075|  3.94k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferIjLm4EEEvRNS4_5arrayIhXT0_EEE:
26057|  3.94k|    {
26058|  3.94k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  3.94k|        UIntType v{};
26060|  3.94k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  3.94k|        v = byte_swap(v);
26062|  3.94k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  3.94k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEj:
26021|  3.94k|    {
26022|  3.94k|#if defined(__GNUC__) || defined(__clang__)
26023|  3.94k|        return __builtin_bswap32(x);
26024|       |#elif defined(_MSC_VER)
26025|       |        return _byteswap_ulong(x);
26026|       |#else
26027|       |        return ((x & 0x000000FFu) << 24) | ((x & 0x0000FF00u) << 8)
26028|       |               | ((x & 0x00FF0000u) >> 8) | ((x & 0xFF000000u) >> 24);
26029|       |#endif
26030|  3.94k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJllllEEEvDpKT_:
25958|  1.60k|    {
25959|  1.60k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
25960|  1.60k|        oa.write_characters(buffer.data(), buffer.size());
25961|  1.60k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJlllEEEvDpKT_:
25958|  1.51k|    {
25959|  1.51k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
25960|  1.51k|        oa.write_characters(buffer.data(), buffer.size());
25961|  1.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJllEEEvDpKT_:
25958|  2.77k|    {
25959|  2.77k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
25960|  2.77k|        oa.write_characters(buffer.data(), buffer.size());
25961|  2.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJlEEEvDpKT_:
25958|  16.2k|    {
25959|  16.2k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
25960|  16.2k|        oa.write_characters(buffer.data(), buffer.size());
25961|  16.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_floatEd:
25973|  13.6k|    {
25974|  13.6k|#ifdef __GNUC__
25975|  13.6k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
25976|  13.6k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
25977|  13.6k|#endif
25978|  13.6k|        if (n == static_cast<number_float_t>(-1))
  ------------------
  |  Branch (25978:13): [True: 2.53k, False: 11.1k]
  ------------------
25979|  2.53k|        {
25980|  2.53k|            oa.write_character(to_char_type(0xFB));
25981|  2.53k|        }
25982|  11.1k|        else if (n == static_cast<number_float_t>(0) && !std::signbit(n))
  ------------------
  |  Branch (25982:18): [True: 2.32k, False: 8.78k]
  |  Branch (25982:57): [True: 2.13k, False: 190]
  ------------------
25983|  2.13k|        {
25984|  2.13k|            oa.write_character(to_char_type(0xFC));
25985|  2.13k|        }
25986|  8.97k|        else if (n == static_cast<number_float_t>(1))
  ------------------
  |  Branch (25986:18): [True: 4.40k, False: 4.57k]
  ------------------
25987|  4.40k|        {
25988|  4.40k|            oa.write_character(to_char_type(0xFD));
25989|  4.40k|        }
25990|  4.57k|        else if (std::isnan(n))
  ------------------
  |  Branch (25990:18): [True: 386, False: 4.18k]
  ------------------
25991|    386|        {
25992|    386|            write_bon8_bytes(0x8E, 0x7F, 0x80, 0x00, 0x01);
25993|    386|        }
25994|  4.18k|        else
25995|  4.18k|        {
25996|  4.18k|            write_compact_float(n, to_char_type(0x8E), to_char_type(0x8F));
25997|  4.18k|        }
25998|  13.6k|#ifdef __GNUC__
25999|  13.6k|        JSON_HEDLEY_DIAGNOSTIC_POP
26000|  13.6k|#endif
26001|  13.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJiiiiiEEEvDpKT_:
25958|    386|    {
25959|    386|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
25960|    386|        oa.write_characters(buffer.data(), buffer.size());
25961|    386|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19write_compact_floatEdhh:
26126|  4.18k|    {
26127|  4.18k|        static_assert(std::is_same<number_float_t, float>::value || std::is_same<number_float_t, double>::value,
26128|  4.18k|                      "number_float_t must be float or double for the CBOR/MessagePack/BON8 writer");
26129|  4.18k|#ifdef __GNUC__
26130|  4.18k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
26131|  4.18k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
26132|  4.18k|#endif
26133|       |        // When number_float_t is float, static_cast<float>(n) is the identity and
26134|       |        // both branches below are intentionally identical (the "compact" float
26135|       |        // representation is the value itself). Only GCC diagnoses this, and only
26136|       |        // when the sink calls are inlined; clang has no such warning.
26137|       |        // (-Wduplicated-branches only exists from GCC 7 on; naming it on an older
26138|       |        // GCC would itself warn under -Wpragmas)
26139|       |#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7)
26140|       |        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wduplicated-branches")
26141|       |#endif
26142|  4.18k|        if (!std::isfinite(n) || ((static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
  ------------------
  |  Branch (26142:13): [True: 264, False: 3.92k]
  |  Branch (26142:36): [True: 3.59k, False: 326]
  ------------------
26143|  3.59k|                                   static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
  ------------------
  |  Branch (26143:36): [True: 3.46k, False: 126]
  ------------------
26144|  3.46k|                                   static_cast<double>(static_cast<float>(n)) == static_cast<double>(n))))
  ------------------
  |  Branch (26144:36): [True: 2.11k, False: 1.35k]
  ------------------
26145|  2.38k|        {
26146|  2.38k|            oa.write_character(float32_marker);
26147|  2.38k|            write_number(static_cast<float>(n));
26148|  2.38k|        }
26149|  1.80k|        else
26150|  1.80k|        {
26151|  1.80k|            oa.write_character(float64_marker);
26152|  1.80k|            write_number(n);
26153|  1.80k|        }
26154|  4.18k|#ifdef __GNUC__
26155|  4.18k|        JSON_HEDLEY_DIAGNOSTIC_POP
26156|  4.18k|#endif
26157|  4.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIfEEvT_b:
26103|  2.38k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  2.38k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  2.38k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  2.38k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 2.38k, False: 0]
  ------------------
26110|  2.38k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  2.38k|            reverse_bytes(vec);
26113|  2.38k|        }
26114|       |
26115|  2.38k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  2.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIdEEvT_b:
26103|  1.80k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.80k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.80k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.80k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.80k, False: 0]
  ------------------
26110|  1.80k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.80k|            reverse_bytes(vec);
26113|  1.80k|        }
26114|       |
26115|  1.80k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bon8_stringERKSC_RbRKSG_:
25789|  64.5k|    {
25790|  64.5k|        check_utf8(s, context);
25791|       |
25792|       |        // a string that follows another string terminates it
25793|  64.5k|        if (string_open)
  ------------------
  |  Branch (25793:13): [True: 2.72k, False: 61.8k]
  ------------------
25794|  2.72k|        {
25795|  2.72k|            oa.write_character(to_char_type(0xFF));
25796|  2.72k|        }
25797|       |
25798|  64.5k|        if (s.empty())
  ------------------
  |  Branch (25798:13): [True: 10.2k, False: 54.3k]
  ------------------
25799|  10.2k|        {
25800|       |            // the empty string is just the end-of-string marker
25801|  10.2k|            oa.write_character(to_char_type(0xFF));
25802|  10.2k|            string_open = false;
25803|  10.2k|        }
25804|  54.3k|        else
25805|  54.3k|        {
25806|  54.3k|            oa.write_characters(reinterpret_cast<const CharType*>(s.data()), s.size());
25807|  54.3k|            string_open = true;
25808|  54.3k|        }
25809|  64.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10check_utf8ERKSC_RKSG_:
25821|  64.5k|    {
25822|  64.5k|        static_cast<void>(context); // only used when exceptions are enabled
25823|  64.5k|        const auto* data = reinterpret_cast<const unsigned char*>(s.data());
25824|  64.5k|        const std::size_t valid = valid_utf8_prefix(data, s.size());
25825|  64.5k|        if (JSON_HEDLEY_UNLIKELY(valid != s.size()))
  ------------------
  |  | 1667|  64.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 64.5k]
  |  |  ------------------
  ------------------
25826|      0|        {
25827|      0|            JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("invalid UTF-8 byte at index ", std::to_string(valid), ": 0x", detail::hex_byte(data[valid])), &context));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
25828|      0|        }
25829|  64.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
22744|   224k|    {
22745|   224k|        v.push_back(c);
22746|   224k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12to_char_typeIhTnPNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeELPv0EEEhh:
26198|   263k|    {
26199|   263k|        return x;
26200|   263k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bb:
36792|  4.46k|    {
36793|  4.46k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bon8, strict, allow_exceptions);
36794|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bb:
36780|  4.46k|    {
36781|  4.46k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
36782|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail20input_stream_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  4.46k|    {
36386|  4.46k|        basic_json result;
36387|  4.46k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  4.46k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  4.46k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 4.46k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  4.46k|        return result;
36394|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  4.46k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  4.46k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  4.46k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  4.46k|    {
14946|  4.46k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 8481|  4.46k|        : is(rhs.is), sb(rhs.sb)
 8482|  4.46k|    {
 8483|  4.46k|        rhs.is = nullptr;
 8484|  4.46k|        rhs.sb = nullptr;
 8485|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  4.46k|    {
14970|  4.46k|        sax = sax_;
14971|  4.46k|        container_stack.clear();
14972|  4.46k|        bon8_pushback_size = 0;
14973|  4.46k|        bool result = false;
14974|       |
14975|  4.46k|        switch (input_format)
14976|  4.46k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 4.46k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 4.46k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 4.46k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 4.46k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 4.46k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|  4.46k|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 4.46k, False: 0]
  ------------------
14995|  4.46k|                result = parse_bon8_internal();
14996|  4.46k|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 4.46k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 4.46k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  4.46k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.18k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.18k, False: 0]
  |  Branch (15004:23): [True: 3.18k, False: 0]
  ------------------
15005|  3.18k|        {
15006|  3.18k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.18k]
  |  Branch (15006:59): [True: 0, False: 3.18k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.18k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 3.18k, False: 0]
  ------------------
15011|  3.18k|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|  3.18k|                get_bon8();
15014|  3.18k|            }
15015|      0|            else
15016|      0|            {
15017|      0|                get();
15018|      0|            }
15019|       |
15020|  3.18k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 93, False: 3.09k]
  |  |  ------------------
  ------------------
15021|     93|            {
15022|     93|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     93|            }
15024|  3.18k|        }
15025|       |
15026|  3.09k|        return result;
15027|  3.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|  1.04k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.04k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.04k|        chars_read += new_chars_read;
18672|  1.04k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.02k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.02k|        return true;
18680|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIiEEmPT_m:
 8507|  1.04k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.04k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.04k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.02k]
  |  |  ------------------
  ------------------
 8513|     15|        {
 8514|     15|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     15|        }
 8516|  1.04k|        return res;
 8517|  1.04k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  1.05k|    {
19059|  1.05k|        return sax->parse_error(chars_read, "<end of file>",
19060|  1.05k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.37k|    {
14005|  1.37k|        errored = true;
14006|  1.37k|        static_cast<void>(ex);
14007|  1.37k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.37k, False: 0]
  ------------------
14008|  1.37k|        {
14009|  1.37k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.37k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.37k|        }
14011|      0|        return false;
14012|  1.37k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  1.37k|    {
19164|  1.37k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.37k|        switch (input_format)
19167|  1.37k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.37k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.37k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.37k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 1.37k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.37k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|  1.37k|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 1.37k, False: 0]
  ------------------
19189|  1.37k|                error_msg += "BON8";
19190|  1.37k|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.37k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.37k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.37k|        }
19196|       |
19197|  1.37k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIiEEvRT_:
18698|  1.02k|    {
18699|  1.02k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.02k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.05k, False: 1.02k]
  ------------------
18715|  2.05k|            {
18716|  2.05k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.05k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|  99.6k|    {
15083|  99.6k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   199k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 11.2k, False: 88.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  99.6k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  99.6k|        return true;
15090|  99.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12start_objectEm:
13930|  11.2k|    {
13931|  11.2k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  11.2k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  99.6k|    {
14031|  99.6k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.77k, False: 96.8k]
  ------------------
14032|  2.77k|        {
14033|  2.77k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.77k|            return &root;
14040|  2.77k|        }
14041|       |
14042|  96.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  96.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.8k, False: 7.07k]
  |  Branch (14042:9): [True: 7.07k, False: 0]
  |  Branch (14042:9): [True: 96.8k, False: 0]
  ------------------
14043|       |
14044|  96.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.8k, False: 7.07k]
  ------------------
14045|  89.8k|        {
14046|  89.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.8k|        }
14054|       |
14055|  7.07k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 7.07k, False: 0]
  ------------------
14056|  7.07k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 7.07k, False: 0]
  ------------------
14057|  7.07k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  7.07k|        return object_element;
14064|  7.07k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
13724|  99.6k|{
13725|  99.6k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   189k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 90.0k, False: 9.63k]
  |  |  |  Branch (1667:94): [True: 0, False: 90.0k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  99.6k|    return true;
13730|  99.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11start_arrayEm:
13966|  88.4k|    {
13967|  88.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  88.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  88.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  88.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 80.9k, False: 7.51k]
  ------------------
13980|  80.9k|        {
13981|  80.9k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  80.9k|        }
13983|       |
13984|  88.4k|        return true;
13985|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|  99.6k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  85.3k|    {
15115|  85.3k|        const bool is_object = container_stack.back().is_object;
15116|  85.3k|        container_stack.pop_back();
15117|  85.3k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.84k, False: 76.4k]
  ------------------
15118|  85.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE10end_objectEv:
13952|  8.84k|    {
13953|  8.84k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.84k, False: 0]
  ------------------
13954|  8.84k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.84k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.84k|        ref_stack.back()->set_parents();
13961|  8.84k|        ref_stack.pop_back();
13962|  8.84k|        return true;
13963|  8.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE9end_arrayEv:
13988|  76.4k|    {
13989|  76.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 76.4k, False: 0]
  ------------------
13990|  76.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 76.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  76.4k|        ref_stack.back()->set_parents();
13997|  76.4k|        ref_stack.pop_back();
13998|  76.4k|        return true;
13999|  76.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  5.31k|    {
19042|  5.31k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  5.31k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 986, False: 4.32k]
  |  |  ------------------
  ------------------
19043|    986|        {
19044|    986|            return report_eof(context);
19045|    986|        }
19046|  4.32k|        return true;
19047|  5.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE3keyERSC_:
13942|  23.2k|    {
13943|  23.2k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 23.2k, False: 0]
  ------------------
13944|  23.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 23.2k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  23.2k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  23.2k|        return true;
13949|  23.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.13k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.13k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.13k|        chars_read += new_chars_read;
18672|  1.13k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.11k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.11k|        return true;
18680|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 8507|  1.13k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.13k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.13k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.11k]
  |  |  ------------------
  ------------------
 8513|     19|        {
 8514|     19|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     19|        }
 8516|  1.13k|        return res;
 8517|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|  1.11k|    {
18699|  1.11k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.11k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.57k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.45k, False: 1.11k]
  ------------------
18715|  4.45k|            {
18716|  4.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.11k|    {
18826|  1.11k|        const auto result = static_cast<number_float_t>(number);
18827|  1.11k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.11k]
  |  |  |  Branch (1667:94): [True: 1.09k, False: 17]
  |  |  |  Branch (1667:94): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.11k|        return sax->number_float(result, "");
18832|  1.11k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    638|    {
19153|    638|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    638|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12number_floatEdRKSC_:
13908|  10.2k|    {
13909|  10.2k|        handle_value(val);
13910|  10.2k|        return true;
13911|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  10.2k|    {
14031|  10.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 457, False: 9.76k]
  ------------------
14032|    457|        {
14033|    457|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    457|            return &root;
14040|    457|        }
14041|       |
14042|  9.76k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.76k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.82k, False: 2.93k]
  |  Branch (14042:9): [True: 2.93k, False: 0]
  |  Branch (14042:9): [True: 9.76k, False: 0]
  ------------------
14043|       |
14044|  9.76k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.82k, False: 2.93k]
  ------------------
14045|  6.82k|        {
14046|  6.82k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.82k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.82k|        }
14054|       |
14055|  2.93k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.93k, False: 0]
  ------------------
14056|  2.93k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.93k, False: 0]
  ------------------
14057|  2.93k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.93k|        return object_element;
14064|  2.93k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6stringERSC_:
13914|  26.0k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  26.0k|        handle_value(std::move(val));
13918|  26.0k|        return true;
13919|  26.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  26.0k|    {
14031|  26.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 224, False: 25.7k]
  ------------------
14032|    224|        {
14033|    224|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    224|            return &root;
14040|    224|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 22.3k, False: 3.38k]
  |  Branch (14042:9): [True: 3.38k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 22.3k, False: 3.38k]
  ------------------
14045|  22.3k|        {
14046|  22.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  22.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  22.3k|        }
14054|       |
14055|  3.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.38k, False: 0]
  ------------------
14056|  3.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.38k, False: 0]
  ------------------
14057|  3.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.38k|        return object_element;
14064|  3.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE7booleanEb:
13890|  13.3k|    {
13891|  13.3k|        handle_value(val);
13892|  13.3k|        return true;
13893|  13.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  13.3k|    {
14031|  13.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3, False: 13.3k]
  ------------------
14032|      3|        {
14033|      3|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      3|            return &root;
14040|      3|        }
14041|       |
14042|  13.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.5k, False: 818]
  |  Branch (14042:9): [True: 818, False: 0]
  |  Branch (14042:9): [True: 13.3k, False: 0]
  ------------------
14043|       |
14044|  13.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.5k, False: 818]
  ------------------
14045|  12.5k|        {
14046|  12.5k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.5k|        }
14054|       |
14055|    818|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 818, False: 0]
  ------------------
14056|    818|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 818, False: 0]
  ------------------
14057|    818|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    818|        return object_element;
14064|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE4nullEv:
13884|  4.32k|    {
13885|  4.32k|        handle_value(nullptr);
13886|  4.32k|        return true;
13887|  4.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  4.32k|    {
14031|  4.32k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 4.32k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  4.32k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.32k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.45k, False: 1.87k]
  |  Branch (14042:9): [True: 1.87k, False: 0]
  |  Branch (14042:9): [True: 4.32k, False: 0]
  ------------------
14043|       |
14044|  4.32k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.45k, False: 1.87k]
  ------------------
14045|  2.45k|        {
14046|  2.45k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.45k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.45k|        }
14054|       |
14055|  1.87k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.87k, False: 0]
  ------------------
14056|  1.87k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.87k, False: 0]
  ------------------
14057|  1.87k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.87k|        return object_element;
14064|  1.87k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE14number_integerEl:
13896|  9.68k|    {
13897|  9.68k|        handle_value(val);
13898|  9.68k|        return true;
13899|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  9.68k|    {
14031|  9.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 377, False: 9.30k]
  ------------------
14032|    377|        {
14033|    377|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    377|            return &root;
14040|    377|        }
14041|       |
14042|  9.30k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.30k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.33k, False: 2.97k]
  |  Branch (14042:9): [True: 2.97k, False: 0]
  |  Branch (14042:9): [True: 9.30k, False: 0]
  ------------------
14043|       |
14044|  9.30k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.33k, False: 2.97k]
  ------------------
14045|  6.33k|        {
14046|  6.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.33k|        }
14054|       |
14055|  2.97k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.97k, False: 0]
  ------------------
14056|  2.97k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.97k, False: 0]
  ------------------
14057|  2.97k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.97k|        return object_element;
14064|  2.97k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE15number_unsignedEm:
13902|  11.2k|    {
13903|  11.2k|        handle_value(val);
13904|  11.2k|        return true;
13905|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  11.2k|    {
14031|  11.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 314, False: 10.8k]
  ------------------
14032|    314|        {
14033|    314|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    314|            return &root;
14040|    314|        }
14041|       |
14042|  10.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  10.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.79k, False: 4.10k]
  |  Branch (14042:9): [True: 4.10k, False: 0]
  |  Branch (14042:9): [True: 10.8k, False: 0]
  ------------------
14043|       |
14044|  10.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.79k, False: 4.10k]
  ------------------
14045|  6.79k|        {
14046|  6.79k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.79k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.79k|        }
14054|       |
14055|  4.10k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 4.10k, False: 0]
  ------------------
14056|  4.10k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 4.10k, False: 0]
  ------------------
14057|  4.10k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  4.10k|        return object_element;
14064|  4.10k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|  1.38k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.38k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.38k|        chars_read += new_chars_read;
18672|  1.38k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.36k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.36k|        return true;
18680|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIlEEmPT_m:
 8507|  1.38k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.38k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.38k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.36k]
  |  |  ------------------
  ------------------
 8513|     19|        {
 8514|     19|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     19|        }
 8516|  1.38k|        return res;
 8517|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIlEEvRT_:
18698|  1.36k|    {
18699|  1.36k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.36k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  6.81k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 5.45k, False: 1.36k]
  ------------------
18715|  5.45k|            {
18716|  5.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  5.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.36k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|  3.54k|    {
18772|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
18773|  3.54k|        {
18774|  3.54k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  3.54k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|  3.14k|    {
18800|  3.14k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  3.14k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.14k, False: 0]
  |  |  ------------------
  ------------------
18801|  3.14k|        {
18802|  3.14k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  3.14k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  3.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  88.4k|    {
15095|  88.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  11.2k|    {
15101|  11.2k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  11.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|    226|    {
19131|    226|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    226|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|  1.55k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.55k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.55k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.55k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.53k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.53k]
  |  Branch (18746:57): [True: 0, False: 1.53k]
  ------------------
18747|  1.53k|        {
18748|  1.53k|            byte_swap(result);
18749|  1.53k|        }
18750|  1.55k|        return true;
18751|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|  1.55k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.55k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.55k|        chars_read += new_chars_read;
18672|  1.55k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.53k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.53k|        return true;
18680|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIfEEmPT_m:
 8507|  1.55k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.55k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.55k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.53k]
  |  |  ------------------
  ------------------
 8513|     15|        {
 8514|     15|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     15|        }
 8516|  1.55k|        return res;
 8517|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|  1.53k|    {
18699|  1.53k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.53k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.60k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.07k, False: 1.53k]
  ------------------
18715|  3.07k|            {
18716|  3.07k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.07k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|  1.53k|    {
18826|  1.53k|        const auto result = static_cast<number_float_t>(number);
18827|  1.53k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.53k]
  |  |  |  Branch (1667:94): [True: 1.20k, False: 328]
  |  |  |  Branch (1667:94): [True: 0, False: 1.20k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.53k|        return sax->number_float(result, "");
18832|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|  1.13k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.13k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.13k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.13k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.11k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.11k]
  |  Branch (18746:57): [True: 0, False: 1.11k]
  ------------------
18747|  1.11k|        {
18748|  1.11k|            byte_swap(result);
18749|  1.11k|        }
18750|  1.13k|        return true;
18751|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
18739|  1.04k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.04k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.04k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.02k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.02k]
  |  Branch (18746:57): [True: 0, False: 1.02k]
  ------------------
18747|  1.02k|        {
18748|  1.02k|            byte_swap(result);
18749|  1.02k|        }
18750|  1.04k|        return true;
18751|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
18739|  1.38k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.38k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.38k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.38k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.36k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.36k]
  |  Branch (18746:57): [True: 0, False: 1.36k]
  ------------------
18747|  1.36k|        {
18748|  1.36k|            byte_swap(result);
18749|  1.36k|        }
18750|  1.38k|        return true;
18751|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_bon8_internalEv:
18162|  4.46k|    {
18163|       |        // the key currently being read; hoisted out of the loop so that its
18164|       |        // capacity is reused across elements and across nesting levels
18165|  4.46k|        string_t key;
18166|       |
18167|   262k|        while (true)
  ------------------
  |  Branch (18167:16): [True: 261k, Folded]
  ------------------
18168|   261k|        {
18169|   261k|            if (!container_stack.empty())
  ------------------
  |  Branch (18169:17): [True: 256k, False: 4.46k]
  ------------------
18170|   256k|            {
18171|       |                // a copy, not a reference: it must stay valid across the
18172|       |                // pop_back() below, which destroys the container_stack element
18173|       |                // it would otherwise alias
18174|   256k|                const container_frame top = container_stack.back();
18175|   256k|                bool at_end = false;
18176|       |
18177|   256k|                if (top.remaining != npos)
  ------------------
  |  Branch (18177:21): [True: 168k, False: 88.0k]
  ------------------
18178|   168k|                {
18179|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
18180|       |                    // its elements have been read
18181|   168k|                    at_end = (top.remaining == 0);
18182|   168k|                    if (!at_end)
  ------------------
  |  Branch (18182:25): [True: 87.3k, False: 81.1k]
  ------------------
18183|  87.3k|                    {
18184|       |                        // claim the element about to be read
18185|  87.3k|                        --container_stack.back().remaining;
18186|  87.3k|                    }
18187|   168k|                }
18188|  88.0k|                else
18189|  88.0k|                {
18190|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
18191|       |                    // marker (0xFE); any other byte begins the next element
18192|  88.0k|                    at_end = (get_bon8() == 0xFE);
18193|  88.0k|                    if (!at_end)
  ------------------
  |  Branch (18193:25): [True: 83.9k, False: 4.11k]
  ------------------
18194|  83.9k|                    {
18195|  83.9k|                        unget_bon8(current);
18196|  83.9k|                    }
18197|  88.0k|                }
18198|       |
18199|   256k|                if (at_end)
  ------------------
  |  Branch (18199:21): [True: 85.3k, False: 171k]
  ------------------
18200|  85.3k|                {
18201|  85.3k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  85.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 85.3k]
  |  |  ------------------
  ------------------
18202|      0|                    {
18203|      0|                        return false;
18204|      0|                    }
18205|       |                    // the value begun here is complete once its container is
18206|  85.3k|                    if (container_stack.empty())
  ------------------
  |  Branch (18206:25): [True: 1.80k, False: 83.4k]
  ------------------
18207|  1.80k|                    {
18208|  1.80k|                        return true;
18209|  1.80k|                    }
18210|  83.4k|                    continue;
18211|  85.3k|                }
18212|       |
18213|   171k|                if (top.is_object)
  ------------------
  |  Branch (18213:21): [True: 23.6k, False: 147k]
  ------------------
18214|  23.6k|                {
18215|  23.6k|                    key.clear();
18216|  23.6k|                    if (JSON_HEDLEY_UNLIKELY(!get_bon8_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  46.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 23.6k]
  |  |  |  Branch (1667:94): [True: 367, False: 23.2k]
  |  |  |  Branch (1667:94): [True: 0, False: 23.2k]
  |  |  ------------------
  ------------------
18217|      0|                    {
18218|      0|                        return false;
18219|      0|                    }
18220|  23.6k|                }
18221|   171k|            }
18222|       |
18223|   175k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1667|   175k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 175k]
  |  |  ------------------
  ------------------
18224|      0|            {
18225|      0|                return false;
18226|      0|            }
18227|       |
18228|       |            // a value that opened a container left it on the stack; one that
18229|       |            // did not, and that was not inside a container, was the whole value
18230|   175k|            if (container_stack.empty())
  ------------------
  |  Branch (18230:17): [True: 1.37k, False: 174k]
  ------------------
18231|  1.37k|            {
18232|  1.37k|                return true;
18233|  1.37k|            }
18234|   175k|        }
18235|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10unget_bon8Ei:
18131|   162k|    {
18132|       |        // At most two bytes are ever handed back: a byte is only handed back
18133|       |        // right after it was read with get_bon8(), and the only place that
18134|       |        // hands back two bytes (a lead byte and the byte after it) read both
18135|       |        // of them in a row, which emptied the buffer first. This is an
18136|       |        // invariant of the reader rather than a property of the input, so
18137|       |        // an assertion suffices (the fuzzers are built with assertions).
18138|   162k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2591|   162k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18138:9): [True: 162k, False: 0]
  ------------------
18139|   162k|        bon8_pushback[bon8_pushback_size++] = c;
18140|   162k|        --chars_read;
18141|   162k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12get_bon8_keyERSC_:
18457|  23.6k|    {
18458|  23.6k|        const auto byte = get_bon8();
18459|       |
18460|  23.6k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18460:13): [True: 230, False: 23.4k]
  ------------------
18461|    230|        {
18462|    230|            return unexpect_eof("key");
18463|    230|        }
18464|       |
18465|  23.4k|        if (byte == 0xFF)
  ------------------
  |  Branch (18465:13): [True: 3.69k, False: 19.7k]
  ------------------
18466|  3.69k|        {
18467|  3.69k|            return true;
18468|  3.69k|        }
18469|       |
18470|  19.7k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18470:13): [True: 18.7k, False: 1.01k]
  ------------------
18471|  18.7k|        {
18472|  18.7k|            unget_bon8(byte);
18473|  18.7k|            return get_bon8_string(result);
18474|  18.7k|        }
18475|       |
18476|  1.01k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (18476:13): [True: 973, False: 40]
  |  Branch (18476:29): [True: 956, False: 17]
  ------------------
18477|    956|        {
18478|    956|            const auto second = get_bon8();
18479|    956|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18479:17): [True: 8, False: 948]
  ------------------
18480|      8|            {
18481|       |                // the input ends inside a character or an integer
18482|      8|                return unexpect_eof("key");
18483|      8|            }
18484|    948|            unget_bon8(second);
18485|    948|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18485:17): [True: 930, False: 18]
  ------------------
18486|    930|            {
18487|    930|                unget_bon8(byte);
18488|    930|                return get_bon8_string(result);
18489|    930|            }
18490|       |            // an integer: report its first byte rather than the one after it
18491|     18|            current = byte;
18492|     18|        }
18493|       |
18494|     75|        return unexpected_byte("expected a string; last byte", "key");
18495|  1.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bon8_stringERSC_:
18546|  37.8k|    {
18547|   114k|        while (true)
  ------------------
  |  Branch (18547:16): [True: 114k, Folded]
  ------------------
18548|   114k|        {
18549|   114k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
18550|       |
18551|   114k|            const auto byte = get_bon8();
18552|       |
18553|   114k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18553:17): [True: 173, False: 114k]
  ------------------
18554|    173|            {
18555|    173|                return unexpect_eof("string");
18556|    173|            }
18557|       |
18558|       |            // end of string
18559|   114k|            if (byte == 0xFF)
  ------------------
  |  Branch (18559:17): [True: 1.47k, False: 112k]
  ------------------
18560|  1.47k|            {
18561|  1.47k|                return true;
18562|  1.47k|            }
18563|       |
18564|       |            // ASCII character
18565|   112k|            if (byte <= 0x7F)
  ------------------
  |  Branch (18565:17): [True: 71.8k, False: 40.9k]
  ------------------
18566|  71.8k|            {
18567|  71.8k|                result.push_back(static_cast<typename string_t::value_type>(byte));
18568|  71.8k|                continue;
18569|  71.8k|            }
18570|       |
18571|       |            // a byte that cannot begin a character ends the string and begins
18572|       |            // the next value
18573|  40.9k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (18573:17): [True: 18.1k, False: 22.8k]
  |  Branch (18573:32): [True: 15.5k, False: 7.24k]
  ------------------
18574|  33.7k|            {
18575|  33.7k|                unget_bon8(byte);
18576|  33.7k|                return true;
18577|  33.7k|            }
18578|       |
18579|       |            // a lead byte ends the string if no continuation byte follows: it
18580|       |            // is then the first byte of an integer
18581|  7.24k|            const auto second = get_bon8();
18582|  7.24k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18582:17): [True: 17, False: 7.22k]
  ------------------
18583|     17|            {
18584|       |                // the input ends inside a character or an integer: either
18585|       |                // way, the message is incomplete
18586|     17|                return unexpect_eof("string");
18587|     17|            }
18588|  7.22k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (18588:17): [True: 2.27k, False: 4.95k]
  ------------------
18589|  2.27k|            {
18590|  2.27k|                unget_bon8(second);
18591|  2.27k|                unget_bon8(byte);
18592|  2.27k|                return true;
18593|  2.27k|            }
18594|       |
18595|       |            // the valid range of the second byte excludes overlong forms,
18596|       |            // surrogates, and code points above U+10FFFF
18597|       |            // (RFC 3629, section 4)
18598|  4.95k|            int continuation_bytes = 0;
18599|  4.95k|            bool valid_second = true;
18600|  4.95k|            if (byte <= 0xDF)
  ------------------
  |  Branch (18600:17): [True: 2.55k, False: 2.40k]
  ------------------
18601|  2.55k|            {
18602|  2.55k|                continuation_bytes = 1;
18603|  2.55k|            }
18604|  2.40k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (18604:22): [True: 1.25k, False: 1.14k]
  ------------------
18605|  1.25k|            {
18606|  1.25k|                continuation_bytes = 2;
18607|  1.25k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (18607:33): [True: 689, False: 566]
  |  Branch (18607:49): [True: 553, False: 13]
  |  Branch (18607:69): [True: 717, False: 525]
  |  Branch (18607:85): [True: 519, False: 6]
  ------------------
18608|  1.25k|            }
18609|  1.14k|            else
18610|  1.14k|            {
18611|  1.14k|                continuation_bytes = 3;
18612|  1.14k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (18612:32): [True: 1.14k, False: 3]
  |  Branch (18612:49): [True: 880, False: 264]
  |  Branch (18612:65): [True: 251, False: 13]
  |  Branch (18612:85): [True: 637, False: 494]
  |  Branch (18612:101): [True: 489, False: 5]
  ------------------
18613|  1.14k|            }
18614|       |
18615|  4.95k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1667|  4.95k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 4.91k]
  |  |  ------------------
  ------------------
18616|     40|            {
18617|     40|                return unexpected_byte("invalid UTF-8 byte", "string");
18618|     40|            }
18619|       |
18620|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(byte));
18621|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(second));
18622|       |
18623|  8.24k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (18623:29): [True: 3.45k, False: 4.79k]
  ------------------
18624|  3.45k|            {
18625|  3.45k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.39k]
  |  |  ------------------
  ------------------
18626|     60|                {
18627|     60|                    return unexpect_eof("string");
18628|     60|                }
18629|  3.39k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1667|  3.39k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.33k]
  |  |  ------------------
  ------------------
18630|     60|                {
18631|     60|                    return unexpected_byte("invalid UTF-8 byte", "string");
18632|     60|                }
18633|  3.33k|                result.push_back(static_cast<typename string_t::value_type>(current));
18634|  3.33k|            }
18635|  4.91k|        }
18636|  37.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb0EEE:
18531|   114k|    void get_bon8_string_bulk(string_t& /*result*/, std::false_type /*bulk*/) const noexcept {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE20is_bon8_continuationEi:
18148|  17.3k|    {
18149|  17.3k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (18149:16): [True: 13.6k, False: 3.73k]
  |  Branch (18149:29): [True: 10.6k, False: 2.96k]
  ------------------
18150|  17.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16parse_bon8_valueEv:
18248|   175k|    {
18249|   175k|        const auto byte = get_bon8();
18250|       |
18251|   175k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18251:13): [True: 454, False: 174k]
  ------------------
18252|    454|        {
18253|    454|            return unexpect_eof("value");
18254|    454|        }
18255|       |
18256|       |        // string: ASCII character
18257|   174k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18257:13): [True: 16.7k, False: 158k]
  ------------------
18258|  16.7k|        {
18259|  16.7k|            string_t s;
18260|  16.7k|            unget_bon8(byte);
18261|  16.7k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18261:20): [True: 16.5k, False: 168]
  |  Branch (18261:42): [True: 16.5k, False: 0]
  ------------------
18262|  16.7k|        }
18263|       |
18264|       |        // array with 0..4 elements
18265|   158k|        if (byte <= 0x84)
  ------------------
  |  Branch (18265:13): [True: 80.9k, False: 77.2k]
  ------------------
18266|  80.9k|        {
18267|  80.9k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
18268|  80.9k|        }
18269|       |
18270|       |        // array terminated by 0xFE
18271|  77.2k|        if (byte == 0x85)
  ------------------
  |  Branch (18271:13): [True: 7.51k, False: 69.7k]
  ------------------
18272|  7.51k|        {
18273|  7.51k|            return enter_array(npos);
18274|  7.51k|        }
18275|       |
18276|       |        // object with 0..4 members
18277|  69.7k|        if (byte <= 0x8A)
  ------------------
  |  Branch (18277:13): [True: 9.09k, False: 60.6k]
  ------------------
18278|  9.09k|        {
18279|  9.09k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
18280|  9.09k|        }
18281|       |
18282|  60.6k|        switch (byte)
18283|  60.6k|        {
18284|  2.12k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (18284:13): [True: 2.12k, False: 58.5k]
  ------------------
18285|  2.12k|                return enter_object(npos);
18286|       |
18287|  1.04k|            case 0x8C: // int32
  ------------------
  |  Branch (18287:13): [True: 1.04k, False: 59.6k]
  ------------------
18288|  1.04k|            {
18289|  1.04k|                std::int32_t number{};
18290|  1.04k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18290:24): [True: 1.02k, False: 15]
  |  Branch (18290:46): [True: 1.02k, False: 0]
  ------------------
18291|      0|            }
18292|       |
18293|  1.38k|            case 0x8D: // int64
  ------------------
  |  Branch (18293:13): [True: 1.38k, False: 59.3k]
  ------------------
18294|  1.38k|            {
18295|  1.38k|                std::int64_t number{};
18296|  1.38k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18296:24): [True: 1.36k, False: 19]
  |  Branch (18296:46): [True: 1.36k, False: 0]
  ------------------
18297|      0|            }
18298|       |
18299|  1.55k|            case 0x8E: // binary32
  ------------------
  |  Branch (18299:13): [True: 1.55k, False: 59.1k]
  ------------------
18300|  1.55k|            {
18301|  1.55k|                float number{};
18302|  1.55k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18302:24): [True: 1.53k, False: 15]
  |  Branch (18302:46): [True: 1.53k, False: 0]
  ------------------
18303|      0|            }
18304|       |
18305|  1.13k|            case 0x8F: // binary64
  ------------------
  |  Branch (18305:13): [True: 1.13k, False: 59.5k]
  ------------------
18306|  1.13k|            {
18307|  1.13k|                double number{};
18308|  1.13k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18308:24): [True: 1.11k, False: 19]
  |  Branch (18308:46): [True: 1.11k, False: 0]
  ------------------
18309|      0|            }
18310|       |
18311|  11.2k|            case 0xF8:
  ------------------
  |  Branch (18311:13): [True: 11.2k, False: 49.4k]
  ------------------
18312|  11.2k|                return sax->boolean(false);
18313|       |
18314|  2.19k|            case 0xF9:
  ------------------
  |  Branch (18314:13): [True: 2.19k, False: 58.4k]
  ------------------
18315|  2.19k|                return sax->boolean(true);
18316|       |
18317|  4.32k|            case 0xFA:
  ------------------
  |  Branch (18317:13): [True: 4.32k, False: 56.3k]
  ------------------
18318|  4.32k|                return sax->null();
18319|       |
18320|  2.28k|            case 0xFB:
  ------------------
  |  Branch (18320:13): [True: 2.28k, False: 58.4k]
  ------------------
18321|  2.28k|                return sax->number_float(static_cast<number_float_t>(-1.0), "");
18322|       |
18323|  1.84k|            case 0xFC:
  ------------------
  |  Branch (18323:13): [True: 1.84k, False: 58.8k]
  ------------------
18324|  1.84k|                return sax->number_float(static_cast<number_float_t>(0.0), "");
18325|       |
18326|  3.44k|            case 0xFD:
  ------------------
  |  Branch (18326:13): [True: 3.44k, False: 57.2k]
  ------------------
18327|  3.44k|                return sax->number_float(static_cast<number_float_t>(1.0), "");
18328|       |
18329|  8.11k|            case 0xFF: // empty string
  ------------------
  |  Branch (18329:13): [True: 8.11k, False: 52.5k]
  ------------------
18330|  8.11k|            {
18331|  8.11k|                string_t s;
18332|  8.11k|                return sax->string(s);
18333|      0|            }
18334|       |
18335|  20.0k|            default:
  ------------------
  |  Branch (18335:13): [True: 20.0k, False: 40.6k]
  ------------------
18336|  20.0k|                break;
18337|  60.6k|        }
18338|       |
18339|       |        // integer 0..39
18340|  20.0k|        if (byte <= 0xB7)
  ------------------
  |  Branch (18340:13): [True: 8.06k, False: 11.9k]
  ------------------
18341|  8.06k|        {
18342|  8.06k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
18343|  8.06k|        }
18344|       |
18345|       |        // integer -1..-10
18346|  11.9k|        if (byte <= 0xC1)
  ------------------
  |  Branch (18346:13): [True: 6.13k, False: 5.84k]
  ------------------
18347|  6.13k|        {
18348|  6.13k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
18349|  6.13k|        }
18350|       |
18351|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
18352|       |        // byte follows and an integer otherwise
18353|  5.84k|        if (byte <= 0xF7)
  ------------------
  |  Branch (18353:13): [True: 5.79k, False: 51]
  ------------------
18354|  5.79k|        {
18355|  5.79k|            const auto second = get_bon8();
18356|  5.79k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18356:17): [True: 1.45k, False: 4.34k]
  ------------------
18357|  1.45k|            {
18358|  1.45k|                string_t s;
18359|  1.45k|                unget_bon8(second);
18360|  1.45k|                unget_bon8(byte);
18361|  1.45k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18361:24): [True: 1.32k, False: 128]
  |  Branch (18361:46): [True: 1.32k, False: 0]
  ------------------
18362|  1.45k|            }
18363|  4.34k|            return get_bon8_integer(byte, second);
18364|  5.79k|        }
18365|       |
18366|       |        // 0xFE: end of container where a value is expected
18367|     51|        return unexpected_byte("invalid byte", "value");
18368|  5.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17emit_bon8_integerEl:
18382|  6.69k|    {
18383|  6.69k|        if (number >= 0)
  ------------------
  |  Branch (18383:13): [True: 3.14k, False: 3.54k]
  ------------------
18384|  3.14k|        {
18385|  3.14k|            return emit_unsigned(static_cast<std::uint64_t>(number));
18386|  3.14k|        }
18387|  3.54k|        return emit_signed(number);
18388|  6.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_bon8_integerEii:
18406|  4.34k|    {
18407|  4.34k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  4.34k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.34k]
  |  |  ------------------
  ------------------
18408|      0|        {
18409|      0|            return false;
18410|      0|        }
18411|       |
18412|  4.34k|        const bool negative = second >= 0xC0;
18413|  4.34k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (18413:48): [True: 2.17k, False: 2.17k]
  ------------------
18414|  4.34k|        std::int64_t offset = 0;
18415|  4.34k|        int extra_bytes = 0;
18416|       |
18417|  4.34k|        if (lead <= 0xDF)
  ------------------
  |  Branch (18417:13): [True: 2.31k, False: 2.02k]
  ------------------
18418|  2.31k|        {
18419|  2.31k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (18419:65): [True: 978, False: 1.33k]
  ------------------
18420|  2.31k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (18420:22): [True: 978, False: 1.33k]
  ------------------
18421|  2.31k|        }
18422|  2.02k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (18422:18): [True: 1.04k, False: 985]
  ------------------
18423|  1.04k|        {
18424|  1.04k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (18424:65): [True: 622, False: 422]
  ------------------
18425|  1.04k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (18425:22): [True: 622, False: 422]
  ------------------
18426|  1.04k|            extra_bytes = 1;
18427|  1.04k|        }
18428|    985|        else
18429|    985|        {
18430|    985|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (18430:65): [True: 572, False: 413]
  ------------------
18431|    985|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (18431:22): [True: 572, False: 413]
  ------------------
18432|    985|            extra_bytes = 2;
18433|    985|        }
18434|       |
18435|  7.29k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (18435:25): [True: 2.97k, False: 4.32k]
  ------------------
18436|  2.97k|        {
18437|  2.97k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.97k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 26, False: 2.94k]
  |  |  ------------------
  ------------------
18438|     26|            {
18439|     26|                return unexpect_eof("number");
18440|     26|            }
18441|  2.94k|            value = (value << 8) | static_cast<std::int64_t>(current);
18442|  2.94k|        }
18443|       |
18444|  4.32k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (18444:34): [True: 2.15k, False: 2.16k]
  ------------------
18445|  4.34k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE8get_bon8Ev:
18115|   425k|    {
18116|   425k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (18116:13): [True: 162k, False: 262k]
  ------------------
18117|   162k|        {
18118|   162k|            ++chars_read;
18119|   162k|            return current = bon8_pushback[--bon8_pushback_size];
18120|   162k|        }
18121|   262k|        return get();
18122|   425k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   262k|    {
18653|   262k|        ++chars_read;
18654|   262k|        return current = ia.get_character();
18655|   262k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 8494|   262k|    {
 8495|   262k|        auto res = sb->sbumpc();
 8496|       |        // set eof manually, as we don't use the istream interface.
 8497|   262k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1667|   262k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4.07k, False: 258k]
  |  |  ------------------
  ------------------
 8498|  4.07k|        {
 8499|  4.07k|            is->clear(is->rdstate() | std::ios::eofbit);
 8500|  4.07k|        }
 8501|   262k|        return res;
 8502|   262k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    319|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    319|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    319|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 226, False: 93]
  ------------------
19120|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  4.46k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEED2Ev:
13881|  4.46k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
 9123|  4.46k|{
 9124|  4.46k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (9124:9): [True: 0, False: 4.46k]
  ------------------
 9125|      0|    {
 9126|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9127|      0|    }
 9128|  4.46k|    return input_stream_adapter(stream);
 9129|  4.46k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 8420|  4.46k|        : is(&i), sb(i.rdbuf())
 8421|  4.46k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 8399|  8.93k|    {
 8400|       |        // clear stream flags; we use underlying streambuf I/O, do not
 8401|       |        // maintain ifstream flags, except eof
 8402|  8.93k|        if (is != nullptr)
  ------------------
  |  Branch (8402:13): [True: 4.46k, False: 4.46k]
  ------------------
 8403|  4.46k|        {
 8404|       |#if JSON_PRECISE_STREAM_POSITION
 8405|       |            // consume the character last returned by get_character() unless it
 8406|       |            // was given back with release_lookahead()
 8407|       |            commit_lookahead();
 8408|       |#endif
 8409|       |            // only call clear() if there is something to clear: it throws
 8410|       |            // std::ios_base::failure if the stream has exceptions() enabled
 8411|       |            // for a state bit that remains set, and a destructor must not throw
 8412|  4.46k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (8412:17): [True: 0, False: 4.46k]
  ------------------
 8413|      0|            {
 8414|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 8415|      0|            }
 8416|  4.46k|        }
 8417|  8.93k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8INS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bb:
36792|  4.46k|    {
36793|  4.46k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bon8, strict, allow_exceptions);
36794|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterINS2_21__list_const_iteratorIhPvEESK_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  4.46k|    {
36386|  4.46k|        basic_json result;
36387|  4.46k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  4.46k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  4.46k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 4.46k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  4.46k|        return result;
36394|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEEC2ERSG_bPNS1_5lexerISG_SL_EE:
13873|  4.46k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  4.46k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEEC2EOSL_NS1_14input_format_tENS1_15error_handler_tE:
14944|  4.46k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  4.46k|    {
14946|  4.46k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9sax_parseEPSN_bNS1_18cbor_tag_handler_tE:
14969|  4.46k|    {
14970|  4.46k|        sax = sax_;
14971|  4.46k|        container_stack.clear();
14972|  4.46k|        bon8_pushback_size = 0;
14973|  4.46k|        bool result = false;
14974|       |
14975|  4.46k|        switch (input_format)
14976|  4.46k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 4.46k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 4.46k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 4.46k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 4.46k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 4.46k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|  4.46k|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 4.46k, False: 0]
  ------------------
14995|  4.46k|                result = parse_bon8_internal();
14996|  4.46k|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 4.46k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 4.46k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  4.46k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.18k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.18k, False: 0]
  |  Branch (15004:23): [True: 3.18k, False: 0]
  ------------------
15005|  3.18k|        {
15006|  3.18k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.18k]
  |  Branch (15006:59): [True: 0, False: 3.18k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.18k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 3.18k, False: 0]
  ------------------
15011|  3.18k|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|  3.18k|                get_bon8();
15014|  3.18k|            }
15015|      0|            else
15016|      0|            {
15017|      0|                get();
15018|      0|            }
15019|       |
15020|  3.18k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 93, False: 3.09k]
  |  |  ------------------
  ------------------
15021|     93|            {
15022|     93|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     93|            }
15024|  3.18k|        }
15025|       |
15026|  3.09k|        return result;
15027|  3.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIiEEbRT_PKc:
18667|  1.04k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.04k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.04k|        chars_read += new_chars_read;
18672|  1.04k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.02k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.02k|        return true;
18680|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIiEEmPT_m:
 8644|  1.04k|    {
 8645|  1.04k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIiEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.04k|    {
 8725|  1.04k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  5.16k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 4.13k, False: 1.02k]
  ------------------
 8727|  4.13k|        {
 8728|  4.13k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  4.13k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.12k, False: 15]
  |  |  ------------------
  ------------------
 8729|  4.12k|            {
 8730|  4.12k|                ptr[read_index] = static_cast<char>(*current);
 8731|  4.12k|                std::advance(current, 1);
 8732|  4.12k|            }
 8733|     15|            else
 8734|     15|            {
 8735|     15|                return read_index;
 8736|     15|            }
 8737|  4.13k|        }
 8738|  1.02k|        return count * sizeof(T);
 8739|  1.04k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10report_eofEPKc:
19058|  1.05k|    {
19059|  1.05k|        return sax->parse_error(chars_read, "<end of file>",
19060|  1.05k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.37k|    {
14005|  1.37k|        errored = true;
14006|  1.37k|        static_cast<void>(ex);
14007|  1.37k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.37k, False: 0]
  ------------------
14008|  1.37k|        {
14009|  1.37k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.37k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.37k|        }
14011|      0|        return false;
14012|  1.37k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17exception_messageERKSC_SQ_:
19163|  1.37k|    {
19164|  1.37k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.37k|        switch (input_format)
19167|  1.37k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.37k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.37k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.37k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 1.37k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.37k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|  1.37k|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 1.37k, False: 0]
  ------------------
19189|  1.37k|                error_msg += "BON8";
19190|  1.37k|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.37k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.37k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.37k|        }
19196|       |
19197|  1.37k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIiEEvRT_:
18698|  1.02k|    {
18699|  1.02k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.02k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.05k, False: 1.02k]
  ------------------
18715|  2.05k|            {
18716|  2.05k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.05k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15enter_containerEbmm:
15082|  99.6k|    {
15083|  99.6k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   199k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 11.2k, False: 88.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  99.6k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  99.6k|        return true;
15090|  99.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12start_objectEm:
13930|  11.2k|    {
13931|  11.2k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  11.2k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  99.6k|    {
14031|  99.6k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.77k, False: 96.8k]
  ------------------
14032|  2.77k|        {
14033|  2.77k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.77k|            return &root;
14040|  2.77k|        }
14041|       |
14042|  96.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  96.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.8k, False: 7.07k]
  |  Branch (14042:9): [True: 7.07k, False: 0]
  |  Branch (14042:9): [True: 96.8k, False: 0]
  ------------------
14043|       |
14044|  96.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.8k, False: 7.07k]
  ------------------
14045|  89.8k|        {
14046|  89.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.8k|        }
14054|       |
14055|  7.07k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 7.07k, False: 0]
  ------------------
14056|  7.07k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 7.07k, False: 0]
  ------------------
14057|  7.07k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  7.07k|        return object_element;
14064|  7.07k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterINS5_21__list_const_iteratorIhPvEESL_EEEESH_EEbRT_mPKcPT0_:
13724|  99.6k|{
13725|  99.6k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   189k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 90.0k, False: 9.63k]
  |  |  |  Branch (1667:94): [True: 0, False: 90.0k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  99.6k|    return true;
13730|  99.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11start_arrayEm:
13966|  88.4k|    {
13967|  88.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  88.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  88.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  88.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 80.9k, False: 7.51k]
  ------------------
13980|  80.9k|        {
13981|  80.9k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  80.9k|        }
13983|       |
13984|  88.4k|        return true;
13985|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15container_frameC2Embm:
15051|  99.6k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15leave_containerEv:
15114|  85.3k|    {
15115|  85.3k|        const bool is_object = container_stack.back().is_object;
15116|  85.3k|        container_stack.pop_back();
15117|  85.3k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.84k, False: 76.4k]
  ------------------
15118|  85.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE10end_objectEv:
13952|  8.84k|    {
13953|  8.84k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.84k, False: 0]
  ------------------
13954|  8.84k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.84k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.84k|        ref_stack.back()->set_parents();
13961|  8.84k|        ref_stack.pop_back();
13962|  8.84k|        return true;
13963|  8.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE9end_arrayEv:
13988|  76.4k|    {
13989|  76.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 76.4k, False: 0]
  ------------------
13990|  76.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 76.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  76.4k|        ref_stack.back()->set_parents();
13997|  76.4k|        ref_stack.pop_back();
13998|  76.4k|        return true;
13999|  76.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12unexpect_eofEPKc:
19041|  5.31k|    {
19042|  5.31k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  5.31k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 986, False: 4.32k]
  |  |  ------------------
  ------------------
19043|    986|        {
19044|    986|            return report_eof(context);
19045|    986|        }
19046|  4.32k|        return true;
19047|  5.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE3keyERSC_:
13942|  23.2k|    {
13943|  23.2k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 23.2k, False: 0]
  ------------------
13944|  23.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 23.2k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  23.2k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  23.2k|        return true;
13949|  23.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIdEEbRT_PKc:
18667|  1.13k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.13k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.13k|        chars_read += new_chars_read;
18672|  1.13k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.11k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.11k|        return true;
18680|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
 8644|  1.13k|    {
 8645|  1.13k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.13k|    {
 8725|  1.13k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  10.0k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 8.96k, False: 1.11k]
  ------------------
 8727|  8.96k|        {
 8728|  8.96k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  8.96k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 8.94k, False: 19]
  |  |  ------------------
  ------------------
 8729|  8.94k|            {
 8730|  8.94k|                ptr[read_index] = static_cast<char>(*current);
 8731|  8.94k|                std::advance(current, 1);
 8732|  8.94k|            }
 8733|     19|            else
 8734|     19|            {
 8735|     19|                return read_index;
 8736|     19|            }
 8737|  8.96k|        }
 8738|  1.11k|        return count * sizeof(T);
 8739|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIdEEvRT_:
18698|  1.11k|    {
18699|  1.11k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.11k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.57k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.45k, False: 1.11k]
  ------------------
18715|  4.45k|            {
18716|  4.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIdEEbT_:
18825|  1.11k|    {
18826|  1.11k|        const auto result = static_cast<number_float_t>(number);
18827|  1.11k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.11k]
  |  |  |  Branch (1667:94): [True: 1.09k, False: 17]
  |  |  |  Branch (1667:94): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.11k|        return sax->number_float(result, "");
18832|  1.11k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16get_token_stringEv:
19152|    638|    {
19153|    638|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    638|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12number_floatEdRKSC_:
13908|  10.2k|    {
13909|  10.2k|        handle_value(val);
13910|  10.2k|        return true;
13911|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRdEEPSG_OT_:
14030|  10.2k|    {
14031|  10.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 457, False: 9.76k]
  ------------------
14032|    457|        {
14033|    457|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    457|            return &root;
14040|    457|        }
14041|       |
14042|  9.76k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.76k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.82k, False: 2.93k]
  |  Branch (14042:9): [True: 2.93k, False: 0]
  |  Branch (14042:9): [True: 9.76k, False: 0]
  ------------------
14043|       |
14044|  9.76k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.82k, False: 2.93k]
  ------------------
14045|  6.82k|        {
14046|  6.82k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.82k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.82k|        }
14054|       |
14055|  2.93k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.93k, False: 0]
  ------------------
14056|  2.93k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.93k, False: 0]
  ------------------
14057|  2.93k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.93k|        return object_element;
14064|  2.93k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6stringERSC_:
13914|  26.0k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  26.0k|        handle_value(std::move(val));
13918|  26.0k|        return true;
13919|  26.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueISC_EEPSG_OT_:
14030|  26.0k|    {
14031|  26.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 224, False: 25.7k]
  ------------------
14032|    224|        {
14033|    224|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    224|            return &root;
14040|    224|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 22.3k, False: 3.38k]
  |  Branch (14042:9): [True: 3.38k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 22.3k, False: 3.38k]
  ------------------
14045|  22.3k|        {
14046|  22.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  22.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  22.3k|        }
14054|       |
14055|  3.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.38k, False: 0]
  ------------------
14056|  3.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.38k, False: 0]
  ------------------
14057|  3.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.38k|        return object_element;
14064|  3.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE7booleanEb:
13890|  13.3k|    {
13891|  13.3k|        handle_value(val);
13892|  13.3k|        return true;
13893|  13.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRbEEPSG_OT_:
14030|  13.3k|    {
14031|  13.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3, False: 13.3k]
  ------------------
14032|      3|        {
14033|      3|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      3|            return &root;
14040|      3|        }
14041|       |
14042|  13.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.5k, False: 818]
  |  Branch (14042:9): [True: 818, False: 0]
  |  Branch (14042:9): [True: 13.3k, False: 0]
  ------------------
14043|       |
14044|  13.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.5k, False: 818]
  ------------------
14045|  12.5k|        {
14046|  12.5k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.5k|        }
14054|       |
14055|    818|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 818, False: 0]
  ------------------
14056|    818|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 818, False: 0]
  ------------------
14057|    818|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    818|        return object_element;
14064|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE4nullEv:
13884|  4.32k|    {
13885|  4.32k|        handle_value(nullptr);
13886|  4.32k|        return true;
13887|  4.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIDnEEPSG_OT_:
14030|  4.32k|    {
14031|  4.32k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 4.32k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  4.32k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.32k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.45k, False: 1.87k]
  |  Branch (14042:9): [True: 1.87k, False: 0]
  |  Branch (14042:9): [True: 4.32k, False: 0]
  ------------------
14043|       |
14044|  4.32k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.45k, False: 1.87k]
  ------------------
14045|  2.45k|        {
14046|  2.45k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.45k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.45k|        }
14054|       |
14055|  1.87k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.87k, False: 0]
  ------------------
14056|  1.87k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.87k, False: 0]
  ------------------
14057|  1.87k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.87k|        return object_element;
14064|  1.87k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE14number_integerEl:
13896|  9.68k|    {
13897|  9.68k|        handle_value(val);
13898|  9.68k|        return true;
13899|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRlEEPSG_OT_:
14030|  9.68k|    {
14031|  9.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 377, False: 9.30k]
  ------------------
14032|    377|        {
14033|    377|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    377|            return &root;
14040|    377|        }
14041|       |
14042|  9.30k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.30k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.33k, False: 2.97k]
  |  Branch (14042:9): [True: 2.97k, False: 0]
  |  Branch (14042:9): [True: 9.30k, False: 0]
  ------------------
14043|       |
14044|  9.30k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.33k, False: 2.97k]
  ------------------
14045|  6.33k|        {
14046|  6.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.33k|        }
14054|       |
14055|  2.97k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.97k, False: 0]
  ------------------
14056|  2.97k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.97k, False: 0]
  ------------------
14057|  2.97k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.97k|        return object_element;
14064|  2.97k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE15number_unsignedEm:
13902|  11.2k|    {
13903|  11.2k|        handle_value(val);
13904|  11.2k|        return true;
13905|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRmEEPSG_OT_:
14030|  11.2k|    {
14031|  11.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 314, False: 10.8k]
  ------------------
14032|    314|        {
14033|    314|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    314|            return &root;
14040|    314|        }
14041|       |
14042|  10.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  10.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.79k, False: 4.10k]
  |  Branch (14042:9): [True: 4.10k, False: 0]
  |  Branch (14042:9): [True: 10.8k, False: 0]
  ------------------
14043|       |
14044|  10.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.79k, False: 4.10k]
  ------------------
14045|  6.79k|        {
14046|  6.79k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.79k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.79k|        }
14054|       |
14055|  4.10k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 4.10k, False: 0]
  ------------------
14056|  4.10k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 4.10k, False: 0]
  ------------------
14057|  4.10k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  4.10k|        return object_element;
14064|  4.10k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIlEEbRT_PKc:
18667|  1.38k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.38k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.38k|        chars_read += new_chars_read;
18672|  1.38k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.36k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.36k|        return true;
18680|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIlEEmPT_m:
 8644|  1.38k|    {
 8645|  1.38k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIlEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.38k|    {
 8725|  1.38k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  12.3k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 10.9k, False: 1.36k]
  ------------------
 8727|  10.9k|        {
 8728|  10.9k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  10.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 10.9k, False: 19]
  |  |  ------------------
  ------------------
 8729|  10.9k|            {
 8730|  10.9k|                ptr[read_index] = static_cast<char>(*current);
 8731|  10.9k|                std::advance(current, 1);
 8732|  10.9k|            }
 8733|     19|            else
 8734|     19|            {
 8735|     19|                return read_index;
 8736|     19|            }
 8737|  10.9k|        }
 8738|  1.36k|        return count * sizeof(T);
 8739|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIlEEvRT_:
18698|  1.36k|    {
18699|  1.36k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.36k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  6.81k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 5.45k, False: 1.36k]
  ------------------
18715|  5.45k|            {
18716|  5.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  5.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.36k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE11emit_signedIlEEbT_:
18771|  3.54k|    {
18772|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
18773|  3.54k|        {
18774|  3.54k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  3.54k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedImEEbT_:
18799|  3.14k|    {
18800|  3.14k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  3.14k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.14k, False: 0]
  |  |  ------------------
  ------------------
18801|  3.14k|        {
18802|  3.14k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  3.14k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  3.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE11enter_arrayEmm:
15094|  88.4k|    {
15095|  88.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12enter_objectEmm:
15100|  11.2k|    {
15101|  11.2k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  11.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15unexpected_byteEPKcSQ_:
19130|    226|    {
19131|    226|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    226|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIfLb0EEEbRT_:
18739|  1.55k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.55k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.55k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.55k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.53k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.53k]
  |  Branch (18746:57): [True: 0, False: 1.53k]
  ------------------
18747|  1.53k|        {
18748|  1.53k|            byte_swap(result);
18749|  1.53k|        }
18750|  1.55k|        return true;
18751|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIfEEbRT_PKc:
18667|  1.55k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.55k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.55k|        chars_read += new_chars_read;
18672|  1.55k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.53k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.53k|        return true;
18680|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIfEEmPT_m:
 8644|  1.55k|    {
 8645|  1.55k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIfEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.55k|    {
 8725|  1.55k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  7.70k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 6.17k, False: 1.53k]
  ------------------
 8727|  6.17k|        {
 8728|  6.17k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  6.17k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.15k, False: 15]
  |  |  ------------------
  ------------------
 8729|  6.15k|            {
 8730|  6.15k|                ptr[read_index] = static_cast<char>(*current);
 8731|  6.15k|                std::advance(current, 1);
 8732|  6.15k|            }
 8733|     15|            else
 8734|     15|            {
 8735|     15|                return read_index;
 8736|     15|            }
 8737|  6.17k|        }
 8738|  1.53k|        return count * sizeof(T);
 8739|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIfEEvRT_:
18698|  1.53k|    {
18699|  1.53k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.53k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.60k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.07k, False: 1.53k]
  ------------------
18715|  3.07k|            {
18716|  3.07k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.07k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIfEEbT_:
18825|  1.53k|    {
18826|  1.53k|        const auto result = static_cast<number_float_t>(number);
18827|  1.53k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.53k]
  |  |  |  Branch (1667:94): [True: 1.20k, False: 328]
  |  |  |  Branch (1667:94): [True: 0, False: 1.20k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.53k|        return sax->number_float(result, "");
18832|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIdLb0EEEbRT_:
18739|  1.13k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.13k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.13k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.13k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.11k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.11k]
  |  Branch (18746:57): [True: 0, False: 1.11k]
  ------------------
18747|  1.11k|        {
18748|  1.11k|            byte_swap(result);
18749|  1.11k|        }
18750|  1.13k|        return true;
18751|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIiLb0EEEbRT_:
18739|  1.04k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.04k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.04k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.02k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.02k]
  |  Branch (18746:57): [True: 0, False: 1.02k]
  ------------------
18747|  1.02k|        {
18748|  1.02k|            byte_swap(result);
18749|  1.02k|        }
18750|  1.04k|        return true;
18751|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIlLb0EEEbRT_:
18739|  1.38k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.38k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.38k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.38k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.36k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.36k]
  |  Branch (18746:57): [True: 0, False: 1.36k]
  ------------------
18747|  1.36k|        {
18748|  1.36k|            byte_swap(result);
18749|  1.36k|        }
18750|  1.38k|        return true;
18751|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE19parse_bon8_internalEv:
18162|  4.46k|    {
18163|       |        // the key currently being read; hoisted out of the loop so that its
18164|       |        // capacity is reused across elements and across nesting levels
18165|  4.46k|        string_t key;
18166|       |
18167|   262k|        while (true)
  ------------------
  |  Branch (18167:16): [True: 261k, Folded]
  ------------------
18168|   261k|        {
18169|   261k|            if (!container_stack.empty())
  ------------------
  |  Branch (18169:17): [True: 256k, False: 4.46k]
  ------------------
18170|   256k|            {
18171|       |                // a copy, not a reference: it must stay valid across the
18172|       |                // pop_back() below, which destroys the container_stack element
18173|       |                // it would otherwise alias
18174|   256k|                const container_frame top = container_stack.back();
18175|   256k|                bool at_end = false;
18176|       |
18177|   256k|                if (top.remaining != npos)
  ------------------
  |  Branch (18177:21): [True: 168k, False: 88.0k]
  ------------------
18178|   168k|                {
18179|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
18180|       |                    // its elements have been read
18181|   168k|                    at_end = (top.remaining == 0);
18182|   168k|                    if (!at_end)
  ------------------
  |  Branch (18182:25): [True: 87.3k, False: 81.1k]
  ------------------
18183|  87.3k|                    {
18184|       |                        // claim the element about to be read
18185|  87.3k|                        --container_stack.back().remaining;
18186|  87.3k|                    }
18187|   168k|                }
18188|  88.0k|                else
18189|  88.0k|                {
18190|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
18191|       |                    // marker (0xFE); any other byte begins the next element
18192|  88.0k|                    at_end = (get_bon8() == 0xFE);
18193|  88.0k|                    if (!at_end)
  ------------------
  |  Branch (18193:25): [True: 83.9k, False: 4.11k]
  ------------------
18194|  83.9k|                    {
18195|  83.9k|                        unget_bon8(current);
18196|  83.9k|                    }
18197|  88.0k|                }
18198|       |
18199|   256k|                if (at_end)
  ------------------
  |  Branch (18199:21): [True: 85.3k, False: 171k]
  ------------------
18200|  85.3k|                {
18201|  85.3k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  85.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 85.3k]
  |  |  ------------------
  ------------------
18202|      0|                    {
18203|      0|                        return false;
18204|      0|                    }
18205|       |                    // the value begun here is complete once its container is
18206|  85.3k|                    if (container_stack.empty())
  ------------------
  |  Branch (18206:25): [True: 1.80k, False: 83.4k]
  ------------------
18207|  1.80k|                    {
18208|  1.80k|                        return true;
18209|  1.80k|                    }
18210|  83.4k|                    continue;
18211|  85.3k|                }
18212|       |
18213|   171k|                if (top.is_object)
  ------------------
  |  Branch (18213:21): [True: 23.6k, False: 147k]
  ------------------
18214|  23.6k|                {
18215|  23.6k|                    key.clear();
18216|  23.6k|                    if (JSON_HEDLEY_UNLIKELY(!get_bon8_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  46.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 23.6k]
  |  |  |  Branch (1667:94): [True: 367, False: 23.2k]
  |  |  |  Branch (1667:94): [True: 0, False: 23.2k]
  |  |  ------------------
  ------------------
18217|      0|                    {
18218|      0|                        return false;
18219|      0|                    }
18220|  23.6k|                }
18221|   171k|            }
18222|       |
18223|   175k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1667|   175k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 175k]
  |  |  ------------------
  ------------------
18224|      0|            {
18225|      0|                return false;
18226|      0|            }
18227|       |
18228|       |            // a value that opened a container left it on the stack; one that
18229|       |            // did not, and that was not inside a container, was the whole value
18230|   175k|            if (container_stack.empty())
  ------------------
  |  Branch (18230:17): [True: 1.37k, False: 174k]
  ------------------
18231|  1.37k|            {
18232|  1.37k|                return true;
18233|  1.37k|            }
18234|   175k|        }
18235|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10unget_bon8Em:
18131|   162k|    {
18132|       |        // At most two bytes are ever handed back: a byte is only handed back
18133|       |        // right after it was read with get_bon8(), and the only place that
18134|       |        // hands back two bytes (a lead byte and the byte after it) read both
18135|       |        // of them in a row, which emptied the buffer first. This is an
18136|       |        // invariant of the reader rather than a property of the input, so
18137|       |        // an assertion suffices (the fuzzers are built with assertions).
18138|   162k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2591|   162k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18138:9): [True: 162k, False: 0]
  ------------------
18139|   162k|        bon8_pushback[bon8_pushback_size++] = c;
18140|   162k|        --chars_read;
18141|   162k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12get_bon8_keyERSC_:
18457|  23.6k|    {
18458|  23.6k|        const auto byte = get_bon8();
18459|       |
18460|  23.6k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18460:13): [True: 230, False: 23.4k]
  ------------------
18461|    230|        {
18462|    230|            return unexpect_eof("key");
18463|    230|        }
18464|       |
18465|  23.4k|        if (byte == 0xFF)
  ------------------
  |  Branch (18465:13): [True: 3.69k, False: 19.7k]
  ------------------
18466|  3.69k|        {
18467|  3.69k|            return true;
18468|  3.69k|        }
18469|       |
18470|  19.7k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18470:13): [True: 18.7k, False: 1.01k]
  ------------------
18471|  18.7k|        {
18472|  18.7k|            unget_bon8(byte);
18473|  18.7k|            return get_bon8_string(result);
18474|  18.7k|        }
18475|       |
18476|  1.01k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (18476:13): [True: 973, False: 40]
  |  Branch (18476:29): [True: 956, False: 17]
  ------------------
18477|    956|        {
18478|    956|            const auto second = get_bon8();
18479|    956|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18479:17): [True: 8, False: 948]
  ------------------
18480|      8|            {
18481|       |                // the input ends inside a character or an integer
18482|      8|                return unexpect_eof("key");
18483|      8|            }
18484|    948|            unget_bon8(second);
18485|    948|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18485:17): [True: 930, False: 18]
  ------------------
18486|    930|            {
18487|    930|                unget_bon8(byte);
18488|    930|                return get_bon8_string(result);
18489|    930|            }
18490|       |            // an integer: report its first byte rather than the one after it
18491|     18|            current = byte;
18492|     18|        }
18493|       |
18494|     75|        return unexpected_byte("expected a string; last byte", "key");
18495|  1.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15get_bon8_stringERSC_:
18546|  37.8k|    {
18547|   114k|        while (true)
  ------------------
  |  Branch (18547:16): [True: 114k, Folded]
  ------------------
18548|   114k|        {
18549|   114k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
18550|       |
18551|   114k|            const auto byte = get_bon8();
18552|       |
18553|   114k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18553:17): [True: 173, False: 114k]
  ------------------
18554|    173|            {
18555|    173|                return unexpect_eof("string");
18556|    173|            }
18557|       |
18558|       |            // end of string
18559|   114k|            if (byte == 0xFF)
  ------------------
  |  Branch (18559:17): [True: 1.47k, False: 112k]
  ------------------
18560|  1.47k|            {
18561|  1.47k|                return true;
18562|  1.47k|            }
18563|       |
18564|       |            // ASCII character
18565|   112k|            if (byte <= 0x7F)
  ------------------
  |  Branch (18565:17): [True: 71.8k, False: 40.9k]
  ------------------
18566|  71.8k|            {
18567|  71.8k|                result.push_back(static_cast<typename string_t::value_type>(byte));
18568|  71.8k|                continue;
18569|  71.8k|            }
18570|       |
18571|       |            // a byte that cannot begin a character ends the string and begins
18572|       |            // the next value
18573|  40.9k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (18573:17): [True: 18.1k, False: 22.8k]
  |  Branch (18573:32): [True: 15.5k, False: 7.24k]
  ------------------
18574|  33.7k|            {
18575|  33.7k|                unget_bon8(byte);
18576|  33.7k|                return true;
18577|  33.7k|            }
18578|       |
18579|       |            // a lead byte ends the string if no continuation byte follows: it
18580|       |            // is then the first byte of an integer
18581|  7.24k|            const auto second = get_bon8();
18582|  7.24k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18582:17): [True: 17, False: 7.22k]
  ------------------
18583|     17|            {
18584|       |                // the input ends inside a character or an integer: either
18585|       |                // way, the message is incomplete
18586|     17|                return unexpect_eof("string");
18587|     17|            }
18588|  7.22k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (18588:17): [True: 2.27k, False: 4.95k]
  ------------------
18589|  2.27k|            {
18590|  2.27k|                unget_bon8(second);
18591|  2.27k|                unget_bon8(byte);
18592|  2.27k|                return true;
18593|  2.27k|            }
18594|       |
18595|       |            // the valid range of the second byte excludes overlong forms,
18596|       |            // surrogates, and code points above U+10FFFF
18597|       |            // (RFC 3629, section 4)
18598|  4.95k|            int continuation_bytes = 0;
18599|  4.95k|            bool valid_second = true;
18600|  4.95k|            if (byte <= 0xDF)
  ------------------
  |  Branch (18600:17): [True: 2.55k, False: 2.40k]
  ------------------
18601|  2.55k|            {
18602|  2.55k|                continuation_bytes = 1;
18603|  2.55k|            }
18604|  2.40k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (18604:22): [True: 1.25k, False: 1.14k]
  ------------------
18605|  1.25k|            {
18606|  1.25k|                continuation_bytes = 2;
18607|  1.25k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (18607:33): [True: 689, False: 566]
  |  Branch (18607:49): [True: 553, False: 13]
  |  Branch (18607:69): [True: 717, False: 525]
  |  Branch (18607:85): [True: 519, False: 6]
  ------------------
18608|  1.25k|            }
18609|  1.14k|            else
18610|  1.14k|            {
18611|  1.14k|                continuation_bytes = 3;
18612|  1.14k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (18612:32): [True: 1.14k, False: 3]
  |  Branch (18612:49): [True: 880, False: 264]
  |  Branch (18612:65): [True: 251, False: 13]
  |  Branch (18612:85): [True: 637, False: 494]
  |  Branch (18612:101): [True: 489, False: 5]
  ------------------
18613|  1.14k|            }
18614|       |
18615|  4.95k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1667|  4.95k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 4.91k]
  |  |  ------------------
  ------------------
18616|     40|            {
18617|     40|                return unexpected_byte("invalid UTF-8 byte", "string");
18618|     40|            }
18619|       |
18620|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(byte));
18621|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(second));
18622|       |
18623|  8.24k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (18623:29): [True: 3.45k, False: 4.79k]
  ------------------
18624|  3.45k|            {
18625|  3.45k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.39k]
  |  |  ------------------
  ------------------
18626|     60|                {
18627|     60|                    return unexpect_eof("string");
18628|     60|                }
18629|  3.39k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1667|  3.39k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.33k]
  |  |  ------------------
  ------------------
18630|     60|                {
18631|     60|                    return unexpected_byte("invalid UTF-8 byte", "string");
18632|     60|                }
18633|  3.33k|                result.push_back(static_cast<typename string_t::value_type>(current));
18634|  3.33k|            }
18635|  4.91k|        }
18636|  37.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb0EEE:
18531|   114k|    void get_bon8_string_bulk(string_t& /*result*/, std::false_type /*bulk*/) const noexcept {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE20is_bon8_continuationEm:
18148|  17.3k|    {
18149|  17.3k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (18149:16): [True: 13.6k, False: 3.71k]
  |  Branch (18149:29): [True: 10.6k, False: 2.98k]
  ------------------
18150|  17.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16parse_bon8_valueEv:
18248|   175k|    {
18249|   175k|        const auto byte = get_bon8();
18250|       |
18251|   175k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18251:13): [True: 454, False: 174k]
  ------------------
18252|    454|        {
18253|    454|            return unexpect_eof("value");
18254|    454|        }
18255|       |
18256|       |        // string: ASCII character
18257|   174k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18257:13): [True: 16.7k, False: 158k]
  ------------------
18258|  16.7k|        {
18259|  16.7k|            string_t s;
18260|  16.7k|            unget_bon8(byte);
18261|  16.7k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18261:20): [True: 16.5k, False: 168]
  |  Branch (18261:42): [True: 16.5k, False: 0]
  ------------------
18262|  16.7k|        }
18263|       |
18264|       |        // array with 0..4 elements
18265|   158k|        if (byte <= 0x84)
  ------------------
  |  Branch (18265:13): [True: 80.9k, False: 77.2k]
  ------------------
18266|  80.9k|        {
18267|  80.9k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
18268|  80.9k|        }
18269|       |
18270|       |        // array terminated by 0xFE
18271|  77.2k|        if (byte == 0x85)
  ------------------
  |  Branch (18271:13): [True: 7.51k, False: 69.7k]
  ------------------
18272|  7.51k|        {
18273|  7.51k|            return enter_array(npos);
18274|  7.51k|        }
18275|       |
18276|       |        // object with 0..4 members
18277|  69.7k|        if (byte <= 0x8A)
  ------------------
  |  Branch (18277:13): [True: 9.09k, False: 60.6k]
  ------------------
18278|  9.09k|        {
18279|  9.09k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
18280|  9.09k|        }
18281|       |
18282|  60.6k|        switch (byte)
18283|  60.6k|        {
18284|  2.12k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (18284:13): [True: 2.12k, False: 58.5k]
  ------------------
18285|  2.12k|                return enter_object(npos);
18286|       |
18287|  1.04k|            case 0x8C: // int32
  ------------------
  |  Branch (18287:13): [True: 1.04k, False: 59.6k]
  ------------------
18288|  1.04k|            {
18289|  1.04k|                std::int32_t number{};
18290|  1.04k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18290:24): [True: 1.02k, False: 15]
  |  Branch (18290:46): [True: 1.02k, False: 0]
  ------------------
18291|      0|            }
18292|       |
18293|  1.38k|            case 0x8D: // int64
  ------------------
  |  Branch (18293:13): [True: 1.38k, False: 59.3k]
  ------------------
18294|  1.38k|            {
18295|  1.38k|                std::int64_t number{};
18296|  1.38k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18296:24): [True: 1.36k, False: 19]
  |  Branch (18296:46): [True: 1.36k, False: 0]
  ------------------
18297|      0|            }
18298|       |
18299|  1.55k|            case 0x8E: // binary32
  ------------------
  |  Branch (18299:13): [True: 1.55k, False: 59.1k]
  ------------------
18300|  1.55k|            {
18301|  1.55k|                float number{};
18302|  1.55k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18302:24): [True: 1.53k, False: 15]
  |  Branch (18302:46): [True: 1.53k, False: 0]
  ------------------
18303|      0|            }
18304|       |
18305|  1.13k|            case 0x8F: // binary64
  ------------------
  |  Branch (18305:13): [True: 1.13k, False: 59.5k]
  ------------------
18306|  1.13k|            {
18307|  1.13k|                double number{};
18308|  1.13k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18308:24): [True: 1.11k, False: 19]
  |  Branch (18308:46): [True: 1.11k, False: 0]
  ------------------
18309|      0|            }
18310|       |
18311|  11.2k|            case 0xF8:
  ------------------
  |  Branch (18311:13): [True: 11.2k, False: 49.4k]
  ------------------
18312|  11.2k|                return sax->boolean(false);
18313|       |
18314|  2.19k|            case 0xF9:
  ------------------
  |  Branch (18314:13): [True: 2.19k, False: 58.4k]
  ------------------
18315|  2.19k|                return sax->boolean(true);
18316|       |
18317|  4.32k|            case 0xFA:
  ------------------
  |  Branch (18317:13): [True: 4.32k, False: 56.3k]
  ------------------
18318|  4.32k|                return sax->null();
18319|       |
18320|  2.28k|            case 0xFB:
  ------------------
  |  Branch (18320:13): [True: 2.28k, False: 58.4k]
  ------------------
18321|  2.28k|                return sax->number_float(static_cast<number_float_t>(-1.0), "");
18322|       |
18323|  1.84k|            case 0xFC:
  ------------------
  |  Branch (18323:13): [True: 1.84k, False: 58.8k]
  ------------------
18324|  1.84k|                return sax->number_float(static_cast<number_float_t>(0.0), "");
18325|       |
18326|  3.44k|            case 0xFD:
  ------------------
  |  Branch (18326:13): [True: 3.44k, False: 57.2k]
  ------------------
18327|  3.44k|                return sax->number_float(static_cast<number_float_t>(1.0), "");
18328|       |
18329|  8.11k|            case 0xFF: // empty string
  ------------------
  |  Branch (18329:13): [True: 8.11k, False: 52.5k]
  ------------------
18330|  8.11k|            {
18331|  8.11k|                string_t s;
18332|  8.11k|                return sax->string(s);
18333|      0|            }
18334|       |
18335|  20.0k|            default:
  ------------------
  |  Branch (18335:13): [True: 20.0k, False: 40.6k]
  ------------------
18336|  20.0k|                break;
18337|  60.6k|        }
18338|       |
18339|       |        // integer 0..39
18340|  20.0k|        if (byte <= 0xB7)
  ------------------
  |  Branch (18340:13): [True: 8.06k, False: 11.9k]
  ------------------
18341|  8.06k|        {
18342|  8.06k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
18343|  8.06k|        }
18344|       |
18345|       |        // integer -1..-10
18346|  11.9k|        if (byte <= 0xC1)
  ------------------
  |  Branch (18346:13): [True: 6.13k, False: 5.84k]
  ------------------
18347|  6.13k|        {
18348|  6.13k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
18349|  6.13k|        }
18350|       |
18351|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
18352|       |        // byte follows and an integer otherwise
18353|  5.84k|        if (byte <= 0xF7)
  ------------------
  |  Branch (18353:13): [True: 5.79k, False: 51]
  ------------------
18354|  5.79k|        {
18355|  5.79k|            const auto second = get_bon8();
18356|  5.79k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18356:17): [True: 1.45k, False: 4.34k]
  ------------------
18357|  1.45k|            {
18358|  1.45k|                string_t s;
18359|  1.45k|                unget_bon8(second);
18360|  1.45k|                unget_bon8(byte);
18361|  1.45k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18361:24): [True: 1.32k, False: 128]
  |  Branch (18361:46): [True: 1.32k, False: 0]
  ------------------
18362|  1.45k|            }
18363|  4.34k|            return get_bon8_integer(byte, second);
18364|  5.79k|        }
18365|       |
18366|       |        // 0xFE: end of container where a value is expected
18367|     51|        return unexpected_byte("invalid byte", "value");
18368|  5.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17emit_bon8_integerEl:
18382|  6.69k|    {
18383|  6.69k|        if (number >= 0)
  ------------------
  |  Branch (18383:13): [True: 3.14k, False: 3.54k]
  ------------------
18384|  3.14k|        {
18385|  3.14k|            return emit_unsigned(static_cast<std::uint64_t>(number));
18386|  3.14k|        }
18387|  3.54k|        return emit_signed(number);
18388|  6.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16get_bon8_integerEmm:
18406|  4.34k|    {
18407|  4.34k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  4.34k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.34k]
  |  |  ------------------
  ------------------
18408|      0|        {
18409|      0|            return false;
18410|      0|        }
18411|       |
18412|  4.34k|        const bool negative = second >= 0xC0;
18413|  4.34k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (18413:48): [True: 2.17k, False: 2.17k]
  ------------------
18414|  4.34k|        std::int64_t offset = 0;
18415|  4.34k|        int extra_bytes = 0;
18416|       |
18417|  4.34k|        if (lead <= 0xDF)
  ------------------
  |  Branch (18417:13): [True: 2.31k, False: 2.02k]
  ------------------
18418|  2.31k|        {
18419|  2.31k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (18419:65): [True: 978, False: 1.33k]
  ------------------
18420|  2.31k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (18420:22): [True: 978, False: 1.33k]
  ------------------
18421|  2.31k|        }
18422|  2.02k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (18422:18): [True: 1.04k, False: 985]
  ------------------
18423|  1.04k|        {
18424|  1.04k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (18424:65): [True: 622, False: 422]
  ------------------
18425|  1.04k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (18425:22): [True: 622, False: 422]
  ------------------
18426|  1.04k|            extra_bytes = 1;
18427|  1.04k|        }
18428|    985|        else
18429|    985|        {
18430|    985|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (18430:65): [True: 572, False: 413]
  ------------------
18431|    985|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (18431:22): [True: 572, False: 413]
  ------------------
18432|    985|            extra_bytes = 2;
18433|    985|        }
18434|       |
18435|  7.29k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (18435:25): [True: 2.97k, False: 4.32k]
  ------------------
18436|  2.97k|        {
18437|  2.97k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.97k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 26, False: 2.94k]
  |  |  ------------------
  ------------------
18438|     26|            {
18439|     26|                return unexpect_eof("number");
18440|     26|            }
18441|  2.94k|            value = (value << 8) | static_cast<std::int64_t>(current);
18442|  2.94k|        }
18443|       |
18444|  4.32k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (18444:34): [True: 2.15k, False: 2.16k]
  ------------------
18445|  4.34k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE8get_bon8Ev:
18115|   425k|    {
18116|   425k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (18116:13): [True: 162k, False: 262k]
  ------------------
18117|   162k|        {
18118|   162k|            ++chars_read;
18119|   162k|            return current = bon8_pushback[--bon8_pushback_size];
18120|   162k|        }
18121|   262k|        return get();
18122|   425k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE3getEv:
18652|   262k|    {
18653|   262k|        ++chars_read;
18654|   262k|        return current = ia.get_character();
18655|   262k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
 8590|   262k|    {
 8591|   262k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   262k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 258k, False: 4.07k]
  |  |  ------------------
  ------------------
 8592|   258k|        {
 8593|   258k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   258k|            std::advance(current, 1);
 8595|   258k|            return result;
 8596|   258k|        }
 8597|       |
 8598|  4.07k|        ++eof_reads;
 8599|  4.07k|        return char_traits<char_type>::eof();
 8600|   262k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15last_byte_errorENS1_12exception_idERKSC_PKcST_:
19116|    319|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    319|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    319|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 226, False: 93]
  ------------------
19120|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEED2Ev:
14954|  4.46k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEED2Ev:
13881|  4.46k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__121__list_const_iteratorIhPvEES6_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES8_S9_:
 9007|  4.46k|{
 9008|  4.46k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  4.46k|    return factory_type::create(first, last);
 9010|  4.46k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
 8935|  4.46k|    {
 8936|  4.46k|        return adapter_type(std::move(first), std::move(last));
 8937|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
 8586|  4.46k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  4.46k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRP8_IO_FILEEESE_OT_bb:
36780|  4.46k|    {
36781|  4.46k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
36782|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail18file_input_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  4.46k|    {
36386|  4.46k|        basic_json result;
36387|  4.46k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  4.46k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  4.46k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 4.46k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  4.46k|        return result;
36394|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  4.46k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  4.46k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  4.46k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  4.46k|    {
14946|  4.46k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  4.46k|    {
14970|  4.46k|        sax = sax_;
14971|  4.46k|        container_stack.clear();
14972|  4.46k|        bon8_pushback_size = 0;
14973|  4.46k|        bool result = false;
14974|       |
14975|  4.46k|        switch (input_format)
14976|  4.46k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 4.46k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 4.46k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 4.46k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 4.46k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 4.46k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|  4.46k|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 4.46k, False: 0]
  ------------------
14995|  4.46k|                result = parse_bon8_internal();
14996|  4.46k|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 4.46k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 4.46k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  4.46k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.18k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.18k, False: 0]
  |  Branch (15004:23): [True: 3.18k, False: 0]
  ------------------
15005|  3.18k|        {
15006|  3.18k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.18k]
  |  Branch (15006:59): [True: 0, False: 3.18k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.18k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 3.18k, False: 0]
  ------------------
15011|  3.18k|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|  3.18k|                get_bon8();
15014|  3.18k|            }
15015|      0|            else
15016|      0|            {
15017|      0|                get();
15018|      0|            }
15019|       |
15020|  3.18k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 93, False: 3.09k]
  |  |  ------------------
  ------------------
15021|     93|            {
15022|     93|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     93|            }
15024|  3.18k|        }
15025|       |
15026|  3.09k|        return result;
15027|  3.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|  1.04k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.04k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.04k|        chars_read += new_chars_read;
18672|  1.04k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.02k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.02k|        return true;
18680|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIiEEmPT_m:
 8374|  1.04k|    {
 8375|  1.04k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.04k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  1.05k|    {
19059|  1.05k|        return sax->parse_error(chars_read, "<end of file>",
19060|  1.05k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.37k|    {
14005|  1.37k|        errored = true;
14006|  1.37k|        static_cast<void>(ex);
14007|  1.37k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.37k, False: 0]
  ------------------
14008|  1.37k|        {
14009|  1.37k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.37k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.37k|        }
14011|      0|        return false;
14012|  1.37k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  1.37k|    {
19164|  1.37k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.37k|        switch (input_format)
19167|  1.37k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.37k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.37k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.37k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 1.37k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.37k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|  1.37k|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 1.37k, False: 0]
  ------------------
19189|  1.37k|                error_msg += "BON8";
19190|  1.37k|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.37k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.37k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.37k|        }
19196|       |
19197|  1.37k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIiEEvRT_:
18698|  1.02k|    {
18699|  1.02k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.02k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.05k, False: 1.02k]
  ------------------
18715|  2.05k|            {
18716|  2.05k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.05k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|  99.6k|    {
15083|  99.6k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   199k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 11.2k, False: 88.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  99.6k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  99.6k|        return true;
15090|  99.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12start_objectEm:
13930|  11.2k|    {
13931|  11.2k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  11.2k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  99.6k|    {
14031|  99.6k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.77k, False: 96.8k]
  ------------------
14032|  2.77k|        {
14033|  2.77k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.77k|            return &root;
14040|  2.77k|        }
14041|       |
14042|  96.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  96.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.8k, False: 7.07k]
  |  Branch (14042:9): [True: 7.07k, False: 0]
  |  Branch (14042:9): [True: 96.8k, False: 0]
  ------------------
14043|       |
14044|  96.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.8k, False: 7.07k]
  ------------------
14045|  89.8k|        {
14046|  89.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.8k|        }
14054|       |
14055|  7.07k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 7.07k, False: 0]
  ------------------
14056|  7.07k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  7.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 7.07k, False: 0]
  ------------------
14057|  7.07k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  7.07k|        return object_element;
14064|  7.07k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
13724|  99.6k|{
13725|  99.6k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   189k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 99.6k]
  |  |  |  Branch (1667:94): [True: 90.0k, False: 9.63k]
  |  |  |  Branch (1667:94): [True: 0, False: 90.0k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  99.6k|    return true;
13730|  99.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11start_arrayEm:
13966|  88.4k|    {
13967|  88.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  88.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  88.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  88.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 80.9k, False: 7.51k]
  ------------------
13980|  80.9k|        {
13981|  80.9k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  80.9k|        }
13983|       |
13984|  88.4k|        return true;
13985|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|  99.6k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  85.3k|    {
15115|  85.3k|        const bool is_object = container_stack.back().is_object;
15116|  85.3k|        container_stack.pop_back();
15117|  85.3k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.84k, False: 76.4k]
  ------------------
15118|  85.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE10end_objectEv:
13952|  8.84k|    {
13953|  8.84k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.84k, False: 0]
  ------------------
13954|  8.84k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.84k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.84k|        ref_stack.back()->set_parents();
13961|  8.84k|        ref_stack.pop_back();
13962|  8.84k|        return true;
13963|  8.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE9end_arrayEv:
13988|  76.4k|    {
13989|  76.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 76.4k, False: 0]
  ------------------
13990|  76.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  76.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 76.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  76.4k|        ref_stack.back()->set_parents();
13997|  76.4k|        ref_stack.pop_back();
13998|  76.4k|        return true;
13999|  76.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  5.31k|    {
19042|  5.31k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  5.31k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 986, False: 4.32k]
  |  |  ------------------
  ------------------
19043|    986|        {
19044|    986|            return report_eof(context);
19045|    986|        }
19046|  4.32k|        return true;
19047|  5.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE3keyERSC_:
13942|  23.2k|    {
13943|  23.2k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 23.2k, False: 0]
  ------------------
13944|  23.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 23.2k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  23.2k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  23.2k|        return true;
13949|  23.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.13k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.13k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.13k|        chars_read += new_chars_read;
18672|  1.13k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.11k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.11k|        return true;
18680|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 8374|  1.13k|    {
 8375|  1.13k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|  1.11k|    {
18699|  1.11k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.11k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.57k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.45k, False: 1.11k]
  ------------------
18715|  4.45k|            {
18716|  4.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.11k|    {
18826|  1.11k|        const auto result = static_cast<number_float_t>(number);
18827|  1.11k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.11k]
  |  |  |  Branch (1667:94): [True: 1.09k, False: 17]
  |  |  |  Branch (1667:94): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.11k|        return sax->number_float(result, "");
18832|  1.11k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    638|    {
19153|    638|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    638|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12number_floatEdRKSC_:
13908|  10.2k|    {
13909|  10.2k|        handle_value(val);
13910|  10.2k|        return true;
13911|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  10.2k|    {
14031|  10.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 457, False: 9.76k]
  ------------------
14032|    457|        {
14033|    457|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    457|            return &root;
14040|    457|        }
14041|       |
14042|  9.76k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.76k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.82k, False: 2.93k]
  |  Branch (14042:9): [True: 2.93k, False: 0]
  |  Branch (14042:9): [True: 9.76k, False: 0]
  ------------------
14043|       |
14044|  9.76k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.82k, False: 2.93k]
  ------------------
14045|  6.82k|        {
14046|  6.82k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.82k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.82k|        }
14054|       |
14055|  2.93k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.93k, False: 0]
  ------------------
14056|  2.93k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.93k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.93k, False: 0]
  ------------------
14057|  2.93k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.93k|        return object_element;
14064|  2.93k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6stringERSC_:
13914|  26.0k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  26.0k|        handle_value(std::move(val));
13918|  26.0k|        return true;
13919|  26.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  26.0k|    {
14031|  26.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 224, False: 25.7k]
  ------------------
14032|    224|        {
14033|    224|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    224|            return &root;
14040|    224|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 22.3k, False: 3.38k]
  |  Branch (14042:9): [True: 3.38k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 22.3k, False: 3.38k]
  ------------------
14045|  22.3k|        {
14046|  22.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  22.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  22.3k|        }
14054|       |
14055|  3.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.38k, False: 0]
  ------------------
14056|  3.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.38k, False: 0]
  ------------------
14057|  3.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.38k|        return object_element;
14064|  3.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE7booleanEb:
13890|  13.3k|    {
13891|  13.3k|        handle_value(val);
13892|  13.3k|        return true;
13893|  13.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  13.3k|    {
14031|  13.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3, False: 13.3k]
  ------------------
14032|      3|        {
14033|      3|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      3|            return &root;
14040|      3|        }
14041|       |
14042|  13.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.5k, False: 818]
  |  Branch (14042:9): [True: 818, False: 0]
  |  Branch (14042:9): [True: 13.3k, False: 0]
  ------------------
14043|       |
14044|  13.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.5k, False: 818]
  ------------------
14045|  12.5k|        {
14046|  12.5k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.5k|        }
14054|       |
14055|    818|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 818, False: 0]
  ------------------
14056|    818|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    818|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 818, False: 0]
  ------------------
14057|    818|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    818|        return object_element;
14064|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE4nullEv:
13884|  4.32k|    {
13885|  4.32k|        handle_value(nullptr);
13886|  4.32k|        return true;
13887|  4.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  4.32k|    {
14031|  4.32k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 4.32k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  4.32k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.32k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.45k, False: 1.87k]
  |  Branch (14042:9): [True: 1.87k, False: 0]
  |  Branch (14042:9): [True: 4.32k, False: 0]
  ------------------
14043|       |
14044|  4.32k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.45k, False: 1.87k]
  ------------------
14045|  2.45k|        {
14046|  2.45k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.45k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.45k|        }
14054|       |
14055|  1.87k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.87k, False: 0]
  ------------------
14056|  1.87k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.87k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.87k, False: 0]
  ------------------
14057|  1.87k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.87k|        return object_element;
14064|  1.87k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE14number_integerEl:
13896|  9.68k|    {
13897|  9.68k|        handle_value(val);
13898|  9.68k|        return true;
13899|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  9.68k|    {
14031|  9.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 377, False: 9.30k]
  ------------------
14032|    377|        {
14033|    377|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    377|            return &root;
14040|    377|        }
14041|       |
14042|  9.30k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.30k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.33k, False: 2.97k]
  |  Branch (14042:9): [True: 2.97k, False: 0]
  |  Branch (14042:9): [True: 9.30k, False: 0]
  ------------------
14043|       |
14044|  9.30k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.33k, False: 2.97k]
  ------------------
14045|  6.33k|        {
14046|  6.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.33k|        }
14054|       |
14055|  2.97k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.97k, False: 0]
  ------------------
14056|  2.97k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.97k, False: 0]
  ------------------
14057|  2.97k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.97k|        return object_element;
14064|  2.97k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE15number_unsignedEm:
13902|  11.2k|    {
13903|  11.2k|        handle_value(val);
13904|  11.2k|        return true;
13905|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  11.2k|    {
14031|  11.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 314, False: 10.8k]
  ------------------
14032|    314|        {
14033|    314|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    314|            return &root;
14040|    314|        }
14041|       |
14042|  10.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  10.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.79k, False: 4.10k]
  |  Branch (14042:9): [True: 4.10k, False: 0]
  |  Branch (14042:9): [True: 10.8k, False: 0]
  ------------------
14043|       |
14044|  10.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.79k, False: 4.10k]
  ------------------
14045|  6.79k|        {
14046|  6.79k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.79k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.79k|        }
14054|       |
14055|  4.10k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 4.10k, False: 0]
  ------------------
14056|  4.10k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 4.10k, False: 0]
  ------------------
14057|  4.10k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  4.10k|        return object_element;
14064|  4.10k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|  1.38k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.38k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.38k|        chars_read += new_chars_read;
18672|  1.38k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.36k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.36k|        return true;
18680|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIlEEmPT_m:
 8374|  1.38k|    {
 8375|  1.38k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIlEEvRT_:
18698|  1.36k|    {
18699|  1.36k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.36k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  6.81k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 5.45k, False: 1.36k]
  ------------------
18715|  5.45k|            {
18716|  5.45k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  5.45k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.36k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|  3.54k|    {
18772|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
18773|  3.54k|        {
18774|  3.54k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  3.54k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|  3.14k|    {
18800|  3.14k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  3.14k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.14k, False: 0]
  |  |  ------------------
  ------------------
18801|  3.14k|        {
18802|  3.14k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  3.14k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  3.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  88.4k|    {
15095|  88.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  88.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  11.2k|    {
15101|  11.2k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  11.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|    226|    {
19131|    226|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    226|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|  1.55k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.55k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.55k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.55k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.53k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.53k]
  |  Branch (18746:57): [True: 0, False: 1.53k]
  ------------------
18747|  1.53k|        {
18748|  1.53k|            byte_swap(result);
18749|  1.53k|        }
18750|  1.55k|        return true;
18751|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|  1.55k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.55k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.55k|        chars_read += new_chars_read;
18672|  1.55k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 1.53k]
  |  |  ------------------
  ------------------
18673|     15|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     15|            ++chars_read;
18676|     15|            static_cast<void>(report_eof(context));
18677|     15|            return false;
18678|     15|        }
18679|  1.53k|        return true;
18680|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIfEEmPT_m:
 8374|  1.55k|    {
 8375|  1.55k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|  1.53k|    {
18699|  1.53k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.53k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.60k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.07k, False: 1.53k]
  ------------------
18715|  3.07k|            {
18716|  3.07k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.07k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|  1.53k|    {
18826|  1.53k|        const auto result = static_cast<number_float_t>(number);
18827|  1.53k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.53k]
  |  |  |  Branch (1667:94): [True: 1.20k, False: 328]
  |  |  |  Branch (1667:94): [True: 0, False: 1.20k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.53k|        return sax->number_float(result, "");
18832|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|  1.13k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.13k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.13k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.13k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.13k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.11k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.11k]
  |  Branch (18746:57): [True: 0, False: 1.11k]
  ------------------
18747|  1.11k|        {
18748|  1.11k|            byte_swap(result);
18749|  1.11k|        }
18750|  1.13k|        return true;
18751|  1.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
18739|  1.04k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.04k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.04k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.04k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.02k, False: 15]
  |  Branch (18746:34): [Folded, False: 1.02k]
  |  Branch (18746:57): [True: 0, False: 1.02k]
  ------------------
18747|  1.02k|        {
18748|  1.02k|            byte_swap(result);
18749|  1.02k|        }
18750|  1.04k|        return true;
18751|  1.04k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
18739|  1.38k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.38k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.38k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.38k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.36k, False: 19]
  |  Branch (18746:34): [Folded, False: 1.36k]
  |  Branch (18746:57): [True: 0, False: 1.36k]
  ------------------
18747|  1.36k|        {
18748|  1.36k|            byte_swap(result);
18749|  1.36k|        }
18750|  1.38k|        return true;
18751|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_bon8_internalEv:
18162|  4.46k|    {
18163|       |        // the key currently being read; hoisted out of the loop so that its
18164|       |        // capacity is reused across elements and across nesting levels
18165|  4.46k|        string_t key;
18166|       |
18167|   262k|        while (true)
  ------------------
  |  Branch (18167:16): [True: 261k, Folded]
  ------------------
18168|   261k|        {
18169|   261k|            if (!container_stack.empty())
  ------------------
  |  Branch (18169:17): [True: 256k, False: 4.46k]
  ------------------
18170|   256k|            {
18171|       |                // a copy, not a reference: it must stay valid across the
18172|       |                // pop_back() below, which destroys the container_stack element
18173|       |                // it would otherwise alias
18174|   256k|                const container_frame top = container_stack.back();
18175|   256k|                bool at_end = false;
18176|       |
18177|   256k|                if (top.remaining != npos)
  ------------------
  |  Branch (18177:21): [True: 168k, False: 88.0k]
  ------------------
18178|   168k|                {
18179|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
18180|       |                    // its elements have been read
18181|   168k|                    at_end = (top.remaining == 0);
18182|   168k|                    if (!at_end)
  ------------------
  |  Branch (18182:25): [True: 87.3k, False: 81.1k]
  ------------------
18183|  87.3k|                    {
18184|       |                        // claim the element about to be read
18185|  87.3k|                        --container_stack.back().remaining;
18186|  87.3k|                    }
18187|   168k|                }
18188|  88.0k|                else
18189|  88.0k|                {
18190|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
18191|       |                    // marker (0xFE); any other byte begins the next element
18192|  88.0k|                    at_end = (get_bon8() == 0xFE);
18193|  88.0k|                    if (!at_end)
  ------------------
  |  Branch (18193:25): [True: 83.9k, False: 4.11k]
  ------------------
18194|  83.9k|                    {
18195|  83.9k|                        unget_bon8(current);
18196|  83.9k|                    }
18197|  88.0k|                }
18198|       |
18199|   256k|                if (at_end)
  ------------------
  |  Branch (18199:21): [True: 85.3k, False: 171k]
  ------------------
18200|  85.3k|                {
18201|  85.3k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  85.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 85.3k]
  |  |  ------------------
  ------------------
18202|      0|                    {
18203|      0|                        return false;
18204|      0|                    }
18205|       |                    // the value begun here is complete once its container is
18206|  85.3k|                    if (container_stack.empty())
  ------------------
  |  Branch (18206:25): [True: 1.80k, False: 83.4k]
  ------------------
18207|  1.80k|                    {
18208|  1.80k|                        return true;
18209|  1.80k|                    }
18210|  83.4k|                    continue;
18211|  85.3k|                }
18212|       |
18213|   171k|                if (top.is_object)
  ------------------
  |  Branch (18213:21): [True: 23.6k, False: 147k]
  ------------------
18214|  23.6k|                {
18215|  23.6k|                    key.clear();
18216|  23.6k|                    if (JSON_HEDLEY_UNLIKELY(!get_bon8_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  46.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 23.6k]
  |  |  |  Branch (1667:94): [True: 367, False: 23.2k]
  |  |  |  Branch (1667:94): [True: 0, False: 23.2k]
  |  |  ------------------
  ------------------
18217|      0|                    {
18218|      0|                        return false;
18219|      0|                    }
18220|  23.6k|                }
18221|   171k|            }
18222|       |
18223|   175k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1667|   175k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 175k]
  |  |  ------------------
  ------------------
18224|      0|            {
18225|      0|                return false;
18226|      0|            }
18227|       |
18228|       |            // a value that opened a container left it on the stack; one that
18229|       |            // did not, and that was not inside a container, was the whole value
18230|   175k|            if (container_stack.empty())
  ------------------
  |  Branch (18230:17): [True: 1.37k, False: 174k]
  ------------------
18231|  1.37k|            {
18232|  1.37k|                return true;
18233|  1.37k|            }
18234|   175k|        }
18235|  4.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10unget_bon8Ei:
18131|   162k|    {
18132|       |        // At most two bytes are ever handed back: a byte is only handed back
18133|       |        // right after it was read with get_bon8(), and the only place that
18134|       |        // hands back two bytes (a lead byte and the byte after it) read both
18135|       |        // of them in a row, which emptied the buffer first. This is an
18136|       |        // invariant of the reader rather than a property of the input, so
18137|       |        // an assertion suffices (the fuzzers are built with assertions).
18138|   162k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2591|   162k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18138:9): [True: 162k, False: 0]
  ------------------
18139|   162k|        bon8_pushback[bon8_pushback_size++] = c;
18140|   162k|        --chars_read;
18141|   162k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12get_bon8_keyERSC_:
18457|  23.6k|    {
18458|  23.6k|        const auto byte = get_bon8();
18459|       |
18460|  23.6k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18460:13): [True: 230, False: 23.4k]
  ------------------
18461|    230|        {
18462|    230|            return unexpect_eof("key");
18463|    230|        }
18464|       |
18465|  23.4k|        if (byte == 0xFF)
  ------------------
  |  Branch (18465:13): [True: 3.69k, False: 19.7k]
  ------------------
18466|  3.69k|        {
18467|  3.69k|            return true;
18468|  3.69k|        }
18469|       |
18470|  19.7k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18470:13): [True: 18.7k, False: 1.01k]
  ------------------
18471|  18.7k|        {
18472|  18.7k|            unget_bon8(byte);
18473|  18.7k|            return get_bon8_string(result);
18474|  18.7k|        }
18475|       |
18476|  1.01k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (18476:13): [True: 973, False: 40]
  |  Branch (18476:29): [True: 956, False: 17]
  ------------------
18477|    956|        {
18478|    956|            const auto second = get_bon8();
18479|    956|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18479:17): [True: 8, False: 948]
  ------------------
18480|      8|            {
18481|       |                // the input ends inside a character or an integer
18482|      8|                return unexpect_eof("key");
18483|      8|            }
18484|    948|            unget_bon8(second);
18485|    948|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18485:17): [True: 930, False: 18]
  ------------------
18486|    930|            {
18487|    930|                unget_bon8(byte);
18488|    930|                return get_bon8_string(result);
18489|    930|            }
18490|       |            // an integer: report its first byte rather than the one after it
18491|     18|            current = byte;
18492|     18|        }
18493|       |
18494|     75|        return unexpected_byte("expected a string; last byte", "key");
18495|  1.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bon8_stringERSC_:
18546|  37.8k|    {
18547|   114k|        while (true)
  ------------------
  |  Branch (18547:16): [True: 114k, Folded]
  ------------------
18548|   114k|        {
18549|   114k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
18550|       |
18551|   114k|            const auto byte = get_bon8();
18552|       |
18553|   114k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18553:17): [True: 173, False: 114k]
  ------------------
18554|    173|            {
18555|    173|                return unexpect_eof("string");
18556|    173|            }
18557|       |
18558|       |            // end of string
18559|   114k|            if (byte == 0xFF)
  ------------------
  |  Branch (18559:17): [True: 1.47k, False: 112k]
  ------------------
18560|  1.47k|            {
18561|  1.47k|                return true;
18562|  1.47k|            }
18563|       |
18564|       |            // ASCII character
18565|   112k|            if (byte <= 0x7F)
  ------------------
  |  Branch (18565:17): [True: 71.8k, False: 40.9k]
  ------------------
18566|  71.8k|            {
18567|  71.8k|                result.push_back(static_cast<typename string_t::value_type>(byte));
18568|  71.8k|                continue;
18569|  71.8k|            }
18570|       |
18571|       |            // a byte that cannot begin a character ends the string and begins
18572|       |            // the next value
18573|  40.9k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (18573:17): [True: 18.1k, False: 22.8k]
  |  Branch (18573:32): [True: 15.5k, False: 7.24k]
  ------------------
18574|  33.7k|            {
18575|  33.7k|                unget_bon8(byte);
18576|  33.7k|                return true;
18577|  33.7k|            }
18578|       |
18579|       |            // a lead byte ends the string if no continuation byte follows: it
18580|       |            // is then the first byte of an integer
18581|  7.24k|            const auto second = get_bon8();
18582|  7.24k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (18582:17): [True: 17, False: 7.22k]
  ------------------
18583|     17|            {
18584|       |                // the input ends inside a character or an integer: either
18585|       |                // way, the message is incomplete
18586|     17|                return unexpect_eof("string");
18587|     17|            }
18588|  7.22k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (18588:17): [True: 2.27k, False: 4.95k]
  ------------------
18589|  2.27k|            {
18590|  2.27k|                unget_bon8(second);
18591|  2.27k|                unget_bon8(byte);
18592|  2.27k|                return true;
18593|  2.27k|            }
18594|       |
18595|       |            // the valid range of the second byte excludes overlong forms,
18596|       |            // surrogates, and code points above U+10FFFF
18597|       |            // (RFC 3629, section 4)
18598|  4.95k|            int continuation_bytes = 0;
18599|  4.95k|            bool valid_second = true;
18600|  4.95k|            if (byte <= 0xDF)
  ------------------
  |  Branch (18600:17): [True: 2.55k, False: 2.40k]
  ------------------
18601|  2.55k|            {
18602|  2.55k|                continuation_bytes = 1;
18603|  2.55k|            }
18604|  2.40k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (18604:22): [True: 1.25k, False: 1.14k]
  ------------------
18605|  1.25k|            {
18606|  1.25k|                continuation_bytes = 2;
18607|  1.25k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (18607:33): [True: 689, False: 566]
  |  Branch (18607:49): [True: 553, False: 13]
  |  Branch (18607:69): [True: 717, False: 525]
  |  Branch (18607:85): [True: 519, False: 6]
  ------------------
18608|  1.25k|            }
18609|  1.14k|            else
18610|  1.14k|            {
18611|  1.14k|                continuation_bytes = 3;
18612|  1.14k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (18612:32): [True: 1.14k, False: 3]
  |  Branch (18612:49): [True: 880, False: 264]
  |  Branch (18612:65): [True: 251, False: 13]
  |  Branch (18612:85): [True: 637, False: 494]
  |  Branch (18612:101): [True: 489, False: 5]
  ------------------
18613|  1.14k|            }
18614|       |
18615|  4.95k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1667|  4.95k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 4.91k]
  |  |  ------------------
  ------------------
18616|     40|            {
18617|     40|                return unexpected_byte("invalid UTF-8 byte", "string");
18618|     40|            }
18619|       |
18620|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(byte));
18621|  4.91k|            result.push_back(static_cast<typename string_t::value_type>(second));
18622|       |
18623|  8.24k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (18623:29): [True: 3.45k, False: 4.79k]
  ------------------
18624|  3.45k|            {
18625|  3.45k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.39k]
  |  |  ------------------
  ------------------
18626|     60|                {
18627|     60|                    return unexpect_eof("string");
18628|     60|                }
18629|  3.39k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1667|  3.39k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 3.33k]
  |  |  ------------------
  ------------------
18630|     60|                {
18631|     60|                    return unexpected_byte("invalid UTF-8 byte", "string");
18632|     60|                }
18633|  3.33k|                result.push_back(static_cast<typename string_t::value_type>(current));
18634|  3.33k|            }
18635|  4.91k|        }
18636|  37.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb0EEE:
18531|   114k|    void get_bon8_string_bulk(string_t& /*result*/, std::false_type /*bulk*/) const noexcept {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE20is_bon8_continuationEi:
18148|  17.3k|    {
18149|  17.3k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (18149:16): [True: 13.6k, False: 3.73k]
  |  Branch (18149:29): [True: 10.6k, False: 2.96k]
  ------------------
18150|  17.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16parse_bon8_valueEv:
18248|   175k|    {
18249|   175k|        const auto byte = get_bon8();
18250|       |
18251|   175k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (18251:13): [True: 454, False: 174k]
  ------------------
18252|    454|        {
18253|    454|            return unexpect_eof("value");
18254|    454|        }
18255|       |
18256|       |        // string: ASCII character
18257|   174k|        if (byte <= 0x7F)
  ------------------
  |  Branch (18257:13): [True: 16.7k, False: 158k]
  ------------------
18258|  16.7k|        {
18259|  16.7k|            string_t s;
18260|  16.7k|            unget_bon8(byte);
18261|  16.7k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18261:20): [True: 16.5k, False: 168]
  |  Branch (18261:42): [True: 16.5k, False: 0]
  ------------------
18262|  16.7k|        }
18263|       |
18264|       |        // array with 0..4 elements
18265|   158k|        if (byte <= 0x84)
  ------------------
  |  Branch (18265:13): [True: 80.9k, False: 77.2k]
  ------------------
18266|  80.9k|        {
18267|  80.9k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
18268|  80.9k|        }
18269|       |
18270|       |        // array terminated by 0xFE
18271|  77.2k|        if (byte == 0x85)
  ------------------
  |  Branch (18271:13): [True: 7.51k, False: 69.7k]
  ------------------
18272|  7.51k|        {
18273|  7.51k|            return enter_array(npos);
18274|  7.51k|        }
18275|       |
18276|       |        // object with 0..4 members
18277|  69.7k|        if (byte <= 0x8A)
  ------------------
  |  Branch (18277:13): [True: 9.09k, False: 60.6k]
  ------------------
18278|  9.09k|        {
18279|  9.09k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
18280|  9.09k|        }
18281|       |
18282|  60.6k|        switch (byte)
18283|  60.6k|        {
18284|  2.12k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (18284:13): [True: 2.12k, False: 58.5k]
  ------------------
18285|  2.12k|                return enter_object(npos);
18286|       |
18287|  1.04k|            case 0x8C: // int32
  ------------------
  |  Branch (18287:13): [True: 1.04k, False: 59.6k]
  ------------------
18288|  1.04k|            {
18289|  1.04k|                std::int32_t number{};
18290|  1.04k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18290:24): [True: 1.02k, False: 15]
  |  Branch (18290:46): [True: 1.02k, False: 0]
  ------------------
18291|      0|            }
18292|       |
18293|  1.38k|            case 0x8D: // int64
  ------------------
  |  Branch (18293:13): [True: 1.38k, False: 59.3k]
  ------------------
18294|  1.38k|            {
18295|  1.38k|                std::int64_t number{};
18296|  1.38k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (18296:24): [True: 1.36k, False: 19]
  |  Branch (18296:46): [True: 1.36k, False: 0]
  ------------------
18297|      0|            }
18298|       |
18299|  1.55k|            case 0x8E: // binary32
  ------------------
  |  Branch (18299:13): [True: 1.55k, False: 59.1k]
  ------------------
18300|  1.55k|            {
18301|  1.55k|                float number{};
18302|  1.55k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18302:24): [True: 1.53k, False: 15]
  |  Branch (18302:46): [True: 1.53k, False: 0]
  ------------------
18303|      0|            }
18304|       |
18305|  1.13k|            case 0x8F: // binary64
  ------------------
  |  Branch (18305:13): [True: 1.13k, False: 59.5k]
  ------------------
18306|  1.13k|            {
18307|  1.13k|                double number{};
18308|  1.13k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (18308:24): [True: 1.11k, False: 19]
  |  Branch (18308:46): [True: 1.11k, False: 0]
  ------------------
18309|      0|            }
18310|       |
18311|  11.2k|            case 0xF8:
  ------------------
  |  Branch (18311:13): [True: 11.2k, False: 49.4k]
  ------------------
18312|  11.2k|                return sax->boolean(false);
18313|       |
18314|  2.19k|            case 0xF9:
  ------------------
  |  Branch (18314:13): [True: 2.19k, False: 58.4k]
  ------------------
18315|  2.19k|                return sax->boolean(true);
18316|       |
18317|  4.32k|            case 0xFA:
  ------------------
  |  Branch (18317:13): [True: 4.32k, False: 56.3k]
  ------------------
18318|  4.32k|                return sax->null();
18319|       |
18320|  2.28k|            case 0xFB:
  ------------------
  |  Branch (18320:13): [True: 2.28k, False: 58.4k]
  ------------------
18321|  2.28k|                return sax->number_float(static_cast<number_float_t>(-1.0), "");
18322|       |
18323|  1.84k|            case 0xFC:
  ------------------
  |  Branch (18323:13): [True: 1.84k, False: 58.8k]
  ------------------
18324|  1.84k|                return sax->number_float(static_cast<number_float_t>(0.0), "");
18325|       |
18326|  3.44k|            case 0xFD:
  ------------------
  |  Branch (18326:13): [True: 3.44k, False: 57.2k]
  ------------------
18327|  3.44k|                return sax->number_float(static_cast<number_float_t>(1.0), "");
18328|       |
18329|  8.11k|            case 0xFF: // empty string
  ------------------
  |  Branch (18329:13): [True: 8.11k, False: 52.5k]
  ------------------
18330|  8.11k|            {
18331|  8.11k|                string_t s;
18332|  8.11k|                return sax->string(s);
18333|      0|            }
18334|       |
18335|  20.0k|            default:
  ------------------
  |  Branch (18335:13): [True: 20.0k, False: 40.6k]
  ------------------
18336|  20.0k|                break;
18337|  60.6k|        }
18338|       |
18339|       |        // integer 0..39
18340|  20.0k|        if (byte <= 0xB7)
  ------------------
  |  Branch (18340:13): [True: 8.06k, False: 11.9k]
  ------------------
18341|  8.06k|        {
18342|  8.06k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
18343|  8.06k|        }
18344|       |
18345|       |        // integer -1..-10
18346|  11.9k|        if (byte <= 0xC1)
  ------------------
  |  Branch (18346:13): [True: 6.13k, False: 5.84k]
  ------------------
18347|  6.13k|        {
18348|  6.13k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
18349|  6.13k|        }
18350|       |
18351|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
18352|       |        // byte follows and an integer otherwise
18353|  5.84k|        if (byte <= 0xF7)
  ------------------
  |  Branch (18353:13): [True: 5.79k, False: 51]
  ------------------
18354|  5.79k|        {
18355|  5.79k|            const auto second = get_bon8();
18356|  5.79k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (18356:17): [True: 1.45k, False: 4.34k]
  ------------------
18357|  1.45k|            {
18358|  1.45k|                string_t s;
18359|  1.45k|                unget_bon8(second);
18360|  1.45k|                unget_bon8(byte);
18361|  1.45k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (18361:24): [True: 1.32k, False: 128]
  |  Branch (18361:46): [True: 1.32k, False: 0]
  ------------------
18362|  1.45k|            }
18363|  4.34k|            return get_bon8_integer(byte, second);
18364|  5.79k|        }
18365|       |
18366|       |        // 0xFE: end of container where a value is expected
18367|     51|        return unexpected_byte("invalid byte", "value");
18368|  5.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17emit_bon8_integerEl:
18382|  6.69k|    {
18383|  6.69k|        if (number >= 0)
  ------------------
  |  Branch (18383:13): [True: 3.14k, False: 3.54k]
  ------------------
18384|  3.14k|        {
18385|  3.14k|            return emit_unsigned(static_cast<std::uint64_t>(number));
18386|  3.14k|        }
18387|  3.54k|        return emit_signed(number);
18388|  6.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_bon8_integerEii:
18406|  4.34k|    {
18407|  4.34k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  4.34k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.34k]
  |  |  ------------------
  ------------------
18408|      0|        {
18409|      0|            return false;
18410|      0|        }
18411|       |
18412|  4.34k|        const bool negative = second >= 0xC0;
18413|  4.34k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (18413:48): [True: 2.17k, False: 2.17k]
  ------------------
18414|  4.34k|        std::int64_t offset = 0;
18415|  4.34k|        int extra_bytes = 0;
18416|       |
18417|  4.34k|        if (lead <= 0xDF)
  ------------------
  |  Branch (18417:13): [True: 2.31k, False: 2.02k]
  ------------------
18418|  2.31k|        {
18419|  2.31k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (18419:65): [True: 978, False: 1.33k]
  ------------------
18420|  2.31k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (18420:22): [True: 978, False: 1.33k]
  ------------------
18421|  2.31k|        }
18422|  2.02k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (18422:18): [True: 1.04k, False: 985]
  ------------------
18423|  1.04k|        {
18424|  1.04k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (18424:65): [True: 622, False: 422]
  ------------------
18425|  1.04k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (18425:22): [True: 622, False: 422]
  ------------------
18426|  1.04k|            extra_bytes = 1;
18427|  1.04k|        }
18428|    985|        else
18429|    985|        {
18430|    985|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (18430:65): [True: 572, False: 413]
  ------------------
18431|    985|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (18431:22): [True: 572, False: 413]
  ------------------
18432|    985|            extra_bytes = 2;
18433|    985|        }
18434|       |
18435|  7.29k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (18435:25): [True: 2.97k, False: 4.32k]
  ------------------
18436|  2.97k|        {
18437|  2.97k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.97k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 26, False: 2.94k]
  |  |  ------------------
  ------------------
18438|     26|            {
18439|     26|                return unexpect_eof("number");
18440|     26|            }
18441|  2.94k|            value = (value << 8) | static_cast<std::int64_t>(current);
18442|  2.94k|        }
18443|       |
18444|  4.32k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (18444:34): [True: 2.15k, False: 2.16k]
  ------------------
18445|  4.34k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE8get_bon8Ev:
18115|   425k|    {
18116|   425k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (18116:13): [True: 162k, False: 262k]
  ------------------
18117|   162k|        {
18118|   162k|            ++chars_read;
18119|   162k|            return current = bon8_pushback[--bon8_pushback_size];
18120|   162k|        }
18121|   262k|        return get();
18122|   425k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   262k|    {
18653|   262k|        ++chars_read;
18654|   262k|        return current = ia.get_character();
18655|   262k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 8367|   262k|    {
 8368|   262k|        return std::fgetc(m_file);
 8369|   262k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    319|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    319|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    319|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 226, False: 93]
  ------------------
19120|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  4.46k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEED2Ev:
13881|  4.46k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
 9114|  4.46k|{
 9115|  4.46k|    if (file == nullptr)
  ------------------
  |  Branch (9115:9): [True: 0, False: 4.46k]
  ------------------
 9116|      0|    {
 9117|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9118|      0|    }
 9119|  4.46k|    return file_input_adapter(file);
 9120|  4.46k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 8354|  4.46k|        : m_file(f)
 8355|  4.46k|    {
 8356|       |        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2591|  4.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8356:9): [True: 4.46k, False: 0]
  ------------------
 8357|  4.46k|    }

LLVMFuzzerTestOneInput:
   46|  4.46k|{
   47|  4.46k|    std::vector<uint8_t> const vec1(data, data + size);
   48|       |
   49|       |    // step 0: parse input without exceptions
   50|  4.46k|    bool noexcept_threw = false;
   51|  4.46k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bon8(vec1, true, false); }, noexcept_threw);
   52|       |    // whether step 1 succeeded; if not, the catch blocks below check that
   53|       |    // step 0 failed, too
   54|  4.46k|    bool parsed = false;
   55|       |
   56|  4.46k|    try
   57|  4.46k|    {
   58|       |        // step 1: parse input
   59|  4.46k|        json const j1 = json::from_bon8(vec1);
   60|  4.46k|        parsed = true;
   61|       |
   62|       |        // without exceptions, the same input must give the same value
   63|  4.46k|        assert(!noexcept_threw && !j_noexcept.is_discarded() && same_value(j_noexcept, j1));
  ------------------
  |  Branch (63:9): [True: 3.09k, False: 1.37k]
  |  Branch (63:9): [True: 3.09k, False: 0]
  |  Branch (63:9): [True: 3.09k, False: 0]
  |  Branch (63:9): [True: 3.09k, False: 1.37k]
  ------------------
   64|       |
   65|  3.09k|        try
   66|  3.09k|        {
   67|       |            // step 2: round trip
   68|  3.09k|            std::vector<uint8_t> const vec2 = json::to_bon8(j1);
   69|       |
   70|       |            // parse serialization
   71|  3.09k|            json const j2 = json::from_bon8(vec2);
   72|       |
   73|       |            // serializations must match
   74|  3.09k|            assert(json::to_bon8(j2) == vec2);
  ------------------
  |  Branch (74:13): [True: 3.09k, False: 0]
  ------------------
   75|  3.09k|        }
   76|  3.09k|        catch (const json::parse_error&)
   77|  3.09k|        {
   78|       |            // parsing a BON8 serialization must not fail
   79|      0|            assert(false);
  ------------------
  |  Branch (79:13): [Folded, False: 0]
  ------------------
   80|      0|        }
   81|  3.09k|    }
   82|  4.46k|    catch (const json::parse_error&)
   83|  4.46k|    {
   84|       |        // parse errors are ok, because input may be random bytes
   85|  1.37k|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (85:9): [True: 0, False: 1.37k]
  |  Branch (85:9): [True: 0, False: 1.37k]
  |  Branch (85:9): [True: 1.37k, False: 0]
  |  Branch (85:9): [True: 1.37k, False: 0]
  ------------------
   86|  1.37k|    }
   87|  4.46k|    catch (const json::type_error&)
   88|  4.46k|    {
   89|       |        // type errors can occur during parsing, too
   90|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|    }
   92|  4.46k|    catch (const json::out_of_range&)
   93|  4.46k|    {
   94|       |        // out of range errors may happen if provided sizes are excessive
   95|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  ------------------
   96|      0|    }
   97|       |
   98|       |    // step 3: the other input adapters must read the data alike
   99|  4.46k|    check_input_adapters(data, size, read_bon8());
  100|       |
  101|       |    // return 0 - non-zero return values are reserved for future use
  102|  4.46k|    return 0;
  103|  4.46k|}
fuzzer-parse_bon8.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clEv:
   51|  4.46k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bon8(vec1, true, false); }, noexcept_threw);
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRPKhS3_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  4.46k|    {
   39|  4.46k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  4.46k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcS5_S7_EEblmdS6_NSB_14adl_serializerENSE_IhNS6_IhEEEEvEEDpOT_:
   38|  4.46k|    {
   39|  4.46k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  4.46k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJNSt3__121__list_const_iteratorIhPvEES5_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdSE_NS7_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  4.46k|    {
   39|  4.46k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  4.46k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRP8_IO_FILEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  4.46k|    {
   39|  4.46k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  4.46k|    }

_Z10same_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEESG_:
   34|  3.09k|{
   35|  3.09k|    return lhs.dump(-1, ' ', false, json::error_handler_t::keep) == rhs.dump(-1, ' ', false, json::error_handler_t::keep);
   36|  3.09k|}
fuzzer-parse_bon8.cpp:_Z24parse_without_exceptionsIZ22LLVMFuzzerTestOneInputE3$_0EN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS2_14adl_serializerENS6_IhNSA_IhEEEEvEET_Rb:
   44|  4.46k|{
   45|  4.46k|    threw = false;
   46|  4.46k|    try
   47|  4.46k|    {
   48|  4.46k|        return parse();
   49|  4.46k|    }
   50|  4.46k|    catch (const json::parse_error&)
   51|  4.46k|    {
   52|      0|        assert(false);
  ------------------
  |  Branch (52:9): [Folded, False: 0]
  ------------------
   53|      0|    }
   54|  4.46k|    catch (const json::exception&)
   55|  4.46k|    {
   56|      0|        threw = true;
   57|      0|    }
   58|      0|    return {};
   59|  4.46k|}
fuzzer-parse_bon8.cpp:_Z20check_input_adaptersIN12_GLOBAL__N_19read_bon8EEvPKhmRKT_:
  117|  4.46k|{
  118|  4.46k|    const read_outcome expected = read_with(parse, data, data + size);
  119|       |
  120|       |    // stream adapter
  121|  4.46k|    {
  122|  4.46k|        std::istringstream stream(std::string(reinterpret_cast<const char*>(data), size));
  123|  4.46k|        assert(read_with(parse, stream) == expected);
  ------------------
  |  Branch (123:9): [True: 4.46k, False: 0]
  ------------------
  124|  4.46k|    }
  125|       |
  126|       |    // iterator adapter on a non-contiguous range
  127|  4.46k|    {
  128|  4.46k|        const std::list<std::uint8_t> list(data, data + size);
  129|  4.46k|        assert(read_with(parse, list.begin(), list.end()) == expected);
  ------------------
  |  Branch (129:9): [True: 4.46k, False: 0]
  ------------------
  130|  4.46k|    }
  131|       |
  132|  4.46k|#if defined(__unix__) || defined(__APPLE__)
  133|       |    // FILE* adapter; fmemopen may refuse an empty buffer
  134|  4.46k|    {
  135|  4.46k|        std::vector<std::uint8_t> buffer(data, data + size);
  136|  4.46k|        std::FILE* file = buffer.empty() ? nullptr : fmemopen(buffer.data(), buffer.size(), "rb");
  ------------------
  |  Branch (136:27): [True: 0, False: 4.46k]
  ------------------
  137|  4.46k|        if (file != nullptr)
  ------------------
  |  Branch (137:13): [True: 4.46k, False: 0]
  ------------------
  138|  4.46k|        {
  139|  4.46k|            const read_outcome actual = read_with(parse, file);
  140|  4.46k|            std::fclose(file);
  141|       |            assert(actual == expected);
  ------------------
  |  Branch (141:13): [True: 4.46k, False: 0]
  ------------------
  142|  4.46k|        }
  143|  4.46k|    }
  144|  4.46k|#endif
  145|  4.46k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRPKhS3_EE12read_outcomeRKT_DpOT0_:
   88|  4.46k|{
   89|  4.46k|    read_outcome result;
   90|  4.46k|    try
   91|  4.46k|    {
   92|  4.46k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  4.46k|    }
   94|  4.46k|    catch (const json::parse_error& e)
   95|  4.46k|    {
   96|  1.37k|        result.id = e.id;
   97|  1.37k|        result.what = e.what();
   98|  1.37k|        result.byte = e.byte;
   99|  1.37k|    }
  100|  4.46k|    catch (const json::exception& e)
  101|  4.46k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  4.46k|    return result;
  106|  4.46k|}
_Z13outcome_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEE:
   77|  12.3k|{
   78|  12.3k|    return j.dump(-1, ' ', false, json::error_handler_t::keep);
   79|  12.3k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE12read_outcomeRKT_DpOT0_:
   88|  4.46k|{
   89|  4.46k|    read_outcome result;
   90|  4.46k|    try
   91|  4.46k|    {
   92|  4.46k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  4.46k|    }
   94|  4.46k|    catch (const json::parse_error& e)
   95|  4.46k|    {
   96|  1.37k|        result.id = e.id;
   97|  1.37k|        result.what = e.what();
   98|  1.37k|        result.byte = e.byte;
   99|  1.37k|    }
  100|  4.46k|    catch (const json::exception& e)
  101|  4.46k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  4.46k|    return result;
  106|  4.46k|}
_ZNK12read_outcomeeqERKS_:
   71|  13.3k|    {
   72|  13.3k|        return value == rhs.value && id == rhs.id && what == rhs.what && byte == rhs.byte;
  ------------------
  |  Branch (72:16): [True: 13.3k, False: 0]
  |  Branch (72:38): [True: 13.3k, False: 0]
  |  Branch (72:54): [True: 13.3k, False: 0]
  |  Branch (72:74): [True: 13.3k, False: 0]
  ------------------
   73|  13.3k|    }
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJNSt3__121__list_const_iteratorIhPvEES5_EE12read_outcomeRKT_DpOT0_:
   88|  4.46k|{
   89|  4.46k|    read_outcome result;
   90|  4.46k|    try
   91|  4.46k|    {
   92|  4.46k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  4.46k|    }
   94|  4.46k|    catch (const json::parse_error& e)
   95|  4.46k|    {
   96|  1.37k|        result.id = e.id;
   97|  1.37k|        result.what = e.what();
   98|  1.37k|        result.byte = e.byte;
   99|  1.37k|    }
  100|  4.46k|    catch (const json::exception& e)
  101|  4.46k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  4.46k|    return result;
  106|  4.46k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRP8_IO_FILEEE12read_outcomeRKT_DpOT0_:
   88|  4.46k|{
   89|  4.46k|    read_outcome result;
   90|  4.46k|    try
   91|  4.46k|    {
   92|  4.46k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  4.46k|    }
   94|  4.46k|    catch (const json::parse_error& e)
   95|  4.46k|    {
   96|  1.37k|        result.id = e.id;
   97|  1.37k|        result.what = e.what();
   98|  1.37k|        result.byte = e.byte;
   99|  1.37k|    }
  100|  4.46k|    catch (const json::exception& e)
  101|  4.46k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  4.46k|    return result;
  106|  4.46k|}

