Coverage Report

Created: 2026-09-01 13:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/src/script/script.h
Line
Count
Source
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#ifndef BITCOIN_SCRIPT_SCRIPT_H
7
#define BITCOIN_SCRIPT_SCRIPT_H
8
9
#include <attributes.h>
10
#include <crypto/common.h>
11
#include <prevector.h>
12
#include <serialize.h>
13
#include <uint256.h>
14
#include <util/hash_type.h>
15
16
#include <cassert>
17
#include <cstddef>
18
#include <cstdint>
19
#include <iterator>
20
#include <limits>
21
#include <span>
22
#include <stdexcept>
23
#include <string>
24
#include <type_traits>
25
#include <utility>
26
#include <vector>
27
28
// Maximum number of bytes pushable to the stack
29
inline constexpr unsigned int MAX_SCRIPT_ELEMENT_SIZE = 520;
30
31
// Maximum number of non-push operations per script
32
inline constexpr int MAX_OPS_PER_SCRIPT = 201;
33
34
// Maximum number of public keys per multisig
35
inline constexpr int MAX_PUBKEYS_PER_MULTISIG = 20;
36
37
/** The limit of keys in OP_CHECKSIGADD-based scripts. It is due to the stack limit in BIP342. */
38
inline constexpr unsigned int MAX_PUBKEYS_PER_MULTI_A = 999;
39
40
// Maximum script length in bytes
41
inline constexpr int MAX_SCRIPT_SIZE{10'000};
42
43
// Maximum number of values on script interpreter stack
44
inline constexpr int MAX_STACK_SIZE = 1000;
45
46
// Threshold for nLockTime: below this value it is interpreted as block number,
47
// otherwise as UNIX timestamp.
48
inline constexpr unsigned int LOCKTIME_THRESHOLD{500'000'000}; // Tue Nov  5 00:53:20 1985 UTC
49
50
// Maximum nLockTime. Since a lock time indicates the last invalid timestamp, a
51
// transaction with this lock time will never be valid unless lock time
52
// checking is disabled (by setting all input sequence numbers to
53
// SEQUENCE_FINAL).
54
inline constexpr uint32_t LOCKTIME_MAX = 0xFFFFFFFFU;
55
56
// Tag for input annex. If there are at least two witness elements for a transaction input,
57
// and the first byte of the last element is 0x50, this last element is called annex, and
58
// has meanings independent of the script
59
inline constexpr unsigned int ANNEX_TAG = 0x50;
60
61
// Validation weight per passing signature (Tapscript only, see BIP 342).
62
inline constexpr int64_t VALIDATION_WEIGHT_PER_SIGOP_PASSED{50};
63
64
// How much weight budget is added to the witness size (Tapscript only, see BIP 342).
65
inline constexpr int64_t VALIDATION_WEIGHT_OFFSET{50};
66
67
template <typename T>
68
std::vector<unsigned char> ToByteVector(const T& in)
69
5.49M
{
70
5.49M
    return std::vector<unsigned char>(in.begin(), in.end());
71
5.49M
}
_Z12ToByteVectorI7uint256ESt6vectorIhSaIhEERKT_
Line
Count
Source
69
118k
{
70
118k
    return std::vector<unsigned char>(in.begin(), in.end());
71
118k
}
_Z12ToByteVectorI11XOnlyPubKeyESt6vectorIhSaIhEERKT_
Line
Count
Source
69
2.69M
{
70
2.69M
    return std::vector<unsigned char>(in.begin(), in.end());
71
2.69M
}
Unexecuted instantiation: _Z12ToByteVectorI7CScriptESt6vectorIhSaIhEERKT_
_Z12ToByteVectorI10ScriptHashESt6vectorIhSaIhEERKT_
Line
Count
Source
69
587k
{
70
587k
    return std::vector<unsigned char>(in.begin(), in.end());
71
587k
}
_Z12ToByteVectorI7CPubKeyESt6vectorIhSaIhEERKT_
Line
Count
Source
69
406k
{
70
406k
    return std::vector<unsigned char>(in.begin(), in.end());
71
406k
}
_Z12ToByteVectorI6PKHashESt6vectorIhSaIhEERKT_
Line
Count
Source
69
357k
{
70
357k
    return std::vector<unsigned char>(in.begin(), in.end());
71
357k
}
_Z12ToByteVectorI19WitnessV0ScriptHashESt6vectorIhSaIhEERKT_
Line
Count
Source
69
163k
{
70
163k
    return std::vector<unsigned char>(in.begin(), in.end());
71
163k
}
_Z12ToByteVectorI16WitnessV0KeyHashESt6vectorIhSaIhEERKT_
Line
Count
Source
69
405k
{
70
405k
    return std::vector<unsigned char>(in.begin(), in.end());
71
405k
}
_Z12ToByteVectorI16WitnessV1TaprootESt6vectorIhSaIhEERKT_
Line
Count
Source
69
684k
{
70
684k
    return std::vector<unsigned char>(in.begin(), in.end());
71
684k
}
_Z12ToByteVectorISt6vectorIhSaIhEEES2_RKT_
Line
Count
Source
69
75.4k
{
70
75.4k
    return std::vector<unsigned char>(in.begin(), in.end());
71
75.4k
}
72
73
/** Script opcodes */
74
enum opcodetype
75
{
76
    // push value
77
    OP_0 = 0x00,
78
    OP_FALSE = OP_0,
79
    OP_PUSHDATA1 = 0x4c,
80
    OP_PUSHDATA2 = 0x4d,
81
    OP_PUSHDATA4 = 0x4e,
82
    OP_1NEGATE = 0x4f,
83
    OP_RESERVED = 0x50,
84
    OP_1 = 0x51,
85
    OP_TRUE=OP_1,
86
    OP_2 = 0x52,
87
    OP_3 = 0x53,
88
    OP_4 = 0x54,
89
    OP_5 = 0x55,
90
    OP_6 = 0x56,
91
    OP_7 = 0x57,
92
    OP_8 = 0x58,
93
    OP_9 = 0x59,
94
    OP_10 = 0x5a,
95
    OP_11 = 0x5b,
96
    OP_12 = 0x5c,
97
    OP_13 = 0x5d,
98
    OP_14 = 0x5e,
99
    OP_15 = 0x5f,
100
    OP_16 = 0x60,
101
102
    // control
103
    OP_NOP = 0x61,
104
    OP_VER = 0x62,
105
    OP_IF = 0x63,
106
    OP_NOTIF = 0x64,
107
    OP_VERIF = 0x65,
108
    OP_VERNOTIF = 0x66,
109
    OP_ELSE = 0x67,
110
    OP_ENDIF = 0x68,
111
    OP_VERIFY = 0x69,
112
    OP_RETURN = 0x6a,
113
114
    // stack ops
115
    OP_TOALTSTACK = 0x6b,
116
    OP_FROMALTSTACK = 0x6c,
117
    OP_2DROP = 0x6d,
118
    OP_2DUP = 0x6e,
119
    OP_3DUP = 0x6f,
120
    OP_2OVER = 0x70,
121
    OP_2ROT = 0x71,
122
    OP_2SWAP = 0x72,
123
    OP_IFDUP = 0x73,
124
    OP_DEPTH = 0x74,
125
    OP_DROP = 0x75,
126
    OP_DUP = 0x76,
127
    OP_NIP = 0x77,
128
    OP_OVER = 0x78,
129
    OP_PICK = 0x79,
130
    OP_ROLL = 0x7a,
131
    OP_ROT = 0x7b,
132
    OP_SWAP = 0x7c,
133
    OP_TUCK = 0x7d,
134
135
    // splice ops
136
    OP_CAT = 0x7e,
137
    OP_SUBSTR = 0x7f,
138
    OP_LEFT = 0x80,
139
    OP_RIGHT = 0x81,
140
    OP_SIZE = 0x82,
141
142
    // bit logic
143
    OP_INVERT = 0x83,
144
    OP_AND = 0x84,
145
    OP_OR = 0x85,
146
    OP_XOR = 0x86,
147
    OP_EQUAL = 0x87,
148
    OP_EQUALVERIFY = 0x88,
149
    OP_RESERVED1 = 0x89,
150
    OP_RESERVED2 = 0x8a,
151
152
    // numeric
153
    OP_1ADD = 0x8b,
154
    OP_1SUB = 0x8c,
155
    OP_2MUL = 0x8d,
156
    OP_2DIV = 0x8e,
157
    OP_NEGATE = 0x8f,
158
    OP_ABS = 0x90,
159
    OP_NOT = 0x91,
160
    OP_0NOTEQUAL = 0x92,
161
162
    OP_ADD = 0x93,
163
    OP_SUB = 0x94,
164
    OP_MUL = 0x95,
165
    OP_DIV = 0x96,
166
    OP_MOD = 0x97,
167
    OP_LSHIFT = 0x98,
168
    OP_RSHIFT = 0x99,
169
170
    OP_BOOLAND = 0x9a,
171
    OP_BOOLOR = 0x9b,
172
    OP_NUMEQUAL = 0x9c,
173
    OP_NUMEQUALVERIFY = 0x9d,
174
    OP_NUMNOTEQUAL = 0x9e,
175
    OP_LESSTHAN = 0x9f,
176
    OP_GREATERTHAN = 0xa0,
177
    OP_LESSTHANOREQUAL = 0xa1,
178
    OP_GREATERTHANOREQUAL = 0xa2,
179
    OP_MIN = 0xa3,
180
    OP_MAX = 0xa4,
181
182
    OP_WITHIN = 0xa5,
183
184
    // crypto
185
    OP_RIPEMD160 = 0xa6,
186
    OP_SHA1 = 0xa7,
187
    OP_SHA256 = 0xa8,
188
    OP_HASH160 = 0xa9,
189
    OP_HASH256 = 0xaa,
190
    OP_CODESEPARATOR = 0xab,
191
    OP_CHECKSIG = 0xac,
192
    OP_CHECKSIGVERIFY = 0xad,
193
    OP_CHECKMULTISIG = 0xae,
194
    OP_CHECKMULTISIGVERIFY = 0xaf,
195
196
    // expansion
197
    OP_NOP1 = 0xb0,
198
    OP_CHECKLOCKTIMEVERIFY = 0xb1,
199
    OP_NOP2 = OP_CHECKLOCKTIMEVERIFY,
200
    OP_CHECKSEQUENCEVERIFY = 0xb2,
201
    OP_NOP3 = OP_CHECKSEQUENCEVERIFY,
202
    OP_NOP4 = 0xb3,
203
    OP_NOP5 = 0xb4,
204
    OP_NOP6 = 0xb5,
205
    OP_NOP7 = 0xb6,
206
    OP_NOP8 = 0xb7,
207
    OP_NOP9 = 0xb8,
208
    OP_NOP10 = 0xb9,
209
210
    // Opcode added by BIP 342 (Tapscript)
211
    OP_CHECKSIGADD = 0xba,
212
213
    OP_INVALIDOPCODE = 0xff,
214
};
215
216
// Maximum value that an opcode can be
217
inline constexpr unsigned int MAX_OPCODE = OP_NOP10;
218
219
std::string GetOpName(opcodetype opcode);
220
221
class scriptnum_error : public std::runtime_error
222
{
223
public:
224
90.4k
    explicit scriptnum_error(const std::string& str) : std::runtime_error(str) {}
225
};
226
227
class CScriptNum
228
{
229
/**
230
 * Numeric opcodes (OP_1ADD, etc) are restricted to operating on 4-byte integers.
231
 * The semantics are subtle, though: operands must be in the range [-2^31 +1...2^31 -1],
232
 * but results may overflow (and are valid as long as they are not used in a subsequent
233
 * numeric operation). CScriptNum enforces those semantics by storing results as
234
 * an int64 and allowing out-of-range values to be returned as a vector of bytes but
235
 * throwing an exception if arithmetic is done or the result is interpreted as an integer.
236
 */
237
public:
238
239
    explicit CScriptNum(const int64_t& n)
240
20.6M
    {
241
20.6M
        m_value = n;
242
20.6M
    }
243
244
    static constexpr size_t nDefaultMaxNumSize{4};
245
246
    explicit CScriptNum(const std::vector<unsigned char>& vch, bool fRequireMinimal,
247
                        const size_t nMaxNumSize = nDefaultMaxNumSize)
248
7.91M
    {
249
7.91M
        if (vch.size() > nMaxNumSize) {
  Branch (249:13): [True: 66.6k, False: 7.84M]
250
66.6k
            throw scriptnum_error("script number overflow");
251
66.6k
        }
252
7.84M
        if (fRequireMinimal && vch.size() > 0) {
  Branch (252:13): [True: 2.01M, False: 5.83M]
  Branch (252:32): [True: 1.23M, False: 777k]
253
            // Check that the number is encoded with the minimum possible
254
            // number of bytes.
255
            //
256
            // If the most-significant-byte - excluding the sign bit - is zero
257
            // then we're not minimal. Note how this test also rejects the
258
            // negative-zero encoding, 0x80.
259
1.23M
            if ((vch.back() & 0x7f) == 0) {
  Branch (259:17): [True: 46.7k, False: 1.19M]
260
                // One exception: if there's more than one byte and the most
261
                // significant bit of the second-most-significant-byte is set
262
                // it would conflict with the sign bit. An example of this case
263
                // is +-255, which encode to 0xff00 and 0xff80 respectively.
264
                // (big-endian).
265
46.7k
                if (vch.size() <= 1 || (vch[vch.size() - 2] & 0x80) == 0) {
  Branch (265:21): [True: 13.7k, False: 33.0k]
  Branch (265:40): [True: 8.47k, False: 24.5k]
266
22.2k
                    throw scriptnum_error("non-minimally encoded script number");
267
22.2k
                }
268
46.7k
            }
269
1.23M
        }
270
7.82M
        m_value = set_vch(vch);
271
7.82M
    }
272
273
3.03M
    inline bool operator==(const int64_t& rhs) const    { return m_value == rhs; }
274
3.97M
    inline auto operator<=>(const int64_t& rhs) const    { return m_value <=> rhs; }
275
276
1.73M
    inline bool operator==(const CScriptNum& rhs) const { return operator==(rhs.m_value); }
277
1.29M
    inline auto operator<=>(const CScriptNum& rhs) const { return operator<=>(rhs.m_value); }
278
279
730k
    inline CScriptNum operator+(   const int64_t& rhs)    const { return CScriptNum(m_value + rhs);}
280
669k
    inline CScriptNum operator-(   const int64_t& rhs)    const { return CScriptNum(m_value - rhs);}
281
425k
    inline CScriptNum operator+(   const CScriptNum& rhs) const { return operator+(rhs.m_value);   }
282
396k
    inline CScriptNum operator-(   const CScriptNum& rhs) const { return operator-(rhs.m_value);   }
283
284
71.6k
    inline CScriptNum& operator+=( const CScriptNum& rhs)       { return operator+=(rhs.m_value);  }
285
84.9k
    inline CScriptNum& operator-=( const CScriptNum& rhs)       { return operator-=(rhs.m_value);  }
286
287
128k
    inline CScriptNum operator&(   const int64_t& rhs)    const { return CScriptNum(m_value & rhs);}
288
10.6k
    inline CScriptNum operator&(   const CScriptNum& rhs) const { return operator&(rhs.m_value);   }
289
290
14.0k
    inline CScriptNum& operator&=( const CScriptNum& rhs)       { return operator&=(rhs.m_value);  }
291
292
    inline CScriptNum operator-()                         const
293
1.14M
    {
294
1.14M
        assert(m_value != std::numeric_limits<int64_t>::min());
  Branch (294:9): [True: 1.14M, False: 0]
295
1.14M
        return CScriptNum(-m_value);
296
1.14M
    }
297
298
    inline CScriptNum& operator=( const int64_t& rhs)
299
387k
    {
300
387k
        m_value = rhs;
301
387k
        return *this;
302
387k
    }
303
304
    inline CScriptNum& operator+=( const int64_t& rhs)
305
95.8k
    {
306
95.8k
        assert(rhs == 0 || (rhs > 0 && m_value <= std::numeric_limits<int64_t>::max() - rhs) ||
  Branch (306:9): [True: 75.7k, False: 14.7k]
  Branch (306:9): [True: 75.7k, False: 0]
  Branch (306:9): [True: 5.32k, False: 90.5k]
  Branch (306:9): [True: 14.7k, False: 0]
  Branch (306:9): [True: 14.7k, False: 0]
  Branch (306:9): [True: 95.8k, False: 0]
307
95.8k
                           (rhs < 0 && m_value >= std::numeric_limits<int64_t>::min() - rhs));
308
95.8k
        m_value += rhs;
309
95.8k
        return *this;
310
95.8k
    }
311
312
    inline CScriptNum& operator-=( const int64_t& rhs)
313
100k
    {
314
100k
        assert(rhs == 0 || (rhs > 0 && m_value >= std::numeric_limits<int64_t>::min() + rhs) ||
  Branch (314:9): [True: 74.6k, False: 18.6k]
  Branch (314:9): [True: 74.6k, False: 0]
  Branch (314:9): [True: 6.93k, False: 93.3k]
  Branch (314:9): [True: 18.6k, False: 0]
  Branch (314:9): [True: 18.6k, False: 0]
  Branch (314:9): [True: 100k, False: 0]
315
100k
                           (rhs < 0 && m_value <= std::numeric_limits<int64_t>::max() + rhs));
316
100k
        m_value -= rhs;
317
100k
        return *this;
318
100k
    }
319
320
    inline CScriptNum& operator&=( const int64_t& rhs)
321
20.9k
    {
322
20.9k
        m_value &= rhs;
323
20.9k
        return *this;
324
20.9k
    }
325
326
    int getint() const
327
7.62M
    {
328
7.62M
        if (m_value > std::numeric_limits<int>::max())
  Branch (328:13): [True: 767k, False: 6.85M]
329
767k
            return std::numeric_limits<int>::max();
330
6.85M
        else if (m_value < std::numeric_limits<int>::min())
  Branch (330:18): [True: 829k, False: 6.02M]
331
829k
            return std::numeric_limits<int>::min();
332
6.02M
        return m_value;
333
7.62M
    }
334
335
219k
    int64_t GetInt64() const { return m_value; }
336
337
    std::vector<unsigned char> getvch() const
338
17.5M
    {
339
17.5M
        return serialize(m_value);
340
17.5M
    }
341
342
    static std::vector<unsigned char> serialize(const int64_t& value)
343
20.3M
    {
344
20.3M
        if(value == 0)
  Branch (344:12): [True: 343k, False: 20.0M]
345
343k
            return std::vector<unsigned char>();
346
347
20.0M
        std::vector<unsigned char> result;
348
20.0M
        const bool neg = value < 0;
349
20.0M
        uint64_t absvalue = neg ? ~static_cast<uint64_t>(value) + 1 : static_cast<uint64_t>(value);
  Branch (349:29): [True: 3.73M, False: 16.2M]
350
351
60.3M
        while(absvalue)
  Branch (351:15): [True: 40.3M, False: 20.0M]
352
40.3M
        {
353
40.3M
            result.push_back(absvalue & 0xff);
354
40.3M
            absvalue >>= 8;
355
40.3M
        }
356
357
//    - If the most significant byte is >= 0x80 and the value is positive, push a
358
//    new zero-byte to make the significant byte < 0x80 again.
359
360
//    - If the most significant byte is >= 0x80 and the value is negative, push a
361
//    new 0x80 byte that will be popped off when converting to an integral.
362
363
//    - If the most significant byte is < 0x80 and the value is negative, add
364
//    0x80 to it, since it will be subtracted and interpreted as a negative when
365
//    converting to an integral.
366
367
20.0M
        if (result.back() & 0x80)
  Branch (367:13): [True: 808k, False: 19.1M]
368
808k
            result.push_back(neg ? 0x80 : 0);
  Branch (368:30): [True: 197k, False: 610k]
369
19.1M
        else if (neg)
  Branch (369:18): [True: 3.54M, False: 15.6M]
370
3.54M
            result.back() |= 0x80;
371
372
20.0M
        return result;
373
20.3M
    }
374
375
private:
376
    static int64_t set_vch(const std::vector<unsigned char>& vch)
377
7.82M
    {
378
7.82M
      if (vch.empty())
  Branch (378:11): [True: 4.11M, False: 3.70M]
379
4.11M
          return 0;
380
381
3.70M
      int64_t result = 0;
382
8.69M
      for (size_t i = 0; i != vch.size(); ++i)
  Branch (382:26): [True: 4.99M, False: 3.70M]
383
4.99M
          result |= static_cast<int64_t>(vch[i]) << 8*i;
384
385
      // If the input vector's most significant byte is 0x80, remove it from
386
      // the result's msb and return a negative.
387
3.70M
      if (vch.back() & 0x80)
  Branch (387:11): [True: 248k, False: 3.46M]
388
248k
          return -((int64_t)(result & ~(0x80ULL << (8 * (vch.size() - 1)))));
389
390
3.46M
      return result;
391
3.70M
    }
392
393
    int64_t m_value;
394
};
395
396
/**
397
 * We use a prevector for the script to reduce the considerable memory overhead
398
 *  of vectors in cases where they normally contain a small number of small elements.
399
 */
400
using CScriptBase = prevector<36, uint8_t>;
401
402
bool GetScriptOp(CScriptBase::const_iterator& pc, CScriptBase::const_iterator end, opcodetype& opcodeRet, std::vector<unsigned char>* pvchRet);
403
404
/** Serialized script, used inside transaction inputs and outputs */
405
class CScript : public CScriptBase
406
{
407
private:
408
    inline void AppendDataSize(const uint32_t size)
409
41.6M
    {
410
41.6M
        if (size < OP_PUSHDATA1) {
  Branch (410:13): [True: 15.5M, False: 26.0M]
411
15.5M
            insert(end(), static_cast<value_type>(size));
412
26.0M
        } else if (size <= 0xff) {
  Branch (412:20): [True: 25.9M, False: 62.3k]
413
25.9M
            insert(end(), OP_PUSHDATA1);
414
25.9M
            insert(end(), static_cast<value_type>(size));
415
25.9M
        } else if (size <= 0xffff) {
  Branch (415:20): [True: 42.6k, False: 19.7k]
416
42.6k
            insert(end(), OP_PUSHDATA2);
417
42.6k
            value_type data[2];
418
42.6k
            WriteLE16(data, size);
419
42.6k
            insert(end(), std::cbegin(data), std::cend(data));
420
42.6k
        } else {
421
19.7k
            insert(end(), OP_PUSHDATA4);
422
19.7k
            value_type data[4];
423
19.7k
            WriteLE32(data, size);
424
19.7k
            insert(end(), std::cbegin(data), std::cend(data));
425
19.7k
        }
426
41.6M
    }
427
428
    void AppendData(std::span<const value_type> data)
429
41.6M
    {
430
41.6M
        insert(end(), data.begin(), data.end());
431
41.6M
    }
432
433
protected:
434
    CScript& push_int64(int64_t n)
435
4.36M
    {
436
4.36M
        if (n == -1 || (n >= 1 && n <= 16))
  Branch (436:13): [True: 36.7k, False: 4.32M]
  Branch (436:25): [True: 3.65M, False: 671k]
  Branch (436:35): [True: 1.31M, False: 2.34M]
437
1.35M
        {
438
1.35M
            push_back(n + (OP_1 - 1));
439
1.35M
        }
440
3.01M
        else if (n == 0)
  Branch (440:18): [True: 202k, False: 2.81M]
441
202k
        {
442
202k
            push_back(OP_0);
443
202k
        }
444
2.81M
        else
445
2.81M
        {
446
2.81M
            *this << CScriptNum::serialize(n);
447
2.81M
        }
448
4.36M
        return *this;
449
4.36M
    }
450
451
public:
452
422M
    CScript() = default;
453
    template <std::input_iterator InputIterator>
454
7.56M
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
_ZN7CScriptC2ITkSt14input_iteratorN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEET_S9_
Line
Count
Source
454
6.82M
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
_ZN7CScriptC2ITkSt14input_iteratorN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEET_S8_
Line
Count
Source
454
121k
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
_ZN7CScriptC2ITkSt14input_iteratorPKhEET_S3_
Line
Count
Source
454
4.12k
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
_ZN7CScriptC2ITkSt14input_iteratorN9__gnu_cxx17__normal_iteratorIPKhSt4spanIS3_Lm18446744073709551615EEEEEET_S8_
Line
Count
Source
454
4.30k
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
_ZN7CScriptC2ITkSt14input_iteratorN9prevectorILj36EhjiE14const_iteratorEEET_S4_
Line
Count
Source
454
616k
    CScript(InputIterator first, InputIterator last) : CScriptBase{first, last} { }
455
456
9.55G
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR12SizeComputer20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
8.97G
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR10SpanReader20TransactionSerParamsES_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
23.1M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR12VectorWriter20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
802k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR10DataStream20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
5.49M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI10SpanReaderS_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
3.10M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI10DataStreamKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
13.2k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI10DataStreamS_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
64
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12SizeComputerKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
114M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIRS1_IR12VectorWriter20TransactionSerParamsES4_EKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
13.2k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12VectorWriterKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
23.5k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR10DataStream20TransactionSerParamsES_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
931k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI10HashWriterKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
28.8M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR14BufferedWriterI8AutoFileE20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
1.68M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR8AutoFile20TransactionSerParamsES_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
2.40M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
Unexecuted instantiation: _ZN7CScript16SerializationOpsI12ParamsStreamIR8AutoFile20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
_ZN7CScript16SerializationOpsI12ParamsStreamIR12BufferedFile20TransactionSerParamsES_17ActionUnserializeEEvRT0_RT_T1_
Line
Count
Source
456
152k
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
_ZN7CScript16SerializationOpsI12ParamsStreamIR10HashWriter20TransactionSerParamsEKS_15ActionSerializeEEvRT0_RT_T1_
Line
Count
Source
456
400M
    SERIALIZE_METHODS(CScript, obj) { READWRITE(AsBase<CScriptBase>(obj)); }
457
458
0
    explicit CScript(int64_t b) { operator<<(b); }
459
9.78k
    explicit CScript(opcodetype b)     { operator<<(b); }
460
0
    explicit CScript(const CScriptNum& b) { operator<<(b); }
461
    // delete non-existent constructor to defend against future introduction
462
    // e.g. via prevector
463
    explicit CScript(const std::vector<unsigned char>& b) = delete;
464
465
    /** Delete non-existent operator to defend against future introduction */
466
    CScript& operator<<(const CScript& b) = delete;
467
468
4.36M
    CScript& operator<<(int64_t b) LIFETIMEBOUND { return push_int64(b); }
469
470
    CScript& operator<<(opcodetype opcode) LIFETIMEBOUND
471
16.5M
    {
472
16.5M
        if (opcode < 0 || opcode > 0xff)
  Branch (472:13): [True: 0, False: 16.5M]
  Branch (472:27): [True: 0, False: 16.5M]
473
0
            throw std::runtime_error("CScript::operator<<(): invalid opcode");
474
16.5M
        insert(end(), (unsigned char)opcode);
475
16.5M
        return *this;
476
16.5M
    }
477
478
    CScript& operator<<(const CScriptNum& b) LIFETIMEBOUND
479
595k
    {
480
595k
        *this << b.getvch();
481
595k
        return *this;
482
595k
    }
483
484
    CScript& operator<<(std::span<const std::byte> b) LIFETIMEBOUND
485
41.6M
    {
486
41.6M
        AppendDataSize(b.size());
487
41.6M
        AppendData({reinterpret_cast<const value_type*>(b.data()), b.size()});
488
41.6M
        return *this;
489
41.6M
    }
490
491
    // For compatibility reasons. In new code, prefer using std::byte instead of uint8_t.
492
    CScript& operator<<(std::span<const value_type> b) LIFETIMEBOUND
493
41.5M
    {
494
41.5M
        return *this << std::as_bytes(b);
495
41.5M
    }
496
497
    bool GetOp(const_iterator& pc, opcodetype& opcodeRet, std::vector<unsigned char>& vchRet) const
498
123M
    {
499
123M
        return GetScriptOp(pc, end(), opcodeRet, &vchRet);
500
123M
    }
501
502
    bool GetOp(const_iterator& pc, opcodetype& opcodeRet) const
503
684M
    {
504
684M
        return GetScriptOp(pc, end(), opcodeRet, nullptr);
505
684M
    }
506
507
    /** Encode/decode small integers: */
508
    static int DecodeOP_N(opcodetype opcode)
509
148M
    {
510
148M
        if (opcode == OP_0)
  Branch (510:13): [True: 146M, False: 2.10M]
511
146M
            return 0;
512
148M
        assert(opcode >= OP_1 && opcode <= OP_16);
  Branch (512:9): [True: 2.10M, False: 0]
  Branch (512:9): [True: 2.10M, False: 0]
  Branch (512:9): [True: 2.10M, False: 0]
513
2.10M
        return (int)opcode - (int)(OP_1 - 1);
514
2.10M
    }
515
    static opcodetype EncodeOP_N(int n)
516
51.4k
    {
517
51.4k
        assert(n >= 0 && n <= 16);
  Branch (517:9): [True: 51.4k, False: 0]
  Branch (517:9): [True: 51.4k, False: 0]
  Branch (517:9): [True: 51.4k, False: 0]
518
51.4k
        if (n == 0)
  Branch (518:13): [True: 1, False: 51.4k]
519
1
            return OP_0;
520
51.4k
        return (opcodetype)(OP_1+n-1);
521
51.4k
    }
522
523
    /**
524
     * Pre-version-0.6, Bitcoin always counted CHECKMULTISIGs
525
     * as 20 sigops. With pay-to-script-hash, that changed:
526
     * CHECKMULTISIGs serialized in scriptSigs are
527
     * counted more accurately, assuming they are of the form
528
     *  ... OP_N CHECKMULTISIG ...
529
     */
530
    unsigned int GetSigOpCount(bool fAccurate) const;
531
532
    /**
533
     * Accurately count sigOps, including sigOps in
534
     * pay-to-script-hash transactions:
535
     */
536
    unsigned int GetSigOpCount(const CScript& scriptSig) const;
537
538
    /*
539
     * OP_1 <0x4e73>
540
     */
541
    bool IsPayToAnchor() const;
542
    /** Checks if output of IsWitnessProgram comes from a P2A output script
543
     */
544
    static bool IsPayToAnchor(int version, const std::vector<unsigned char>& program);
545
546
    bool IsPayToScriptHash() const;
547
    bool IsPayToWitnessScriptHash() const;
548
    bool IsWitnessProgram(int& version, std::vector<unsigned char>& program) const;
549
550
    bool IsPayToTaproot() const;
551
552
    /** Called by IsStandardTx and P2SH/BIP62 VerifyScript (which makes it consensus-critical). */
553
    bool IsPushOnly(const_iterator pc) const;
554
    bool IsPushOnly() const;
555
556
    /** Check if the script contains valid OP_CODES */
557
    bool HasValidOps() const;
558
559
    /**
560
     * Returns whether the script is guaranteed to fail at execution,
561
     * regardless of the initial stack. This allows outputs to be pruned
562
     * instantly when entering the UTXO set.
563
     */
564
    bool IsUnspendable() const
565
121M
    {
566
121M
        return (size() > 0 && *begin() == OP_RETURN) || (size() > MAX_SCRIPT_SIZE);
  Branch (566:17): [True: 120M, False: 57.8k]
  Branch (566:31): [True: 1.21M, False: 119M]
  Branch (566:57): [True: 39.4k, False: 119M]
567
121M
    }
568
569
    void clear()
570
103M
    {
571
        // The default prevector::clear() does not release memory
572
103M
        CScriptBase::clear();
573
103M
        shrink_to_fit();
574
103M
    }
575
};
576
577
struct CScriptWitness
578
{
579
    // Note that this encodes the data elements being pushed, rather than
580
    // encoding them as a CScript that pushes them.
581
    std::vector<std::vector<unsigned char> > stack;
582
583
    // Some compilers complain without a default constructor
584
67.0M
    CScriptWitness() = default;
585
586
42.4M
    bool IsNull() const { return stack.empty(); }
587
588
3.69k
    void SetNull() { stack.clear(); stack.shrink_to_fit(); }
589
590
    std::string ToString() const;
591
592
13.8k
    bool operator==(const CScriptWitness&) const = default;
593
};
594
595
/** A reference to a CScript: the Hash160 of its serialization */
596
class CScriptID : public BaseHash<uint160>
597
{
598
public:
599
5.89M
    CScriptID() : BaseHash() {}
600
    explicit CScriptID(const CScript& in);
601
751k
    explicit CScriptID(const uint160& in) : BaseHash(in) {}
602
};
603
604
/** Test for OP_SUCCESSx opcodes as defined by BIP342. */
605
bool IsOpSuccess(const opcodetype& opcode);
606
607
bool CheckMinimalPush(const std::vector<unsigned char>& data, opcodetype opcode);
608
609
/** Build a script by concatenating other scripts, or any argument accepted by CScript::operator<<. */
610
template<typename... Ts>
611
CScript BuildScript(Ts&&... inputs)
612
4.62M
{
613
4.62M
    CScript ret;
614
4.62M
    int cnt{0};
615
616
10.7M
    ([&ret, &cnt] (Ts&& input) {
617
10.7M
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
3.84M
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 123k]
  Branch (619:17): [True: 0, False: 18.1k]
  Branch (619:17): [True: 1.14M, False: 0]
  Branch (619:17): [True: 0, False: 10.8k]
  Branch (619:17): [True: 0, False: 82.4k]
  Branch (619:17): [True: 156k, False: 0]
  Branch (619:17): [True: 0, False: 156k]
  Branch (619:17): [True: 142k, False: 0]
  Branch (619:17): [True: 0, False: 142k]
  Branch (619:17): [True: 28.2k, False: 0]
  Branch (619:17): [True: 0, False: 28.2k]
  Branch (619:17): [True: 14.4k, False: 0]
  Branch (619:17): [True: 0, False: 14.4k]
  Branch (619:17): [True: 0, False: 653k]
  Branch (619:17): [True: 0, False: 653k]
  Branch (619:17): [True: 45.9k, False: 0]
  Branch (619:17): [True: 0, False: 45.9k]
  Branch (619:17): [True: 0, False: 45.9k]
  Branch (619:17): [True: 151k, False: 0]
  Branch (619:17): [True: 36.2k, False: 0]
  Branch (619:17): [True: 92.4k, False: 0]
  Branch (619:17): [True: 51.6k, False: 0]
  Branch (619:17): [True: 1.20k, False: 0]
  Branch (619:17): [True: 29, False: 0]
620
1.86M
                ret = std::forward<Ts>(input);
621
1.97M
            } else {
622
1.97M
                ret.insert(ret.end(), input.begin(), input.end());
623
1.97M
            }
624
6.85M
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
6.85M
            ret << input;
627
6.85M
        }
628
10.7M
        cnt++;
629
10.7M
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJSt6vectorIhSaIhEEEE7CScriptDpOT_ENKUlOS2_E_clES7_
Line
Count
Source
616
92.6k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
92.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
92.6k
            ret << input;
627
92.6k
        }
628
92.6k
        cnt++;
629
92.6k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_St6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E1_clES8_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_St6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E0_clES8_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_St6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS3_E_clES8_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_St6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E_clES8_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKj10opcodetypeEE7CScriptDpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
30.8k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
30.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
30.8k
            ret << input;
627
30.8k
        }
628
30.8k
        cnt++;
629
30.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKj10opcodetypeEE7CScriptDpOT_ENKUlOS2_E_clES7_
Line
Count
Source
616
30.8k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
30.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
30.8k
            ret << input;
627
30.8k
        }
628
30.8k
        cnt++;
629
30.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E2_clESA_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOiE_clESA_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E1_clESA_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E0_clESA_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlS5_E_clES5_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_ENKUlOS0_E_clESA_
Line
Count
Source
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_EES1_DpOT_ENKUlOS0_E0_clES6_
Line
Count
Source
616
123k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
123k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
123k
            ret << input;
627
123k
        }
628
123k
        cnt++;
629
123k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_EES1_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
123k
    ([&ret, &cnt] (Ts&& input) {
617
123k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
123k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 123k]
620
0
                ret = std::forward<Ts>(input);
621
123k
            } else {
622
123k
                ret.insert(ret.end(), input.begin(), input.end());
623
123k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
123k
        cnt++;
629
123k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_EES1_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
123k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
123k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
123k
            ret << input;
627
123k
        }
628
123k
        cnt++;
629
123k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptEES1_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
18.1k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
18.1k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
18.1k
            ret << input;
627
18.1k
        }
628
18.1k
        cnt++;
629
18.1k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptEES1_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
18.1k
    ([&ret, &cnt] (Ts&& input) {
617
18.1k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
18.1k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 18.1k]
620
0
                ret = std::forward<Ts>(input);
621
18.1k
            } else {
622
18.1k
                ret.insert(ret.end(), input.begin(), input.end());
623
18.1k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
18.1k
        cnt++;
629
18.1k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeEES0_DpOT_ENKUlOS0_E_clES5_
Line
Count
Source
616
1.14M
    ([&ret, &cnt] (Ts&& input) {
617
1.14M
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
1.14M
            if (cnt == 0) {
  Branch (619:17): [True: 1.14M, False: 0]
620
1.14M
                ret = std::forward<Ts>(input);
621
1.14M
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
1.14M
        cnt++;
629
1.14M
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeEES0_DpOT_ENKUlOS1_E_clES5_
Line
Count
Source
616
1.14M
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
1.14M
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
1.14M
            ret << input;
627
1.14M
        }
628
1.14M
        cnt++;
629
1.14M
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E1_clES6_
Line
Count
Source
616
10.8k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
10.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
10.8k
            ret << input;
627
10.8k
        }
628
10.8k
        cnt++;
629
10.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E0_clES6_
Line
Count
Source
616
10.8k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
10.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
10.8k
            ret << input;
627
10.8k
        }
628
10.8k
        cnt++;
629
10.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_R7CScriptS0_EES1_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
10.8k
    ([&ret, &cnt] (Ts&& input) {
617
10.8k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
10.8k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 10.8k]
620
0
                ret = std::forward<Ts>(input);
621
10.8k
            } else {
622
10.8k
                ret.insert(ret.end(), input.begin(), input.end());
623
10.8k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
10.8k
        cnt++;
629
10.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
10.8k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
10.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
10.8k
            ret << input;
627
10.8k
        }
628
10.8k
        cnt++;
629
10.8k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E2_clES6_
Line
Count
Source
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
82.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
82.4k
            ret << input;
627
82.4k
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E1_clES6_
Line
Count
Source
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
82.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
82.4k
            ret << input;
627
82.4k
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E0_clES6_
Line
Count
Source
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
82.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
82.4k
            ret << input;
627
82.4k
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
82.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
82.4k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 82.4k]
620
0
                ret = std::forward<Ts>(input);
621
82.4k
            } else {
622
82.4k
                ret.insert(ret.end(), input.begin(), input.end());
623
82.4k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
82.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
82.4k
            ret << input;
627
82.4k
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeEE7CScriptDpOT_ENKUlOS0_E_clES5_
Line
Count
Source
616
930k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
930k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
930k
            ret << input;
627
930k
        }
628
930k
        cnt++;
629
930k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRS0_EES0_DpOT_ENKUlOS0_E_clES5_
Line
Count
Source
616
156k
    ([&ret, &cnt] (Ts&& input) {
617
156k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
156k
            if (cnt == 0) {
  Branch (619:17): [True: 156k, False: 0]
620
156k
                ret = std::forward<Ts>(input);
621
156k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
156k
        cnt++;
629
156k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRS0_EES0_DpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
156k
    ([&ret, &cnt] (Ts&& input) {
617
156k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
156k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 156k]
620
0
                ret = std::forward<Ts>(input);
621
156k
            } else {
622
156k
                ret.insert(ret.end(), input.begin(), input.end());
623
156k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
156k
        cnt++;
629
156k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRS0_10opcodetypeEES0_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
142k
    ([&ret, &cnt] (Ts&& input) {
617
142k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
142k
            if (cnt == 0) {
  Branch (619:17): [True: 142k, False: 0]
620
142k
                ret = std::forward<Ts>(input);
621
142k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
142k
        cnt++;
629
142k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRS0_10opcodetypeEES0_DpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
142k
    ([&ret, &cnt] (Ts&& input) {
617
142k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
142k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 142k]
620
0
                ret = std::forward<Ts>(input);
621
142k
            } else {
622
142k
                ret.insert(ret.end(), input.begin(), input.end());
623
142k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
142k
        cnt++;
629
142k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRS0_10opcodetypeEES0_DpOT_ENKUlOS2_E_clES6_
Line
Count
Source
616
142k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
142k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
142k
            ret << input;
627
142k
        }
628
142k
        cnt++;
629
142k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
28.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
28.2k
            if (cnt == 0) {
  Branch (619:17): [True: 28.2k, False: 0]
620
28.2k
                ret = std::forward<Ts>(input);
621
28.2k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_ENKUlOS1_E1_clES6_
Line
Count
Source
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
28.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
28.2k
            ret << input;
627
28.2k
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_ENKUlOS1_E0_clES6_
Line
Count
Source
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
28.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
28.2k
            ret << input;
627
28.2k
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
28.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
28.2k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 28.2k]
620
0
                ret = std::forward<Ts>(input);
621
28.2k
            } else {
622
28.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
28.2k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_ENKUlOS1_E_clES6_
Line
Count
Source
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
28.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
28.2k
            ret << input;
627
28.2k
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_EES0_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
14.4k
    ([&ret, &cnt] (Ts&& input) {
617
14.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
14.4k
            if (cnt == 0) {
  Branch (619:17): [True: 14.4k, False: 0]
620
14.4k
                ret = std::forward<Ts>(input);
621
14.4k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
14.4k
        cnt++;
629
14.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_EES0_DpOT_ENKUlOS1_E0_clES6_
Line
Count
Source
616
14.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
14.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
14.4k
            ret << input;
627
14.4k
        }
628
14.4k
        cnt++;
629
14.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_EES0_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
14.4k
    ([&ret, &cnt] (Ts&& input) {
617
14.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
14.4k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 14.4k]
620
0
                ret = std::forward<Ts>(input);
621
14.4k
            } else {
622
14.4k
                ret.insert(ret.end(), input.begin(), input.end());
623
14.4k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
14.4k
        cnt++;
629
14.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_EES0_DpOT_ENKUlOS1_E_clES6_
Line
Count
Source
616
14.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
14.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
14.4k
            ret << input;
627
14.4k
        }
628
14.4k
        cnt++;
629
14.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_ENKUlOS0_E1_clES6_
Line
Count
Source
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
653k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
653k
            ret << input;
627
653k
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_ENKUlS2_E0_clES2_
Line
Count
Source
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
653k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
653k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 653k]
620
0
                ret = std::forward<Ts>(input);
621
653k
            } else {
622
653k
                ret.insert(ret.end(), input.begin(), input.end());
623
653k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_ENKUlOS0_E0_clES6_
Line
Count
Source
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
653k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
653k
            ret << input;
627
653k
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
653k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
653k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 653k]
620
0
                ret = std::forward<Ts>(input);
621
653k
            } else {
622
653k
                ret.insert(ret.end(), input.begin(), input.end());
623
653k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
653k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
653k
            ret << input;
627
653k
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlOS0_E_clES6_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
45.9k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
45.9k
            if (cnt == 0) {
  Branch (619:17): [True: 45.9k, False: 0]
620
45.9k
                ret = std::forward<Ts>(input);
621
45.9k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlOS1_E1_clES6_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
45.9k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
45.9k
            ret << input;
627
45.9k
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlS2_E0_clES2_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
45.9k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
45.9k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 45.9k]
620
0
                ret = std::forward<Ts>(input);
621
45.9k
            } else {
622
45.9k
                ret.insert(ret.end(), input.begin(), input.end());
623
45.9k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlOS1_E0_clES6_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
45.9k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
45.9k
            ret << input;
627
45.9k
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
45.9k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
45.9k
            if (cnt == 0) {
  Branch (619:17): [True: 0, False: 45.9k]
620
0
                ret = std::forward<Ts>(input);
621
45.9k
            } else {
622
45.9k
                ret.insert(ret.end(), input.begin(), input.end());
623
45.9k
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_ENKUlOS1_E_clES6_
Line
Count
Source
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
45.9k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
45.9k
            ret << input;
627
45.9k
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKjEE7CScriptDpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptSt6vectorIhSaIhEEEES0_DpOT_ENKUlOS0_E_clES7_
Line
Count
Source
616
151k
    ([&ret, &cnt] (Ts&& input) {
617
151k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
151k
            if (cnt == 0) {
  Branch (619:17): [True: 151k, False: 0]
620
151k
                ret = std::forward<Ts>(input);
621
151k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
151k
        cnt++;
629
151k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptSt6vectorIhSaIhEEEES0_DpOT_ENKUlOS3_E_clES7_
Line
Count
Source
616
151k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
151k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
151k
            ret << input;
627
151k
        }
628
151k
        cnt++;
629
151k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptm10opcodetypeEES0_DpOT_ENKUlOS0_E_clES5_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
36.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
36.2k
            if (cnt == 0) {
  Branch (619:17): [True: 36.2k, False: 0]
620
36.2k
                ret = std::forward<Ts>(input);
621
36.2k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptm10opcodetypeEES0_DpOT_ENKUlOmE_clES5_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptm10opcodetypeEES0_DpOT_ENKUlOS1_E_clES5_
Line
Count
Source
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_ENKUlOS2_E_clES8_
Line
Count
Source
616
9.47k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
9.47k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
9.47k
            ret << input;
627
9.47k
        }
628
9.47k
        cnt++;
629
9.47k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_ENKUlOS3_E_clES8_
Line
Count
Source
616
9.47k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
9.47k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
9.47k
            ret << input;
627
9.47k
        }
628
9.47k
        cnt++;
629
9.47k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlOS0_E_clES8_
Line
Count
Source
616
92.4k
    ([&ret, &cnt] (Ts&& input) {
617
92.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
92.4k
            if (cnt == 0) {
  Branch (619:17): [True: 92.4k, False: 0]
620
92.4k
                ret = std::forward<Ts>(input);
621
92.4k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
92.4k
        cnt++;
629
92.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlOS3_E_clES8_
Line
Count
Source
616
92.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
92.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
92.4k
            ret << input;
627
92.4k
        }
628
92.4k
        cnt++;
629
92.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlOS4_E_clES8_
Line
Count
Source
616
92.4k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
92.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
92.4k
            ret << input;
627
92.4k
        }
628
92.4k
        cnt++;
629
92.4k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKj10opcodetypeEES0_DpOT_ENKUlOS0_E_clES7_
Line
Count
Source
616
51.6k
    ([&ret, &cnt] (Ts&& input) {
617
51.6k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
51.6k
            if (cnt == 0) {
  Branch (619:17): [True: 51.6k, False: 0]
620
51.6k
                ret = std::forward<Ts>(input);
621
51.6k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
51.6k
        cnt++;
629
51.6k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKj10opcodetypeEES0_DpOT_ENKUlS2_E_clES2_
Line
Count
Source
616
51.6k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
51.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
51.6k
            ret << input;
627
51.6k
        }
628
51.6k
        cnt++;
629
51.6k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKj10opcodetypeEES0_DpOT_ENKUlOS3_E_clES7_
Line
Count
Source
616
51.6k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
51.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
51.6k
            ret << input;
627
51.6k
        }
628
51.6k
        cnt++;
629
51.6k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKlEE7CScriptDpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
15.6k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
15.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
15.6k
            ret << input;
627
15.6k
        }
628
15.6k
        cnt++;
629
15.6k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKSt6vectorIhSaIhEEEE7CScriptDpOT_ENKUlS4_E_clES4_
Line
Count
Source
616
504
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
504
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
504
            ret << input;
627
504
        }
628
504
        cnt++;
629
504
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEEEES0_DpOT_ENKUlOS0_E_clES9_
Line
Count
Source
616
1.20k
    ([&ret, &cnt] (Ts&& input) {
617
1.20k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
1.20k
            if (cnt == 0) {
  Branch (619:17): [True: 1.20k, False: 0]
620
1.20k
                ret = std::forward<Ts>(input);
621
1.20k
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
1.20k
        cnt++;
629
1.20k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEEEES0_DpOT_ENKUlS5_E_clES5_
Line
Count
Source
616
1.20k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
1.20k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
1.20k
            ret << input;
627
1.20k
        }
628
1.20k
        cnt++;
629
1.20k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_ENKUlS4_E_clES4_
Line
Count
Source
616
76
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
76
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
76
            ret << input;
627
76
        }
628
76
        cnt++;
629
76
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_ENKUlOS5_E_clESA_
Line
Count
Source
616
76
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
76
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
76
            ret << input;
627
76
        }
628
76
        cnt++;
629
76
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlOS0_E_clESA_
Line
Count
Source
616
29
    ([&ret, &cnt] (Ts&& input) {
617
29
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
29
            if (cnt == 0) {
  Branch (619:17): [True: 29, False: 0]
620
29
                ret = std::forward<Ts>(input);
621
29
            } else {
622
0
                ret.insert(ret.end(), input.begin(), input.end());
623
0
            }
624
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
            ret << input;
627
        }
628
29
        cnt++;
629
29
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlS5_E_clES5_
Line
Count
Source
616
29
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
29
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
29
            ret << input;
627
29
        }
628
29
        cnt++;
629
29
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_ENKUlOS6_E_clESA_
Line
Count
Source
616
29
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
29
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
29
            ret << input;
627
29
        }
628
29
        cnt++;
629
29
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKmEE7CScriptDpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
4.62k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
4.62k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
4.62k
            ret << input;
627
4.62k
        }
628
4.62k
        cnt++;
629
4.62k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRKiEE7CScriptDpOT_ENKUlS1_E_clES1_
Line
Count
Source
616
4.62k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
4.62k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
4.62k
            ret << input;
627
4.62k
        }
628
4.62k
        cnt++;
629
4.62k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRjEE7CScriptDpOT_ENKUlS0_E_clES0_
Line
Count
Source
616
601k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
601k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
601k
            ret << input;
627
601k
        }
628
601k
        cnt++;
629
601k
    } (std::forward<Ts>(inputs)), ...);
_ZZ11BuildScriptIJRmEE7CScriptDpOT_ENKUlS0_E_clES0_
Line
Count
Source
616
65.2k
    ([&ret, &cnt] (Ts&& input) {
617
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
            if (cnt == 0) {
620
                ret = std::forward<Ts>(input);
621
            } else {
622
                ret.insert(ret.end(), input.begin(), input.end());
623
            }
624
65.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
65.2k
            ret << input;
627
65.2k
        }
628
65.2k
        cnt++;
629
65.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
4.62M
    return ret;
632
4.62M
}
_Z11BuildScriptIJSt6vectorIhSaIhEEEE7CScriptDpOT_
Line
Count
Source
612
92.6k
{
613
92.6k
    CScript ret;
614
92.6k
    int cnt{0};
615
616
92.6k
    ([&ret, &cnt] (Ts&& input) {
617
92.6k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
92.6k
            if (cnt == 0) {
620
92.6k
                ret = std::forward<Ts>(input);
621
92.6k
            } else {
622
92.6k
                ret.insert(ret.end(), input.begin(), input.end());
623
92.6k
            }
624
92.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
92.6k
            ret << input;
627
92.6k
        }
628
92.6k
        cnt++;
629
92.6k
    } (std::forward<Ts>(inputs)), ...);
630
631
92.6k
    return ret;
632
92.6k
}
_Z11BuildScriptIJ10opcodetypeS0_St6vectorIhSaIhEES0_EE7CScriptDpOT_
Line
Count
Source
612
36.2k
{
613
36.2k
    CScript ret;
614
36.2k
    int cnt{0};
615
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
36.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
36.2k
            if (cnt == 0) {
620
36.2k
                ret = std::forward<Ts>(input);
621
36.2k
            } else {
622
36.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
36.2k
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
36.2k
    return ret;
632
36.2k
}
_Z11BuildScriptIJRKj10opcodetypeEE7CScriptDpOT_
Line
Count
Source
612
30.8k
{
613
30.8k
    CScript ret;
614
30.8k
    int cnt{0};
615
616
30.8k
    ([&ret, &cnt] (Ts&& input) {
617
30.8k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
30.8k
            if (cnt == 0) {
620
30.8k
                ret = std::forward<Ts>(input);
621
30.8k
            } else {
622
30.8k
                ret.insert(ret.end(), input.begin(), input.end());
623
30.8k
            }
624
30.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
30.8k
            ret << input;
627
30.8k
        }
628
30.8k
        cnt++;
629
30.8k
    } (std::forward<Ts>(inputs)), ...);
630
631
30.8k
    return ret;
632
30.8k
}
_Z11BuildScriptIJ10opcodetypeiS0_S0_RKSt6vectorIhSaIhEES0_EE7CScriptDpOT_
Line
Count
Source
612
39.7k
{
613
39.7k
    CScript ret;
614
39.7k
    int cnt{0};
615
616
39.7k
    ([&ret, &cnt] (Ts&& input) {
617
39.7k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
39.7k
            if (cnt == 0) {
620
39.7k
                ret = std::forward<Ts>(input);
621
39.7k
            } else {
622
39.7k
                ret.insert(ret.end(), input.begin(), input.end());
623
39.7k
            }
624
39.7k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
39.7k
            ret << input;
627
39.7k
        }
628
39.7k
        cnt++;
629
39.7k
    } (std::forward<Ts>(inputs)), ...);
630
631
39.7k
    return ret;
632
39.7k
}
_Z11BuildScriptIJ10opcodetypeR7CScriptS0_EES1_DpOT_
Line
Count
Source
612
123k
{
613
123k
    CScript ret;
614
123k
    int cnt{0};
615
616
123k
    ([&ret, &cnt] (Ts&& input) {
617
123k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
123k
            if (cnt == 0) {
620
123k
                ret = std::forward<Ts>(input);
621
123k
            } else {
622
123k
                ret.insert(ret.end(), input.begin(), input.end());
623
123k
            }
624
123k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
123k
            ret << input;
627
123k
        }
628
123k
        cnt++;
629
123k
    } (std::forward<Ts>(inputs)), ...);
630
631
123k
    return ret;
632
123k
}
_Z11BuildScriptIJ10opcodetypeR7CScriptEES1_DpOT_
Line
Count
Source
612
18.1k
{
613
18.1k
    CScript ret;
614
18.1k
    int cnt{0};
615
616
18.1k
    ([&ret, &cnt] (Ts&& input) {
617
18.1k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
18.1k
            if (cnt == 0) {
620
18.1k
                ret = std::forward<Ts>(input);
621
18.1k
            } else {
622
18.1k
                ret.insert(ret.end(), input.begin(), input.end());
623
18.1k
            }
624
18.1k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
18.1k
            ret << input;
627
18.1k
        }
628
18.1k
        cnt++;
629
18.1k
    } (std::forward<Ts>(inputs)), ...);
630
631
18.1k
    return ret;
632
18.1k
}
_Z11BuildScriptIJ7CScript10opcodetypeEES0_DpOT_
Line
Count
Source
612
1.14M
{
613
1.14M
    CScript ret;
614
1.14M
    int cnt{0};
615
616
1.14M
    ([&ret, &cnt] (Ts&& input) {
617
1.14M
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
1.14M
            if (cnt == 0) {
620
1.14M
                ret = std::forward<Ts>(input);
621
1.14M
            } else {
622
1.14M
                ret.insert(ret.end(), input.begin(), input.end());
623
1.14M
            }
624
1.14M
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
1.14M
            ret << input;
627
1.14M
        }
628
1.14M
        cnt++;
629
1.14M
    } (std::forward<Ts>(inputs)), ...);
630
631
1.14M
    return ret;
632
1.14M
}
_Z11BuildScriptIJ10opcodetypeS0_R7CScriptS0_EES1_DpOT_
Line
Count
Source
612
10.8k
{
613
10.8k
    CScript ret;
614
10.8k
    int cnt{0};
615
616
10.8k
    ([&ret, &cnt] (Ts&& input) {
617
10.8k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
10.8k
            if (cnt == 0) {
620
10.8k
                ret = std::forward<Ts>(input);
621
10.8k
            } else {
622
10.8k
                ret.insert(ret.end(), input.begin(), input.end());
623
10.8k
            }
624
10.8k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
10.8k
            ret << input;
627
10.8k
        }
628
10.8k
        cnt++;
629
10.8k
    } (std::forward<Ts>(inputs)), ...);
630
631
10.8k
    return ret;
632
10.8k
}
_Z11BuildScriptIJ10opcodetypeS0_S0_R7CScriptS0_EES1_DpOT_
Line
Count
Source
612
82.4k
{
613
82.4k
    CScript ret;
614
82.4k
    int cnt{0};
615
616
82.4k
    ([&ret, &cnt] (Ts&& input) {
617
82.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
82.4k
            if (cnt == 0) {
620
82.4k
                ret = std::forward<Ts>(input);
621
82.4k
            } else {
622
82.4k
                ret.insert(ret.end(), input.begin(), input.end());
623
82.4k
            }
624
82.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
82.4k
            ret << input;
627
82.4k
        }
628
82.4k
        cnt++;
629
82.4k
    } (std::forward<Ts>(inputs)), ...);
630
631
82.4k
    return ret;
632
82.4k
}
_Z11BuildScriptIJ10opcodetypeEE7CScriptDpOT_
Line
Count
Source
612
930k
{
613
930k
    CScript ret;
614
930k
    int cnt{0};
615
616
930k
    ([&ret, &cnt] (Ts&& input) {
617
930k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
930k
            if (cnt == 0) {
620
930k
                ret = std::forward<Ts>(input);
621
930k
            } else {
622
930k
                ret.insert(ret.end(), input.begin(), input.end());
623
930k
            }
624
930k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
930k
            ret << input;
627
930k
        }
628
930k
        cnt++;
629
930k
    } (std::forward<Ts>(inputs)), ...);
630
631
930k
    return ret;
632
930k
}
_Z11BuildScriptIJ7CScriptRS0_EES0_DpOT_
Line
Count
Source
612
156k
{
613
156k
    CScript ret;
614
156k
    int cnt{0};
615
616
156k
    ([&ret, &cnt] (Ts&& input) {
617
156k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
156k
            if (cnt == 0) {
620
156k
                ret = std::forward<Ts>(input);
621
156k
            } else {
622
156k
                ret.insert(ret.end(), input.begin(), input.end());
623
156k
            }
624
156k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
156k
            ret << input;
627
156k
        }
628
156k
        cnt++;
629
156k
    } (std::forward<Ts>(inputs)), ...);
630
631
156k
    return ret;
632
156k
}
_Z11BuildScriptIJ7CScriptRS0_10opcodetypeEES0_DpOT_
Line
Count
Source
612
142k
{
613
142k
    CScript ret;
614
142k
    int cnt{0};
615
616
142k
    ([&ret, &cnt] (Ts&& input) {
617
142k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
142k
            if (cnt == 0) {
620
142k
                ret = std::forward<Ts>(input);
621
142k
            } else {
622
142k
                ret.insert(ret.end(), input.begin(), input.end());
623
142k
            }
624
142k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
142k
            ret << input;
627
142k
        }
628
142k
        cnt++;
629
142k
    } (std::forward<Ts>(inputs)), ...);
630
631
142k
    return ret;
632
142k
}
_Z11BuildScriptIJ7CScript10opcodetypeS1_RS0_S1_EES0_DpOT_
Line
Count
Source
612
28.2k
{
613
28.2k
    CScript ret;
614
28.2k
    int cnt{0};
615
616
28.2k
    ([&ret, &cnt] (Ts&& input) {
617
28.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
28.2k
            if (cnt == 0) {
620
28.2k
                ret = std::forward<Ts>(input);
621
28.2k
            } else {
622
28.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
28.2k
            }
624
28.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
28.2k
            ret << input;
627
28.2k
        }
628
28.2k
        cnt++;
629
28.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
28.2k
    return ret;
632
28.2k
}
_Z11BuildScriptIJ7CScript10opcodetypeRS0_S1_EES0_DpOT_
Line
Count
Source
612
14.4k
{
613
14.4k
    CScript ret;
614
14.4k
    int cnt{0};
615
616
14.4k
    ([&ret, &cnt] (Ts&& input) {
617
14.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
14.4k
            if (cnt == 0) {
620
14.4k
                ret = std::forward<Ts>(input);
621
14.4k
            } else {
622
14.4k
                ret.insert(ret.end(), input.begin(), input.end());
623
14.4k
            }
624
14.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
14.4k
            ret << input;
627
14.4k
        }
628
14.4k
        cnt++;
629
14.4k
    } (std::forward<Ts>(inputs)), ...);
630
631
14.4k
    return ret;
632
14.4k
}
_Z11BuildScriptIJ10opcodetypeR7CScriptS0_S2_S0_EES1_DpOT_
Line
Count
Source
612
653k
{
613
653k
    CScript ret;
614
653k
    int cnt{0};
615
616
653k
    ([&ret, &cnt] (Ts&& input) {
617
653k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
653k
            if (cnt == 0) {
620
653k
                ret = std::forward<Ts>(input);
621
653k
            } else {
622
653k
                ret.insert(ret.end(), input.begin(), input.end());
623
653k
            }
624
653k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
653k
            ret << input;
627
653k
        }
628
653k
        cnt++;
629
653k
    } (std::forward<Ts>(inputs)), ...);
630
631
653k
    return ret;
632
653k
}
_Z11BuildScriptIJ7CScript10opcodetypeRS0_S1_S2_S1_EES0_DpOT_
Line
Count
Source
612
45.9k
{
613
45.9k
    CScript ret;
614
45.9k
    int cnt{0};
615
616
45.9k
    ([&ret, &cnt] (Ts&& input) {
617
45.9k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
45.9k
            if (cnt == 0) {
620
45.9k
                ret = std::forward<Ts>(input);
621
45.9k
            } else {
622
45.9k
                ret.insert(ret.end(), input.begin(), input.end());
623
45.9k
            }
624
45.9k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
45.9k
            ret << input;
627
45.9k
        }
628
45.9k
        cnt++;
629
45.9k
    } (std::forward<Ts>(inputs)), ...);
630
631
45.9k
    return ret;
632
45.9k
}
_Z11BuildScriptIJRKjEE7CScriptDpOT_
Line
Count
Source
612
36.2k
{
613
36.2k
    CScript ret;
614
36.2k
    int cnt{0};
615
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
36.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
36.2k
            if (cnt == 0) {
620
36.2k
                ret = std::forward<Ts>(input);
621
36.2k
            } else {
622
36.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
36.2k
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
36.2k
    return ret;
632
36.2k
}
_Z11BuildScriptIJ7CScriptSt6vectorIhSaIhEEEES0_DpOT_
Line
Count
Source
612
151k
{
613
151k
    CScript ret;
614
151k
    int cnt{0};
615
616
151k
    ([&ret, &cnt] (Ts&& input) {
617
151k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
151k
            if (cnt == 0) {
620
151k
                ret = std::forward<Ts>(input);
621
151k
            } else {
622
151k
                ret.insert(ret.end(), input.begin(), input.end());
623
151k
            }
624
151k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
151k
            ret << input;
627
151k
        }
628
151k
        cnt++;
629
151k
    } (std::forward<Ts>(inputs)), ...);
630
631
151k
    return ret;
632
151k
}
_Z11BuildScriptIJ7CScriptm10opcodetypeEES0_DpOT_
Line
Count
Source
612
36.2k
{
613
36.2k
    CScript ret;
614
36.2k
    int cnt{0};
615
616
36.2k
    ([&ret, &cnt] (Ts&& input) {
617
36.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
36.2k
            if (cnt == 0) {
620
36.2k
                ret = std::forward<Ts>(input);
621
36.2k
            } else {
622
36.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
36.2k
            }
624
36.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
36.2k
            ret << input;
627
36.2k
        }
628
36.2k
        cnt++;
629
36.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
36.2k
    return ret;
632
36.2k
}
_Z11BuildScriptIJSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_
Line
Count
Source
612
9.47k
{
613
9.47k
    CScript ret;
614
9.47k
    int cnt{0};
615
616
9.47k
    ([&ret, &cnt] (Ts&& input) {
617
9.47k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
9.47k
            if (cnt == 0) {
620
9.47k
                ret = std::forward<Ts>(input);
621
9.47k
            } else {
622
9.47k
                ret.insert(ret.end(), input.begin(), input.end());
623
9.47k
            }
624
9.47k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
9.47k
            ret << input;
627
9.47k
        }
628
9.47k
        cnt++;
629
9.47k
    } (std::forward<Ts>(inputs)), ...);
630
631
9.47k
    return ret;
632
9.47k
}
_Z11BuildScriptIJ7CScriptSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_
Line
Count
Source
612
92.4k
{
613
92.4k
    CScript ret;
614
92.4k
    int cnt{0};
615
616
92.4k
    ([&ret, &cnt] (Ts&& input) {
617
92.4k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
92.4k
            if (cnt == 0) {
620
92.4k
                ret = std::forward<Ts>(input);
621
92.4k
            } else {
622
92.4k
                ret.insert(ret.end(), input.begin(), input.end());
623
92.4k
            }
624
92.4k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
92.4k
            ret << input;
627
92.4k
        }
628
92.4k
        cnt++;
629
92.4k
    } (std::forward<Ts>(inputs)), ...);
630
631
92.4k
    return ret;
632
92.4k
}
_Z11BuildScriptIJ7CScriptRKj10opcodetypeEES0_DpOT_
Line
Count
Source
612
51.6k
{
613
51.6k
    CScript ret;
614
51.6k
    int cnt{0};
615
616
51.6k
    ([&ret, &cnt] (Ts&& input) {
617
51.6k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
51.6k
            if (cnt == 0) {
620
51.6k
                ret = std::forward<Ts>(input);
621
51.6k
            } else {
622
51.6k
                ret.insert(ret.end(), input.begin(), input.end());
623
51.6k
            }
624
51.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
51.6k
            ret << input;
627
51.6k
        }
628
51.6k
        cnt++;
629
51.6k
    } (std::forward<Ts>(inputs)), ...);
630
631
51.6k
    return ret;
632
51.6k
}
_Z11BuildScriptIJRKlEE7CScriptDpOT_
Line
Count
Source
612
15.6k
{
613
15.6k
    CScript ret;
614
15.6k
    int cnt{0};
615
616
15.6k
    ([&ret, &cnt] (Ts&& input) {
617
15.6k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
15.6k
            if (cnt == 0) {
620
15.6k
                ret = std::forward<Ts>(input);
621
15.6k
            } else {
622
15.6k
                ret.insert(ret.end(), input.begin(), input.end());
623
15.6k
            }
624
15.6k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
15.6k
            ret << input;
627
15.6k
        }
628
15.6k
        cnt++;
629
15.6k
    } (std::forward<Ts>(inputs)), ...);
630
631
15.6k
    return ret;
632
15.6k
}
_Z11BuildScriptIJRKSt6vectorIhSaIhEEEE7CScriptDpOT_
Line
Count
Source
612
504
{
613
504
    CScript ret;
614
504
    int cnt{0};
615
616
504
    ([&ret, &cnt] (Ts&& input) {
617
504
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
504
            if (cnt == 0) {
620
504
                ret = std::forward<Ts>(input);
621
504
            } else {
622
504
                ret.insert(ret.end(), input.begin(), input.end());
623
504
            }
624
504
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
504
            ret << input;
627
504
        }
628
504
        cnt++;
629
504
    } (std::forward<Ts>(inputs)), ...);
630
631
504
    return ret;
632
504
}
_Z11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEEEES0_DpOT_
Line
Count
Source
612
1.20k
{
613
1.20k
    CScript ret;
614
1.20k
    int cnt{0};
615
616
1.20k
    ([&ret, &cnt] (Ts&& input) {
617
1.20k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
1.20k
            if (cnt == 0) {
620
1.20k
                ret = std::forward<Ts>(input);
621
1.20k
            } else {
622
1.20k
                ret.insert(ret.end(), input.begin(), input.end());
623
1.20k
            }
624
1.20k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
1.20k
            ret << input;
627
1.20k
        }
628
1.20k
        cnt++;
629
1.20k
    } (std::forward<Ts>(inputs)), ...);
630
631
1.20k
    return ret;
632
1.20k
}
_Z11BuildScriptIJRKSt6vectorIhSaIhEE10opcodetypeEE7CScriptDpOT_
Line
Count
Source
612
76
{
613
76
    CScript ret;
614
76
    int cnt{0};
615
616
76
    ([&ret, &cnt] (Ts&& input) {
617
76
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
76
            if (cnt == 0) {
620
76
                ret = std::forward<Ts>(input);
621
76
            } else {
622
76
                ret.insert(ret.end(), input.begin(), input.end());
623
76
            }
624
76
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
76
            ret << input;
627
76
        }
628
76
        cnt++;
629
76
    } (std::forward<Ts>(inputs)), ...);
630
631
76
    return ret;
632
76
}
_Z11BuildScriptIJ7CScriptRKSt6vectorIhSaIhEE10opcodetypeEES0_DpOT_
Line
Count
Source
612
29
{
613
29
    CScript ret;
614
29
    int cnt{0};
615
616
29
    ([&ret, &cnt] (Ts&& input) {
617
29
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
29
            if (cnt == 0) {
620
29
                ret = std::forward<Ts>(input);
621
29
            } else {
622
29
                ret.insert(ret.end(), input.begin(), input.end());
623
29
            }
624
29
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
29
            ret << input;
627
29
        }
628
29
        cnt++;
629
29
    } (std::forward<Ts>(inputs)), ...);
630
631
29
    return ret;
632
29
}
_Z11BuildScriptIJRKmEE7CScriptDpOT_
Line
Count
Source
612
4.62k
{
613
4.62k
    CScript ret;
614
4.62k
    int cnt{0};
615
616
4.62k
    ([&ret, &cnt] (Ts&& input) {
617
4.62k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
4.62k
            if (cnt == 0) {
620
4.62k
                ret = std::forward<Ts>(input);
621
4.62k
            } else {
622
4.62k
                ret.insert(ret.end(), input.begin(), input.end());
623
4.62k
            }
624
4.62k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
4.62k
            ret << input;
627
4.62k
        }
628
4.62k
        cnt++;
629
4.62k
    } (std::forward<Ts>(inputs)), ...);
630
631
4.62k
    return ret;
632
4.62k
}
_Z11BuildScriptIJRKiEE7CScriptDpOT_
Line
Count
Source
612
4.62k
{
613
4.62k
    CScript ret;
614
4.62k
    int cnt{0};
615
616
4.62k
    ([&ret, &cnt] (Ts&& input) {
617
4.62k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
4.62k
            if (cnt == 0) {
620
4.62k
                ret = std::forward<Ts>(input);
621
4.62k
            } else {
622
4.62k
                ret.insert(ret.end(), input.begin(), input.end());
623
4.62k
            }
624
4.62k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
4.62k
            ret << input;
627
4.62k
        }
628
4.62k
        cnt++;
629
4.62k
    } (std::forward<Ts>(inputs)), ...);
630
631
4.62k
    return ret;
632
4.62k
}
_Z11BuildScriptIJRjEE7CScriptDpOT_
Line
Count
Source
612
601k
{
613
601k
    CScript ret;
614
601k
    int cnt{0};
615
616
601k
    ([&ret, &cnt] (Ts&& input) {
617
601k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
601k
            if (cnt == 0) {
620
601k
                ret = std::forward<Ts>(input);
621
601k
            } else {
622
601k
                ret.insert(ret.end(), input.begin(), input.end());
623
601k
            }
624
601k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
601k
            ret << input;
627
601k
        }
628
601k
        cnt++;
629
601k
    } (std::forward<Ts>(inputs)), ...);
630
631
601k
    return ret;
632
601k
}
_Z11BuildScriptIJRmEE7CScriptDpOT_
Line
Count
Source
612
65.2k
{
613
65.2k
    CScript ret;
614
65.2k
    int cnt{0};
615
616
65.2k
    ([&ret, &cnt] (Ts&& input) {
617
65.2k
        if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<Ts>>, CScript>) {
618
            // If it is a CScript, extend ret with it. Move or copy the first element instead.
619
65.2k
            if (cnt == 0) {
620
65.2k
                ret = std::forward<Ts>(input);
621
65.2k
            } else {
622
65.2k
                ret.insert(ret.end(), input.begin(), input.end());
623
65.2k
            }
624
65.2k
        } else {
625
            // Otherwise invoke CScript::operator<<.
626
65.2k
            ret << input;
627
65.2k
        }
628
65.2k
        cnt++;
629
65.2k
    } (std::forward<Ts>(inputs)), ...);
630
631
65.2k
    return ret;
632
65.2k
}
633
634
#endif // BITCOIN_SCRIPT_SCRIPT_H