blob: 4d3d48e4ada6283851799e8103c43bec2a1dad2f [file] [log] [blame]
// 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 COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
#define COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
#include <stdint.h>
#include <limits>
#include <type_traits>
#include <utility>
#include "base/callback.h"
#include "base/macros.h"
#include "base/optional.h"
#include "mojo/public/cpp/bindings/mojo_buildflags.h"
#if BUILDFLAG(MOJO_TRACE_ENABLED)
#include "base/trace_event/trace_event.h"
#endif
#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 "components/payments/mojom/payment_request_data.mojom-shared.h"
#include "components/payments/mojom/payment_request_data.mojom-forward.h"
#include <string>
#include <vector>
#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h"
#include "mojo/public/cpp/bindings/lib/native_enum_serialization.h"
#include "mojo/public/cpp/bindings/lib/native_struct_serialization.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace payments {
namespace mojom {
// @generated_from: payments.mojom.PaymentCurrencyAmount
class PaymentCurrencyAmount {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentCurrencyAmount, T>::value>;
using DataView = PaymentCurrencyAmountDataView;
using Data_ = internal::PaymentCurrencyAmount_Data;
template <typename... Args>
static PaymentCurrencyAmountPtr New(Args&&... args) {
return PaymentCurrencyAmountPtr(
base::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentCurrencyAmountPtr From(const U& u) {
return mojo::TypeConverter<PaymentCurrencyAmountPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentCurrencyAmount>::Convert(*this);
}
PaymentCurrencyAmount();
PaymentCurrencyAmount(
const std::string& currency,
const std::string& value);
~PaymentCurrencyAmount();
// 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 = PaymentCurrencyAmountPtr>
PaymentCurrencyAmountPtr 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, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentCurrencyAmount::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentCurrencyAmount::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::PaymentCurrencyAmount_UnserializedMessageContext<
UserType, PaymentCurrencyAmount::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<PaymentCurrencyAmount::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentCurrencyAmount::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::PaymentCurrencyAmount_UnserializedMessageContext<
UserType, PaymentCurrencyAmount::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentCurrencyAmount::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
// @generated_from: payments.mojom.PaymentCurrencyAmount.currency
std::string currency;
// @generated_from: payments.mojom.PaymentCurrencyAmount.value
std::string value;
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, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PayerErrors
class PayerErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PayerErrors, T>::value>;
using DataView = PayerErrorsDataView;
using Data_ = internal::PayerErrors_Data;
template <typename... Args>
static PayerErrorsPtr New(Args&&... args) {
return PayerErrorsPtr(
base::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PayerErrorsPtr From(const U& u) {
return mojo::TypeConverter<PayerErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PayerErrors>::Convert(*this);
}
PayerErrors();
PayerErrors(
const std::string& email,
const std::string& name,
const std::string& phone);
~PayerErrors();
// 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 = PayerErrorsPtr>
PayerErrorsPtr 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, PayerErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PayerErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PayerErrors::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::PayerErrors_UnserializedMessageContext<
UserType, PayerErrors::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<PayerErrors::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PayerErrors::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::PayerErrors_UnserializedMessageContext<
UserType, PayerErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PayerErrors::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
// @generated_from: payments.mojom.PayerErrors.email
std::string email;
// @generated_from: payments.mojom.PayerErrors.name
std::string name;
// @generated_from: payments.mojom.PayerErrors.phone
std::string phone;
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, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PaymentAddress
class PaymentAddress {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentAddress, T>::value>;
using DataView = PaymentAddressDataView;
using Data_ = internal::PaymentAddress_Data;
template <typename... Args>
static PaymentAddressPtr New(Args&&... args) {
return PaymentAddressPtr(
base::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentAddressPtr From(const U& u) {
return mojo::TypeConverter<PaymentAddressPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentAddress>::Convert(*this);
}
PaymentAddress();
PaymentAddress(
const std::string& country,
const std::vector<std::string>& address_line,
const std::string& region,
const std::string& city,
const std::string& dependent_locality,
const std::string& postal_code,
const std::string& sorting_code,
const std::string& organization,
const std::string& recipient,
const std::string& phone);
~PaymentAddress();
// 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 = PaymentAddressPtr>
PaymentAddressPtr 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, PaymentAddress::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentAddress::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentAddress::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::PaymentAddress_UnserializedMessageContext<
UserType, PaymentAddress::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<PaymentAddress::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentAddress::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::PaymentAddress_UnserializedMessageContext<
UserType, PaymentAddress::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentAddress::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
// @generated_from: payments.mojom.PaymentAddress.country
std::string country;
// @generated_from: payments.mojom.PaymentAddress.address_line
std::vector<std::string> address_line;
// @generated_from: payments.mojom.PaymentAddress.region
std::string region;
// @generated_from: payments.mojom.PaymentAddress.city
std::string city;
// @generated_from: payments.mojom.PaymentAddress.dependent_locality
std::string dependent_locality;
// @generated_from: payments.mojom.PaymentAddress.postal_code
std::string postal_code;
// @generated_from: payments.mojom.PaymentAddress.sorting_code
std::string sorting_code;
// @generated_from: payments.mojom.PaymentAddress.organization
std::string organization;
// @generated_from: payments.mojom.PaymentAddress.recipient
std::string recipient;
// @generated_from: payments.mojom.PaymentAddress.phone
std::string phone;
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, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PaymentValidationErrors
class PaymentValidationErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentValidationErrors, T>::value>;
using DataView = PaymentValidationErrorsDataView;
using Data_ = internal::PaymentValidationErrors_Data;
template <typename... Args>
static PaymentValidationErrorsPtr New(Args&&... args) {
return PaymentValidationErrorsPtr(
base::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentValidationErrorsPtr From(const U& u) {
return mojo::TypeConverter<PaymentValidationErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentValidationErrors>::Convert(*this);
}
PaymentValidationErrors();
PaymentValidationErrors(
const std::string& error,
PayerErrorsPtr payer,
AddressErrorsPtr shipping_address);
~PaymentValidationErrors();
// 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 = PaymentValidationErrorsPtr>
PaymentValidationErrorsPtr 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, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentValidationErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentValidationErrors::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::PaymentValidationErrors_UnserializedMessageContext<
UserType, PaymentValidationErrors::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<PaymentValidationErrors::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentValidationErrors::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::PaymentValidationErrors_UnserializedMessageContext<
UserType, PaymentValidationErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentValidationErrors::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
// @generated_from: payments.mojom.PaymentValidationErrors.error
std::string error;
// @generated_from: payments.mojom.PaymentValidationErrors.payer
PayerErrorsPtr payer;
// @generated_from: payments.mojom.PaymentValidationErrors.shipping_address
AddressErrorsPtr shipping_address;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
DISALLOW_COPY_AND_ASSIGN(PaymentValidationErrors);
};
// 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, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.AddressErrors
class AddressErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<AddressErrors, T>::value>;
using DataView = AddressErrorsDataView;
using Data_ = internal::AddressErrors_Data;
template <typename... Args>
static AddressErrorsPtr New(Args&&... args) {
return AddressErrorsPtr(
base::in_place, std::forward<Args>(args)...);
}
template <typename U>
static AddressErrorsPtr From(const U& u) {
return mojo::TypeConverter<AddressErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, AddressErrors>::Convert(*this);
}
AddressErrors();
AddressErrors(
const std::string& address_line,
const std::string& city,
const std::string& country,
const std::string& dependent_locality,
const std::string& organization,
const std::string& phone,
const std::string& postal_code,
const std::string& recipient,
const std::string& region,
const std::string& sorting_code);
~AddressErrors();
// 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 = AddressErrorsPtr>
AddressErrorsPtr 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, AddressErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
AddressErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
AddressErrors::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::AddressErrors_UnserializedMessageContext<
UserType, AddressErrors::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<AddressErrors::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return AddressErrors::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::AddressErrors_UnserializedMessageContext<
UserType, AddressErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<AddressErrors::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
// @generated_from: payments.mojom.AddressErrors.address_line
std::string address_line;
// @generated_from: payments.mojom.AddressErrors.city
std::string city;
// @generated_from: payments.mojom.AddressErrors.country
std::string country;
// @generated_from: payments.mojom.AddressErrors.dependent_locality
std::string dependent_locality;
// @generated_from: payments.mojom.AddressErrors.organization
std::string organization;
// @generated_from: payments.mojom.AddressErrors.phone
std::string phone;
// @generated_from: payments.mojom.AddressErrors.postal_code
std::string postal_code;
// @generated_from: payments.mojom.AddressErrors.recipient
std::string recipient;
// @generated_from: payments.mojom.AddressErrors.region
std::string region;
// @generated_from: payments.mojom.AddressErrors.sorting_code
std::string sorting_code;
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, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
PaymentAddressPtr PaymentAddress::Clone() const {
return New(
mojo::Clone(country),
mojo::Clone(address_line),
mojo::Clone(region),
mojo::Clone(city),
mojo::Clone(dependent_locality),
mojo::Clone(postal_code),
mojo::Clone(sorting_code),
mojo::Clone(organization),
mojo::Clone(recipient),
mojo::Clone(phone)
);
}
template <typename T, PaymentAddress::EnableIfSame<T>*>
bool PaymentAddress::Equals(const T& other_struct) const {
if (!mojo::Equals(this->country, other_struct.country))
return false;
if (!mojo::Equals(this->address_line, other_struct.address_line))
return false;
if (!mojo::Equals(this->region, other_struct.region))
return false;
if (!mojo::Equals(this->city, other_struct.city))
return false;
if (!mojo::Equals(this->dependent_locality, other_struct.dependent_locality))
return false;
if (!mojo::Equals(this->postal_code, other_struct.postal_code))
return false;
if (!mojo::Equals(this->sorting_code, other_struct.sorting_code))
return false;
if (!mojo::Equals(this->organization, other_struct.organization))
return false;
if (!mojo::Equals(this->recipient, other_struct.recipient))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
return true;
}
template <typename T, PaymentAddress::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.country < rhs.country)
return true;
if (rhs.country < lhs.country)
return false;
if (lhs.address_line < rhs.address_line)
return true;
if (rhs.address_line < lhs.address_line)
return false;
if (lhs.region < rhs.region)
return true;
if (rhs.region < lhs.region)
return false;
if (lhs.city < rhs.city)
return true;
if (rhs.city < lhs.city)
return false;
if (lhs.dependent_locality < rhs.dependent_locality)
return true;
if (rhs.dependent_locality < lhs.dependent_locality)
return false;
if (lhs.postal_code < rhs.postal_code)
return true;
if (rhs.postal_code < lhs.postal_code)
return false;
if (lhs.sorting_code < rhs.sorting_code)
return true;
if (rhs.sorting_code < lhs.sorting_code)
return false;
if (lhs.organization < rhs.organization)
return true;
if (rhs.organization < lhs.organization)
return false;
if (lhs.recipient < rhs.recipient)
return true;
if (rhs.recipient < lhs.recipient)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
return false;
}
template <typename StructPtrType>
PaymentCurrencyAmountPtr PaymentCurrencyAmount::Clone() const {
return New(
mojo::Clone(currency),
mojo::Clone(value)
);
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>*>
bool PaymentCurrencyAmount::Equals(const T& other_struct) const {
if (!mojo::Equals(this->currency, other_struct.currency))
return false;
if (!mojo::Equals(this->value, other_struct.value))
return false;
return true;
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.currency < rhs.currency)
return true;
if (rhs.currency < lhs.currency)
return false;
if (lhs.value < rhs.value)
return true;
if (rhs.value < lhs.value)
return false;
return false;
}
template <typename StructPtrType>
PaymentValidationErrorsPtr PaymentValidationErrors::Clone() const {
return New(
mojo::Clone(error),
mojo::Clone(payer),
mojo::Clone(shipping_address)
);
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>*>
bool PaymentValidationErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->error, other_struct.error))
return false;
if (!mojo::Equals(this->payer, other_struct.payer))
return false;
if (!mojo::Equals(this->shipping_address, other_struct.shipping_address))
return false;
return true;
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.error < rhs.error)
return true;
if (rhs.error < lhs.error)
return false;
if (lhs.payer < rhs.payer)
return true;
if (rhs.payer < lhs.payer)
return false;
if (lhs.shipping_address < rhs.shipping_address)
return true;
if (rhs.shipping_address < lhs.shipping_address)
return false;
return false;
}
template <typename StructPtrType>
PayerErrorsPtr PayerErrors::Clone() const {
return New(
mojo::Clone(email),
mojo::Clone(name),
mojo::Clone(phone)
);
}
template <typename T, PayerErrors::EnableIfSame<T>*>
bool PayerErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->email, other_struct.email))
return false;
if (!mojo::Equals(this->name, other_struct.name))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
return true;
}
template <typename T, PayerErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.email < rhs.email)
return true;
if (rhs.email < lhs.email)
return false;
if (lhs.name < rhs.name)
return true;
if (rhs.name < lhs.name)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
return false;
}
template <typename StructPtrType>
AddressErrorsPtr AddressErrors::Clone() const {
return New(
mojo::Clone(address_line),
mojo::Clone(city),
mojo::Clone(country),
mojo::Clone(dependent_locality),
mojo::Clone(organization),
mojo::Clone(phone),
mojo::Clone(postal_code),
mojo::Clone(recipient),
mojo::Clone(region),
mojo::Clone(sorting_code)
);
}
template <typename T, AddressErrors::EnableIfSame<T>*>
bool AddressErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->address_line, other_struct.address_line))
return false;
if (!mojo::Equals(this->city, other_struct.city))
return false;
if (!mojo::Equals(this->country, other_struct.country))
return false;
if (!mojo::Equals(this->dependent_locality, other_struct.dependent_locality))
return false;
if (!mojo::Equals(this->organization, other_struct.organization))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
if (!mojo::Equals(this->postal_code, other_struct.postal_code))
return false;
if (!mojo::Equals(this->recipient, other_struct.recipient))
return false;
if (!mojo::Equals(this->region, other_struct.region))
return false;
if (!mojo::Equals(this->sorting_code, other_struct.sorting_code))
return false;
return true;
}
template <typename T, AddressErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.address_line < rhs.address_line)
return true;
if (rhs.address_line < lhs.address_line)
return false;
if (lhs.city < rhs.city)
return true;
if (rhs.city < lhs.city)
return false;
if (lhs.country < rhs.country)
return true;
if (rhs.country < lhs.country)
return false;
if (lhs.dependent_locality < rhs.dependent_locality)
return true;
if (rhs.dependent_locality < lhs.dependent_locality)
return false;
if (lhs.organization < rhs.organization)
return true;
if (rhs.organization < lhs.organization)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
if (lhs.postal_code < rhs.postal_code)
return true;
if (rhs.postal_code < lhs.postal_code)
return false;
if (lhs.recipient < rhs.recipient)
return true;
if (rhs.recipient < lhs.recipient)
return false;
if (lhs.region < rhs.region)
return true;
if (rhs.region < lhs.region)
return false;
if (lhs.sorting_code < rhs.sorting_code)
return true;
if (rhs.sorting_code < lhs.sorting_code)
return false;
return false;
}
} // namespace mojom
} // namespace payments
namespace mojo {
template <>
struct StructTraits<::payments::mojom::PaymentAddress::DataView,
::payments::mojom::PaymentAddressPtr> {
static bool IsNull(const ::payments::mojom::PaymentAddressPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentAddressPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentAddress::country)& country(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->country;
}
static const decltype(::payments::mojom::PaymentAddress::address_line)& address_line(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->address_line;
}
static const decltype(::payments::mojom::PaymentAddress::region)& region(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->region;
}
static const decltype(::payments::mojom::PaymentAddress::city)& city(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->city;
}
static const decltype(::payments::mojom::PaymentAddress::dependent_locality)& dependent_locality(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->dependent_locality;
}
static const decltype(::payments::mojom::PaymentAddress::postal_code)& postal_code(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->postal_code;
}
static const decltype(::payments::mojom::PaymentAddress::sorting_code)& sorting_code(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->sorting_code;
}
static const decltype(::payments::mojom::PaymentAddress::organization)& organization(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->organization;
}
static const decltype(::payments::mojom::PaymentAddress::recipient)& recipient(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->recipient;
}
static const decltype(::payments::mojom::PaymentAddress::phone)& phone(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->phone;
}
static bool Read(::payments::mojom::PaymentAddress::DataView input, ::payments::mojom::PaymentAddressPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PaymentCurrencyAmount::DataView,
::payments::mojom::PaymentCurrencyAmountPtr> {
static bool IsNull(const ::payments::mojom::PaymentCurrencyAmountPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentCurrencyAmountPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentCurrencyAmount::currency)& currency(
const ::payments::mojom::PaymentCurrencyAmountPtr& input) {
return input->currency;
}
static const decltype(::payments::mojom::PaymentCurrencyAmount::value)& value(
const ::payments::mojom::PaymentCurrencyAmountPtr& input) {
return input->value;
}
static bool Read(::payments::mojom::PaymentCurrencyAmount::DataView input, ::payments::mojom::PaymentCurrencyAmountPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PaymentValidationErrors::DataView,
::payments::mojom::PaymentValidationErrorsPtr> {
static bool IsNull(const ::payments::mojom::PaymentValidationErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentValidationErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentValidationErrors::error)& error(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->error;
}
static const decltype(::payments::mojom::PaymentValidationErrors::payer)& payer(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->payer;
}
static const decltype(::payments::mojom::PaymentValidationErrors::shipping_address)& shipping_address(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->shipping_address;
}
static bool Read(::payments::mojom::PaymentValidationErrors::DataView input, ::payments::mojom::PaymentValidationErrorsPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PayerErrors::DataView,
::payments::mojom::PayerErrorsPtr> {
static bool IsNull(const ::payments::mojom::PayerErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PayerErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PayerErrors::email)& email(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->email;
}
static const decltype(::payments::mojom::PayerErrors::name)& name(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->name;
}
static const decltype(::payments::mojom::PayerErrors::phone)& phone(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->phone;
}
static bool Read(::payments::mojom::PayerErrors::DataView input, ::payments::mojom::PayerErrorsPtr* output);
};
template <>
struct StructTraits<::payments::mojom::AddressErrors::DataView,
::payments::mojom::AddressErrorsPtr> {
static bool IsNull(const ::payments::mojom::AddressErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::AddressErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::AddressErrors::address_line)& address_line(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->address_line;
}
static const decltype(::payments::mojom::AddressErrors::city)& city(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->city;
}
static const decltype(::payments::mojom::AddressErrors::country)& country(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->country;
}
static const decltype(::payments::mojom::AddressErrors::dependent_locality)& dependent_locality(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->dependent_locality;
}
static const decltype(::payments::mojom::AddressErrors::organization)& organization(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->organization;
}
static const decltype(::payments::mojom::AddressErrors::phone)& phone(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->phone;
}
static const decltype(::payments::mojom::AddressErrors::postal_code)& postal_code(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->postal_code;
}
static const decltype(::payments::mojom::AddressErrors::recipient)& recipient(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->recipient;
}
static const decltype(::payments::mojom::AddressErrors::region)& region(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->region;
}
static const decltype(::payments::mojom::AddressErrors::sorting_code)& sorting_code(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->sorting_code;
}
static bool Read(::payments::mojom::AddressErrors::DataView input, ::payments::mojom::AddressErrorsPtr* output);
};
} // namespace mojo
#endif // COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMTk0MCwgImJlZ2luIjogMTkxOSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRDdXJyZW5jeUFt
b3VudCJ9fSwgeyJlbmQiOiA1NzAwLCAiYmVnaW4iOiA1NjkyLCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6
ICJtb2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEN1cnJlbmN5QW1v
dW50LmN1cnJlbmN5In19LCB7ImVuZCI6IDU3ODcsICJiZWdpbiI6IDU3ODIsICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6
IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh
bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXltZW50Q3Vy
cmVuY3lBbW91bnQudmFsdWUifX0sIHsiZW5kIjogNjc0NywgImJlZ2luIjogNjczNiwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu
YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi
LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheWVy
RXJyb3JzIn19LCB7ImVuZCI6IDEwMjg5LCAiYmVnaW4iOiAxMDI4NCwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh
Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheWVyRXJyb3JzLmVt
YWlsIn19LCB7ImVuZCI6IDEwMzY0LCAiYmVnaW4iOiAxMDM2MCwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheWVyRXJyb3JzLm5hbWUi
fX0sIHsiZW5kIjogMTA0NDEsICJiZWdpbiI6IDEwNDM2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
b2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5ZXJFcnJvcnMucGhvbmUifX0s
IHsiZW5kIjogMTEzNjksICJiZWdpbiI6IDExMzU1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv
bSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MifX0sIHsiZW5k
IjogMTUyMzcsICJiZWdpbiI6IDE1MjMwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz
aWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MuY291bnRyeSJ9fSwgeyJl
bmQiOiAxNTM0NCwgImJlZ2luIjogMTUzMzIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg
InNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXltZW50QWRkcmVzcy5hZGRyZXNzX2xpbmUi
fX0sIHsiZW5kIjogMTU0MjYsICJiZWdpbiI6IDE1NDIwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
b2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MucmVnaW9u
In19LCB7ImVuZCI6IDE1NTA0LCAiYmVnaW4iOiAxNTUwMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRBZGRyZXNzLmNpdHki
fX0sIHsiZW5kIjogMTU2MTAsICJiZWdpbiI6IDE1NTkyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
b2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MuZGVwZW5k
ZW50X2xvY2FsaXR5In19LCB7ImVuZCI6IDE1NzAyLCAiYmVnaW4iOiAxNTY5MSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l
IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi
bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRB
ZGRyZXNzLnBvc3RhbF9jb2RlIn19LCB7ImVuZCI6IDE1Nzk2LCAiYmVnaW4iOiAxNTc4NCwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBh
eW1lbnRBZGRyZXNzLnNvcnRpbmdfY29kZSJ9fSwgeyJlbmQiOiAxNTg5MCwgImJlZ2luIjogMTU4
NzgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy
b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5t
b2pvbS5QYXltZW50QWRkcmVzcy5vcmdhbml6YXRpb24ifX0sIHsiZW5kIjogMTU5NzgsICJiZWdp
biI6IDE1OTY5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAicGF5
bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MucmVjaXBpZW50In19LCB7ImVuZCI6IDE2MDU4LCAi
YmVnaW4iOiAxNjA1MywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
InBheW1lbnRzLm1vam9tLlBheW1lbnRBZGRyZXNzLnBob25lIn19LCB7ImVuZCI6IDE3MDE0LCAi
YmVnaW4iOiAxNjk5MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
InBheW1lbnRzLm1vam9tLlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzIn19LCB7ImVuZCI6IDIwODUw
LCAiYmVnaW4iOiAyMDg0NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogInBheW1lbnRzLm1vam9tLlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmVycm9yIn19LCB7ImVu
ZCI6IDIwOTQyLCAiYmVnaW4iOiAyMDkzNywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi
c2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLnBheWVy
In19LCB7ImVuZCI6IDIxMDU4LCAiYmVnaW4iOiAyMTA0MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRWYWxpZGF0aW9uRXJy
b3JzLnNoaXBwaW5nX2FkZHJlc3MifX0sIHsiZW5kIjogMjIwODMsICJiZWdpbiI6IDIyMDcwLCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20u
QWRkcmVzc0Vycm9ycyJ9fSwgeyJlbmQiOiAyNTk1OCwgImJlZ2luIjogMjU5NDYsICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt
ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg
Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5BZGRyZXNz
RXJyb3JzLmFkZHJlc3NfbGluZSJ9fSwgeyJlbmQiOiAyNjAzNSwgImJlZ2luIjogMjYwMzEsICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5B
ZGRyZXNzRXJyb3JzLmNpdHkifX0sIHsiZW5kIjogMjYxMTgsICJiZWdpbiI6IDI2MTExLCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uQWRk
cmVzc0Vycm9ycy5jb3VudHJ5In19LCB7ImVuZCI6IDI2MjIzLCAiYmVnaW4iOiAyNjIwNSwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLkFk
ZHJlc3NFcnJvcnMuZGVwZW5kZW50X2xvY2FsaXR5In19LCB7ImVuZCI6IDI2MzE2LCAiYmVnaW4i
OiAyNjMwNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInBheW1l
bnRzLm1vam9tLkFkZHJlc3NFcnJvcnMub3JnYW5pemF0aW9uIn19LCB7ImVuZCI6IDI2Mzk1LCAi
YmVnaW4iOiAyNjM5MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
InBheW1lbnRzLm1vam9tLkFkZHJlc3NFcnJvcnMucGhvbmUifX0sIHsiZW5kIjogMjY0ODYsICJi
ZWdpbiI6IDI2NDc1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi
cGF5bWVudHMubW9qb20uQWRkcmVzc0Vycm9ycy5wb3N0YWxfY29kZSJ9fSwgeyJlbmQiOiAyNjU3
MywgImJlZ2luIjogMjY1NjQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
ZSI6ICJwYXltZW50cy5tb2pvbS5BZGRyZXNzRXJyb3JzLnJlY2lwaWVudCJ9fSwgeyJlbmQiOiAy
NjY1NCwgImJlZ2luIjogMjY2NDgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJwYXltZW50cy5tb2pvbS5BZGRyZXNzRXJyb3JzLnJlZ2lvbiJ9fSwgeyJlbmQiOiAy
Njc0NywgImJlZ2luIjogMjY3MzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJwYXltZW50cy5tb2pvbS5BZGRyZXNzRXJyb3JzLnNvcnRpbmdfY29kZSJ9fV0sICJ0
eXBlIjogImt5dGhlMCJ9
*/