Skip to content

Commit 33d850b

Browse files
committed
Bug#34842662 UPGRADE RAPIDJSON TO VERSION 1.1.0
Change-Id: I0134bbd0adb0da2552221c2cf9975945c88dd8bc
1 parent 6b2f9a5 commit 33d850b

36 files changed

+2376
-524
lines changed

cdk/extra/rapidjson/include/rapidjson/allocators.h

Lines changed: 465 additions & 56 deletions
Large diffs are not rendered by default.

cdk/extra/rapidjson/include/rapidjson/cursorstreamwrapper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/document.h

Lines changed: 449 additions & 88 deletions
Large diffs are not rendered by default.

cdk/extra/rapidjson/include/rapidjson/encodedstream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/encodings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/error/en.h

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -65,6 +65,54 @@ inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErro
6565
}
6666
}
6767

68+
//! Maps error code of validation into error message.
69+
/*!
70+
\ingroup RAPIDJSON_ERRORS
71+
\param validateErrorCode Error code obtained from validator.
72+
\return the error message.
73+
\note User can make a copy of this function for localization.
74+
Using switch-case is safer for future modification of error codes.
75+
*/
76+
inline const RAPIDJSON_ERROR_CHARTYPE* GetValidateError_En(ValidateErrorCode validateErrorCode) {
77+
switch (validateErrorCode) {
78+
case kValidateErrors: return RAPIDJSON_ERROR_STRING("One or more validation errors have occurred");
79+
case kValidateErrorNone: return RAPIDJSON_ERROR_STRING("No error.");
80+
81+
case kValidateErrorMultipleOf: return RAPIDJSON_ERROR_STRING("Number '%actual' is not a multiple of the 'multipleOf' value '%expected'.");
82+
case kValidateErrorMaximum: return RAPIDJSON_ERROR_STRING("Number '%actual' is greater than the 'maximum' value '%expected'.");
83+
case kValidateErrorExclusiveMaximum: return RAPIDJSON_ERROR_STRING("Number '%actual' is greater than or equal to the 'exclusiveMaximum' value '%expected'.");
84+
case kValidateErrorMinimum: return RAPIDJSON_ERROR_STRING("Number '%actual' is less than the 'minimum' value '%expected'.");
85+
case kValidateErrorExclusiveMinimum: return RAPIDJSON_ERROR_STRING("Number '%actual' is less than or equal to the 'exclusiveMinimum' value '%expected'.");
86+
87+
case kValidateErrorMaxLength: return RAPIDJSON_ERROR_STRING("String '%actual' is longer than the 'maxLength' value '%expected'.");
88+
case kValidateErrorMinLength: return RAPIDJSON_ERROR_STRING("String '%actual' is shorter than the 'minLength' value '%expected'.");
89+
case kValidateErrorPattern: return RAPIDJSON_ERROR_STRING("String '%actual' does not match the 'pattern' regular expression.");
90+
91+
case kValidateErrorMaxItems: return RAPIDJSON_ERROR_STRING("Array of length '%actual' is longer than the 'maxItems' value '%expected'.");
92+
case kValidateErrorMinItems: return RAPIDJSON_ERROR_STRING("Array of length '%actual' is shorter than the 'minItems' value '%expected'.");
93+
case kValidateErrorUniqueItems: return RAPIDJSON_ERROR_STRING("Array has duplicate items at indices '%duplicates' but 'uniqueItems' is true.");
94+
case kValidateErrorAdditionalItems: return RAPIDJSON_ERROR_STRING("Array has an additional item at index '%disallowed' that is not allowed by the schema.");
95+
96+
case kValidateErrorMaxProperties: return RAPIDJSON_ERROR_STRING("Object has '%actual' members which is more than 'maxProperties' value '%expected'.");
97+
case kValidateErrorMinProperties: return RAPIDJSON_ERROR_STRING("Object has '%actual' members which is less than 'minProperties' value '%expected'.");
98+
case kValidateErrorRequired: return RAPIDJSON_ERROR_STRING("Object is missing the following members required by the schema: '%missing'.");
99+
case kValidateErrorAdditionalProperties: return RAPIDJSON_ERROR_STRING("Object has an additional member '%disallowed' that is not allowed by the schema.");
100+
case kValidateErrorPatternProperties: return RAPIDJSON_ERROR_STRING("Object has 'patternProperties' that are not allowed by the schema.");
101+
case kValidateErrorDependencies: return RAPIDJSON_ERROR_STRING("Object has missing property or schema dependencies, refer to following errors.");
102+
103+
case kValidateErrorEnum: return RAPIDJSON_ERROR_STRING("Property has a value that is not one of its allowed enumerated values.");
104+
case kValidateErrorType: return RAPIDJSON_ERROR_STRING("Property has a type '%actual' that is not in the following list: '%expected'.");
105+
106+
case kValidateErrorOneOf: return RAPIDJSON_ERROR_STRING("Property did not match any of the sub-schemas specified by 'oneOf', refer to following errors.");
107+
case kValidateErrorOneOfMatch: return RAPIDJSON_ERROR_STRING("Property matched more than one of the sub-schemas specified by 'oneOf'.");
108+
case kValidateErrorAllOf: return RAPIDJSON_ERROR_STRING("Property did not match all of the sub-schemas specified by 'allOf', refer to following errors.");
109+
case kValidateErrorAnyOf: return RAPIDJSON_ERROR_STRING("Property did not match any of the sub-schemas specified by 'anyOf', refer to following errors.");
110+
case kValidateErrorNot: return RAPIDJSON_ERROR_STRING("Property matched the sub-schema specified by 'not'.");
111+
112+
default: return RAPIDJSON_ERROR_STRING("Unknown error.");
113+
}
114+
}
115+
68116
RAPIDJSON_NAMESPACE_END
69117

70118
#ifdef __clang__

cdk/extra/rapidjson/include/rapidjson/error/error.h

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -152,6 +152,61 @@ struct ParseResult {
152152
*/
153153
typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode);
154154

155+
///////////////////////////////////////////////////////////////////////////////
156+
// ValidateErrorCode
157+
158+
//! Error codes when validating.
159+
/*! \ingroup RAPIDJSON_ERRORS
160+
\see GenericSchemaValidator
161+
*/
162+
enum ValidateErrorCode {
163+
kValidateErrors = -1, //!< Top level error code when kValidateContinueOnErrorsFlag set.
164+
kValidateErrorNone = 0, //!< No error.
165+
166+
kValidateErrorMultipleOf, //!< Number is not a multiple of the 'multipleOf' value.
167+
kValidateErrorMaximum, //!< Number is greater than the 'maximum' value.
168+
kValidateErrorExclusiveMaximum, //!< Number is greater than or equal to the 'maximum' value.
169+
kValidateErrorMinimum, //!< Number is less than the 'minimum' value.
170+
kValidateErrorExclusiveMinimum, //!< Number is less than or equal to the 'minimum' value.
171+
172+
kValidateErrorMaxLength, //!< String is longer than the 'maxLength' value.
173+
kValidateErrorMinLength, //!< String is longer than the 'maxLength' value.
174+
kValidateErrorPattern, //!< String does not match the 'pattern' regular expression.
175+
176+
kValidateErrorMaxItems, //!< Array is longer than the 'maxItems' value.
177+
kValidateErrorMinItems, //!< Array is shorter than the 'minItems' value.
178+
kValidateErrorUniqueItems, //!< Array has duplicate items but 'uniqueItems' is true.
179+
kValidateErrorAdditionalItems, //!< Array has additional items that are not allowed by the schema.
180+
181+
kValidateErrorMaxProperties, //!< Object has more members than 'maxProperties' value.
182+
kValidateErrorMinProperties, //!< Object has less members than 'minProperties' value.
183+
kValidateErrorRequired, //!< Object is missing one or more members required by the schema.
184+
kValidateErrorAdditionalProperties, //!< Object has additional members that are not allowed by the schema.
185+
kValidateErrorPatternProperties, //!< See other errors.
186+
kValidateErrorDependencies, //!< Object has missing property or schema dependencies.
187+
188+
kValidateErrorEnum, //!< Property has a value that is not one of its allowed enumerated values
189+
kValidateErrorType, //!< Property has a type that is not allowed by the schema..
190+
191+
kValidateErrorOneOf, //!< Property did not match any of the sub-schemas specified by 'oneOf'.
192+
kValidateErrorOneOfMatch, //!< Property matched more than one of the sub-schemas specified by 'oneOf'.
193+
kValidateErrorAllOf, //!< Property did not match all of the sub-schemas specified by 'allOf'.
194+
kValidateErrorAnyOf, //!< Property did not match any of the sub-schemas specified by 'anyOf'.
195+
kValidateErrorNot //!< Property matched the sub-schema specified by 'not'.
196+
};
197+
198+
//! Function pointer type of GetValidateError().
199+
/*! \ingroup RAPIDJSON_ERRORS
200+
201+
This is the prototype for \c GetValidateError_X(), where \c X is a locale.
202+
User can dynamically change locale in runtime, e.g.:
203+
\code
204+
GetValidateErrorFunc GetValidateError = GetValidateError_En; // or whatever
205+
const RAPIDJSON_ERROR_CHARTYPE* s = GetValidateError(validator.GetInvalidSchemaCode());
206+
\endcode
207+
*/
208+
typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetValidateErrorFunc)(ValidateErrorCode);
209+
155210
RAPIDJSON_NAMESPACE_END
156211

157212
#ifdef __clang__

cdk/extra/rapidjson/include/rapidjson/filereadstream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/filewritestream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/fwd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

cdk/extra/rapidjson/include/rapidjson/internal/biginteger.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -17,9 +17,13 @@
1717

1818
#include "../rapidjson.h"
1919

20-
#if defined(_MSC_VER) && !__INTEL_COMPILER && defined(_M_AMD64)
20+
#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_M_AMD64)
2121
#include <intrin.h> // for _umul128
22+
#if !defined(_ARM64EC_)
2223
#pragma intrinsic(_umul128)
24+
#else
25+
#pragma comment(lib,"softintrin")
26+
#endif
2327
#endif
2428

2529
RAPIDJSON_NAMESPACE_BEGIN
@@ -37,7 +41,8 @@ class BigInteger {
3741
digits_[0] = u;
3842
}
3943

40-
BigInteger(const char* decimals, size_t length) : count_(1) {
44+
template<typename Ch>
45+
BigInteger(const Ch* decimals, size_t length) : count_(1) {
4146
RAPIDJSON_ASSERT(length > 0);
4247
digits_[0] = 0;
4348
size_t i = 0;
@@ -221,7 +226,8 @@ class BigInteger {
221226
bool IsZero() const { return count_ == 1 && digits_[0] == 0; }
222227

223228
private:
224-
void AppendDecimal64(const char* begin, const char* end) {
229+
template<typename Ch>
230+
void AppendDecimal64(const Ch* begin, const Ch* end) {
225231
uint64_t u = ParseUint64(begin, end);
226232
if (IsZero())
227233
*this = u;
@@ -236,11 +242,12 @@ class BigInteger {
236242
digits_[count_++] = digit;
237243
}
238244

239-
static uint64_t ParseUint64(const char* begin, const char* end) {
245+
template<typename Ch>
246+
static uint64_t ParseUint64(const Ch* begin, const Ch* end) {
240247
uint64_t r = 0;
241-
for (const char* p = begin; p != end; ++p) {
242-
RAPIDJSON_ASSERT(*p >= '0' && *p <= '9');
243-
r = r * 10u + static_cast<unsigned>(*p - '0');
248+
for (const Ch* p = begin; p != end; ++p) {
249+
RAPIDJSON_ASSERT(*p >= Ch('0') && *p <= Ch('9'));
250+
r = r * 10u + static_cast<unsigned>(*p - Ch('0'));
244251
}
245252
return r;
246253
}

cdk/extra/rapidjson/include/rapidjson/internal/clzll.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -17,7 +17,7 @@
1717

1818
#include "../rapidjson.h"
1919

20-
#if defined(_MSC_VER)
20+
#if defined(_MSC_VER) && !defined(UNDER_CE)
2121
#include <intrin.h>
2222
#if defined(_WIN64)
2323
#pragma intrinsic(_BitScanReverse64)
@@ -29,16 +29,12 @@
2929
RAPIDJSON_NAMESPACE_BEGIN
3030
namespace internal {
3131

32-
#if (defined(__GNUC__) && __GNUC__ >= 4) || RAPIDJSON_HAS_BUILTIN(__builtin_clzll)
33-
#define RAPIDJSON_CLZLL __builtin_clzll
34-
#else
35-
3632
inline uint32_t clzll(uint64_t x) {
3733
// Passing 0 to __builtin_clzll is UB in GCC and results in an
3834
// infinite loop in the software implementation.
3935
RAPIDJSON_ASSERT(x != 0);
4036

41-
#if defined(_MSC_VER)
37+
#if defined(_MSC_VER) && !defined(UNDER_CE)
4238
unsigned long r = 0;
4339
#if defined(_WIN64)
4440
_BitScanReverse64(&r, x);
@@ -52,8 +48,12 @@ inline uint32_t clzll(uint64_t x) {
5248
#endif // _WIN64
5349

5450
return 63 - r;
51+
#elif (defined(__GNUC__) && __GNUC__ >= 4) || RAPIDJSON_HAS_BUILTIN(__builtin_clzll)
52+
// __builtin_clzll wrapper
53+
return static_cast<uint32_t>(__builtin_clzll(x));
5554
#else
56-
uint32_t r;
55+
// naive version
56+
uint32_t r = 0;
5757
while (!(x & (static_cast<uint64_t>(1) << 63))) {
5858
x <<= 1;
5959
++r;
@@ -64,7 +64,6 @@ inline uint32_t clzll(uint64_t x) {
6464
}
6565

6666
#define RAPIDJSON_CLZLL RAPIDJSON_NAMESPACE::internal::clzll
67-
#endif // (defined(__GNUC__) && __GNUC__ >= 4) || RAPIDJSON_HAS_BUILTIN(__builtin_clzll)
6867

6968
} // namespace internal
7069
RAPIDJSON_NAMESPACE_END

cdk/extra/rapidjson/include/rapidjson/internal/diyfp.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -25,7 +25,11 @@
2525

2626
#if defined(_MSC_VER) && defined(_M_AMD64) && !defined(__INTEL_COMPILER)
2727
#include <intrin.h>
28+
#if !defined(_ARM64EC_)
2829
#pragma intrinsic(_umul128)
30+
#else
31+
#pragma comment(lib,"softintrin")
32+
#endif
2933
#endif
3034

3135
RAPIDJSON_NAMESPACE_BEGIN
@@ -100,7 +104,7 @@ struct DiyFp {
100104
}
101105

102106
DiyFp Normalize() const {
103-
int s = static_cast<int>(RAPIDJSON_CLZLL(f));
107+
int s = static_cast<int>(clzll(f));
104108
return DiyFp(f << s, e - s);
105109
}
106110

cdk/extra/rapidjson/include/rapidjson/internal/dtoa.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at
@@ -58,7 +58,11 @@ inline int CountDecimalDigit32(uint32_t n) {
5858
}
5959

6060
inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) {
61-
static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
61+
static const uint64_t kPow10[] = { 1ULL, 10ULL, 100ULL, 1000ULL, 10000ULL, 100000ULL, 1000000ULL, 10000000ULL, 100000000ULL,
62+
1000000000ULL, 10000000000ULL, 100000000000ULL, 1000000000000ULL,
63+
10000000000000ULL, 100000000000000ULL, 1000000000000000ULL,
64+
10000000000000000ULL, 100000000000000000ULL, 1000000000000000000ULL,
65+
10000000000000000000ULL };
6266
const DiyFp one(uint64_t(1) << -Mp.e, Mp.e);
6367
const DiyFp wp_w = Mp - W;
6468
uint32_t p1 = static_cast<uint32_t>(Mp.f >> -one.e);
@@ -86,7 +90,7 @@ inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buff
8690
uint64_t tmp = (static_cast<uint64_t>(p1) << -one.e) + p2;
8791
if (tmp <= delta) {
8892
*K += kappa;
89-
GrisuRound(buffer, *len, delta, tmp, static_cast<uint64_t>(kPow10[kappa]) << -one.e, wp_w.f);
93+
GrisuRound(buffer, *len, delta, tmp, kPow10[kappa] << -one.e, wp_w.f);
9094
return;
9195
}
9296
}
@@ -103,7 +107,7 @@ inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buff
103107
if (p2 < delta) {
104108
*K += kappa;
105109
int index = -kappa;
106-
GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 9 ? kPow10[index] : 0));
110+
GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 20 ? kPow10[index] : 0));
107111
return;
108112
}
109113
}

cdk/extra/rapidjson/include/rapidjson/internal/ieee754.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Tencent is pleased to support the open source community by making RapidJSON available.
22
//
3-
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
3+
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
44
//
55
// Licensed under the MIT License (the "License"); you may not use this file except
66
// in compliance with the License. You may obtain a copy of the License at

0 commit comments

Comments
 (0)