blob: 9296bf0f74a608651e1eca437f80815efe1be6bb [file] [log] [blame]
// mojo/public/tools/fuzzers/fuzz.mojom-blink.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_BLINK_H_
#define MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <type_traits>
#include <utility>
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom-shared.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom-blink-forward.h"
#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/blink/renderer/platform/wtf/hash_functions.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace WTF {
struct fuzz_mojom_internal_FuzzEnum_DataHashFn {
static unsigned GetHash(const ::fuzz::mojom::FuzzEnum& value) {
using utype = std::underlying_type<::fuzz::mojom::FuzzEnum>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::fuzz::mojom::FuzzEnum& left, const ::fuzz::mojom::FuzzEnum& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct HashTraits<::fuzz::mojom::FuzzEnum>
: public GenericHashTraits<::fuzz::mojom::FuzzEnum> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool kEmptyValueIsZero = false;
static ::fuzz::mojom::FuzzEnum EmptyValue() { return static_cast<::fuzz::mojom::FuzzEnum>(-1000000); }
static void ConstructDeletedValue(::fuzz::mojom::FuzzEnum& slot, bool) {
slot = static_cast<::fuzz::mojom::FuzzEnum>(-1000001);
}
static bool IsDeletedValue(const ::fuzz::mojom::FuzzEnum& value) {
return value == static_cast<::fuzz::mojom::FuzzEnum>(-1000001);
}
};
} // namespace WTF
namespace fuzz {
namespace mojom {
namespace blink {
class FuzzDummyInterfaceProxy;
template <typename ImplRefTraits>
class FuzzDummyInterfaceStub;
class FuzzDummyInterfaceRequestValidator;
// @generated_from: fuzz.mojom.FuzzDummyInterface
class FuzzDummyInterface
: public FuzzDummyInterfaceInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = FuzzDummyInterfaceInterfaceBase;
using Proxy_ = FuzzDummyInterfaceProxy;
template <typename ImplRefTraits>
using Stub_ = FuzzDummyInterfaceStub<ImplRefTraits>;
using RequestValidator_ = FuzzDummyInterfaceRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kPingMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct Ping_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~FuzzDummyInterface() = default;
// @generated_from: fuzz.mojom.FuzzDummyInterface.Ping
virtual void Ping() = 0;
};
class FuzzInterfaceProxy;
template <typename ImplRefTraits>
class FuzzInterfaceStub;
class FuzzInterfaceRequestValidator;
class FuzzInterfaceResponseValidator;
// @generated_from: fuzz.mojom.FuzzInterface
class FuzzInterface
: public FuzzInterfaceInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = true;
static constexpr bool HasSyncMethods_ = true;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = FuzzInterfaceInterfaceBase;
using Proxy_ = FuzzInterfaceProxy;
template <typename ImplRefTraits>
using Stub_ = FuzzInterfaceStub<ImplRefTraits>;
using RequestValidator_ = FuzzInterfaceRequestValidator;
using ResponseValidator_ = FuzzInterfaceResponseValidator;
enum MethodMinVersions : uint32_t {
kFuzzBasicMinVersion = 0,
kFuzzBasicRespMinVersion = 0,
kFuzzBasicSyncRespMinVersion = 0,
kFuzzArgsMinVersion = 0,
kFuzzArgsRespMinVersion = 0,
kFuzzArgsSyncRespMinVersion = 0,
kFuzzAssociatedMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct FuzzBasic_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzBasicResp_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzBasicSyncResp_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzArgs_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzArgsResp_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzArgsSyncResp_Sym {
NOINLINE static void IPCSymbol();
};
struct FuzzAssociated_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~FuzzInterface() = default;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasic
virtual void FuzzBasic() = 0;
using FuzzBasicRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicResp
virtual void FuzzBasicResp(FuzzBasicRespCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
virtual bool FuzzBasicSyncResp();
using FuzzBasicSyncRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
virtual void FuzzBasicSyncResp(FuzzBasicSyncRespCallback callback) = 0;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgs
virtual void FuzzArgs(FuzzStructPtr a, FuzzStructPtr b) = 0;
using FuzzArgsRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsResp
virtual void FuzzArgsResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsRespCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
virtual bool FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b);
using FuzzArgsSyncRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
virtual void FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsSyncRespCallback callback) = 0;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzAssociated
virtual void FuzzAssociated(::mojo::PendingAssociatedReceiver<FuzzDummyInterface> receiver) = 0;
};
// @generated_from: fuzz.mojom.FuzzDummyInterface
class FuzzDummyInterfaceProxy
: public FuzzDummyInterface {
public:
using InterfaceType = FuzzDummyInterface;
explicit FuzzDummyInterfaceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: fuzz.mojom.FuzzDummyInterface.Ping
void Ping() final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: fuzz.mojom.FuzzInterface
class FuzzInterfaceProxy
: public FuzzInterface {
public:
using InterfaceType = FuzzInterface;
explicit FuzzInterfaceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasic
void FuzzBasic() final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicResp
void FuzzBasicResp(FuzzBasicRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
bool FuzzBasicSyncResp() final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
void FuzzBasicSyncResp(FuzzBasicSyncRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgs
void FuzzArgs(FuzzStructPtr a, FuzzStructPtr b) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsResp
void FuzzArgsResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
bool FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
void FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsSyncRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzAssociated
void FuzzAssociated(::mojo::PendingAssociatedReceiver<FuzzDummyInterface> receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class FuzzDummyInterfaceStubDispatch {
public:
static bool Accept(FuzzDummyInterface* impl, mojo::Message* message);
static bool AcceptWithResponder(
FuzzDummyInterface* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<FuzzDummyInterface>>
class FuzzDummyInterfaceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
FuzzDummyInterfaceStub() = default;
~FuzzDummyInterfaceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzDummyInterfaceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzDummyInterfaceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class FuzzInterfaceStubDispatch {
public:
static bool Accept(FuzzInterface* impl, mojo::Message* message);
static bool AcceptWithResponder(
FuzzInterface* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<FuzzInterface>>
class FuzzInterfaceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
FuzzInterfaceStub() = default;
~FuzzInterfaceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzInterfaceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzInterfaceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class FuzzDummyInterfaceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class FuzzInterfaceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class FuzzInterfaceResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
// @generated_from: fuzz.mojom.FuzzDummyStruct
class FuzzDummyStruct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<FuzzDummyStruct, T>::value>;
using DataView = FuzzDummyStructDataView;
using Data_ = internal::FuzzDummyStruct_Data;
template <typename... Args>
static FuzzDummyStructPtr New(Args&&... args) {
return FuzzDummyStructPtr(
absl::in_place, std::forward<Args>(args)...);
}
template <typename U>
static FuzzDummyStructPtr From(const U& u) {
return mojo::TypeConverter<FuzzDummyStructPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzDummyStruct>::Convert(*this);
}
FuzzDummyStruct();
explicit FuzzDummyStruct(
int8_t dummy);
~FuzzDummyStruct();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = FuzzDummyStructPtr>
FuzzDummyStructPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
FuzzDummyStruct::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzDummyStruct::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::FuzzDummyStruct_UnserializedMessageContext<
UserType, FuzzDummyStruct::DataView>>(0, 0, std::move(input)),
MOJO_CREATE_MESSAGE_FLAG_NONE);
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
mojo::Message message;
return mojo::internal::DeserializeImpl<FuzzDummyStruct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return FuzzDummyStruct::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::FuzzDummyStruct_UnserializedMessageContext<
UserType, FuzzDummyStruct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<FuzzDummyStruct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: fuzz.mojom.FuzzDummyStruct.dummy
int8_t dummy;
// Serialise this struct into a trace.
void WriteIntoTrace(perfetto::TracedValue traced_context) const;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: fuzz.mojom.FuzzUnion
class FuzzUnion {
public:
using DataView = FuzzUnionDataView;
using Data_ = internal::FuzzUnion_Data;
using Tag = Data_::FuzzUnion_Tag;
template <typename... Args>
static FuzzUnionPtr New(Args&&... args) {
static_assert(
sizeof...(args) < 0,
"Do not use Union::New(); to create a union of a given subtype, use "
"New<SubType>(), not New() followed by set_<sub_type>(). To represent "
"an empty union, mark the field or parameter as nullable in the mojom "
"definition.");
}
// Construct an instance holding |fuzz_bool|.
static FuzzUnionPtr
NewFuzzBool(
bool fuzz_bool) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_bool(std::move(fuzz_bool));
return result;
}
// Construct an instance holding |fuzz_int8|.
static FuzzUnionPtr
NewFuzzInt8(
int8_t fuzz_int8) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_int8(std::move(fuzz_int8));
return result;
}
// Construct an instance holding |fuzz_uint8|.
static FuzzUnionPtr
NewFuzzUint8(
uint8_t fuzz_uint8) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_uint8(std::move(fuzz_uint8));
return result;
}
// Construct an instance holding |fuzz_int16|.
static FuzzUnionPtr
NewFuzzInt16(
int16_t fuzz_int16) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_int16(std::move(fuzz_int16));
return result;
}
// Construct an instance holding |fuzz_uint16|.
static FuzzUnionPtr
NewFuzzUint16(
uint16_t fuzz_uint16) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_uint16(std::move(fuzz_uint16));
return result;
}
// Construct an instance holding |fuzz_int32|.
static FuzzUnionPtr
NewFuzzInt32(
int32_t fuzz_int32) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_int32(std::move(fuzz_int32));
return result;
}
// Construct an instance holding |fuzz_uint32|.
static FuzzUnionPtr
NewFuzzUint32(
uint32_t fuzz_uint32) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_uint32(std::move(fuzz_uint32));
return result;
}
// Construct an instance holding |fuzz_int64|.
static FuzzUnionPtr
NewFuzzInt64(
int64_t fuzz_int64) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_int64(std::move(fuzz_int64));
return result;
}
// Construct an instance holding |fuzz_uint64|.
static FuzzUnionPtr
NewFuzzUint64(
uint64_t fuzz_uint64) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_uint64(std::move(fuzz_uint64));
return result;
}
// Construct an instance holding |fuzz_float|.
static FuzzUnionPtr
NewFuzzFloat(
float fuzz_float) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_float(std::move(fuzz_float));
return result;
}
// Construct an instance holding |fuzz_double|.
static FuzzUnionPtr
NewFuzzDouble(
double fuzz_double) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_double(std::move(fuzz_double));
return result;
}
// Construct an instance holding |fuzz_string|.
static FuzzUnionPtr
NewFuzzString(
const WTF::String& fuzz_string) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_string(std::move(fuzz_string));
return result;
}
// Construct an instance holding |fuzz_bool_array|.
static FuzzUnionPtr
NewFuzzBoolArray(
WTF::Vector<bool> fuzz_bool_array) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_bool_array(std::move(fuzz_bool_array));
return result;
}
// Construct an instance holding |fuzz_primitive_array|.
static FuzzUnionPtr
NewFuzzPrimitiveArray(
WTF::Vector<int8_t> fuzz_primitive_array) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_primitive_array(std::move(fuzz_primitive_array));
return result;
}
// Construct an instance holding |fuzz_struct_array|.
static FuzzUnionPtr
NewFuzzStructArray(
WTF::Vector<FuzzDummyStructPtr> fuzz_struct_array) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_struct_array(std::move(fuzz_struct_array));
return result;
}
// Construct an instance holding |fuzz_primitive_map|.
static FuzzUnionPtr
NewFuzzPrimitiveMap(
const WTF::HashMap<WTF::String, int8_t>& fuzz_primitive_map) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_primitive_map(std::move(fuzz_primitive_map));
return result;
}
// Construct an instance holding |fuzz_array_map|.
static FuzzUnionPtr
NewFuzzArrayMap(
const WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>& fuzz_array_map) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_array_map(std::move(fuzz_array_map));
return result;
}
// Construct an instance holding |fuzz_struct_map|.
static FuzzUnionPtr
NewFuzzStructMap(
WTF::HashMap<WTF::String, FuzzDummyStructPtr> fuzz_struct_map) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_struct_map(std::move(fuzz_struct_map));
return result;
}
// Construct an instance holding |fuzz_union_map|.
static FuzzUnionPtr
NewFuzzUnionMap(
WTF::HashMap<FuzzEnum, FuzzUnionPtr> fuzz_union_map) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_union_map(std::move(fuzz_union_map));
return result;
}
// Construct an instance holding |fuzz_complex|.
static FuzzUnionPtr
NewFuzzComplex(
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzUnionPtr>>>>>> fuzz_complex) {
auto result = FuzzUnionPtr(absl::in_place);
result->set_fuzz_complex(std::move(fuzz_complex));
return result;
}
template <typename U>
static FuzzUnionPtr From(const U& u) {
return mojo::TypeConverter<FuzzUnionPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzUnion>::Convert(*this);
}
FuzzUnion();
~FuzzUnion();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename UnionPtrType = FuzzUnionPtr>
FuzzUnionPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type* = nullptr>
bool Equals(const T& other) const;
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
Tag which() const {
return tag_;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
bool is_fuzz_bool() const { return tag_ == Tag::kFuzzBool; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
bool get_fuzz_bool() const {
CHECK(tag_ == Tag::kFuzzBool);
return data_.fuzz_bool;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
void set_fuzz_bool(
bool fuzz_bool);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
bool is_fuzz_int8() const { return tag_ == Tag::kFuzzInt8; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
int8_t get_fuzz_int8() const {
CHECK(tag_ == Tag::kFuzzInt8);
return data_.fuzz_int8;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
void set_fuzz_int8(
int8_t fuzz_int8);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
bool is_fuzz_uint8() const { return tag_ == Tag::kFuzzUint8; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
uint8_t get_fuzz_uint8() const {
CHECK(tag_ == Tag::kFuzzUint8);
return data_.fuzz_uint8;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
void set_fuzz_uint8(
uint8_t fuzz_uint8);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
bool is_fuzz_int16() const { return tag_ == Tag::kFuzzInt16; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
int16_t get_fuzz_int16() const {
CHECK(tag_ == Tag::kFuzzInt16);
return data_.fuzz_int16;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
void set_fuzz_int16(
int16_t fuzz_int16);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
bool is_fuzz_uint16() const { return tag_ == Tag::kFuzzUint16; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
uint16_t get_fuzz_uint16() const {
CHECK(tag_ == Tag::kFuzzUint16);
return data_.fuzz_uint16;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
void set_fuzz_uint16(
uint16_t fuzz_uint16);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
bool is_fuzz_int32() const { return tag_ == Tag::kFuzzInt32; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
int32_t get_fuzz_int32() const {
CHECK(tag_ == Tag::kFuzzInt32);
return data_.fuzz_int32;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
void set_fuzz_int32(
int32_t fuzz_int32);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
bool is_fuzz_uint32() const { return tag_ == Tag::kFuzzUint32; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
uint32_t get_fuzz_uint32() const {
CHECK(tag_ == Tag::kFuzzUint32);
return data_.fuzz_uint32;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
void set_fuzz_uint32(
uint32_t fuzz_uint32);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
bool is_fuzz_int64() const { return tag_ == Tag::kFuzzInt64; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
int64_t get_fuzz_int64() const {
CHECK(tag_ == Tag::kFuzzInt64);
return data_.fuzz_int64;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
void set_fuzz_int64(
int64_t fuzz_int64);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
bool is_fuzz_uint64() const { return tag_ == Tag::kFuzzUint64; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
uint64_t get_fuzz_uint64() const {
CHECK(tag_ == Tag::kFuzzUint64);
return data_.fuzz_uint64;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
void set_fuzz_uint64(
uint64_t fuzz_uint64);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
bool is_fuzz_float() const { return tag_ == Tag::kFuzzFloat; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
float get_fuzz_float() const {
CHECK(tag_ == Tag::kFuzzFloat);
return data_.fuzz_float;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
void set_fuzz_float(
float fuzz_float);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
bool is_fuzz_double() const { return tag_ == Tag::kFuzzDouble; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
double get_fuzz_double() const {
CHECK(tag_ == Tag::kFuzzDouble);
return data_.fuzz_double;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
void set_fuzz_double(
double fuzz_double);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
bool is_fuzz_string() const { return tag_ == Tag::kFuzzString; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
WTF::String& get_fuzz_string() const {
CHECK(tag_ == Tag::kFuzzString);
return *(data_.fuzz_string);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
void set_fuzz_string(
const WTF::String& fuzz_string);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
bool is_fuzz_bool_array() const { return tag_ == Tag::kFuzzBoolArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
WTF::Vector<bool>& get_fuzz_bool_array() const {
CHECK(tag_ == Tag::kFuzzBoolArray);
return *(data_.fuzz_bool_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
void set_fuzz_bool_array(
WTF::Vector<bool> fuzz_bool_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
bool is_fuzz_primitive_array() const { return tag_ == Tag::kFuzzPrimitiveArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
WTF::Vector<int8_t>& get_fuzz_primitive_array() const {
CHECK(tag_ == Tag::kFuzzPrimitiveArray);
return *(data_.fuzz_primitive_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
void set_fuzz_primitive_array(
WTF::Vector<int8_t> fuzz_primitive_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
bool is_fuzz_struct_array() const { return tag_ == Tag::kFuzzStructArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
WTF::Vector<FuzzDummyStructPtr>& get_fuzz_struct_array() const {
CHECK(tag_ == Tag::kFuzzStructArray);
return *(data_.fuzz_struct_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
void set_fuzz_struct_array(
WTF::Vector<FuzzDummyStructPtr> fuzz_struct_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
bool is_fuzz_primitive_map() const { return tag_ == Tag::kFuzzPrimitiveMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
WTF::HashMap<WTF::String, int8_t>& get_fuzz_primitive_map() const {
CHECK(tag_ == Tag::kFuzzPrimitiveMap);
return *(data_.fuzz_primitive_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
void set_fuzz_primitive_map(
const WTF::HashMap<WTF::String, int8_t>& fuzz_primitive_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
bool is_fuzz_array_map() const { return tag_ == Tag::kFuzzArrayMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>& get_fuzz_array_map() const {
CHECK(tag_ == Tag::kFuzzArrayMap);
return *(data_.fuzz_array_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
void set_fuzz_array_map(
const WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>& fuzz_array_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
bool is_fuzz_struct_map() const { return tag_ == Tag::kFuzzStructMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
WTF::HashMap<WTF::String, FuzzDummyStructPtr>& get_fuzz_struct_map() const {
CHECK(tag_ == Tag::kFuzzStructMap);
return *(data_.fuzz_struct_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
void set_fuzz_struct_map(
WTF::HashMap<WTF::String, FuzzDummyStructPtr> fuzz_struct_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
bool is_fuzz_union_map() const { return tag_ == Tag::kFuzzUnionMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
WTF::HashMap<FuzzEnum, FuzzUnionPtr>& get_fuzz_union_map() const {
CHECK(tag_ == Tag::kFuzzUnionMap);
return *(data_.fuzz_union_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
void set_fuzz_union_map(
WTF::HashMap<FuzzEnum, FuzzUnionPtr> fuzz_union_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
bool is_fuzz_complex() const { return tag_ == Tag::kFuzzComplex; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzUnionPtr>>>>>>& get_fuzz_complex() const {
CHECK(tag_ == Tag::kFuzzComplex);
return *(data_.fuzz_complex);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
void set_fuzz_complex(
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzUnionPtr>>>>>> fuzz_complex);
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzUnion::DataView>(input);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
return mojo::internal::DeserializeImpl<FuzzUnion::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
private:
union Union_ {
Union_() = default;
~Union_() = default;
bool fuzz_bool;
int8_t fuzz_int8;
uint8_t fuzz_uint8;
int16_t fuzz_int16;
uint16_t fuzz_uint16;
int32_t fuzz_int32;
uint32_t fuzz_uint32;
int64_t fuzz_int64;
uint64_t fuzz_uint64;
float fuzz_float;
double fuzz_double;
WTF::String* fuzz_string;
WTF::Vector<bool>* fuzz_bool_array;
WTF::Vector<int8_t>* fuzz_primitive_array;
WTF::Vector<FuzzDummyStructPtr>* fuzz_struct_array;
WTF::HashMap<WTF::String, int8_t>* fuzz_primitive_map;
WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>* fuzz_array_map;
WTF::HashMap<WTF::String, FuzzDummyStructPtr>* fuzz_struct_map;
WTF::HashMap<FuzzEnum, FuzzUnionPtr>* fuzz_union_map;
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzUnionPtr>>>>>>* fuzz_complex;
};
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
void DestroyActive();
Tag tag_;
Union_ data_;
};
// @generated_from: fuzz.mojom.FuzzStruct
class FuzzStruct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<FuzzStruct, T>::value>;
using DataView = FuzzStructDataView;
using Data_ = internal::FuzzStruct_Data;
template <typename... Args>
static FuzzStructPtr New(Args&&... args) {
return FuzzStructPtr(
absl::in_place, std::forward<Args>(args)...);
}
template <typename U>
static FuzzStructPtr From(const U& u) {
return mojo::TypeConverter<FuzzStructPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzStruct>::Convert(*this);
}
FuzzStruct();
FuzzStruct(
bool fuzz_bool,
int8_t fuzz_int8,
uint8_t fuzz_uint8,
int16_t fuzz_int16,
uint16_t fuzz_uint16,
int32_t fuzz_int32,
uint32_t fuzz_uint32,
int64_t fuzz_int64,
uint64_t fuzz_uint64,
float fuzz_float,
double fuzz_double,
const WTF::String& fuzz_string,
WTF::Vector<bool> fuzz_bool_array,
WTF::Vector<int8_t> fuzz_primitive_array,
const WTF::HashMap<WTF::String, int8_t>& fuzz_primitive_map,
const WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>& fuzz_array_map,
WTF::HashMap<FuzzEnum, FuzzUnionPtr> fuzz_union_map,
WTF::Vector<FuzzUnionPtr> fuzz_union_array,
WTF::Vector<FuzzStructPtr> fuzz_struct_array,
absl::optional<WTF::Vector<int8_t>> fuzz_nullable_array,
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzStructPtr>>>>>> fuzz_complex);
FuzzStruct(const FuzzStruct&) = delete;
FuzzStruct& operator=(const FuzzStruct&) = delete;
~FuzzStruct();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = FuzzStructPtr>
FuzzStructPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
FuzzStruct::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzStruct::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::FuzzStruct_UnserializedMessageContext<
UserType, FuzzStruct::DataView>>(0, 0, std::move(input)),
MOJO_CREATE_MESSAGE_FLAG_NONE);
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
mojo::Message message;
return mojo::internal::DeserializeImpl<FuzzStruct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return FuzzStruct::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::FuzzStruct_UnserializedMessageContext<
UserType, FuzzStruct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<FuzzStruct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_bool
bool fuzz_bool;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int8
int8_t fuzz_int8;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint8
uint8_t fuzz_uint8;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int16
int16_t fuzz_int16;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint16
uint16_t fuzz_uint16;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int32
int32_t fuzz_int32;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint32
uint32_t fuzz_uint32;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int64
int64_t fuzz_int64;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint64
uint64_t fuzz_uint64;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_float
float fuzz_float;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_double
double fuzz_double;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_string
WTF::String fuzz_string;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_bool_array
WTF::Vector<bool> fuzz_bool_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_primitive_array
WTF::Vector<int8_t> fuzz_primitive_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_primitive_map
WTF::HashMap<WTF::String, int8_t> fuzz_primitive_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_array_map
WTF::HashMap<WTF::String, WTF::Vector<WTF::String>> fuzz_array_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_union_map
WTF::HashMap<FuzzEnum, FuzzUnionPtr> fuzz_union_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_union_array
WTF::Vector<FuzzUnionPtr> fuzz_union_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_struct_array
WTF::Vector<FuzzStructPtr> fuzz_struct_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_nullable_array
absl::optional<WTF::Vector<int8_t>> fuzz_nullable_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_complex
absl::optional<WTF::Vector<WTF::HashMap<FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<FuzzStructPtr>>>>>> fuzz_complex;
// Serialise this struct into a trace.
void WriteIntoTrace(perfetto::TracedValue traced_context) const;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename UnionPtrType>
FuzzUnionPtr FuzzUnion::Clone() const {
switch (tag_) {
case Tag::kFuzzBool:
return NewFuzzBool(
mojo::Clone(data_.fuzz_bool));
case Tag::kFuzzInt8:
return NewFuzzInt8(
mojo::Clone(data_.fuzz_int8));
case Tag::kFuzzUint8:
return NewFuzzUint8(
mojo::Clone(data_.fuzz_uint8));
case Tag::kFuzzInt16:
return NewFuzzInt16(
mojo::Clone(data_.fuzz_int16));
case Tag::kFuzzUint16:
return NewFuzzUint16(
mojo::Clone(data_.fuzz_uint16));
case Tag::kFuzzInt32:
return NewFuzzInt32(
mojo::Clone(data_.fuzz_int32));
case Tag::kFuzzUint32:
return NewFuzzUint32(
mojo::Clone(data_.fuzz_uint32));
case Tag::kFuzzInt64:
return NewFuzzInt64(
mojo::Clone(data_.fuzz_int64));
case Tag::kFuzzUint64:
return NewFuzzUint64(
mojo::Clone(data_.fuzz_uint64));
case Tag::kFuzzFloat:
return NewFuzzFloat(
mojo::Clone(data_.fuzz_float));
case Tag::kFuzzDouble:
return NewFuzzDouble(
mojo::Clone(data_.fuzz_double));
case Tag::kFuzzString:
return NewFuzzString(
mojo::Clone(*data_.fuzz_string));
case Tag::kFuzzBoolArray:
return NewFuzzBoolArray(
mojo::Clone(*data_.fuzz_bool_array));
case Tag::kFuzzPrimitiveArray:
return NewFuzzPrimitiveArray(
mojo::Clone(*data_.fuzz_primitive_array));
case Tag::kFuzzStructArray:
return NewFuzzStructArray(
mojo::Clone(*data_.fuzz_struct_array));
case Tag::kFuzzPrimitiveMap:
return NewFuzzPrimitiveMap(
mojo::Clone(*data_.fuzz_primitive_map));
case Tag::kFuzzArrayMap:
return NewFuzzArrayMap(
mojo::Clone(*data_.fuzz_array_map));
case Tag::kFuzzStructMap:
return NewFuzzStructMap(
mojo::Clone(*data_.fuzz_struct_map));
case Tag::kFuzzUnionMap:
return NewFuzzUnionMap(
mojo::Clone(*data_.fuzz_union_map));
case Tag::kFuzzComplex:
return NewFuzzComplex(
mojo::Clone(*data_.fuzz_complex));
}
return nullptr;
}
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type*>
bool FuzzUnion::Equals(const T& other) const {
if (tag_ != other.which())
return false;
switch (tag_) {
case Tag::kFuzzBool:
return mojo::Equals(data_.fuzz_bool, other.data_.fuzz_bool);
case Tag::kFuzzInt8:
return mojo::Equals(data_.fuzz_int8, other.data_.fuzz_int8);
case Tag::kFuzzUint8:
return mojo::Equals(data_.fuzz_uint8, other.data_.fuzz_uint8);
case Tag::kFuzzInt16:
return mojo::Equals(data_.fuzz_int16, other.data_.fuzz_int16);
case Tag::kFuzzUint16:
return mojo::Equals(data_.fuzz_uint16, other.data_.fuzz_uint16);
case Tag::kFuzzInt32:
return mojo::Equals(data_.fuzz_int32, other.data_.fuzz_int32);
case Tag::kFuzzUint32:
return mojo::Equals(data_.fuzz_uint32, other.data_.fuzz_uint32);
case Tag::kFuzzInt64:
return mojo::Equals(data_.fuzz_int64, other.data_.fuzz_int64);
case Tag::kFuzzUint64:
return mojo::Equals(data_.fuzz_uint64, other.data_.fuzz_uint64);
case Tag::kFuzzFloat:
return mojo::Equals(data_.fuzz_float, other.data_.fuzz_float);
case Tag::kFuzzDouble:
return mojo::Equals(data_.fuzz_double, other.data_.fuzz_double);
case Tag::kFuzzString:
return mojo::Equals(*(data_.fuzz_string), *(other.data_.fuzz_string));
case Tag::kFuzzBoolArray:
return mojo::Equals(*(data_.fuzz_bool_array), *(other.data_.fuzz_bool_array));
case Tag::kFuzzPrimitiveArray:
return mojo::Equals(*(data_.fuzz_primitive_array), *(other.data_.fuzz_primitive_array));
case Tag::kFuzzStructArray:
return mojo::Equals(*(data_.fuzz_struct_array), *(other.data_.fuzz_struct_array));
case Tag::kFuzzPrimitiveMap:
return mojo::Equals(*(data_.fuzz_primitive_map), *(other.data_.fuzz_primitive_map));
case Tag::kFuzzArrayMap:
return mojo::Equals(*(data_.fuzz_array_map), *(other.data_.fuzz_array_map));
case Tag::kFuzzStructMap:
return mojo::Equals(*(data_.fuzz_struct_map), *(other.data_.fuzz_struct_map));
case Tag::kFuzzUnionMap:
return mojo::Equals(*(data_.fuzz_union_map), *(other.data_.fuzz_union_map));
case Tag::kFuzzComplex:
return mojo::Equals(*(data_.fuzz_complex), *(other.data_.fuzz_complex));
}
return false;
}
template <typename StructPtrType>
FuzzDummyStructPtr FuzzDummyStruct::Clone() const {
return New(
mojo::Clone(dummy)
);
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>*>
bool FuzzDummyStruct::Equals(const T& other_struct) const {
if (!mojo::Equals(this->dummy, other_struct.dummy))
return false;
return true;
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.dummy < rhs.dummy)
return true;
if (rhs.dummy < lhs.dummy)
return false;
return false;
}
template <typename StructPtrType>
FuzzStructPtr FuzzStruct::Clone() const {
return New(
mojo::Clone(fuzz_bool),
mojo::Clone(fuzz_int8),
mojo::Clone(fuzz_uint8),
mojo::Clone(fuzz_int16),
mojo::Clone(fuzz_uint16),
mojo::Clone(fuzz_int32),
mojo::Clone(fuzz_uint32),
mojo::Clone(fuzz_int64),
mojo::Clone(fuzz_uint64),
mojo::Clone(fuzz_float),
mojo::Clone(fuzz_double),
mojo::Clone(fuzz_string),
mojo::Clone(fuzz_bool_array),
mojo::Clone(fuzz_primitive_array),
mojo::Clone(fuzz_primitive_map),
mojo::Clone(fuzz_array_map),
mojo::Clone(fuzz_union_map),
mojo::Clone(fuzz_union_array),
mojo::Clone(fuzz_struct_array),
mojo::Clone(fuzz_nullable_array),
mojo::Clone(fuzz_complex)
);
}
template <typename T, FuzzStruct::EnableIfSame<T>*>
bool FuzzStruct::Equals(const T& other_struct) const {
if (!mojo::Equals(this->fuzz_bool, other_struct.fuzz_bool))
return false;
if (!mojo::Equals(this->fuzz_int8, other_struct.fuzz_int8))
return false;
if (!mojo::Equals(this->fuzz_uint8, other_struct.fuzz_uint8))
return false;
if (!mojo::Equals(this->fuzz_int16, other_struct.fuzz_int16))
return false;
if (!mojo::Equals(this->fuzz_uint16, other_struct.fuzz_uint16))
return false;
if (!mojo::Equals(this->fuzz_int32, other_struct.fuzz_int32))
return false;
if (!mojo::Equals(this->fuzz_uint32, other_struct.fuzz_uint32))
return false;
if (!mojo::Equals(this->fuzz_int64, other_struct.fuzz_int64))
return false;
if (!mojo::Equals(this->fuzz_uint64, other_struct.fuzz_uint64))
return false;
if (!mojo::Equals(this->fuzz_float, other_struct.fuzz_float))
return false;
if (!mojo::Equals(this->fuzz_double, other_struct.fuzz_double))
return false;
if (!mojo::Equals(this->fuzz_string, other_struct.fuzz_string))
return false;
if (!mojo::Equals(this->fuzz_bool_array, other_struct.fuzz_bool_array))
return false;
if (!mojo::Equals(this->fuzz_primitive_array, other_struct.fuzz_primitive_array))
return false;
if (!mojo::Equals(this->fuzz_primitive_map, other_struct.fuzz_primitive_map))
return false;
if (!mojo::Equals(this->fuzz_array_map, other_struct.fuzz_array_map))
return false;
if (!mojo::Equals(this->fuzz_union_map, other_struct.fuzz_union_map))
return false;
if (!mojo::Equals(this->fuzz_union_array, other_struct.fuzz_union_array))
return false;
if (!mojo::Equals(this->fuzz_struct_array, other_struct.fuzz_struct_array))
return false;
if (!mojo::Equals(this->fuzz_nullable_array, other_struct.fuzz_nullable_array))
return false;
if (!mojo::Equals(this->fuzz_complex, other_struct.fuzz_complex))
return false;
return true;
}
template <typename T, FuzzStruct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.fuzz_bool < rhs.fuzz_bool)
return true;
if (rhs.fuzz_bool < lhs.fuzz_bool)
return false;
if (lhs.fuzz_int8 < rhs.fuzz_int8)
return true;
if (rhs.fuzz_int8 < lhs.fuzz_int8)
return false;
if (lhs.fuzz_uint8 < rhs.fuzz_uint8)
return true;
if (rhs.fuzz_uint8 < lhs.fuzz_uint8)
return false;
if (lhs.fuzz_int16 < rhs.fuzz_int16)
return true;
if (rhs.fuzz_int16 < lhs.fuzz_int16)
return false;
if (lhs.fuzz_uint16 < rhs.fuzz_uint16)
return true;
if (rhs.fuzz_uint16 < lhs.fuzz_uint16)
return false;
if (lhs.fuzz_int32 < rhs.fuzz_int32)
return true;
if (rhs.fuzz_int32 < lhs.fuzz_int32)
return false;
if (lhs.fuzz_uint32 < rhs.fuzz_uint32)
return true;
if (rhs.fuzz_uint32 < lhs.fuzz_uint32)
return false;
if (lhs.fuzz_int64 < rhs.fuzz_int64)
return true;
if (rhs.fuzz_int64 < lhs.fuzz_int64)
return false;
if (lhs.fuzz_uint64 < rhs.fuzz_uint64)
return true;
if (rhs.fuzz_uint64 < lhs.fuzz_uint64)
return false;
if (lhs.fuzz_float < rhs.fuzz_float)
return true;
if (rhs.fuzz_float < lhs.fuzz_float)
return false;
if (lhs.fuzz_double < rhs.fuzz_double)
return true;
if (rhs.fuzz_double < lhs.fuzz_double)
return false;
if (lhs.fuzz_string < rhs.fuzz_string)
return true;
if (rhs.fuzz_string < lhs.fuzz_string)
return false;
if (lhs.fuzz_bool_array < rhs.fuzz_bool_array)
return true;
if (rhs.fuzz_bool_array < lhs.fuzz_bool_array)
return false;
if (lhs.fuzz_primitive_array < rhs.fuzz_primitive_array)
return true;
if (rhs.fuzz_primitive_array < lhs.fuzz_primitive_array)
return false;
if (lhs.fuzz_primitive_map < rhs.fuzz_primitive_map)
return true;
if (rhs.fuzz_primitive_map < lhs.fuzz_primitive_map)
return false;
if (lhs.fuzz_array_map < rhs.fuzz_array_map)
return true;
if (rhs.fuzz_array_map < lhs.fuzz_array_map)
return false;
if (lhs.fuzz_union_map < rhs.fuzz_union_map)
return true;
if (rhs.fuzz_union_map < lhs.fuzz_union_map)
return false;
if (lhs.fuzz_union_array < rhs.fuzz_union_array)
return true;
if (rhs.fuzz_union_array < lhs.fuzz_union_array)
return false;
if (lhs.fuzz_struct_array < rhs.fuzz_struct_array)
return true;
if (rhs.fuzz_struct_array < lhs.fuzz_struct_array)
return false;
if (lhs.fuzz_nullable_array < rhs.fuzz_nullable_array)
return true;
if (rhs.fuzz_nullable_array < lhs.fuzz_nullable_array)
return false;
if (lhs.fuzz_complex < rhs.fuzz_complex)
return true;
if (rhs.fuzz_complex < lhs.fuzz_complex)
return false;
return false;
}
} // namespace blink
} // namespace mojom
} // namespace fuzz
namespace mojo {
template <>
struct StructTraits<::fuzz::mojom::blink::FuzzDummyStruct::DataView,
::fuzz::mojom::blink::FuzzDummyStructPtr> {
static bool IsNull(const ::fuzz::mojom::blink::FuzzDummyStructPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::blink::FuzzDummyStructPtr* output) { output->reset(); }
static decltype(::fuzz::mojom::blink::FuzzDummyStruct::dummy) dummy(
const ::fuzz::mojom::blink::FuzzDummyStructPtr& input) {
return input->dummy;
}
static bool Read(::fuzz::mojom::blink::FuzzDummyStruct::DataView input, ::fuzz::mojom::blink::FuzzDummyStructPtr* output);
};
template <>
struct StructTraits<::fuzz::mojom::blink::FuzzStruct::DataView,
::fuzz::mojom::blink::FuzzStructPtr> {
static bool IsNull(const ::fuzz::mojom::blink::FuzzStructPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::blink::FuzzStructPtr* output) { output->reset(); }
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_bool) fuzz_bool(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_bool;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_int8) fuzz_int8(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_int8;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_uint8) fuzz_uint8(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_uint8;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_int16) fuzz_int16(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_int16;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_uint16) fuzz_uint16(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_uint16;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_int32) fuzz_int32(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_int32;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_uint32) fuzz_uint32(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_uint32;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_int64) fuzz_int64(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_int64;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_uint64) fuzz_uint64(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_uint64;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_float) fuzz_float(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_float;
}
static decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_double) fuzz_double(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_double;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_string)& fuzz_string(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_string;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_bool_array)& fuzz_bool_array(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_bool_array;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_primitive_array)& fuzz_primitive_array(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_primitive_array;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_primitive_map)& fuzz_primitive_map(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_primitive_map;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_array_map)& fuzz_array_map(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_array_map;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_union_map)& fuzz_union_map(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_union_map;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_union_array)& fuzz_union_array(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_union_array;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_struct_array)& fuzz_struct_array(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_struct_array;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_nullable_array)& fuzz_nullable_array(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_nullable_array;
}
static const decltype(::fuzz::mojom::blink::FuzzStruct::fuzz_complex)& fuzz_complex(
const ::fuzz::mojom::blink::FuzzStructPtr& input) {
return input->fuzz_complex;
}
static bool Read(::fuzz::mojom::blink::FuzzStruct::DataView input, ::fuzz::mojom::blink::FuzzStructPtr* output);
};
template <>
struct UnionTraits<::fuzz::mojom::blink::FuzzUnion::DataView,
::fuzz::mojom::blink::FuzzUnionPtr> {
static bool IsNull(const ::fuzz::mojom::blink::FuzzUnionPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::blink::FuzzUnionPtr* output) { output->reset(); }
static ::fuzz::mojom::blink::FuzzUnion::Tag GetTag(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->which();
}
static bool fuzz_bool(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_bool();
}
static int8_t fuzz_int8(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_int8();
}
static uint8_t fuzz_uint8(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_uint8();
}
static int16_t fuzz_int16(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_int16();
}
static uint16_t fuzz_uint16(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_uint16();
}
static int32_t fuzz_int32(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_int32();
}
static uint32_t fuzz_uint32(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_uint32();
}
static int64_t fuzz_int64(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_int64();
}
static uint64_t fuzz_uint64(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_uint64();
}
static float fuzz_float(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_float();
}
static double fuzz_double(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_double();
}
static const WTF::String& fuzz_string(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_string();
}
static const WTF::Vector<bool>& fuzz_bool_array(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_bool_array();
}
static const WTF::Vector<int8_t>& fuzz_primitive_array(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_primitive_array();
}
static const WTF::Vector<::fuzz::mojom::blink::FuzzDummyStructPtr>& fuzz_struct_array(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_struct_array();
}
static const WTF::HashMap<WTF::String, int8_t>& fuzz_primitive_map(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_primitive_map();
}
static const WTF::HashMap<WTF::String, WTF::Vector<WTF::String>>& fuzz_array_map(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_array_map();
}
static const WTF::HashMap<WTF::String, ::fuzz::mojom::blink::FuzzDummyStructPtr>& fuzz_struct_map(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_struct_map();
}
static const WTF::HashMap<::fuzz::mojom::blink::FuzzEnum, ::fuzz::mojom::blink::FuzzUnionPtr>& fuzz_union_map(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_union_map();
}
static const absl::optional<WTF::Vector<WTF::HashMap<::fuzz::mojom::blink::FuzzEnum, WTF::HashMap<int8_t, absl::optional<WTF::Vector<::fuzz::mojom::blink::FuzzUnionPtr>>>>>>& fuzz_complex(const ::fuzz::mojom::blink::FuzzUnionPtr& input) {
return input->get_fuzz_complex();
}
static bool Read(::fuzz::mojom::blink::FuzzUnion::DataView input, ::fuzz::mojom::blink::FuzzUnionPtr* output);
};
} // namespace mojo
#endif // MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_BLINK_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMjk3NiwgImJlZ2luIjogMjk1OCwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekR1bW15SW50ZXJmYWNlIn19
LCB7ImVuZCI6IDQxNjQsICJiZWdpbiI6IDQxNjAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t
IiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpEdW1teUludGVyZmFjZS5QaW5nIn19LCB7
ImVuZCI6IDQ0MDUsICJiZWdpbiI6IDQzOTIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg
InNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UifX0sIHsiZW5kIjogNjIyMywg
ImJlZ2luIjogNjIxNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QmFzaWMifX0sIHsiZW5kIjogNjM4MywgImJl
Z2luIjogNjM3MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QmFzaWNSZXNwIn19LCB7ImVuZCI6IDY2NTUsICJi
ZWdpbiI6IDY2MzgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJm
dXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekJhc2ljU3luY1Jlc3AifX0sIHsiZW5kIjogNjgy
MiwgImJlZ2luIjogNjgwNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QmFzaWNTeW5jUmVzcCJ9fSwgeyJlbmQi
OiA2OTQ1LCAiYmVnaW4iOiA2OTM3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
YXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpBcmdzIn19LCB7ImVuZCI6IDcx
MzQsICJiZWdpbiI6IDcxMjIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
ZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekFyZ3NSZXNwIn19LCB7ImVuZCI6IDc0
MzcsICJiZWdpbiI6IDc0MjEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
ZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekFyZ3NTeW5jUmVzcCJ9fSwgeyJlbmQi
OiA3NjMzLCAiYmVnaW4iOiA3NjE3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
YXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpBcmdzU3luY1Jlc3AifX0sIHsi
ZW5kIjogNzgwMSwgImJlZ2luIjogNzc4NywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi
c2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXNzb2NpYXRlZCJ9fSwg
eyJlbmQiOiA4MTk3LCAiYmVnaW4iOiA4MTkzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6RHVtbXlJbnRlcmZhY2UuUGluZyJ9fSwgeyJl
bmQiOiA4NTczLCAiYmVnaW4iOiA4NTY0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpCYXNpYyJ9fSwgeyJlbmQi
OiA4NjY1LCAiYmVnaW4iOiA4NjUyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
YXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpCYXNpY1Jlc3AifX0sIHsiZW5k
IjogODc5NSwgImJlZ2luIjogODc3OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QmFzaWNTeW5jUmVzcCJ9fSwg
eyJlbmQiOiA4ODk1LCAiYmVnaW4iOiA4ODc4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpCYXNpY1N5bmNSZXNw
In19LCB7ImVuZCI6IDkwMTEsICJiZWdpbiI6IDkwMDMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v
am9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekFyZ3MifX0s
IHsiZW5kIjogOTEzMywgImJlZ2luIjogOTEyMSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXJnc1Jlc3AifX0s
IHsiZW5kIjogOTI5NCwgImJlZ2luIjogOTI3OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXJnc1N5bmNSZXNw
In19LCB7ImVuZCI6IDk0MjQsICJiZWdpbiI6IDk0MDgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v
am9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekFyZ3NTeW5j
UmVzcCJ9fSwgeyJlbmQiOiA5NTg1LCAiYmVnaW4iOiA5NTcxLCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6
ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpBc3Nv
Y2lhdGVkIn19LCB7ImVuZCI6IDEyODIzLCAiYmVnaW4iOiAxMjgwOCwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh
Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekR1bW15U3RydWN0In19
LCB7ImVuZCI6IDE2NTIwLCAiYmVnaW4iOiAxNjUxNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q
b20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekR1bW15U3RydWN0LmR1bW15In19LCB7
ImVuZCI6IDE3NTU3LCAiYmVnaW4iOiAxNzU0OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uIn19LCB7ImVuZCI6IDI0NTg2LCAi
YmVnaW4iOiAyNDU3NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYm9vbCJ9fSwgeyJlbmQiOiAyNDcwNSwgImJlZ2lu
IjogMjQ2OTIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6
Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2Jvb2wifX0sIHsiZW5kIjogMjQ4NTgsICJiZWdpbiI6IDI0
ODQ1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pv
bS5GdXp6VW5pb24uZnV6el9ib29sIn19LCB7ImVuZCI6IDI0OTU2LCAiYmVnaW4iOiAyNDk0NCwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elVuaW9uLmZ1enpfaW50OCJ9fSwgeyJlbmQiOiAyNTA3NywgImJlZ2luIjogMjUwNjQsICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlv
bi5mdXp6X2ludDgifX0sIHsiZW5kIjogMjUyMzAsICJiZWdpbiI6IDI1MjE3LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi
OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs
YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6
el9pbnQ4In19LCB7ImVuZCI6IDI1MzMyLCAiYmVnaW4iOiAyNTMxOSwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh
Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWlu
dDgifX0sIHsiZW5kIjogMjU0NTcsICJiZWdpbiI6IDI1NDQzLCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6
ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el91aW50OCJ9
fSwgeyJlbmQiOiAyNTYxNCwgImJlZ2luIjogMjU2MDAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v
am9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3VpbnQ4In19LCB7
ImVuZCI6IDI1NzE4LCAiYmVnaW4iOiAyNTcwNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfaW50MTYifX0sIHsiZW5k
IjogMjU4NDMsICJiZWdpbiI6IDI1ODI5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9pbnQxNiJ9fSwgeyJlbmQiOiAy
NjAwMCwgImJlZ2luIjogMjU5ODYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2ludDE2In19LCB7ImVuZCI6IDI2MTA2
LCAiYmVnaW4iOiAyNjA5MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDE2In19LCB7ImVuZCI6IDI2MjM1LCAi
YmVnaW4iOiAyNjIyMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDE2In19LCB7ImVuZCI6IDI2Mzk2LCAiYmVn
aW4iOiAyNjM4MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDE2In19LCB7ImVuZCI6IDI2NTAyLCAiYmVnaW4i
OiAyNjQ4OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elVuaW9uLmZ1enpfaW50MzIifX0sIHsiZW5kIjogMjY2MjcsICJiZWdpbiI6IDI2
NjEzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pv
bS5GdXp6VW5pb24uZnV6el9pbnQzMiJ9fSwgeyJlbmQiOiAyNjc4NCwgImJlZ2luIjogMjY3NzAs
ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p
dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1
enpVbmlvbi5mdXp6X2ludDMyIn19LCB7ImVuZCI6IDI2ODkwLCAiYmVnaW4iOiAyNjg3NiwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfdWludDMyIn19LCB7ImVuZCI6IDI3MDE5LCAiYmVnaW4iOiAyNzAwNCwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu
YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi
LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9u
LmZ1enpfdWludDMyIn19LCB7ImVuZCI6IDI3MTgwLCAiYmVnaW4iOiAyNzE2NSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l
IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi
bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1
enpfdWludDMyIn19LCB7ImVuZCI6IDI3Mjg2LCAiYmVnaW4iOiAyNzI3MywgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpf
aW50NjQifX0sIHsiZW5kIjogMjc0MTEsICJiZWdpbiI6IDI3Mzk3LCAiZWRnZSI6ICIlL2t5dGhl
L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9pbnQ2
NCJ9fSwgeyJlbmQiOiAyNzU2OCwgImJlZ2luIjogMjc1NTQsICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
Im1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2ludDY0In19
LCB7ImVuZCI6IDI3Njc0LCAiYmVnaW4iOiAyNzY2MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q
b20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDY0In19LCB7
ImVuZCI6IDI3ODAzLCAiYmVnaW4iOiAyNzc4OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDY0In19LCB7ImVu
ZCI6IDI3OTY0LCAiYmVnaW4iOiAyNzk0OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi
c2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDY0In19LCB7ImVuZCI6
IDI4MDcwLCAiYmVnaW4iOiAyODA1NywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfZmxvYXQifX0sIHsiZW5kIjogMjgx
OTMsICJiZWdpbiI6IDI4MTc5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5
cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1
cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9mbG9hdCJ9fSwgeyJlbmQiOiAyODM1MCwg
ImJlZ2luIjogMjgzMzYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6
ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2Zsb2F0In19LCB7ImVuZCI6IDI4NDU0LCAiYmVn
aW4iOiAyODQ0MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6elVuaW9uLmZ1enpfZG91YmxlIn19LCB7ImVuZCI6IDI4NTgxLCAiYmVnaW4i
OiAyODU2NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elVuaW9uLmZ1enpfZG91YmxlIn19LCB7ImVuZCI6IDI4NzQyLCAiYmVnaW4iOiAy
ODcyNywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k
ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9q
b20uRnV6elVuaW9uLmZ1enpfZG91YmxlIn19LCB7ImVuZCI6IDI4ODQ4LCAiYmVnaW4iOiAyODgz
NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp
bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv
bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20u
RnV6elVuaW9uLmZ1enpfc3RyaW5nIn19LCB7ImVuZCI6IDI4OTgxLCAiYmVnaW4iOiAyODk2Niwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elVuaW9uLmZ1enpfc3RyaW5nIn19LCB7ImVuZCI6IDI5MTQ1LCAiYmVnaW4iOiAyOTEzMCwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfc3RyaW5nIn19LCB7ImVuZCI6IDI5MjcxLCAiYmVnaW4iOiAyOTI1MywgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu
YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi
LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9u
LmZ1enpfYm9vbF9hcnJheSJ9fSwgeyJlbmQiOiAyOTQyMSwgImJlZ2luIjogMjk0MDIsICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlv
bi5mdXp6X2Jvb2xfYXJyYXkifX0sIHsiZW5kIjogMjk2MDAsICJiZWdpbiI6IDI5NTgxLCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5p
b24uZnV6el9ib29sX2FycmF5In19LCB7ImVuZCI6IDI5NzM5LCAiYmVnaW4iOiAyOTcxNiwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfcHJpbWl0aXZlX2FycmF5In19LCB7ImVuZCI6IDI5OTA2LCAiYmVnaW4iOiAyOTg4
MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp
bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv
bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20u
RnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX2FycmF5In19LCB7ImVuZCI6IDMwMTA1LCAiYmVnaW4i
OiAzMDA4MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX2FycmF5In19LCB7ImVuZCI6IDMwMjQ1LCAi
YmVnaW4iOiAzMDIyNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X2FycmF5In19LCB7ImVuZCI6IDMwNDE1
LCAiYmVnaW4iOiAzMDM5NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X2FycmF5In19LCB7ImVuZCI6IDMw
NjAyLCAiYmVnaW4iOiAzMDU4MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0
dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X2FycmF5In19LCB7ImVuZCI6
IDMwNzUzLCAiYmVnaW4iOiAzMDczMiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX21hcCJ9fSwgeyJl
bmQiOiAzMDkyOCwgImJlZ2luIjogMzA5MDYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg
InNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3ByaW1pdGl2ZV9tYXAifX0s
IHsiZW5kIjogMzExMTksICJiZWdpbiI6IDMxMDk3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv
bSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9wcmltaXRpdmVfbWFw
In19LCB7ImVuZCI6IDMxMjcyLCAiYmVnaW4iOiAzMTI1NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYXJyYXlfbWFw
In19LCB7ImVuZCI6IDMxNDUzLCAiYmVnaW4iOiAzMTQzNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYXJyYXlfbWFw
In19LCB7ImVuZCI6IDMxNjI4LCAiYmVnaW4iOiAzMTYxMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYXJyYXlfbWFw
In19LCB7ImVuZCI6IDMxNzk3LCAiYmVnaW4iOiAzMTc3OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X21h
cCJ9fSwgeyJlbmQiOiAzMTk3NSwgImJlZ2luIjogMzE5NTYsICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
Im1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3N0cnVjdF9t
YXAifX0sIHsiZW5kIjogMzIxNTQsICJiZWdpbiI6IDMyMTM1LCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6
ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9zdHJ1Y3Rf
bWFwIn19LCB7ImVuZCI6IDMyMzA5LCAiYmVnaW4iOiAzMjI5MiwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdW5pb25f
bWFwIn19LCB7ImVuZCI6IDMyNDc1LCAiYmVnaW4iOiAzMjQ1NywgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdW5pb25f
bWFwIn19LCB7ImVuZCI6IDMyNjUwLCAiYmVnaW4iOiAzMjYzMiwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdW5pb25f
bWFwIn19LCB7ImVuZCI6IDMyNzkxLCAiYmVnaW4iOiAzMjc3NiwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfY29tcGxl
eCJ9fSwgeyJlbmQiOiAzMzAzMiwgImJlZ2luIjogMzMwMTYsICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
Im1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2NvbXBsZXgi
fX0sIHsiZW5kIjogMzMyMDAsICJiZWdpbiI6IDMzMTg0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
b2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9jb21wbGV4In19
LCB7ImVuZCI6IDM0OTcyLCAiYmVnaW4iOiAzNDk2MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q
b20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVjdCJ9fSwgeyJlbmQiOiAzOTQ5
OSwgImJlZ2luIjogMzk0OTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
ZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9ib29sIn19LCB7ImVuZCI6IDM5NTc0LCAi
YmVnaW4iOiAzOTU2NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6X2ludDgifX0sIHsiZW5kIjogMzk2NTIsICJiZWdp
biI6IDM5NjQyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6
ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpfdWludDgifX0sIHsiZW5kIjogMzk3MzAsICJiZWdpbiI6
IDM5NzIwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5t
b2pvbS5GdXp6U3RydWN0LmZ1enpfaW50MTYifX0sIHsiZW5kIjogMzk4MTEsICJiZWdpbiI6IDM5
ODAwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pv
bS5GdXp6U3RydWN0LmZ1enpfdWludDE2In19LCB7ImVuZCI6IDM5ODg5LCAiYmVnaW4iOiAzOTg3
OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp
bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv
bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20u
RnV6elN0cnVjdC5mdXp6X2ludDMyIn19LCB7ImVuZCI6IDM5OTcwLCAiYmVnaW4iOiAzOTk1OSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elN0cnVjdC5mdXp6X3VpbnQzMiJ9fSwgeyJlbmQiOiA0MDA0OCwgImJlZ2luIjogNDAwMzgsICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpT
dHJ1Y3QuZnV6el9pbnQ2NCJ9fSwgeyJlbmQiOiA0MDEyOSwgImJlZ2luIjogNDAxMTgsICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1
Y3QuZnV6el91aW50NjQifX0sIHsiZW5kIjogNDAyMDUsICJiZWdpbiI6IDQwMTk1LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0
LmZ1enpfZmxvYXQifX0sIHsiZW5kIjogNDAyODQsICJiZWdpbiI6IDQwMjczLCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi
OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs
YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1
enpfZG91YmxlIn19LCB7ImVuZCI6IDQwMzY4LCAiYmVnaW4iOiA0MDM1NywgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6
X3N0cmluZyJ9fSwgeyJlbmQiOiA0MDQ2NiwgImJlZ2luIjogNDA0NTEsICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1
YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9i
b29sX2FycmF5In19LCB7ImVuZCI6IDQwNTc2LCAiYmVnaW4iOiA0MDU1NiwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6
X3ByaW1pdGl2ZV9hcnJheSJ9fSwgeyJlbmQiOiA0MDY5NiwgImJlZ2luIjogNDA2NzgsICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1
Y3QuZnV6el9wcmltaXRpdmVfbWFwIn19LCB7ImVuZCI6IDQwODI2LCAiYmVnaW4iOiA0MDgxMiwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elN0cnVjdC5mdXp6X2FycmF5X21hcCJ9fSwgeyJlbmQiOiA0MDk0MSwgImJlZ2luIjogNDA5Mjcs
ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p
dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1
enpTdHJ1Y3QuZnV6el91bmlvbl9tYXAifX0sIHsiZW5kIjogNDEwNDksICJiZWdpbiI6IDQxMDMz
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t
aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5G
dXp6U3RydWN0LmZ1enpfdW5pb25fYXJyYXkifX0sIHsiZW5kIjogNDExNjAsICJiZWdpbiI6IDQx
MTQzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pv
bS5GdXp6U3RydWN0LmZ1enpfc3RydWN0X2FycmF5In19LCB7ImVuZCI6IDQxMjg0LCAiYmVnaW4i
OiA0MTI2NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elN0cnVjdC5mdXp6X251bGxhYmxlX2FycmF5In19LCB7ImVuZCI6IDQxNDc2LCAi
YmVnaW4iOiA0MTQ2NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6X2NvbXBsZXgifX1dLCAidHlwZSI6ICJreXRoZTAi
fQ==
*/