| // gpu/ipc/common/vulkan_types.mojom.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 GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_H_ |
| #define GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_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 "gpu/ipc/common/vulkan_types.mojom-shared.h" |
| #include "gpu/ipc/common/vulkan_types.mojom-forward.h" |
| #include <string> |
| #include <vector> |
| |
| |
| |
| |
| #include "gpu/ipc/common/vulkan_types_mojom_traits.h" |
| #include "gpu/gpu_export.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace gpu { |
| namespace mojom { |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkExtensionProperties |
| class GPU_EXPORT VkExtensionProperties { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkExtensionProperties, T>::value>; |
| using DataView = VkExtensionPropertiesDataView; |
| using Data_ = internal::VkExtensionProperties_Data; |
| |
| template <typename... Args> |
| static VkExtensionPropertiesPtr New(Args&&... args) { |
| return VkExtensionPropertiesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkExtensionPropertiesPtr From(const U& u) { |
| return mojo::TypeConverter<VkExtensionPropertiesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkExtensionProperties>::Convert(*this); |
| } |
| |
| |
| VkExtensionProperties(); |
| |
| VkExtensionProperties( |
| const std::string& extensionName, |
| uint32_t specVersion); |
| |
| |
| ~VkExtensionProperties(); |
| |
| // 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 = VkExtensionPropertiesPtr> |
| VkExtensionPropertiesPtr 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, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkExtensionProperties::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkExtensionProperties::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::VkExtensionProperties_UnserializedMessageContext< |
| UserType, VkExtensionProperties::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<VkExtensionProperties::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkExtensionProperties::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::VkExtensionProperties_UnserializedMessageContext< |
| UserType, VkExtensionProperties::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkExtensionProperties::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkExtensionProperties.extensionName |
| std::string extensionName; |
| |
| // @generated_from: gpu.mojom.VkExtensionProperties.specVersion |
| uint32_t specVersion; |
| |
| // 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, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkLayerProperties |
| class GPU_EXPORT VkLayerProperties { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkLayerProperties, T>::value>; |
| using DataView = VkLayerPropertiesDataView; |
| using Data_ = internal::VkLayerProperties_Data; |
| |
| template <typename... Args> |
| static VkLayerPropertiesPtr New(Args&&... args) { |
| return VkLayerPropertiesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkLayerPropertiesPtr From(const U& u) { |
| return mojo::TypeConverter<VkLayerPropertiesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkLayerProperties>::Convert(*this); |
| } |
| |
| |
| VkLayerProperties(); |
| |
| VkLayerProperties( |
| const std::string& layerName, |
| uint32_t specVersion, |
| uint32_t implementationVersion, |
| const std::string& description); |
| |
| |
| ~VkLayerProperties(); |
| |
| // 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 = VkLayerPropertiesPtr> |
| VkLayerPropertiesPtr 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, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkLayerProperties::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkLayerProperties::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::VkLayerProperties_UnserializedMessageContext< |
| UserType, VkLayerProperties::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<VkLayerProperties::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkLayerProperties::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::VkLayerProperties_UnserializedMessageContext< |
| UserType, VkLayerProperties::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkLayerProperties::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkLayerProperties.layerName |
| std::string layerName; |
| |
| // @generated_from: gpu.mojom.VkLayerProperties.specVersion |
| uint32_t specVersion; |
| |
| // @generated_from: gpu.mojom.VkLayerProperties.implementationVersion |
| uint32_t implementationVersion; |
| |
| // @generated_from: gpu.mojom.VkLayerProperties.description |
| std::string description; |
| |
| // 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, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkExtent3D |
| class GPU_EXPORT VkExtent3D { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkExtent3D, T>::value>; |
| using DataView = VkExtent3DDataView; |
| using Data_ = internal::VkExtent3D_Data; |
| |
| template <typename... Args> |
| static VkExtent3DPtr New(Args&&... args) { |
| return VkExtent3DPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkExtent3DPtr From(const U& u) { |
| return mojo::TypeConverter<VkExtent3DPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkExtent3D>::Convert(*this); |
| } |
| |
| |
| VkExtent3D(); |
| |
| VkExtent3D( |
| uint32_t width, |
| uint32_t height, |
| uint32_t depth); |
| |
| |
| ~VkExtent3D(); |
| |
| // 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 = VkExtent3DPtr> |
| VkExtent3DPtr 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, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkExtent3D::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkExtent3D::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::VkExtent3D_UnserializedMessageContext< |
| UserType, VkExtent3D::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<VkExtent3D::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkExtent3D::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::VkExtent3D_UnserializedMessageContext< |
| UserType, VkExtent3D::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkExtent3D::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkExtent3D.width |
| uint32_t width; |
| |
| // @generated_from: gpu.mojom.VkExtent3D.height |
| uint32_t height; |
| |
| // @generated_from: gpu.mojom.VkExtent3D.depth |
| uint32_t depth; |
| |
| // 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, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits |
| class GPU_EXPORT VkPhysicalDeviceLimits { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkPhysicalDeviceLimits, T>::value>; |
| using DataView = VkPhysicalDeviceLimitsDataView; |
| using Data_ = internal::VkPhysicalDeviceLimits_Data; |
| |
| template <typename... Args> |
| static VkPhysicalDeviceLimitsPtr New(Args&&... args) { |
| return VkPhysicalDeviceLimitsPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkPhysicalDeviceLimitsPtr From(const U& u) { |
| return mojo::TypeConverter<VkPhysicalDeviceLimitsPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkPhysicalDeviceLimits>::Convert(*this); |
| } |
| |
| |
| VkPhysicalDeviceLimits(); |
| |
| VkPhysicalDeviceLimits( |
| uint32_t maxImageDimension1D, |
| uint32_t maxImageDimension2D, |
| uint32_t maxImageDimension3D, |
| uint32_t maxImageDimensionCube, |
| uint32_t maxImageArrayLayers, |
| uint32_t maxTexelBufferElements, |
| uint32_t maxUniformBufferRange, |
| uint32_t maxStorageBufferRange, |
| uint32_t maxPushConstantsSize, |
| uint32_t maxMemoryAllocationCount, |
| uint32_t maxSamplerAllocationCount, |
| uint64_t bufferImageGranularity, |
| uint64_t sparseAddressSpaceSize, |
| uint32_t maxBoundDescriptorSets, |
| uint32_t maxPerStageDescriptorSamplers, |
| uint32_t maxPerStageDescriptorUniformBuffers, |
| uint32_t maxPerStageDescriptorStorageBuffers, |
| uint32_t maxPerStageDescriptorSampledImages, |
| uint32_t maxPerStageDescriptorStorageImages, |
| uint32_t maxPerStageDescriptorInputAttachments, |
| uint32_t maxPerStageResources, |
| uint32_t maxDescriptorSetSamplers, |
| uint32_t maxDescriptorSetUniformBuffers, |
| uint32_t maxDescriptorSetUniformBuffersDynamic, |
| uint32_t maxDescriptorSetStorageBuffers, |
| uint32_t maxDescriptorSetStorageBuffersDynamic, |
| uint32_t maxDescriptorSetSampledImages, |
| uint32_t maxDescriptorSetStorageImages, |
| uint32_t maxDescriptorSetInputAttachments, |
| uint32_t maxVertexInputAttributes, |
| uint32_t maxVertexInputBindings, |
| uint32_t maxVertexInputAttributeOffset, |
| uint32_t maxVertexInputBindingStride, |
| uint32_t maxVertexOutputComponents, |
| uint32_t maxTessellationGenerationLevel, |
| uint32_t maxTessellationPatchSize, |
| uint32_t maxTessellationControlPerVertexInputComponents, |
| uint32_t maxTessellationControlPerVertexOutputComponents, |
| uint32_t maxTessellationControlPerPatchOutputComponents, |
| uint32_t maxTessellationControlTotalOutputComponents, |
| uint32_t maxTessellationEvaluationInputComponents, |
| uint32_t maxTessellationEvaluationOutputComponents, |
| uint32_t maxGeometryShaderInvocations, |
| uint32_t maxGeometryInputComponents, |
| uint32_t maxGeometryOutputComponents, |
| uint32_t maxGeometryOutputVertices, |
| uint32_t maxGeometryTotalOutputComponents, |
| uint32_t maxFragmentInputComponents, |
| uint32_t maxFragmentOutputAttachments, |
| uint32_t maxFragmentDualSrcAttachments, |
| uint32_t maxFragmentCombinedOutputResources, |
| uint32_t maxComputeSharedMemorySize, |
| std::vector<uint32_t> maxComputeWorkGroupCount, |
| uint32_t maxComputeWorkGroupInvocations, |
| std::vector<uint32_t> maxComputeWorkGroupSize, |
| uint32_t subPixelPrecisionBits, |
| uint32_t subTexelPrecisionBits, |
| uint32_t mipmapPrecisionBits, |
| uint32_t maxDrawIndexedIndexValue, |
| uint32_t maxDrawIndirectCount, |
| float maxSamplerLodBias, |
| float maxSamplerAnisotropy, |
| uint32_t maxViewports, |
| std::vector<uint32_t> maxViewportDimensions, |
| std::vector<float> viewportBoundsRange, |
| uint32_t viewportSubPixelBits, |
| uint64_t minMemoryMapAlignment, |
| uint64_t minTexelBufferOffsetAlignment, |
| uint64_t minUniformBufferOffsetAlignment, |
| uint64_t minStorageBufferOffsetAlignment, |
| int32_t minTexelOffset, |
| uint32_t maxTexelOffset, |
| int32_t minTexelGatherOffset, |
| uint32_t maxTexelGatherOffset, |
| float minInterpolationOffset, |
| float maxInterpolationOffset, |
| uint32_t subPixelInterpolationOffsetBits, |
| uint32_t maxFramebufferWidth, |
| uint32_t maxFramebufferHeight, |
| uint32_t maxFramebufferLayers, |
| uint32_t framebufferColorSampleCounts, |
| uint32_t framebufferDepthSampleCounts, |
| uint32_t framebufferStencilSampleCounts, |
| uint32_t framebufferNoAttachmentsSampleCounts, |
| uint32_t maxColorAttachments, |
| uint32_t sampledImageColorSampleCounts, |
| uint32_t sampledImageIntegerSampleCounts, |
| uint32_t sampledImageDepthSampleCounts, |
| uint32_t sampledImageStencilSampleCounts, |
| uint32_t storageImageSampleCounts, |
| uint32_t maxSampleMaskWords, |
| bool timestampComputeAndGraphics, |
| float timestampPeriod, |
| uint32_t maxClipDistances, |
| uint32_t maxCullDistances, |
| uint32_t maxCombinedClipAndCullDistances, |
| uint32_t discreteQueuePriorities, |
| std::vector<float> pointSizeRange, |
| std::vector<float> lineWidthRange, |
| float pointSizeGranularity, |
| float lineWidthGranularity, |
| bool strictLines, |
| bool standardSampleLocations, |
| uint64_t optimalBufferCopyOffsetAlignment, |
| uint64_t optimalBufferCopyRowPitchAlignment, |
| uint64_t nonCoherentAtomSize); |
| |
| |
| ~VkPhysicalDeviceLimits(); |
| |
| // 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 = VkPhysicalDeviceLimitsPtr> |
| VkPhysicalDeviceLimitsPtr 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, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkPhysicalDeviceLimits::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkPhysicalDeviceLimits::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::VkPhysicalDeviceLimits_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceLimits::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<VkPhysicalDeviceLimits::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkPhysicalDeviceLimits::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::VkPhysicalDeviceLimits_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceLimits::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkPhysicalDeviceLimits::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxImageDimension1D |
| uint32_t maxImageDimension1D; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxImageDimension2D |
| uint32_t maxImageDimension2D; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxImageDimension3D |
| uint32_t maxImageDimension3D; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxImageDimensionCube |
| uint32_t maxImageDimensionCube; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxImageArrayLayers |
| uint32_t maxImageArrayLayers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTexelBufferElements |
| uint32_t maxTexelBufferElements; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxUniformBufferRange |
| uint32_t maxUniformBufferRange; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxStorageBufferRange |
| uint32_t maxStorageBufferRange; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPushConstantsSize |
| uint32_t maxPushConstantsSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxMemoryAllocationCount |
| uint32_t maxMemoryAllocationCount; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxSamplerAllocationCount |
| uint32_t maxSamplerAllocationCount; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.bufferImageGranularity |
| uint64_t bufferImageGranularity; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.sparseAddressSpaceSize |
| uint64_t sparseAddressSpaceSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxBoundDescriptorSets |
| uint32_t maxBoundDescriptorSets; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorSamplers |
| uint32_t maxPerStageDescriptorSamplers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorUniformBuffers |
| uint32_t maxPerStageDescriptorUniformBuffers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorStorageBuffers |
| uint32_t maxPerStageDescriptorStorageBuffers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorSampledImages |
| uint32_t maxPerStageDescriptorSampledImages; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorStorageImages |
| uint32_t maxPerStageDescriptorStorageImages; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageDescriptorInputAttachments |
| uint32_t maxPerStageDescriptorInputAttachments; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxPerStageResources |
| uint32_t maxPerStageResources; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetSamplers |
| uint32_t maxDescriptorSetSamplers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetUniformBuffers |
| uint32_t maxDescriptorSetUniformBuffers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetUniformBuffersDynamic |
| uint32_t maxDescriptorSetUniformBuffersDynamic; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetStorageBuffers |
| uint32_t maxDescriptorSetStorageBuffers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetStorageBuffersDynamic |
| uint32_t maxDescriptorSetStorageBuffersDynamic; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetSampledImages |
| uint32_t maxDescriptorSetSampledImages; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetStorageImages |
| uint32_t maxDescriptorSetStorageImages; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDescriptorSetInputAttachments |
| uint32_t maxDescriptorSetInputAttachments; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxVertexInputAttributes |
| uint32_t maxVertexInputAttributes; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxVertexInputBindings |
| uint32_t maxVertexInputBindings; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxVertexInputAttributeOffset |
| uint32_t maxVertexInputAttributeOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxVertexInputBindingStride |
| uint32_t maxVertexInputBindingStride; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxVertexOutputComponents |
| uint32_t maxVertexOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationGenerationLevel |
| uint32_t maxTessellationGenerationLevel; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationPatchSize |
| uint32_t maxTessellationPatchSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationControlPerVertexInputComponents |
| uint32_t maxTessellationControlPerVertexInputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationControlPerVertexOutputComponents |
| uint32_t maxTessellationControlPerVertexOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationControlPerPatchOutputComponents |
| uint32_t maxTessellationControlPerPatchOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationControlTotalOutputComponents |
| uint32_t maxTessellationControlTotalOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationEvaluationInputComponents |
| uint32_t maxTessellationEvaluationInputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTessellationEvaluationOutputComponents |
| uint32_t maxTessellationEvaluationOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxGeometryShaderInvocations |
| uint32_t maxGeometryShaderInvocations; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxGeometryInputComponents |
| uint32_t maxGeometryInputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxGeometryOutputComponents |
| uint32_t maxGeometryOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxGeometryOutputVertices |
| uint32_t maxGeometryOutputVertices; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxGeometryTotalOutputComponents |
| uint32_t maxGeometryTotalOutputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFragmentInputComponents |
| uint32_t maxFragmentInputComponents; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFragmentOutputAttachments |
| uint32_t maxFragmentOutputAttachments; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFragmentDualSrcAttachments |
| uint32_t maxFragmentDualSrcAttachments; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFragmentCombinedOutputResources |
| uint32_t maxFragmentCombinedOutputResources; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxComputeSharedMemorySize |
| uint32_t maxComputeSharedMemorySize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxComputeWorkGroupCount |
| std::vector<uint32_t> maxComputeWorkGroupCount; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxComputeWorkGroupInvocations |
| uint32_t maxComputeWorkGroupInvocations; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxComputeWorkGroupSize |
| std::vector<uint32_t> maxComputeWorkGroupSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.subPixelPrecisionBits |
| uint32_t subPixelPrecisionBits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.subTexelPrecisionBits |
| uint32_t subTexelPrecisionBits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.mipmapPrecisionBits |
| uint32_t mipmapPrecisionBits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDrawIndexedIndexValue |
| uint32_t maxDrawIndexedIndexValue; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxDrawIndirectCount |
| uint32_t maxDrawIndirectCount; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxSamplerLodBias |
| float maxSamplerLodBias; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxSamplerAnisotropy |
| float maxSamplerAnisotropy; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxViewports |
| uint32_t maxViewports; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxViewportDimensions |
| std::vector<uint32_t> maxViewportDimensions; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.viewportBoundsRange |
| std::vector<float> viewportBoundsRange; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.viewportSubPixelBits |
| uint32_t viewportSubPixelBits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minMemoryMapAlignment |
| uint64_t minMemoryMapAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minTexelBufferOffsetAlignment |
| uint64_t minTexelBufferOffsetAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minUniformBufferOffsetAlignment |
| uint64_t minUniformBufferOffsetAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minStorageBufferOffsetAlignment |
| uint64_t minStorageBufferOffsetAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minTexelOffset |
| int32_t minTexelOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTexelOffset |
| uint32_t maxTexelOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minTexelGatherOffset |
| int32_t minTexelGatherOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxTexelGatherOffset |
| uint32_t maxTexelGatherOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.minInterpolationOffset |
| float minInterpolationOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxInterpolationOffset |
| float maxInterpolationOffset; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.subPixelInterpolationOffsetBits |
| uint32_t subPixelInterpolationOffsetBits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFramebufferWidth |
| uint32_t maxFramebufferWidth; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFramebufferHeight |
| uint32_t maxFramebufferHeight; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxFramebufferLayers |
| uint32_t maxFramebufferLayers; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.framebufferColorSampleCounts |
| uint32_t framebufferColorSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.framebufferDepthSampleCounts |
| uint32_t framebufferDepthSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.framebufferStencilSampleCounts |
| uint32_t framebufferStencilSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.framebufferNoAttachmentsSampleCounts |
| uint32_t framebufferNoAttachmentsSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxColorAttachments |
| uint32_t maxColorAttachments; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.sampledImageColorSampleCounts |
| uint32_t sampledImageColorSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.sampledImageIntegerSampleCounts |
| uint32_t sampledImageIntegerSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.sampledImageDepthSampleCounts |
| uint32_t sampledImageDepthSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.sampledImageStencilSampleCounts |
| uint32_t sampledImageStencilSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.storageImageSampleCounts |
| uint32_t storageImageSampleCounts; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxSampleMaskWords |
| uint32_t maxSampleMaskWords; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.timestampComputeAndGraphics |
| bool timestampComputeAndGraphics; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.timestampPeriod |
| float timestampPeriod; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxClipDistances |
| uint32_t maxClipDistances; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxCullDistances |
| uint32_t maxCullDistances; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.maxCombinedClipAndCullDistances |
| uint32_t maxCombinedClipAndCullDistances; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.discreteQueuePriorities |
| uint32_t discreteQueuePriorities; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.pointSizeRange |
| std::vector<float> pointSizeRange; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.lineWidthRange |
| std::vector<float> lineWidthRange; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.pointSizeGranularity |
| float pointSizeGranularity; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.lineWidthGranularity |
| float lineWidthGranularity; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.strictLines |
| bool strictLines; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.standardSampleLocations |
| bool standardSampleLocations; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.optimalBufferCopyOffsetAlignment |
| uint64_t optimalBufferCopyOffsetAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.optimalBufferCopyRowPitchAlignment |
| uint64_t optimalBufferCopyRowPitchAlignment; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceLimits.nonCoherentAtomSize |
| uint64_t nonCoherentAtomSize; |
| |
| // 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, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties |
| class GPU_EXPORT VkPhysicalDeviceSparseProperties { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkPhysicalDeviceSparseProperties, T>::value>; |
| using DataView = VkPhysicalDeviceSparsePropertiesDataView; |
| using Data_ = internal::VkPhysicalDeviceSparseProperties_Data; |
| |
| template <typename... Args> |
| static VkPhysicalDeviceSparsePropertiesPtr New(Args&&... args) { |
| return VkPhysicalDeviceSparsePropertiesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkPhysicalDeviceSparsePropertiesPtr From(const U& u) { |
| return mojo::TypeConverter<VkPhysicalDeviceSparsePropertiesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkPhysicalDeviceSparseProperties>::Convert(*this); |
| } |
| |
| |
| VkPhysicalDeviceSparseProperties(); |
| |
| VkPhysicalDeviceSparseProperties( |
| bool residencyStandard2DBlockShape, |
| bool residencyStandard2DMultisampleBlockShape, |
| bool residencyStandard3DBlockShape, |
| bool residencyAlignedMipSize, |
| bool residencyNonResidentStrict); |
| |
| |
| ~VkPhysicalDeviceSparseProperties(); |
| |
| // 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 = VkPhysicalDeviceSparsePropertiesPtr> |
| VkPhysicalDeviceSparsePropertiesPtr 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, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkPhysicalDeviceSparseProperties::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkPhysicalDeviceSparseProperties::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::VkPhysicalDeviceSparseProperties_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceSparseProperties::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<VkPhysicalDeviceSparseProperties::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkPhysicalDeviceSparseProperties::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::VkPhysicalDeviceSparseProperties_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceSparseProperties::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkPhysicalDeviceSparseProperties::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties.residencyStandard2DBlockShape |
| bool residencyStandard2DBlockShape; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties.residencyStandard2DMultisampleBlockShape |
| bool residencyStandard2DMultisampleBlockShape; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties.residencyStandard3DBlockShape |
| bool residencyStandard3DBlockShape; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties.residencyAlignedMipSize |
| bool residencyAlignedMipSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceSparseProperties.residencyNonResidentStrict |
| bool residencyNonResidentStrict; |
| |
| // 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, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties |
| class GPU_EXPORT VkPhysicalDeviceProperties { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkPhysicalDeviceProperties, T>::value>; |
| using DataView = VkPhysicalDevicePropertiesDataView; |
| using Data_ = internal::VkPhysicalDeviceProperties_Data; |
| |
| template <typename... Args> |
| static VkPhysicalDevicePropertiesPtr New(Args&&... args) { |
| return VkPhysicalDevicePropertiesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkPhysicalDevicePropertiesPtr From(const U& u) { |
| return mojo::TypeConverter<VkPhysicalDevicePropertiesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkPhysicalDeviceProperties>::Convert(*this); |
| } |
| |
| |
| VkPhysicalDeviceProperties(); |
| |
| VkPhysicalDeviceProperties( |
| uint32_t apiVersion, |
| uint32_t driverVersion, |
| uint32_t vendorID, |
| uint32_t deviceID, |
| ::VkPhysicalDeviceType deviceType, |
| const std::string& deviceName, |
| std::vector<uint8_t> pipelineCacheUUID, |
| const ::VkPhysicalDeviceLimits& limits, |
| const ::VkPhysicalDeviceSparseProperties& sparseProperties); |
| |
| |
| ~VkPhysicalDeviceProperties(); |
| |
| // 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 = VkPhysicalDevicePropertiesPtr> |
| VkPhysicalDevicePropertiesPtr 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, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkPhysicalDeviceProperties::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkPhysicalDeviceProperties::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::VkPhysicalDeviceProperties_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceProperties::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<VkPhysicalDeviceProperties::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkPhysicalDeviceProperties::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::VkPhysicalDeviceProperties_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceProperties::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkPhysicalDeviceProperties::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.apiVersion |
| uint32_t apiVersion; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.driverVersion |
| uint32_t driverVersion; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.vendorID |
| uint32_t vendorID; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.deviceID |
| uint32_t deviceID; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.deviceType |
| ::VkPhysicalDeviceType deviceType; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.deviceName |
| std::string deviceName; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.pipelineCacheUUID |
| std::vector<uint8_t> pipelineCacheUUID; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.limits |
| ::VkPhysicalDeviceLimits limits; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceProperties.sparseProperties |
| ::VkPhysicalDeviceSparseProperties sparseProperties; |
| |
| // 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, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures |
| class GPU_EXPORT VkPhysicalDeviceFeatures { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkPhysicalDeviceFeatures, T>::value>; |
| using DataView = VkPhysicalDeviceFeaturesDataView; |
| using Data_ = internal::VkPhysicalDeviceFeatures_Data; |
| |
| template <typename... Args> |
| static VkPhysicalDeviceFeaturesPtr New(Args&&... args) { |
| return VkPhysicalDeviceFeaturesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkPhysicalDeviceFeaturesPtr From(const U& u) { |
| return mojo::TypeConverter<VkPhysicalDeviceFeaturesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkPhysicalDeviceFeatures>::Convert(*this); |
| } |
| |
| |
| VkPhysicalDeviceFeatures(); |
| |
| VkPhysicalDeviceFeatures( |
| bool robustBufferAccess, |
| bool fullDrawIndexUint32, |
| bool imageCubeArray, |
| bool independentBlend, |
| bool geometryShader, |
| bool tessellationShader, |
| bool sampleRateShading, |
| bool dualSrcBlend, |
| bool logicOp, |
| bool multiDrawIndirect, |
| bool drawIndirectFirstInstance, |
| bool depthClamp, |
| bool depthBiasClamp, |
| bool fillModeNonSolid, |
| bool depthBounds, |
| bool wideLines, |
| bool largePoints, |
| bool alphaToOne, |
| bool multiViewport, |
| bool samplerAnisotropy, |
| bool textureCompressionETC2, |
| bool textureCompressionASTC_LDR, |
| bool textureCompressionBC, |
| bool occlusionQueryPrecise, |
| bool pipelineStatisticsQuery, |
| bool vertexPipelineStoresAndAtomics, |
| bool fragmentStoresAndAtomics, |
| bool shaderTessellationAndGeometryPointSize, |
| bool shaderImageGatherExtended, |
| bool shaderStorageImageExtendedFormats, |
| bool shaderStorageImageMultisample, |
| bool shaderStorageImageReadWithoutFormat, |
| bool shaderStorageImageWriteWithoutFormat, |
| bool shaderUniformBufferArrayDynamicIndexing, |
| bool shaderSampledImageArrayDynamicIndexing, |
| bool shaderStorageBufferArrayDynamicIndexing, |
| bool shaderStorageImageArrayDynamicIndexing, |
| bool shaderClipDistance, |
| bool shaderCullDistance, |
| bool shaderFloat64, |
| bool shaderInt64, |
| bool shaderInt16, |
| bool shaderResourceResidency, |
| bool shaderResourceMinLod, |
| bool sparseBinding, |
| bool sparseResidencyBuffer, |
| bool sparseResidencyImage2D, |
| bool sparseResidencyImage3D, |
| bool sparseResidency2Samples, |
| bool sparseResidency4Samples, |
| bool sparseResidency8Samples, |
| bool sparseResidency16Samples, |
| bool sparseResidencyAliased, |
| bool variableMultisampleRate, |
| bool inheritedQueries); |
| |
| |
| ~VkPhysicalDeviceFeatures(); |
| |
| // 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 = VkPhysicalDeviceFeaturesPtr> |
| VkPhysicalDeviceFeaturesPtr 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, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkPhysicalDeviceFeatures::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkPhysicalDeviceFeatures::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::VkPhysicalDeviceFeatures_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceFeatures::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<VkPhysicalDeviceFeatures::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkPhysicalDeviceFeatures::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::VkPhysicalDeviceFeatures_UnserializedMessageContext< |
| UserType, VkPhysicalDeviceFeatures::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkPhysicalDeviceFeatures::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.robustBufferAccess |
| bool robustBufferAccess; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.fullDrawIndexUint32 |
| bool fullDrawIndexUint32; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.imageCubeArray |
| bool imageCubeArray; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.independentBlend |
| bool independentBlend; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.geometryShader |
| bool geometryShader; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.tessellationShader |
| bool tessellationShader; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sampleRateShading |
| bool sampleRateShading; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.dualSrcBlend |
| bool dualSrcBlend; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.logicOp |
| bool logicOp; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.multiDrawIndirect |
| bool multiDrawIndirect; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.drawIndirectFirstInstance |
| bool drawIndirectFirstInstance; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.depthClamp |
| bool depthClamp; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.depthBiasClamp |
| bool depthBiasClamp; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.fillModeNonSolid |
| bool fillModeNonSolid; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.depthBounds |
| bool depthBounds; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.wideLines |
| bool wideLines; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.largePoints |
| bool largePoints; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.alphaToOne |
| bool alphaToOne; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.multiViewport |
| bool multiViewport; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.samplerAnisotropy |
| bool samplerAnisotropy; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.textureCompressionETC2 |
| bool textureCompressionETC2; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.textureCompressionASTC_LDR |
| bool textureCompressionASTC_LDR; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.textureCompressionBC |
| bool textureCompressionBC; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.occlusionQueryPrecise |
| bool occlusionQueryPrecise; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.pipelineStatisticsQuery |
| bool pipelineStatisticsQuery; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.vertexPipelineStoresAndAtomics |
| bool vertexPipelineStoresAndAtomics; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.fragmentStoresAndAtomics |
| bool fragmentStoresAndAtomics; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderTessellationAndGeometryPointSize |
| bool shaderTessellationAndGeometryPointSize; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderImageGatherExtended |
| bool shaderImageGatherExtended; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageImageExtendedFormats |
| bool shaderStorageImageExtendedFormats; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageImageMultisample |
| bool shaderStorageImageMultisample; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageImageReadWithoutFormat |
| bool shaderStorageImageReadWithoutFormat; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageImageWriteWithoutFormat |
| bool shaderStorageImageWriteWithoutFormat; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderUniformBufferArrayDynamicIndexing |
| bool shaderUniformBufferArrayDynamicIndexing; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderSampledImageArrayDynamicIndexing |
| bool shaderSampledImageArrayDynamicIndexing; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageBufferArrayDynamicIndexing |
| bool shaderStorageBufferArrayDynamicIndexing; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderStorageImageArrayDynamicIndexing |
| bool shaderStorageImageArrayDynamicIndexing; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderClipDistance |
| bool shaderClipDistance; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderCullDistance |
| bool shaderCullDistance; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderFloat64 |
| bool shaderFloat64; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderInt64 |
| bool shaderInt64; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderInt16 |
| bool shaderInt16; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderResourceResidency |
| bool shaderResourceResidency; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.shaderResourceMinLod |
| bool shaderResourceMinLod; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseBinding |
| bool sparseBinding; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidencyBuffer |
| bool sparseResidencyBuffer; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidencyImage2D |
| bool sparseResidencyImage2D; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidencyImage3D |
| bool sparseResidencyImage3D; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidency2Samples |
| bool sparseResidency2Samples; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidency4Samples |
| bool sparseResidency4Samples; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidency8Samples |
| bool sparseResidency8Samples; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidency16Samples |
| bool sparseResidency16Samples; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.sparseResidencyAliased |
| bool sparseResidencyAliased; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.variableMultisampleRate |
| bool variableMultisampleRate; |
| |
| // @generated_from: gpu.mojom.VkPhysicalDeviceFeatures.inheritedQueries |
| bool inheritedQueries; |
| |
| // 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, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| // @generated_from: gpu.mojom.VkQueueFamilyProperties |
| class GPU_EXPORT VkQueueFamilyProperties { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<VkQueueFamilyProperties, T>::value>; |
| using DataView = VkQueueFamilyPropertiesDataView; |
| using Data_ = internal::VkQueueFamilyProperties_Data; |
| |
| template <typename... Args> |
| static VkQueueFamilyPropertiesPtr New(Args&&... args) { |
| return VkQueueFamilyPropertiesPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static VkQueueFamilyPropertiesPtr From(const U& u) { |
| return mojo::TypeConverter<VkQueueFamilyPropertiesPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, VkQueueFamilyProperties>::Convert(*this); |
| } |
| |
| |
| VkQueueFamilyProperties(); |
| |
| VkQueueFamilyProperties( |
| uint32_t queueFlags, |
| uint32_t queueCount, |
| uint32_t timestampValidBits, |
| const ::VkExtent3D& minImageTransferGranularity); |
| |
| |
| ~VkQueueFamilyProperties(); |
| |
| // 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 = VkQueueFamilyPropertiesPtr> |
| VkQueueFamilyPropertiesPtr 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, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| VkQueueFamilyProperties::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| VkQueueFamilyProperties::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::VkQueueFamilyProperties_UnserializedMessageContext< |
| UserType, VkQueueFamilyProperties::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<VkQueueFamilyProperties::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return VkQueueFamilyProperties::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::VkQueueFamilyProperties_UnserializedMessageContext< |
| UserType, VkQueueFamilyProperties::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<VkQueueFamilyProperties::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: gpu.mojom.VkQueueFamilyProperties.queueFlags |
| uint32_t queueFlags; |
| |
| // @generated_from: gpu.mojom.VkQueueFamilyProperties.queueCount |
| uint32_t queueCount; |
| |
| // @generated_from: gpu.mojom.VkQueueFamilyProperties.timestampValidBits |
| uint32_t timestampValidBits; |
| |
| // @generated_from: gpu.mojom.VkQueueFamilyProperties.minImageTransferGranularity |
| ::VkExtent3D minImageTransferGranularity; |
| |
| // 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, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| template <typename StructPtrType> |
| VkExtensionPropertiesPtr VkExtensionProperties::Clone() const { |
| return New( |
| mojo::Clone(extensionName), |
| mojo::Clone(specVersion) |
| ); |
| } |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>*> |
| bool VkExtensionProperties::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->extensionName, other_struct.extensionName)) |
| return false; |
| if (!mojo::Equals(this->specVersion, other_struct.specVersion)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkExtensionProperties::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.extensionName < rhs.extensionName) |
| return true; |
| if (rhs.extensionName < lhs.extensionName) |
| return false; |
| if (lhs.specVersion < rhs.specVersion) |
| return true; |
| if (rhs.specVersion < lhs.specVersion) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkLayerPropertiesPtr VkLayerProperties::Clone() const { |
| return New( |
| mojo::Clone(layerName), |
| mojo::Clone(specVersion), |
| mojo::Clone(implementationVersion), |
| mojo::Clone(description) |
| ); |
| } |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>*> |
| bool VkLayerProperties::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->layerName, other_struct.layerName)) |
| return false; |
| if (!mojo::Equals(this->specVersion, other_struct.specVersion)) |
| return false; |
| if (!mojo::Equals(this->implementationVersion, other_struct.implementationVersion)) |
| return false; |
| if (!mojo::Equals(this->description, other_struct.description)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkLayerProperties::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.layerName < rhs.layerName) |
| return true; |
| if (rhs.layerName < lhs.layerName) |
| return false; |
| if (lhs.specVersion < rhs.specVersion) |
| return true; |
| if (rhs.specVersion < lhs.specVersion) |
| return false; |
| if (lhs.implementationVersion < rhs.implementationVersion) |
| return true; |
| if (rhs.implementationVersion < lhs.implementationVersion) |
| return false; |
| if (lhs.description < rhs.description) |
| return true; |
| if (rhs.description < lhs.description) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkPhysicalDeviceLimitsPtr VkPhysicalDeviceLimits::Clone() const { |
| return New( |
| mojo::Clone(maxImageDimension1D), |
| mojo::Clone(maxImageDimension2D), |
| mojo::Clone(maxImageDimension3D), |
| mojo::Clone(maxImageDimensionCube), |
| mojo::Clone(maxImageArrayLayers), |
| mojo::Clone(maxTexelBufferElements), |
| mojo::Clone(maxUniformBufferRange), |
| mojo::Clone(maxStorageBufferRange), |
| mojo::Clone(maxPushConstantsSize), |
| mojo::Clone(maxMemoryAllocationCount), |
| mojo::Clone(maxSamplerAllocationCount), |
| mojo::Clone(bufferImageGranularity), |
| mojo::Clone(sparseAddressSpaceSize), |
| mojo::Clone(maxBoundDescriptorSets), |
| mojo::Clone(maxPerStageDescriptorSamplers), |
| mojo::Clone(maxPerStageDescriptorUniformBuffers), |
| mojo::Clone(maxPerStageDescriptorStorageBuffers), |
| mojo::Clone(maxPerStageDescriptorSampledImages), |
| mojo::Clone(maxPerStageDescriptorStorageImages), |
| mojo::Clone(maxPerStageDescriptorInputAttachments), |
| mojo::Clone(maxPerStageResources), |
| mojo::Clone(maxDescriptorSetSamplers), |
| mojo::Clone(maxDescriptorSetUniformBuffers), |
| mojo::Clone(maxDescriptorSetUniformBuffersDynamic), |
| mojo::Clone(maxDescriptorSetStorageBuffers), |
| mojo::Clone(maxDescriptorSetStorageBuffersDynamic), |
| mojo::Clone(maxDescriptorSetSampledImages), |
| mojo::Clone(maxDescriptorSetStorageImages), |
| mojo::Clone(maxDescriptorSetInputAttachments), |
| mojo::Clone(maxVertexInputAttributes), |
| mojo::Clone(maxVertexInputBindings), |
| mojo::Clone(maxVertexInputAttributeOffset), |
| mojo::Clone(maxVertexInputBindingStride), |
| mojo::Clone(maxVertexOutputComponents), |
| mojo::Clone(maxTessellationGenerationLevel), |
| mojo::Clone(maxTessellationPatchSize), |
| mojo::Clone(maxTessellationControlPerVertexInputComponents), |
| mojo::Clone(maxTessellationControlPerVertexOutputComponents), |
| mojo::Clone(maxTessellationControlPerPatchOutputComponents), |
| mojo::Clone(maxTessellationControlTotalOutputComponents), |
| mojo::Clone(maxTessellationEvaluationInputComponents), |
| mojo::Clone(maxTessellationEvaluationOutputComponents), |
| mojo::Clone(maxGeometryShaderInvocations), |
| mojo::Clone(maxGeometryInputComponents), |
| mojo::Clone(maxGeometryOutputComponents), |
| mojo::Clone(maxGeometryOutputVertices), |
| mojo::Clone(maxGeometryTotalOutputComponents), |
| mojo::Clone(maxFragmentInputComponents), |
| mojo::Clone(maxFragmentOutputAttachments), |
| mojo::Clone(maxFragmentDualSrcAttachments), |
| mojo::Clone(maxFragmentCombinedOutputResources), |
| mojo::Clone(maxComputeSharedMemorySize), |
| mojo::Clone(maxComputeWorkGroupCount), |
| mojo::Clone(maxComputeWorkGroupInvocations), |
| mojo::Clone(maxComputeWorkGroupSize), |
| mojo::Clone(subPixelPrecisionBits), |
| mojo::Clone(subTexelPrecisionBits), |
| mojo::Clone(mipmapPrecisionBits), |
| mojo::Clone(maxDrawIndexedIndexValue), |
| mojo::Clone(maxDrawIndirectCount), |
| mojo::Clone(maxSamplerLodBias), |
| mojo::Clone(maxSamplerAnisotropy), |
| mojo::Clone(maxViewports), |
| mojo::Clone(maxViewportDimensions), |
| mojo::Clone(viewportBoundsRange), |
| mojo::Clone(viewportSubPixelBits), |
| mojo::Clone(minMemoryMapAlignment), |
| mojo::Clone(minTexelBufferOffsetAlignment), |
| mojo::Clone(minUniformBufferOffsetAlignment), |
| mojo::Clone(minStorageBufferOffsetAlignment), |
| mojo::Clone(minTexelOffset), |
| mojo::Clone(maxTexelOffset), |
| mojo::Clone(minTexelGatherOffset), |
| mojo::Clone(maxTexelGatherOffset), |
| mojo::Clone(minInterpolationOffset), |
| mojo::Clone(maxInterpolationOffset), |
| mojo::Clone(subPixelInterpolationOffsetBits), |
| mojo::Clone(maxFramebufferWidth), |
| mojo::Clone(maxFramebufferHeight), |
| mojo::Clone(maxFramebufferLayers), |
| mojo::Clone(framebufferColorSampleCounts), |
| mojo::Clone(framebufferDepthSampleCounts), |
| mojo::Clone(framebufferStencilSampleCounts), |
| mojo::Clone(framebufferNoAttachmentsSampleCounts), |
| mojo::Clone(maxColorAttachments), |
| mojo::Clone(sampledImageColorSampleCounts), |
| mojo::Clone(sampledImageIntegerSampleCounts), |
| mojo::Clone(sampledImageDepthSampleCounts), |
| mojo::Clone(sampledImageStencilSampleCounts), |
| mojo::Clone(storageImageSampleCounts), |
| mojo::Clone(maxSampleMaskWords), |
| mojo::Clone(timestampComputeAndGraphics), |
| mojo::Clone(timestampPeriod), |
| mojo::Clone(maxClipDistances), |
| mojo::Clone(maxCullDistances), |
| mojo::Clone(maxCombinedClipAndCullDistances), |
| mojo::Clone(discreteQueuePriorities), |
| mojo::Clone(pointSizeRange), |
| mojo::Clone(lineWidthRange), |
| mojo::Clone(pointSizeGranularity), |
| mojo::Clone(lineWidthGranularity), |
| mojo::Clone(strictLines), |
| mojo::Clone(standardSampleLocations), |
| mojo::Clone(optimalBufferCopyOffsetAlignment), |
| mojo::Clone(optimalBufferCopyRowPitchAlignment), |
| mojo::Clone(nonCoherentAtomSize) |
| ); |
| } |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>*> |
| bool VkPhysicalDeviceLimits::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->maxImageDimension1D, other_struct.maxImageDimension1D)) |
| return false; |
| if (!mojo::Equals(this->maxImageDimension2D, other_struct.maxImageDimension2D)) |
| return false; |
| if (!mojo::Equals(this->maxImageDimension3D, other_struct.maxImageDimension3D)) |
| return false; |
| if (!mojo::Equals(this->maxImageDimensionCube, other_struct.maxImageDimensionCube)) |
| return false; |
| if (!mojo::Equals(this->maxImageArrayLayers, other_struct.maxImageArrayLayers)) |
| return false; |
| if (!mojo::Equals(this->maxTexelBufferElements, other_struct.maxTexelBufferElements)) |
| return false; |
| if (!mojo::Equals(this->maxUniformBufferRange, other_struct.maxUniformBufferRange)) |
| return false; |
| if (!mojo::Equals(this->maxStorageBufferRange, other_struct.maxStorageBufferRange)) |
| return false; |
| if (!mojo::Equals(this->maxPushConstantsSize, other_struct.maxPushConstantsSize)) |
| return false; |
| if (!mojo::Equals(this->maxMemoryAllocationCount, other_struct.maxMemoryAllocationCount)) |
| return false; |
| if (!mojo::Equals(this->maxSamplerAllocationCount, other_struct.maxSamplerAllocationCount)) |
| return false; |
| if (!mojo::Equals(this->bufferImageGranularity, other_struct.bufferImageGranularity)) |
| return false; |
| if (!mojo::Equals(this->sparseAddressSpaceSize, other_struct.sparseAddressSpaceSize)) |
| return false; |
| if (!mojo::Equals(this->maxBoundDescriptorSets, other_struct.maxBoundDescriptorSets)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorSamplers, other_struct.maxPerStageDescriptorSamplers)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorUniformBuffers, other_struct.maxPerStageDescriptorUniformBuffers)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorStorageBuffers, other_struct.maxPerStageDescriptorStorageBuffers)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorSampledImages, other_struct.maxPerStageDescriptorSampledImages)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorStorageImages, other_struct.maxPerStageDescriptorStorageImages)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageDescriptorInputAttachments, other_struct.maxPerStageDescriptorInputAttachments)) |
| return false; |
| if (!mojo::Equals(this->maxPerStageResources, other_struct.maxPerStageResources)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetSamplers, other_struct.maxDescriptorSetSamplers)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetUniformBuffers, other_struct.maxDescriptorSetUniformBuffers)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetUniformBuffersDynamic, other_struct.maxDescriptorSetUniformBuffersDynamic)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetStorageBuffers, other_struct.maxDescriptorSetStorageBuffers)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetStorageBuffersDynamic, other_struct.maxDescriptorSetStorageBuffersDynamic)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetSampledImages, other_struct.maxDescriptorSetSampledImages)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetStorageImages, other_struct.maxDescriptorSetStorageImages)) |
| return false; |
| if (!mojo::Equals(this->maxDescriptorSetInputAttachments, other_struct.maxDescriptorSetInputAttachments)) |
| return false; |
| if (!mojo::Equals(this->maxVertexInputAttributes, other_struct.maxVertexInputAttributes)) |
| return false; |
| if (!mojo::Equals(this->maxVertexInputBindings, other_struct.maxVertexInputBindings)) |
| return false; |
| if (!mojo::Equals(this->maxVertexInputAttributeOffset, other_struct.maxVertexInputAttributeOffset)) |
| return false; |
| if (!mojo::Equals(this->maxVertexInputBindingStride, other_struct.maxVertexInputBindingStride)) |
| return false; |
| if (!mojo::Equals(this->maxVertexOutputComponents, other_struct.maxVertexOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationGenerationLevel, other_struct.maxTessellationGenerationLevel)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationPatchSize, other_struct.maxTessellationPatchSize)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationControlPerVertexInputComponents, other_struct.maxTessellationControlPerVertexInputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationControlPerVertexOutputComponents, other_struct.maxTessellationControlPerVertexOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationControlPerPatchOutputComponents, other_struct.maxTessellationControlPerPatchOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationControlTotalOutputComponents, other_struct.maxTessellationControlTotalOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationEvaluationInputComponents, other_struct.maxTessellationEvaluationInputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxTessellationEvaluationOutputComponents, other_struct.maxTessellationEvaluationOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxGeometryShaderInvocations, other_struct.maxGeometryShaderInvocations)) |
| return false; |
| if (!mojo::Equals(this->maxGeometryInputComponents, other_struct.maxGeometryInputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxGeometryOutputComponents, other_struct.maxGeometryOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxGeometryOutputVertices, other_struct.maxGeometryOutputVertices)) |
| return false; |
| if (!mojo::Equals(this->maxGeometryTotalOutputComponents, other_struct.maxGeometryTotalOutputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxFragmentInputComponents, other_struct.maxFragmentInputComponents)) |
| return false; |
| if (!mojo::Equals(this->maxFragmentOutputAttachments, other_struct.maxFragmentOutputAttachments)) |
| return false; |
| if (!mojo::Equals(this->maxFragmentDualSrcAttachments, other_struct.maxFragmentDualSrcAttachments)) |
| return false; |
| if (!mojo::Equals(this->maxFragmentCombinedOutputResources, other_struct.maxFragmentCombinedOutputResources)) |
| return false; |
| if (!mojo::Equals(this->maxComputeSharedMemorySize, other_struct.maxComputeSharedMemorySize)) |
| return false; |
| if (!mojo::Equals(this->maxComputeWorkGroupCount, other_struct.maxComputeWorkGroupCount)) |
| return false; |
| if (!mojo::Equals(this->maxComputeWorkGroupInvocations, other_struct.maxComputeWorkGroupInvocations)) |
| return false; |
| if (!mojo::Equals(this->maxComputeWorkGroupSize, other_struct.maxComputeWorkGroupSize)) |
| return false; |
| if (!mojo::Equals(this->subPixelPrecisionBits, other_struct.subPixelPrecisionBits)) |
| return false; |
| if (!mojo::Equals(this->subTexelPrecisionBits, other_struct.subTexelPrecisionBits)) |
| return false; |
| if (!mojo::Equals(this->mipmapPrecisionBits, other_struct.mipmapPrecisionBits)) |
| return false; |
| if (!mojo::Equals(this->maxDrawIndexedIndexValue, other_struct.maxDrawIndexedIndexValue)) |
| return false; |
| if (!mojo::Equals(this->maxDrawIndirectCount, other_struct.maxDrawIndirectCount)) |
| return false; |
| if (!mojo::Equals(this->maxSamplerLodBias, other_struct.maxSamplerLodBias)) |
| return false; |
| if (!mojo::Equals(this->maxSamplerAnisotropy, other_struct.maxSamplerAnisotropy)) |
| return false; |
| if (!mojo::Equals(this->maxViewports, other_struct.maxViewports)) |
| return false; |
| if (!mojo::Equals(this->maxViewportDimensions, other_struct.maxViewportDimensions)) |
| return false; |
| if (!mojo::Equals(this->viewportBoundsRange, other_struct.viewportBoundsRange)) |
| return false; |
| if (!mojo::Equals(this->viewportSubPixelBits, other_struct.viewportSubPixelBits)) |
| return false; |
| if (!mojo::Equals(this->minMemoryMapAlignment, other_struct.minMemoryMapAlignment)) |
| return false; |
| if (!mojo::Equals(this->minTexelBufferOffsetAlignment, other_struct.minTexelBufferOffsetAlignment)) |
| return false; |
| if (!mojo::Equals(this->minUniformBufferOffsetAlignment, other_struct.minUniformBufferOffsetAlignment)) |
| return false; |
| if (!mojo::Equals(this->minStorageBufferOffsetAlignment, other_struct.minStorageBufferOffsetAlignment)) |
| return false; |
| if (!mojo::Equals(this->minTexelOffset, other_struct.minTexelOffset)) |
| return false; |
| if (!mojo::Equals(this->maxTexelOffset, other_struct.maxTexelOffset)) |
| return false; |
| if (!mojo::Equals(this->minTexelGatherOffset, other_struct.minTexelGatherOffset)) |
| return false; |
| if (!mojo::Equals(this->maxTexelGatherOffset, other_struct.maxTexelGatherOffset)) |
| return false; |
| if (!mojo::Equals(this->minInterpolationOffset, other_struct.minInterpolationOffset)) |
| return false; |
| if (!mojo::Equals(this->maxInterpolationOffset, other_struct.maxInterpolationOffset)) |
| return false; |
| if (!mojo::Equals(this->subPixelInterpolationOffsetBits, other_struct.subPixelInterpolationOffsetBits)) |
| return false; |
| if (!mojo::Equals(this->maxFramebufferWidth, other_struct.maxFramebufferWidth)) |
| return false; |
| if (!mojo::Equals(this->maxFramebufferHeight, other_struct.maxFramebufferHeight)) |
| return false; |
| if (!mojo::Equals(this->maxFramebufferLayers, other_struct.maxFramebufferLayers)) |
| return false; |
| if (!mojo::Equals(this->framebufferColorSampleCounts, other_struct.framebufferColorSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->framebufferDepthSampleCounts, other_struct.framebufferDepthSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->framebufferStencilSampleCounts, other_struct.framebufferStencilSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->framebufferNoAttachmentsSampleCounts, other_struct.framebufferNoAttachmentsSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->maxColorAttachments, other_struct.maxColorAttachments)) |
| return false; |
| if (!mojo::Equals(this->sampledImageColorSampleCounts, other_struct.sampledImageColorSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->sampledImageIntegerSampleCounts, other_struct.sampledImageIntegerSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->sampledImageDepthSampleCounts, other_struct.sampledImageDepthSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->sampledImageStencilSampleCounts, other_struct.sampledImageStencilSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->storageImageSampleCounts, other_struct.storageImageSampleCounts)) |
| return false; |
| if (!mojo::Equals(this->maxSampleMaskWords, other_struct.maxSampleMaskWords)) |
| return false; |
| if (!mojo::Equals(this->timestampComputeAndGraphics, other_struct.timestampComputeAndGraphics)) |
| return false; |
| if (!mojo::Equals(this->timestampPeriod, other_struct.timestampPeriod)) |
| return false; |
| if (!mojo::Equals(this->maxClipDistances, other_struct.maxClipDistances)) |
| return false; |
| if (!mojo::Equals(this->maxCullDistances, other_struct.maxCullDistances)) |
| return false; |
| if (!mojo::Equals(this->maxCombinedClipAndCullDistances, other_struct.maxCombinedClipAndCullDistances)) |
| return false; |
| if (!mojo::Equals(this->discreteQueuePriorities, other_struct.discreteQueuePriorities)) |
| return false; |
| if (!mojo::Equals(this->pointSizeRange, other_struct.pointSizeRange)) |
| return false; |
| if (!mojo::Equals(this->lineWidthRange, other_struct.lineWidthRange)) |
| return false; |
| if (!mojo::Equals(this->pointSizeGranularity, other_struct.pointSizeGranularity)) |
| return false; |
| if (!mojo::Equals(this->lineWidthGranularity, other_struct.lineWidthGranularity)) |
| return false; |
| if (!mojo::Equals(this->strictLines, other_struct.strictLines)) |
| return false; |
| if (!mojo::Equals(this->standardSampleLocations, other_struct.standardSampleLocations)) |
| return false; |
| if (!mojo::Equals(this->optimalBufferCopyOffsetAlignment, other_struct.optimalBufferCopyOffsetAlignment)) |
| return false; |
| if (!mojo::Equals(this->optimalBufferCopyRowPitchAlignment, other_struct.optimalBufferCopyRowPitchAlignment)) |
| return false; |
| if (!mojo::Equals(this->nonCoherentAtomSize, other_struct.nonCoherentAtomSize)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkPhysicalDeviceLimits::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.maxImageDimension1D < rhs.maxImageDimension1D) |
| return true; |
| if (rhs.maxImageDimension1D < lhs.maxImageDimension1D) |
| return false; |
| if (lhs.maxImageDimension2D < rhs.maxImageDimension2D) |
| return true; |
| if (rhs.maxImageDimension2D < lhs.maxImageDimension2D) |
| return false; |
| if (lhs.maxImageDimension3D < rhs.maxImageDimension3D) |
| return true; |
| if (rhs.maxImageDimension3D < lhs.maxImageDimension3D) |
| return false; |
| if (lhs.maxImageDimensionCube < rhs.maxImageDimensionCube) |
| return true; |
| if (rhs.maxImageDimensionCube < lhs.maxImageDimensionCube) |
| return false; |
| if (lhs.maxImageArrayLayers < rhs.maxImageArrayLayers) |
| return true; |
| if (rhs.maxImageArrayLayers < lhs.maxImageArrayLayers) |
| return false; |
| if (lhs.maxTexelBufferElements < rhs.maxTexelBufferElements) |
| return true; |
| if (rhs.maxTexelBufferElements < lhs.maxTexelBufferElements) |
| return false; |
| if (lhs.maxUniformBufferRange < rhs.maxUniformBufferRange) |
| return true; |
| if (rhs.maxUniformBufferRange < lhs.maxUniformBufferRange) |
| return false; |
| if (lhs.maxStorageBufferRange < rhs.maxStorageBufferRange) |
| return true; |
| if (rhs.maxStorageBufferRange < lhs.maxStorageBufferRange) |
| return false; |
| if (lhs.maxPushConstantsSize < rhs.maxPushConstantsSize) |
| return true; |
| if (rhs.maxPushConstantsSize < lhs.maxPushConstantsSize) |
| return false; |
| if (lhs.maxMemoryAllocationCount < rhs.maxMemoryAllocationCount) |
| return true; |
| if (rhs.maxMemoryAllocationCount < lhs.maxMemoryAllocationCount) |
| return false; |
| if (lhs.maxSamplerAllocationCount < rhs.maxSamplerAllocationCount) |
| return true; |
| if (rhs.maxSamplerAllocationCount < lhs.maxSamplerAllocationCount) |
| return false; |
| if (lhs.bufferImageGranularity < rhs.bufferImageGranularity) |
| return true; |
| if (rhs.bufferImageGranularity < lhs.bufferImageGranularity) |
| return false; |
| if (lhs.sparseAddressSpaceSize < rhs.sparseAddressSpaceSize) |
| return true; |
| if (rhs.sparseAddressSpaceSize < lhs.sparseAddressSpaceSize) |
| return false; |
| if (lhs.maxBoundDescriptorSets < rhs.maxBoundDescriptorSets) |
| return true; |
| if (rhs.maxBoundDescriptorSets < lhs.maxBoundDescriptorSets) |
| return false; |
| if (lhs.maxPerStageDescriptorSamplers < rhs.maxPerStageDescriptorSamplers) |
| return true; |
| if (rhs.maxPerStageDescriptorSamplers < lhs.maxPerStageDescriptorSamplers) |
| return false; |
| if (lhs.maxPerStageDescriptorUniformBuffers < rhs.maxPerStageDescriptorUniformBuffers) |
| return true; |
| if (rhs.maxPerStageDescriptorUniformBuffers < lhs.maxPerStageDescriptorUniformBuffers) |
| return false; |
| if (lhs.maxPerStageDescriptorStorageBuffers < rhs.maxPerStageDescriptorStorageBuffers) |
| return true; |
| if (rhs.maxPerStageDescriptorStorageBuffers < lhs.maxPerStageDescriptorStorageBuffers) |
| return false; |
| if (lhs.maxPerStageDescriptorSampledImages < rhs.maxPerStageDescriptorSampledImages) |
| return true; |
| if (rhs.maxPerStageDescriptorSampledImages < lhs.maxPerStageDescriptorSampledImages) |
| return false; |
| if (lhs.maxPerStageDescriptorStorageImages < rhs.maxPerStageDescriptorStorageImages) |
| return true; |
| if (rhs.maxPerStageDescriptorStorageImages < lhs.maxPerStageDescriptorStorageImages) |
| return false; |
| if (lhs.maxPerStageDescriptorInputAttachments < rhs.maxPerStageDescriptorInputAttachments) |
| return true; |
| if (rhs.maxPerStageDescriptorInputAttachments < lhs.maxPerStageDescriptorInputAttachments) |
| return false; |
| if (lhs.maxPerStageResources < rhs.maxPerStageResources) |
| return true; |
| if (rhs.maxPerStageResources < lhs.maxPerStageResources) |
| return false; |
| if (lhs.maxDescriptorSetSamplers < rhs.maxDescriptorSetSamplers) |
| return true; |
| if (rhs.maxDescriptorSetSamplers < lhs.maxDescriptorSetSamplers) |
| return false; |
| if (lhs.maxDescriptorSetUniformBuffers < rhs.maxDescriptorSetUniformBuffers) |
| return true; |
| if (rhs.maxDescriptorSetUniformBuffers < lhs.maxDescriptorSetUniformBuffers) |
| return false; |
| if (lhs.maxDescriptorSetUniformBuffersDynamic < rhs.maxDescriptorSetUniformBuffersDynamic) |
| return true; |
| if (rhs.maxDescriptorSetUniformBuffersDynamic < lhs.maxDescriptorSetUniformBuffersDynamic) |
| return false; |
| if (lhs.maxDescriptorSetStorageBuffers < rhs.maxDescriptorSetStorageBuffers) |
| return true; |
| if (rhs.maxDescriptorSetStorageBuffers < lhs.maxDescriptorSetStorageBuffers) |
| return false; |
| if (lhs.maxDescriptorSetStorageBuffersDynamic < rhs.maxDescriptorSetStorageBuffersDynamic) |
| return true; |
| if (rhs.maxDescriptorSetStorageBuffersDynamic < lhs.maxDescriptorSetStorageBuffersDynamic) |
| return false; |
| if (lhs.maxDescriptorSetSampledImages < rhs.maxDescriptorSetSampledImages) |
| return true; |
| if (rhs.maxDescriptorSetSampledImages < lhs.maxDescriptorSetSampledImages) |
| return false; |
| if (lhs.maxDescriptorSetStorageImages < rhs.maxDescriptorSetStorageImages) |
| return true; |
| if (rhs.maxDescriptorSetStorageImages < lhs.maxDescriptorSetStorageImages) |
| return false; |
| if (lhs.maxDescriptorSetInputAttachments < rhs.maxDescriptorSetInputAttachments) |
| return true; |
| if (rhs.maxDescriptorSetInputAttachments < lhs.maxDescriptorSetInputAttachments) |
| return false; |
| if (lhs.maxVertexInputAttributes < rhs.maxVertexInputAttributes) |
| return true; |
| if (rhs.maxVertexInputAttributes < lhs.maxVertexInputAttributes) |
| return false; |
| if (lhs.maxVertexInputBindings < rhs.maxVertexInputBindings) |
| return true; |
| if (rhs.maxVertexInputBindings < lhs.maxVertexInputBindings) |
| return false; |
| if (lhs.maxVertexInputAttributeOffset < rhs.maxVertexInputAttributeOffset) |
| return true; |
| if (rhs.maxVertexInputAttributeOffset < lhs.maxVertexInputAttributeOffset) |
| return false; |
| if (lhs.maxVertexInputBindingStride < rhs.maxVertexInputBindingStride) |
| return true; |
| if (rhs.maxVertexInputBindingStride < lhs.maxVertexInputBindingStride) |
| return false; |
| if (lhs.maxVertexOutputComponents < rhs.maxVertexOutputComponents) |
| return true; |
| if (rhs.maxVertexOutputComponents < lhs.maxVertexOutputComponents) |
| return false; |
| if (lhs.maxTessellationGenerationLevel < rhs.maxTessellationGenerationLevel) |
| return true; |
| if (rhs.maxTessellationGenerationLevel < lhs.maxTessellationGenerationLevel) |
| return false; |
| if (lhs.maxTessellationPatchSize < rhs.maxTessellationPatchSize) |
| return true; |
| if (rhs.maxTessellationPatchSize < lhs.maxTessellationPatchSize) |
| return false; |
| if (lhs.maxTessellationControlPerVertexInputComponents < rhs.maxTessellationControlPerVertexInputComponents) |
| return true; |
| if (rhs.maxTessellationControlPerVertexInputComponents < lhs.maxTessellationControlPerVertexInputComponents) |
| return false; |
| if (lhs.maxTessellationControlPerVertexOutputComponents < rhs.maxTessellationControlPerVertexOutputComponents) |
| return true; |
| if (rhs.maxTessellationControlPerVertexOutputComponents < lhs.maxTessellationControlPerVertexOutputComponents) |
| return false; |
| if (lhs.maxTessellationControlPerPatchOutputComponents < rhs.maxTessellationControlPerPatchOutputComponents) |
| return true; |
| if (rhs.maxTessellationControlPerPatchOutputComponents < lhs.maxTessellationControlPerPatchOutputComponents) |
| return false; |
| if (lhs.maxTessellationControlTotalOutputComponents < rhs.maxTessellationControlTotalOutputComponents) |
| return true; |
| if (rhs.maxTessellationControlTotalOutputComponents < lhs.maxTessellationControlTotalOutputComponents) |
| return false; |
| if (lhs.maxTessellationEvaluationInputComponents < rhs.maxTessellationEvaluationInputComponents) |
| return true; |
| if (rhs.maxTessellationEvaluationInputComponents < lhs.maxTessellationEvaluationInputComponents) |
| return false; |
| if (lhs.maxTessellationEvaluationOutputComponents < rhs.maxTessellationEvaluationOutputComponents) |
| return true; |
| if (rhs.maxTessellationEvaluationOutputComponents < lhs.maxTessellationEvaluationOutputComponents) |
| return false; |
| if (lhs.maxGeometryShaderInvocations < rhs.maxGeometryShaderInvocations) |
| return true; |
| if (rhs.maxGeometryShaderInvocations < lhs.maxGeometryShaderInvocations) |
| return false; |
| if (lhs.maxGeometryInputComponents < rhs.maxGeometryInputComponents) |
| return true; |
| if (rhs.maxGeometryInputComponents < lhs.maxGeometryInputComponents) |
| return false; |
| if (lhs.maxGeometryOutputComponents < rhs.maxGeometryOutputComponents) |
| return true; |
| if (rhs.maxGeometryOutputComponents < lhs.maxGeometryOutputComponents) |
| return false; |
| if (lhs.maxGeometryOutputVertices < rhs.maxGeometryOutputVertices) |
| return true; |
| if (rhs.maxGeometryOutputVertices < lhs.maxGeometryOutputVertices) |
| return false; |
| if (lhs.maxGeometryTotalOutputComponents < rhs.maxGeometryTotalOutputComponents) |
| return true; |
| if (rhs.maxGeometryTotalOutputComponents < lhs.maxGeometryTotalOutputComponents) |
| return false; |
| if (lhs.maxFragmentInputComponents < rhs.maxFragmentInputComponents) |
| return true; |
| if (rhs.maxFragmentInputComponents < lhs.maxFragmentInputComponents) |
| return false; |
| if (lhs.maxFragmentOutputAttachments < rhs.maxFragmentOutputAttachments) |
| return true; |
| if (rhs.maxFragmentOutputAttachments < lhs.maxFragmentOutputAttachments) |
| return false; |
| if (lhs.maxFragmentDualSrcAttachments < rhs.maxFragmentDualSrcAttachments) |
| return true; |
| if (rhs.maxFragmentDualSrcAttachments < lhs.maxFragmentDualSrcAttachments) |
| return false; |
| if (lhs.maxFragmentCombinedOutputResources < rhs.maxFragmentCombinedOutputResources) |
| return true; |
| if (rhs.maxFragmentCombinedOutputResources < lhs.maxFragmentCombinedOutputResources) |
| return false; |
| if (lhs.maxComputeSharedMemorySize < rhs.maxComputeSharedMemorySize) |
| return true; |
| if (rhs.maxComputeSharedMemorySize < lhs.maxComputeSharedMemorySize) |
| return false; |
| if (lhs.maxComputeWorkGroupCount < rhs.maxComputeWorkGroupCount) |
| return true; |
| if (rhs.maxComputeWorkGroupCount < lhs.maxComputeWorkGroupCount) |
| return false; |
| if (lhs.maxComputeWorkGroupInvocations < rhs.maxComputeWorkGroupInvocations) |
| return true; |
| if (rhs.maxComputeWorkGroupInvocations < lhs.maxComputeWorkGroupInvocations) |
| return false; |
| if (lhs.maxComputeWorkGroupSize < rhs.maxComputeWorkGroupSize) |
| return true; |
| if (rhs.maxComputeWorkGroupSize < lhs.maxComputeWorkGroupSize) |
| return false; |
| if (lhs.subPixelPrecisionBits < rhs.subPixelPrecisionBits) |
| return true; |
| if (rhs.subPixelPrecisionBits < lhs.subPixelPrecisionBits) |
| return false; |
| if (lhs.subTexelPrecisionBits < rhs.subTexelPrecisionBits) |
| return true; |
| if (rhs.subTexelPrecisionBits < lhs.subTexelPrecisionBits) |
| return false; |
| if (lhs.mipmapPrecisionBits < rhs.mipmapPrecisionBits) |
| return true; |
| if (rhs.mipmapPrecisionBits < lhs.mipmapPrecisionBits) |
| return false; |
| if (lhs.maxDrawIndexedIndexValue < rhs.maxDrawIndexedIndexValue) |
| return true; |
| if (rhs.maxDrawIndexedIndexValue < lhs.maxDrawIndexedIndexValue) |
| return false; |
| if (lhs.maxDrawIndirectCount < rhs.maxDrawIndirectCount) |
| return true; |
| if (rhs.maxDrawIndirectCount < lhs.maxDrawIndirectCount) |
| return false; |
| if (lhs.maxSamplerLodBias < rhs.maxSamplerLodBias) |
| return true; |
| if (rhs.maxSamplerLodBias < lhs.maxSamplerLodBias) |
| return false; |
| if (lhs.maxSamplerAnisotropy < rhs.maxSamplerAnisotropy) |
| return true; |
| if (rhs.maxSamplerAnisotropy < lhs.maxSamplerAnisotropy) |
| return false; |
| if (lhs.maxViewports < rhs.maxViewports) |
| return true; |
| if (rhs.maxViewports < lhs.maxViewports) |
| return false; |
| if (lhs.maxViewportDimensions < rhs.maxViewportDimensions) |
| return true; |
| if (rhs.maxViewportDimensions < lhs.maxViewportDimensions) |
| return false; |
| if (lhs.viewportBoundsRange < rhs.viewportBoundsRange) |
| return true; |
| if (rhs.viewportBoundsRange < lhs.viewportBoundsRange) |
| return false; |
| if (lhs.viewportSubPixelBits < rhs.viewportSubPixelBits) |
| return true; |
| if (rhs.viewportSubPixelBits < lhs.viewportSubPixelBits) |
| return false; |
| if (lhs.minMemoryMapAlignment < rhs.minMemoryMapAlignment) |
| return true; |
| if (rhs.minMemoryMapAlignment < lhs.minMemoryMapAlignment) |
| return false; |
| if (lhs.minTexelBufferOffsetAlignment < rhs.minTexelBufferOffsetAlignment) |
| return true; |
| if (rhs.minTexelBufferOffsetAlignment < lhs.minTexelBufferOffsetAlignment) |
| return false; |
| if (lhs.minUniformBufferOffsetAlignment < rhs.minUniformBufferOffsetAlignment) |
| return true; |
| if (rhs.minUniformBufferOffsetAlignment < lhs.minUniformBufferOffsetAlignment) |
| return false; |
| if (lhs.minStorageBufferOffsetAlignment < rhs.minStorageBufferOffsetAlignment) |
| return true; |
| if (rhs.minStorageBufferOffsetAlignment < lhs.minStorageBufferOffsetAlignment) |
| return false; |
| if (lhs.minTexelOffset < rhs.minTexelOffset) |
| return true; |
| if (rhs.minTexelOffset < lhs.minTexelOffset) |
| return false; |
| if (lhs.maxTexelOffset < rhs.maxTexelOffset) |
| return true; |
| if (rhs.maxTexelOffset < lhs.maxTexelOffset) |
| return false; |
| if (lhs.minTexelGatherOffset < rhs.minTexelGatherOffset) |
| return true; |
| if (rhs.minTexelGatherOffset < lhs.minTexelGatherOffset) |
| return false; |
| if (lhs.maxTexelGatherOffset < rhs.maxTexelGatherOffset) |
| return true; |
| if (rhs.maxTexelGatherOffset < lhs.maxTexelGatherOffset) |
| return false; |
| if (lhs.minInterpolationOffset < rhs.minInterpolationOffset) |
| return true; |
| if (rhs.minInterpolationOffset < lhs.minInterpolationOffset) |
| return false; |
| if (lhs.maxInterpolationOffset < rhs.maxInterpolationOffset) |
| return true; |
| if (rhs.maxInterpolationOffset < lhs.maxInterpolationOffset) |
| return false; |
| if (lhs.subPixelInterpolationOffsetBits < rhs.subPixelInterpolationOffsetBits) |
| return true; |
| if (rhs.subPixelInterpolationOffsetBits < lhs.subPixelInterpolationOffsetBits) |
| return false; |
| if (lhs.maxFramebufferWidth < rhs.maxFramebufferWidth) |
| return true; |
| if (rhs.maxFramebufferWidth < lhs.maxFramebufferWidth) |
| return false; |
| if (lhs.maxFramebufferHeight < rhs.maxFramebufferHeight) |
| return true; |
| if (rhs.maxFramebufferHeight < lhs.maxFramebufferHeight) |
| return false; |
| if (lhs.maxFramebufferLayers < rhs.maxFramebufferLayers) |
| return true; |
| if (rhs.maxFramebufferLayers < lhs.maxFramebufferLayers) |
| return false; |
| if (lhs.framebufferColorSampleCounts < rhs.framebufferColorSampleCounts) |
| return true; |
| if (rhs.framebufferColorSampleCounts < lhs.framebufferColorSampleCounts) |
| return false; |
| if (lhs.framebufferDepthSampleCounts < rhs.framebufferDepthSampleCounts) |
| return true; |
| if (rhs.framebufferDepthSampleCounts < lhs.framebufferDepthSampleCounts) |
| return false; |
| if (lhs.framebufferStencilSampleCounts < rhs.framebufferStencilSampleCounts) |
| return true; |
| if (rhs.framebufferStencilSampleCounts < lhs.framebufferStencilSampleCounts) |
| return false; |
| if (lhs.framebufferNoAttachmentsSampleCounts < rhs.framebufferNoAttachmentsSampleCounts) |
| return true; |
| if (rhs.framebufferNoAttachmentsSampleCounts < lhs.framebufferNoAttachmentsSampleCounts) |
| return false; |
| if (lhs.maxColorAttachments < rhs.maxColorAttachments) |
| return true; |
| if (rhs.maxColorAttachments < lhs.maxColorAttachments) |
| return false; |
| if (lhs.sampledImageColorSampleCounts < rhs.sampledImageColorSampleCounts) |
| return true; |
| if (rhs.sampledImageColorSampleCounts < lhs.sampledImageColorSampleCounts) |
| return false; |
| if (lhs.sampledImageIntegerSampleCounts < rhs.sampledImageIntegerSampleCounts) |
| return true; |
| if (rhs.sampledImageIntegerSampleCounts < lhs.sampledImageIntegerSampleCounts) |
| return false; |
| if (lhs.sampledImageDepthSampleCounts < rhs.sampledImageDepthSampleCounts) |
| return true; |
| if (rhs.sampledImageDepthSampleCounts < lhs.sampledImageDepthSampleCounts) |
| return false; |
| if (lhs.sampledImageStencilSampleCounts < rhs.sampledImageStencilSampleCounts) |
| return true; |
| if (rhs.sampledImageStencilSampleCounts < lhs.sampledImageStencilSampleCounts) |
| return false; |
| if (lhs.storageImageSampleCounts < rhs.storageImageSampleCounts) |
| return true; |
| if (rhs.storageImageSampleCounts < lhs.storageImageSampleCounts) |
| return false; |
| if (lhs.maxSampleMaskWords < rhs.maxSampleMaskWords) |
| return true; |
| if (rhs.maxSampleMaskWords < lhs.maxSampleMaskWords) |
| return false; |
| if (lhs.timestampComputeAndGraphics < rhs.timestampComputeAndGraphics) |
| return true; |
| if (rhs.timestampComputeAndGraphics < lhs.timestampComputeAndGraphics) |
| return false; |
| if (lhs.timestampPeriod < rhs.timestampPeriod) |
| return true; |
| if (rhs.timestampPeriod < lhs.timestampPeriod) |
| return false; |
| if (lhs.maxClipDistances < rhs.maxClipDistances) |
| return true; |
| if (rhs.maxClipDistances < lhs.maxClipDistances) |
| return false; |
| if (lhs.maxCullDistances < rhs.maxCullDistances) |
| return true; |
| if (rhs.maxCullDistances < lhs.maxCullDistances) |
| return false; |
| if (lhs.maxCombinedClipAndCullDistances < rhs.maxCombinedClipAndCullDistances) |
| return true; |
| if (rhs.maxCombinedClipAndCullDistances < lhs.maxCombinedClipAndCullDistances) |
| return false; |
| if (lhs.discreteQueuePriorities < rhs.discreteQueuePriorities) |
| return true; |
| if (rhs.discreteQueuePriorities < lhs.discreteQueuePriorities) |
| return false; |
| if (lhs.pointSizeRange < rhs.pointSizeRange) |
| return true; |
| if (rhs.pointSizeRange < lhs.pointSizeRange) |
| return false; |
| if (lhs.lineWidthRange < rhs.lineWidthRange) |
| return true; |
| if (rhs.lineWidthRange < lhs.lineWidthRange) |
| return false; |
| if (lhs.pointSizeGranularity < rhs.pointSizeGranularity) |
| return true; |
| if (rhs.pointSizeGranularity < lhs.pointSizeGranularity) |
| return false; |
| if (lhs.lineWidthGranularity < rhs.lineWidthGranularity) |
| return true; |
| if (rhs.lineWidthGranularity < lhs.lineWidthGranularity) |
| return false; |
| if (lhs.strictLines < rhs.strictLines) |
| return true; |
| if (rhs.strictLines < lhs.strictLines) |
| return false; |
| if (lhs.standardSampleLocations < rhs.standardSampleLocations) |
| return true; |
| if (rhs.standardSampleLocations < lhs.standardSampleLocations) |
| return false; |
| if (lhs.optimalBufferCopyOffsetAlignment < rhs.optimalBufferCopyOffsetAlignment) |
| return true; |
| if (rhs.optimalBufferCopyOffsetAlignment < lhs.optimalBufferCopyOffsetAlignment) |
| return false; |
| if (lhs.optimalBufferCopyRowPitchAlignment < rhs.optimalBufferCopyRowPitchAlignment) |
| return true; |
| if (rhs.optimalBufferCopyRowPitchAlignment < lhs.optimalBufferCopyRowPitchAlignment) |
| return false; |
| if (lhs.nonCoherentAtomSize < rhs.nonCoherentAtomSize) |
| return true; |
| if (rhs.nonCoherentAtomSize < lhs.nonCoherentAtomSize) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkPhysicalDeviceSparsePropertiesPtr VkPhysicalDeviceSparseProperties::Clone() const { |
| return New( |
| mojo::Clone(residencyStandard2DBlockShape), |
| mojo::Clone(residencyStandard2DMultisampleBlockShape), |
| mojo::Clone(residencyStandard3DBlockShape), |
| mojo::Clone(residencyAlignedMipSize), |
| mojo::Clone(residencyNonResidentStrict) |
| ); |
| } |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>*> |
| bool VkPhysicalDeviceSparseProperties::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->residencyStandard2DBlockShape, other_struct.residencyStandard2DBlockShape)) |
| return false; |
| if (!mojo::Equals(this->residencyStandard2DMultisampleBlockShape, other_struct.residencyStandard2DMultisampleBlockShape)) |
| return false; |
| if (!mojo::Equals(this->residencyStandard3DBlockShape, other_struct.residencyStandard3DBlockShape)) |
| return false; |
| if (!mojo::Equals(this->residencyAlignedMipSize, other_struct.residencyAlignedMipSize)) |
| return false; |
| if (!mojo::Equals(this->residencyNonResidentStrict, other_struct.residencyNonResidentStrict)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkPhysicalDeviceSparseProperties::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.residencyStandard2DBlockShape < rhs.residencyStandard2DBlockShape) |
| return true; |
| if (rhs.residencyStandard2DBlockShape < lhs.residencyStandard2DBlockShape) |
| return false; |
| if (lhs.residencyStandard2DMultisampleBlockShape < rhs.residencyStandard2DMultisampleBlockShape) |
| return true; |
| if (rhs.residencyStandard2DMultisampleBlockShape < lhs.residencyStandard2DMultisampleBlockShape) |
| return false; |
| if (lhs.residencyStandard3DBlockShape < rhs.residencyStandard3DBlockShape) |
| return true; |
| if (rhs.residencyStandard3DBlockShape < lhs.residencyStandard3DBlockShape) |
| return false; |
| if (lhs.residencyAlignedMipSize < rhs.residencyAlignedMipSize) |
| return true; |
| if (rhs.residencyAlignedMipSize < lhs.residencyAlignedMipSize) |
| return false; |
| if (lhs.residencyNonResidentStrict < rhs.residencyNonResidentStrict) |
| return true; |
| if (rhs.residencyNonResidentStrict < lhs.residencyNonResidentStrict) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkPhysicalDevicePropertiesPtr VkPhysicalDeviceProperties::Clone() const { |
| return New( |
| mojo::Clone(apiVersion), |
| mojo::Clone(driverVersion), |
| mojo::Clone(vendorID), |
| mojo::Clone(deviceID), |
| mojo::Clone(deviceType), |
| mojo::Clone(deviceName), |
| mojo::Clone(pipelineCacheUUID), |
| mojo::Clone(limits), |
| mojo::Clone(sparseProperties) |
| ); |
| } |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>*> |
| bool VkPhysicalDeviceProperties::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->apiVersion, other_struct.apiVersion)) |
| return false; |
| if (!mojo::Equals(this->driverVersion, other_struct.driverVersion)) |
| return false; |
| if (!mojo::Equals(this->vendorID, other_struct.vendorID)) |
| return false; |
| if (!mojo::Equals(this->deviceID, other_struct.deviceID)) |
| return false; |
| if (!mojo::Equals(this->deviceType, other_struct.deviceType)) |
| return false; |
| if (!mojo::Equals(this->deviceName, other_struct.deviceName)) |
| return false; |
| if (!mojo::Equals(this->pipelineCacheUUID, other_struct.pipelineCacheUUID)) |
| return false; |
| if (!mojo::Equals(this->limits, other_struct.limits)) |
| return false; |
| if (!mojo::Equals(this->sparseProperties, other_struct.sparseProperties)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkPhysicalDeviceProperties::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.apiVersion < rhs.apiVersion) |
| return true; |
| if (rhs.apiVersion < lhs.apiVersion) |
| return false; |
| if (lhs.driverVersion < rhs.driverVersion) |
| return true; |
| if (rhs.driverVersion < lhs.driverVersion) |
| return false; |
| if (lhs.vendorID < rhs.vendorID) |
| return true; |
| if (rhs.vendorID < lhs.vendorID) |
| return false; |
| if (lhs.deviceID < rhs.deviceID) |
| return true; |
| if (rhs.deviceID < lhs.deviceID) |
| return false; |
| if (lhs.deviceType < rhs.deviceType) |
| return true; |
| if (rhs.deviceType < lhs.deviceType) |
| return false; |
| if (lhs.deviceName < rhs.deviceName) |
| return true; |
| if (rhs.deviceName < lhs.deviceName) |
| return false; |
| if (lhs.pipelineCacheUUID < rhs.pipelineCacheUUID) |
| return true; |
| if (rhs.pipelineCacheUUID < lhs.pipelineCacheUUID) |
| return false; |
| if (lhs.limits < rhs.limits) |
| return true; |
| if (rhs.limits < lhs.limits) |
| return false; |
| if (lhs.sparseProperties < rhs.sparseProperties) |
| return true; |
| if (rhs.sparseProperties < lhs.sparseProperties) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkPhysicalDeviceFeaturesPtr VkPhysicalDeviceFeatures::Clone() const { |
| return New( |
| mojo::Clone(robustBufferAccess), |
| mojo::Clone(fullDrawIndexUint32), |
| mojo::Clone(imageCubeArray), |
| mojo::Clone(independentBlend), |
| mojo::Clone(geometryShader), |
| mojo::Clone(tessellationShader), |
| mojo::Clone(sampleRateShading), |
| mojo::Clone(dualSrcBlend), |
| mojo::Clone(logicOp), |
| mojo::Clone(multiDrawIndirect), |
| mojo::Clone(drawIndirectFirstInstance), |
| mojo::Clone(depthClamp), |
| mojo::Clone(depthBiasClamp), |
| mojo::Clone(fillModeNonSolid), |
| mojo::Clone(depthBounds), |
| mojo::Clone(wideLines), |
| mojo::Clone(largePoints), |
| mojo::Clone(alphaToOne), |
| mojo::Clone(multiViewport), |
| mojo::Clone(samplerAnisotropy), |
| mojo::Clone(textureCompressionETC2), |
| mojo::Clone(textureCompressionASTC_LDR), |
| mojo::Clone(textureCompressionBC), |
| mojo::Clone(occlusionQueryPrecise), |
| mojo::Clone(pipelineStatisticsQuery), |
| mojo::Clone(vertexPipelineStoresAndAtomics), |
| mojo::Clone(fragmentStoresAndAtomics), |
| mojo::Clone(shaderTessellationAndGeometryPointSize), |
| mojo::Clone(shaderImageGatherExtended), |
| mojo::Clone(shaderStorageImageExtendedFormats), |
| mojo::Clone(shaderStorageImageMultisample), |
| mojo::Clone(shaderStorageImageReadWithoutFormat), |
| mojo::Clone(shaderStorageImageWriteWithoutFormat), |
| mojo::Clone(shaderUniformBufferArrayDynamicIndexing), |
| mojo::Clone(shaderSampledImageArrayDynamicIndexing), |
| mojo::Clone(shaderStorageBufferArrayDynamicIndexing), |
| mojo::Clone(shaderStorageImageArrayDynamicIndexing), |
| mojo::Clone(shaderClipDistance), |
| mojo::Clone(shaderCullDistance), |
| mojo::Clone(shaderFloat64), |
| mojo::Clone(shaderInt64), |
| mojo::Clone(shaderInt16), |
| mojo::Clone(shaderResourceResidency), |
| mojo::Clone(shaderResourceMinLod), |
| mojo::Clone(sparseBinding), |
| mojo::Clone(sparseResidencyBuffer), |
| mojo::Clone(sparseResidencyImage2D), |
| mojo::Clone(sparseResidencyImage3D), |
| mojo::Clone(sparseResidency2Samples), |
| mojo::Clone(sparseResidency4Samples), |
| mojo::Clone(sparseResidency8Samples), |
| mojo::Clone(sparseResidency16Samples), |
| mojo::Clone(sparseResidencyAliased), |
| mojo::Clone(variableMultisampleRate), |
| mojo::Clone(inheritedQueries) |
| ); |
| } |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>*> |
| bool VkPhysicalDeviceFeatures::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->robustBufferAccess, other_struct.robustBufferAccess)) |
| return false; |
| if (!mojo::Equals(this->fullDrawIndexUint32, other_struct.fullDrawIndexUint32)) |
| return false; |
| if (!mojo::Equals(this->imageCubeArray, other_struct.imageCubeArray)) |
| return false; |
| if (!mojo::Equals(this->independentBlend, other_struct.independentBlend)) |
| return false; |
| if (!mojo::Equals(this->geometryShader, other_struct.geometryShader)) |
| return false; |
| if (!mojo::Equals(this->tessellationShader, other_struct.tessellationShader)) |
| return false; |
| if (!mojo::Equals(this->sampleRateShading, other_struct.sampleRateShading)) |
| return false; |
| if (!mojo::Equals(this->dualSrcBlend, other_struct.dualSrcBlend)) |
| return false; |
| if (!mojo::Equals(this->logicOp, other_struct.logicOp)) |
| return false; |
| if (!mojo::Equals(this->multiDrawIndirect, other_struct.multiDrawIndirect)) |
| return false; |
| if (!mojo::Equals(this->drawIndirectFirstInstance, other_struct.drawIndirectFirstInstance)) |
| return false; |
| if (!mojo::Equals(this->depthClamp, other_struct.depthClamp)) |
| return false; |
| if (!mojo::Equals(this->depthBiasClamp, other_struct.depthBiasClamp)) |
| return false; |
| if (!mojo::Equals(this->fillModeNonSolid, other_struct.fillModeNonSolid)) |
| return false; |
| if (!mojo::Equals(this->depthBounds, other_struct.depthBounds)) |
| return false; |
| if (!mojo::Equals(this->wideLines, other_struct.wideLines)) |
| return false; |
| if (!mojo::Equals(this->largePoints, other_struct.largePoints)) |
| return false; |
| if (!mojo::Equals(this->alphaToOne, other_struct.alphaToOne)) |
| return false; |
| if (!mojo::Equals(this->multiViewport, other_struct.multiViewport)) |
| return false; |
| if (!mojo::Equals(this->samplerAnisotropy, other_struct.samplerAnisotropy)) |
| return false; |
| if (!mojo::Equals(this->textureCompressionETC2, other_struct.textureCompressionETC2)) |
| return false; |
| if (!mojo::Equals(this->textureCompressionASTC_LDR, other_struct.textureCompressionASTC_LDR)) |
| return false; |
| if (!mojo::Equals(this->textureCompressionBC, other_struct.textureCompressionBC)) |
| return false; |
| if (!mojo::Equals(this->occlusionQueryPrecise, other_struct.occlusionQueryPrecise)) |
| return false; |
| if (!mojo::Equals(this->pipelineStatisticsQuery, other_struct.pipelineStatisticsQuery)) |
| return false; |
| if (!mojo::Equals(this->vertexPipelineStoresAndAtomics, other_struct.vertexPipelineStoresAndAtomics)) |
| return false; |
| if (!mojo::Equals(this->fragmentStoresAndAtomics, other_struct.fragmentStoresAndAtomics)) |
| return false; |
| if (!mojo::Equals(this->shaderTessellationAndGeometryPointSize, other_struct.shaderTessellationAndGeometryPointSize)) |
| return false; |
| if (!mojo::Equals(this->shaderImageGatherExtended, other_struct.shaderImageGatherExtended)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageImageExtendedFormats, other_struct.shaderStorageImageExtendedFormats)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageImageMultisample, other_struct.shaderStorageImageMultisample)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageImageReadWithoutFormat, other_struct.shaderStorageImageReadWithoutFormat)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageImageWriteWithoutFormat, other_struct.shaderStorageImageWriteWithoutFormat)) |
| return false; |
| if (!mojo::Equals(this->shaderUniformBufferArrayDynamicIndexing, other_struct.shaderUniformBufferArrayDynamicIndexing)) |
| return false; |
| if (!mojo::Equals(this->shaderSampledImageArrayDynamicIndexing, other_struct.shaderSampledImageArrayDynamicIndexing)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageBufferArrayDynamicIndexing, other_struct.shaderStorageBufferArrayDynamicIndexing)) |
| return false; |
| if (!mojo::Equals(this->shaderStorageImageArrayDynamicIndexing, other_struct.shaderStorageImageArrayDynamicIndexing)) |
| return false; |
| if (!mojo::Equals(this->shaderClipDistance, other_struct.shaderClipDistance)) |
| return false; |
| if (!mojo::Equals(this->shaderCullDistance, other_struct.shaderCullDistance)) |
| return false; |
| if (!mojo::Equals(this->shaderFloat64, other_struct.shaderFloat64)) |
| return false; |
| if (!mojo::Equals(this->shaderInt64, other_struct.shaderInt64)) |
| return false; |
| if (!mojo::Equals(this->shaderInt16, other_struct.shaderInt16)) |
| return false; |
| if (!mojo::Equals(this->shaderResourceResidency, other_struct.shaderResourceResidency)) |
| return false; |
| if (!mojo::Equals(this->shaderResourceMinLod, other_struct.shaderResourceMinLod)) |
| return false; |
| if (!mojo::Equals(this->sparseBinding, other_struct.sparseBinding)) |
| return false; |
| if (!mojo::Equals(this->sparseResidencyBuffer, other_struct.sparseResidencyBuffer)) |
| return false; |
| if (!mojo::Equals(this->sparseResidencyImage2D, other_struct.sparseResidencyImage2D)) |
| return false; |
| if (!mojo::Equals(this->sparseResidencyImage3D, other_struct.sparseResidencyImage3D)) |
| return false; |
| if (!mojo::Equals(this->sparseResidency2Samples, other_struct.sparseResidency2Samples)) |
| return false; |
| if (!mojo::Equals(this->sparseResidency4Samples, other_struct.sparseResidency4Samples)) |
| return false; |
| if (!mojo::Equals(this->sparseResidency8Samples, other_struct.sparseResidency8Samples)) |
| return false; |
| if (!mojo::Equals(this->sparseResidency16Samples, other_struct.sparseResidency16Samples)) |
| return false; |
| if (!mojo::Equals(this->sparseResidencyAliased, other_struct.sparseResidencyAliased)) |
| return false; |
| if (!mojo::Equals(this->variableMultisampleRate, other_struct.variableMultisampleRate)) |
| return false; |
| if (!mojo::Equals(this->inheritedQueries, other_struct.inheritedQueries)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkPhysicalDeviceFeatures::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.robustBufferAccess < rhs.robustBufferAccess) |
| return true; |
| if (rhs.robustBufferAccess < lhs.robustBufferAccess) |
| return false; |
| if (lhs.fullDrawIndexUint32 < rhs.fullDrawIndexUint32) |
| return true; |
| if (rhs.fullDrawIndexUint32 < lhs.fullDrawIndexUint32) |
| return false; |
| if (lhs.imageCubeArray < rhs.imageCubeArray) |
| return true; |
| if (rhs.imageCubeArray < lhs.imageCubeArray) |
| return false; |
| if (lhs.independentBlend < rhs.independentBlend) |
| return true; |
| if (rhs.independentBlend < lhs.independentBlend) |
| return false; |
| if (lhs.geometryShader < rhs.geometryShader) |
| return true; |
| if (rhs.geometryShader < lhs.geometryShader) |
| return false; |
| if (lhs.tessellationShader < rhs.tessellationShader) |
| return true; |
| if (rhs.tessellationShader < lhs.tessellationShader) |
| return false; |
| if (lhs.sampleRateShading < rhs.sampleRateShading) |
| return true; |
| if (rhs.sampleRateShading < lhs.sampleRateShading) |
| return false; |
| if (lhs.dualSrcBlend < rhs.dualSrcBlend) |
| return true; |
| if (rhs.dualSrcBlend < lhs.dualSrcBlend) |
| return false; |
| if (lhs.logicOp < rhs.logicOp) |
| return true; |
| if (rhs.logicOp < lhs.logicOp) |
| return false; |
| if (lhs.multiDrawIndirect < rhs.multiDrawIndirect) |
| return true; |
| if (rhs.multiDrawIndirect < lhs.multiDrawIndirect) |
| return false; |
| if (lhs.drawIndirectFirstInstance < rhs.drawIndirectFirstInstance) |
| return true; |
| if (rhs.drawIndirectFirstInstance < lhs.drawIndirectFirstInstance) |
| return false; |
| if (lhs.depthClamp < rhs.depthClamp) |
| return true; |
| if (rhs.depthClamp < lhs.depthClamp) |
| return false; |
| if (lhs.depthBiasClamp < rhs.depthBiasClamp) |
| return true; |
| if (rhs.depthBiasClamp < lhs.depthBiasClamp) |
| return false; |
| if (lhs.fillModeNonSolid < rhs.fillModeNonSolid) |
| return true; |
| if (rhs.fillModeNonSolid < lhs.fillModeNonSolid) |
| return false; |
| if (lhs.depthBounds < rhs.depthBounds) |
| return true; |
| if (rhs.depthBounds < lhs.depthBounds) |
| return false; |
| if (lhs.wideLines < rhs.wideLines) |
| return true; |
| if (rhs.wideLines < lhs.wideLines) |
| return false; |
| if (lhs.largePoints < rhs.largePoints) |
| return true; |
| if (rhs.largePoints < lhs.largePoints) |
| return false; |
| if (lhs.alphaToOne < rhs.alphaToOne) |
| return true; |
| if (rhs.alphaToOne < lhs.alphaToOne) |
| return false; |
| if (lhs.multiViewport < rhs.multiViewport) |
| return true; |
| if (rhs.multiViewport < lhs.multiViewport) |
| return false; |
| if (lhs.samplerAnisotropy < rhs.samplerAnisotropy) |
| return true; |
| if (rhs.samplerAnisotropy < lhs.samplerAnisotropy) |
| return false; |
| if (lhs.textureCompressionETC2 < rhs.textureCompressionETC2) |
| return true; |
| if (rhs.textureCompressionETC2 < lhs.textureCompressionETC2) |
| return false; |
| if (lhs.textureCompressionASTC_LDR < rhs.textureCompressionASTC_LDR) |
| return true; |
| if (rhs.textureCompressionASTC_LDR < lhs.textureCompressionASTC_LDR) |
| return false; |
| if (lhs.textureCompressionBC < rhs.textureCompressionBC) |
| return true; |
| if (rhs.textureCompressionBC < lhs.textureCompressionBC) |
| return false; |
| if (lhs.occlusionQueryPrecise < rhs.occlusionQueryPrecise) |
| return true; |
| if (rhs.occlusionQueryPrecise < lhs.occlusionQueryPrecise) |
| return false; |
| if (lhs.pipelineStatisticsQuery < rhs.pipelineStatisticsQuery) |
| return true; |
| if (rhs.pipelineStatisticsQuery < lhs.pipelineStatisticsQuery) |
| return false; |
| if (lhs.vertexPipelineStoresAndAtomics < rhs.vertexPipelineStoresAndAtomics) |
| return true; |
| if (rhs.vertexPipelineStoresAndAtomics < lhs.vertexPipelineStoresAndAtomics) |
| return false; |
| if (lhs.fragmentStoresAndAtomics < rhs.fragmentStoresAndAtomics) |
| return true; |
| if (rhs.fragmentStoresAndAtomics < lhs.fragmentStoresAndAtomics) |
| return false; |
| if (lhs.shaderTessellationAndGeometryPointSize < rhs.shaderTessellationAndGeometryPointSize) |
| return true; |
| if (rhs.shaderTessellationAndGeometryPointSize < lhs.shaderTessellationAndGeometryPointSize) |
| return false; |
| if (lhs.shaderImageGatherExtended < rhs.shaderImageGatherExtended) |
| return true; |
| if (rhs.shaderImageGatherExtended < lhs.shaderImageGatherExtended) |
| return false; |
| if (lhs.shaderStorageImageExtendedFormats < rhs.shaderStorageImageExtendedFormats) |
| return true; |
| if (rhs.shaderStorageImageExtendedFormats < lhs.shaderStorageImageExtendedFormats) |
| return false; |
| if (lhs.shaderStorageImageMultisample < rhs.shaderStorageImageMultisample) |
| return true; |
| if (rhs.shaderStorageImageMultisample < lhs.shaderStorageImageMultisample) |
| return false; |
| if (lhs.shaderStorageImageReadWithoutFormat < rhs.shaderStorageImageReadWithoutFormat) |
| return true; |
| if (rhs.shaderStorageImageReadWithoutFormat < lhs.shaderStorageImageReadWithoutFormat) |
| return false; |
| if (lhs.shaderStorageImageWriteWithoutFormat < rhs.shaderStorageImageWriteWithoutFormat) |
| return true; |
| if (rhs.shaderStorageImageWriteWithoutFormat < lhs.shaderStorageImageWriteWithoutFormat) |
| return false; |
| if (lhs.shaderUniformBufferArrayDynamicIndexing < rhs.shaderUniformBufferArrayDynamicIndexing) |
| return true; |
| if (rhs.shaderUniformBufferArrayDynamicIndexing < lhs.shaderUniformBufferArrayDynamicIndexing) |
| return false; |
| if (lhs.shaderSampledImageArrayDynamicIndexing < rhs.shaderSampledImageArrayDynamicIndexing) |
| return true; |
| if (rhs.shaderSampledImageArrayDynamicIndexing < lhs.shaderSampledImageArrayDynamicIndexing) |
| return false; |
| if (lhs.shaderStorageBufferArrayDynamicIndexing < rhs.shaderStorageBufferArrayDynamicIndexing) |
| return true; |
| if (rhs.shaderStorageBufferArrayDynamicIndexing < lhs.shaderStorageBufferArrayDynamicIndexing) |
| return false; |
| if (lhs.shaderStorageImageArrayDynamicIndexing < rhs.shaderStorageImageArrayDynamicIndexing) |
| return true; |
| if (rhs.shaderStorageImageArrayDynamicIndexing < lhs.shaderStorageImageArrayDynamicIndexing) |
| return false; |
| if (lhs.shaderClipDistance < rhs.shaderClipDistance) |
| return true; |
| if (rhs.shaderClipDistance < lhs.shaderClipDistance) |
| return false; |
| if (lhs.shaderCullDistance < rhs.shaderCullDistance) |
| return true; |
| if (rhs.shaderCullDistance < lhs.shaderCullDistance) |
| return false; |
| if (lhs.shaderFloat64 < rhs.shaderFloat64) |
| return true; |
| if (rhs.shaderFloat64 < lhs.shaderFloat64) |
| return false; |
| if (lhs.shaderInt64 < rhs.shaderInt64) |
| return true; |
| if (rhs.shaderInt64 < lhs.shaderInt64) |
| return false; |
| if (lhs.shaderInt16 < rhs.shaderInt16) |
| return true; |
| if (rhs.shaderInt16 < lhs.shaderInt16) |
| return false; |
| if (lhs.shaderResourceResidency < rhs.shaderResourceResidency) |
| return true; |
| if (rhs.shaderResourceResidency < lhs.shaderResourceResidency) |
| return false; |
| if (lhs.shaderResourceMinLod < rhs.shaderResourceMinLod) |
| return true; |
| if (rhs.shaderResourceMinLod < lhs.shaderResourceMinLod) |
| return false; |
| if (lhs.sparseBinding < rhs.sparseBinding) |
| return true; |
| if (rhs.sparseBinding < lhs.sparseBinding) |
| return false; |
| if (lhs.sparseResidencyBuffer < rhs.sparseResidencyBuffer) |
| return true; |
| if (rhs.sparseResidencyBuffer < lhs.sparseResidencyBuffer) |
| return false; |
| if (lhs.sparseResidencyImage2D < rhs.sparseResidencyImage2D) |
| return true; |
| if (rhs.sparseResidencyImage2D < lhs.sparseResidencyImage2D) |
| return false; |
| if (lhs.sparseResidencyImage3D < rhs.sparseResidencyImage3D) |
| return true; |
| if (rhs.sparseResidencyImage3D < lhs.sparseResidencyImage3D) |
| return false; |
| if (lhs.sparseResidency2Samples < rhs.sparseResidency2Samples) |
| return true; |
| if (rhs.sparseResidency2Samples < lhs.sparseResidency2Samples) |
| return false; |
| if (lhs.sparseResidency4Samples < rhs.sparseResidency4Samples) |
| return true; |
| if (rhs.sparseResidency4Samples < lhs.sparseResidency4Samples) |
| return false; |
| if (lhs.sparseResidency8Samples < rhs.sparseResidency8Samples) |
| return true; |
| if (rhs.sparseResidency8Samples < lhs.sparseResidency8Samples) |
| return false; |
| if (lhs.sparseResidency16Samples < rhs.sparseResidency16Samples) |
| return true; |
| if (rhs.sparseResidency16Samples < lhs.sparseResidency16Samples) |
| return false; |
| if (lhs.sparseResidencyAliased < rhs.sparseResidencyAliased) |
| return true; |
| if (rhs.sparseResidencyAliased < lhs.sparseResidencyAliased) |
| return false; |
| if (lhs.variableMultisampleRate < rhs.variableMultisampleRate) |
| return true; |
| if (rhs.variableMultisampleRate < lhs.variableMultisampleRate) |
| return false; |
| if (lhs.inheritedQueries < rhs.inheritedQueries) |
| return true; |
| if (rhs.inheritedQueries < lhs.inheritedQueries) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkExtent3DPtr VkExtent3D::Clone() const { |
| return New( |
| mojo::Clone(width), |
| mojo::Clone(height), |
| mojo::Clone(depth) |
| ); |
| } |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>*> |
| bool VkExtent3D::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->width, other_struct.width)) |
| return false; |
| if (!mojo::Equals(this->height, other_struct.height)) |
| return false; |
| if (!mojo::Equals(this->depth, other_struct.depth)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkExtent3D::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.width < rhs.width) |
| return true; |
| if (rhs.width < lhs.width) |
| return false; |
| if (lhs.height < rhs.height) |
| return true; |
| if (rhs.height < lhs.height) |
| return false; |
| if (lhs.depth < rhs.depth) |
| return true; |
| if (rhs.depth < lhs.depth) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| VkQueueFamilyPropertiesPtr VkQueueFamilyProperties::Clone() const { |
| return New( |
| mojo::Clone(queueFlags), |
| mojo::Clone(queueCount), |
| mojo::Clone(timestampValidBits), |
| mojo::Clone(minImageTransferGranularity) |
| ); |
| } |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>*> |
| bool VkQueueFamilyProperties::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->queueFlags, other_struct.queueFlags)) |
| return false; |
| if (!mojo::Equals(this->queueCount, other_struct.queueCount)) |
| return false; |
| if (!mojo::Equals(this->timestampValidBits, other_struct.timestampValidBits)) |
| return false; |
| if (!mojo::Equals(this->minImageTransferGranularity, other_struct.minImageTransferGranularity)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, VkQueueFamilyProperties::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.queueFlags < rhs.queueFlags) |
| return true; |
| if (rhs.queueFlags < lhs.queueFlags) |
| return false; |
| if (lhs.queueCount < rhs.queueCount) |
| return true; |
| if (rhs.queueCount < lhs.queueCount) |
| return false; |
| if (lhs.timestampValidBits < rhs.timestampValidBits) |
| return true; |
| if (rhs.timestampValidBits < lhs.timestampValidBits) |
| return false; |
| if (lhs.minImageTransferGranularity < rhs.minImageTransferGranularity) |
| return true; |
| if (rhs.minImageTransferGranularity < lhs.minImageTransferGranularity) |
| return false; |
| return false; |
| } |
| |
| |
| } // namespace mojom |
| } // namespace gpu |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkExtensionProperties::DataView, |
| ::gpu::mojom::VkExtensionPropertiesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkExtensionPropertiesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkExtensionPropertiesPtr* output) { output->reset(); } |
| |
| static const decltype(::gpu::mojom::VkExtensionProperties::extensionName)& extensionName( |
| const ::gpu::mojom::VkExtensionPropertiesPtr& input) { |
| return input->extensionName; |
| } |
| |
| static decltype(::gpu::mojom::VkExtensionProperties::specVersion) specVersion( |
| const ::gpu::mojom::VkExtensionPropertiesPtr& input) { |
| return input->specVersion; |
| } |
| |
| static bool Read(::gpu::mojom::VkExtensionProperties::DataView input, ::gpu::mojom::VkExtensionPropertiesPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkLayerProperties::DataView, |
| ::gpu::mojom::VkLayerPropertiesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkLayerPropertiesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkLayerPropertiesPtr* output) { output->reset(); } |
| |
| static const decltype(::gpu::mojom::VkLayerProperties::layerName)& layerName( |
| const ::gpu::mojom::VkLayerPropertiesPtr& input) { |
| return input->layerName; |
| } |
| |
| static decltype(::gpu::mojom::VkLayerProperties::specVersion) specVersion( |
| const ::gpu::mojom::VkLayerPropertiesPtr& input) { |
| return input->specVersion; |
| } |
| |
| static decltype(::gpu::mojom::VkLayerProperties::implementationVersion) implementationVersion( |
| const ::gpu::mojom::VkLayerPropertiesPtr& input) { |
| return input->implementationVersion; |
| } |
| |
| static const decltype(::gpu::mojom::VkLayerProperties::description)& description( |
| const ::gpu::mojom::VkLayerPropertiesPtr& input) { |
| return input->description; |
| } |
| |
| static bool Read(::gpu::mojom::VkLayerProperties::DataView input, ::gpu::mojom::VkLayerPropertiesPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkPhysicalDeviceLimits::DataView, |
| ::gpu::mojom::VkPhysicalDeviceLimitsPtr> { |
| static bool IsNull(const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkPhysicalDeviceLimitsPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxImageDimension1D) maxImageDimension1D( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxImageDimension1D; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxImageDimension2D) maxImageDimension2D( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxImageDimension2D; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxImageDimension3D) maxImageDimension3D( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxImageDimension3D; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxImageDimensionCube) maxImageDimensionCube( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxImageDimensionCube; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxImageArrayLayers) maxImageArrayLayers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxImageArrayLayers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTexelBufferElements) maxTexelBufferElements( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTexelBufferElements; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxUniformBufferRange) maxUniformBufferRange( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxUniformBufferRange; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxStorageBufferRange) maxStorageBufferRange( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxStorageBufferRange; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPushConstantsSize) maxPushConstantsSize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPushConstantsSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxMemoryAllocationCount) maxMemoryAllocationCount( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxMemoryAllocationCount; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxSamplerAllocationCount) maxSamplerAllocationCount( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxSamplerAllocationCount; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::bufferImageGranularity) bufferImageGranularity( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->bufferImageGranularity; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::sparseAddressSpaceSize) sparseAddressSpaceSize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->sparseAddressSpaceSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxBoundDescriptorSets) maxBoundDescriptorSets( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxBoundDescriptorSets; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorSamplers) maxPerStageDescriptorSamplers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorSamplers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorUniformBuffers) maxPerStageDescriptorUniformBuffers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorUniformBuffers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorStorageBuffers) maxPerStageDescriptorStorageBuffers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorStorageBuffers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorSampledImages) maxPerStageDescriptorSampledImages( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorSampledImages; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorStorageImages) maxPerStageDescriptorStorageImages( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorStorageImages; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageDescriptorInputAttachments) maxPerStageDescriptorInputAttachments( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageDescriptorInputAttachments; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxPerStageResources) maxPerStageResources( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxPerStageResources; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetSamplers) maxDescriptorSetSamplers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetSamplers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetUniformBuffers) maxDescriptorSetUniformBuffers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetUniformBuffers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetUniformBuffersDynamic) maxDescriptorSetUniformBuffersDynamic( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetUniformBuffersDynamic; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetStorageBuffers) maxDescriptorSetStorageBuffers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetStorageBuffers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetStorageBuffersDynamic) maxDescriptorSetStorageBuffersDynamic( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetStorageBuffersDynamic; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetSampledImages) maxDescriptorSetSampledImages( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetSampledImages; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetStorageImages) maxDescriptorSetStorageImages( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetStorageImages; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDescriptorSetInputAttachments) maxDescriptorSetInputAttachments( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDescriptorSetInputAttachments; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxVertexInputAttributes) maxVertexInputAttributes( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxVertexInputAttributes; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxVertexInputBindings) maxVertexInputBindings( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxVertexInputBindings; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxVertexInputAttributeOffset) maxVertexInputAttributeOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxVertexInputAttributeOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxVertexInputBindingStride) maxVertexInputBindingStride( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxVertexInputBindingStride; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxVertexOutputComponents) maxVertexOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxVertexOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationGenerationLevel) maxTessellationGenerationLevel( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationGenerationLevel; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationPatchSize) maxTessellationPatchSize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationPatchSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationControlPerVertexInputComponents) maxTessellationControlPerVertexInputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationControlPerVertexInputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationControlPerVertexOutputComponents) maxTessellationControlPerVertexOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationControlPerVertexOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationControlPerPatchOutputComponents) maxTessellationControlPerPatchOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationControlPerPatchOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationControlTotalOutputComponents) maxTessellationControlTotalOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationControlTotalOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationEvaluationInputComponents) maxTessellationEvaluationInputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationEvaluationInputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTessellationEvaluationOutputComponents) maxTessellationEvaluationOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTessellationEvaluationOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxGeometryShaderInvocations) maxGeometryShaderInvocations( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxGeometryShaderInvocations; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxGeometryInputComponents) maxGeometryInputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxGeometryInputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxGeometryOutputComponents) maxGeometryOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxGeometryOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxGeometryOutputVertices) maxGeometryOutputVertices( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxGeometryOutputVertices; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxGeometryTotalOutputComponents) maxGeometryTotalOutputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxGeometryTotalOutputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFragmentInputComponents) maxFragmentInputComponents( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFragmentInputComponents; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFragmentOutputAttachments) maxFragmentOutputAttachments( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFragmentOutputAttachments; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFragmentDualSrcAttachments) maxFragmentDualSrcAttachments( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFragmentDualSrcAttachments; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFragmentCombinedOutputResources) maxFragmentCombinedOutputResources( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFragmentCombinedOutputResources; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxComputeSharedMemorySize) maxComputeSharedMemorySize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxComputeSharedMemorySize; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxComputeWorkGroupCount)& maxComputeWorkGroupCount( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxComputeWorkGroupCount; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxComputeWorkGroupInvocations) maxComputeWorkGroupInvocations( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxComputeWorkGroupInvocations; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxComputeWorkGroupSize)& maxComputeWorkGroupSize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxComputeWorkGroupSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::subPixelPrecisionBits) subPixelPrecisionBits( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->subPixelPrecisionBits; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::subTexelPrecisionBits) subTexelPrecisionBits( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->subTexelPrecisionBits; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::mipmapPrecisionBits) mipmapPrecisionBits( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->mipmapPrecisionBits; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDrawIndexedIndexValue) maxDrawIndexedIndexValue( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDrawIndexedIndexValue; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxDrawIndirectCount) maxDrawIndirectCount( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxDrawIndirectCount; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxSamplerLodBias) maxSamplerLodBias( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxSamplerLodBias; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxSamplerAnisotropy) maxSamplerAnisotropy( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxSamplerAnisotropy; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxViewports) maxViewports( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxViewports; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxViewportDimensions)& maxViewportDimensions( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxViewportDimensions; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::viewportBoundsRange)& viewportBoundsRange( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->viewportBoundsRange; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::viewportSubPixelBits) viewportSubPixelBits( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->viewportSubPixelBits; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minMemoryMapAlignment) minMemoryMapAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minMemoryMapAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment) minTexelBufferOffsetAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minTexelBufferOffsetAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minUniformBufferOffsetAlignment) minUniformBufferOffsetAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minUniformBufferOffsetAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment) minStorageBufferOffsetAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minStorageBufferOffsetAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minTexelOffset) minTexelOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minTexelOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTexelOffset) maxTexelOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTexelOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minTexelGatherOffset) minTexelGatherOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minTexelGatherOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxTexelGatherOffset) maxTexelGatherOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxTexelGatherOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::minInterpolationOffset) minInterpolationOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->minInterpolationOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxInterpolationOffset) maxInterpolationOffset( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxInterpolationOffset; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::subPixelInterpolationOffsetBits) subPixelInterpolationOffsetBits( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->subPixelInterpolationOffsetBits; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFramebufferWidth) maxFramebufferWidth( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFramebufferWidth; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFramebufferHeight) maxFramebufferHeight( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFramebufferHeight; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxFramebufferLayers) maxFramebufferLayers( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxFramebufferLayers; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::framebufferColorSampleCounts) framebufferColorSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->framebufferColorSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::framebufferDepthSampleCounts) framebufferDepthSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->framebufferDepthSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::framebufferStencilSampleCounts) framebufferStencilSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->framebufferStencilSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::framebufferNoAttachmentsSampleCounts) framebufferNoAttachmentsSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->framebufferNoAttachmentsSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxColorAttachments) maxColorAttachments( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxColorAttachments; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::sampledImageColorSampleCounts) sampledImageColorSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->sampledImageColorSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::sampledImageIntegerSampleCounts) sampledImageIntegerSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->sampledImageIntegerSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::sampledImageDepthSampleCounts) sampledImageDepthSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->sampledImageDepthSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::sampledImageStencilSampleCounts) sampledImageStencilSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->sampledImageStencilSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::storageImageSampleCounts) storageImageSampleCounts( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->storageImageSampleCounts; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxSampleMaskWords) maxSampleMaskWords( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxSampleMaskWords; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::timestampComputeAndGraphics) timestampComputeAndGraphics( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->timestampComputeAndGraphics; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::timestampPeriod) timestampPeriod( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->timestampPeriod; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxClipDistances) maxClipDistances( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxClipDistances; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxCullDistances) maxCullDistances( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxCullDistances; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::maxCombinedClipAndCullDistances) maxCombinedClipAndCullDistances( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->maxCombinedClipAndCullDistances; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::discreteQueuePriorities) discreteQueuePriorities( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->discreteQueuePriorities; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::pointSizeRange)& pointSizeRange( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->pointSizeRange; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceLimits::lineWidthRange)& lineWidthRange( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->lineWidthRange; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::pointSizeGranularity) pointSizeGranularity( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->pointSizeGranularity; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::lineWidthGranularity) lineWidthGranularity( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->lineWidthGranularity; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::strictLines) strictLines( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->strictLines; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::standardSampleLocations) standardSampleLocations( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->standardSampleLocations; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::optimalBufferCopyOffsetAlignment) optimalBufferCopyOffsetAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->optimalBufferCopyOffsetAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::optimalBufferCopyRowPitchAlignment) optimalBufferCopyRowPitchAlignment( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->optimalBufferCopyRowPitchAlignment; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceLimits::nonCoherentAtomSize) nonCoherentAtomSize( |
| const ::gpu::mojom::VkPhysicalDeviceLimitsPtr& input) { |
| return input->nonCoherentAtomSize; |
| } |
| |
| static bool Read(::gpu::mojom::VkPhysicalDeviceLimits::DataView input, ::gpu::mojom::VkPhysicalDeviceLimitsPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkPhysicalDeviceSparseProperties::DataView, |
| ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceSparseProperties::residencyStandard2DBlockShape) residencyStandard2DBlockShape( |
| const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { |
| return input->residencyStandard2DBlockShape; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceSparseProperties::residencyStandard2DMultisampleBlockShape) residencyStandard2DMultisampleBlockShape( |
| const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { |
| return input->residencyStandard2DMultisampleBlockShape; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceSparseProperties::residencyStandard3DBlockShape) residencyStandard3DBlockShape( |
| const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { |
| return input->residencyStandard3DBlockShape; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceSparseProperties::residencyAlignedMipSize) residencyAlignedMipSize( |
| const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { |
| return input->residencyAlignedMipSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceSparseProperties::residencyNonResidentStrict) residencyNonResidentStrict( |
| const ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr& input) { |
| return input->residencyNonResidentStrict; |
| } |
| |
| static bool Read(::gpu::mojom::VkPhysicalDeviceSparseProperties::DataView input, ::gpu::mojom::VkPhysicalDeviceSparsePropertiesPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkPhysicalDeviceProperties::DataView, |
| ::gpu::mojom::VkPhysicalDevicePropertiesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkPhysicalDevicePropertiesPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceProperties::apiVersion) apiVersion( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->apiVersion; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceProperties::driverVersion) driverVersion( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->driverVersion; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceProperties::vendorID) vendorID( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->vendorID; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceProperties::deviceID) deviceID( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->deviceID; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceProperties::deviceType) deviceType( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->deviceType; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceProperties::deviceName)& deviceName( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->deviceName; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceProperties::pipelineCacheUUID)& pipelineCacheUUID( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->pipelineCacheUUID; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceProperties::limits)& limits( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->limits; |
| } |
| |
| static const decltype(::gpu::mojom::VkPhysicalDeviceProperties::sparseProperties)& sparseProperties( |
| const ::gpu::mojom::VkPhysicalDevicePropertiesPtr& input) { |
| return input->sparseProperties; |
| } |
| |
| static bool Read(::gpu::mojom::VkPhysicalDeviceProperties::DataView input, ::gpu::mojom::VkPhysicalDevicePropertiesPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkPhysicalDeviceFeatures::DataView, |
| ::gpu::mojom::VkPhysicalDeviceFeaturesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkPhysicalDeviceFeaturesPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::robustBufferAccess) robustBufferAccess( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->robustBufferAccess; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::fullDrawIndexUint32) fullDrawIndexUint32( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->fullDrawIndexUint32; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::imageCubeArray) imageCubeArray( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->imageCubeArray; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::independentBlend) independentBlend( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->independentBlend; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::geometryShader) geometryShader( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->geometryShader; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::tessellationShader) tessellationShader( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->tessellationShader; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sampleRateShading) sampleRateShading( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sampleRateShading; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::dualSrcBlend) dualSrcBlend( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->dualSrcBlend; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::logicOp) logicOp( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->logicOp; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::multiDrawIndirect) multiDrawIndirect( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->multiDrawIndirect; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::drawIndirectFirstInstance) drawIndirectFirstInstance( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->drawIndirectFirstInstance; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::depthClamp) depthClamp( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->depthClamp; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::depthBiasClamp) depthBiasClamp( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->depthBiasClamp; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::fillModeNonSolid) fillModeNonSolid( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->fillModeNonSolid; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::depthBounds) depthBounds( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->depthBounds; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::wideLines) wideLines( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->wideLines; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::largePoints) largePoints( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->largePoints; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::alphaToOne) alphaToOne( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->alphaToOne; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::multiViewport) multiViewport( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->multiViewport; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::samplerAnisotropy) samplerAnisotropy( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->samplerAnisotropy; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::textureCompressionETC2) textureCompressionETC2( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->textureCompressionETC2; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::textureCompressionASTC_LDR) textureCompressionASTC_LDR( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->textureCompressionASTC_LDR; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::textureCompressionBC) textureCompressionBC( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->textureCompressionBC; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::occlusionQueryPrecise) occlusionQueryPrecise( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->occlusionQueryPrecise; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::pipelineStatisticsQuery) pipelineStatisticsQuery( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->pipelineStatisticsQuery; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::vertexPipelineStoresAndAtomics) vertexPipelineStoresAndAtomics( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->vertexPipelineStoresAndAtomics; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::fragmentStoresAndAtomics) fragmentStoresAndAtomics( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->fragmentStoresAndAtomics; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderTessellationAndGeometryPointSize) shaderTessellationAndGeometryPointSize( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderTessellationAndGeometryPointSize; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderImageGatherExtended) shaderImageGatherExtended( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderImageGatherExtended; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageImageExtendedFormats) shaderStorageImageExtendedFormats( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageImageExtendedFormats; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageImageMultisample) shaderStorageImageMultisample( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageImageMultisample; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageImageReadWithoutFormat) shaderStorageImageReadWithoutFormat( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageImageReadWithoutFormat; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageImageWriteWithoutFormat) shaderStorageImageWriteWithoutFormat( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageImageWriteWithoutFormat; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderUniformBufferArrayDynamicIndexing) shaderUniformBufferArrayDynamicIndexing( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderUniformBufferArrayDynamicIndexing; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderSampledImageArrayDynamicIndexing) shaderSampledImageArrayDynamicIndexing( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderSampledImageArrayDynamicIndexing; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageBufferArrayDynamicIndexing) shaderStorageBufferArrayDynamicIndexing( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageBufferArrayDynamicIndexing; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderStorageImageArrayDynamicIndexing) shaderStorageImageArrayDynamicIndexing( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderStorageImageArrayDynamicIndexing; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderClipDistance) shaderClipDistance( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderClipDistance; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderCullDistance) shaderCullDistance( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderCullDistance; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderFloat64) shaderFloat64( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderFloat64; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderInt64) shaderInt64( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderInt64; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderInt16) shaderInt16( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderInt16; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderResourceResidency) shaderResourceResidency( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderResourceResidency; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::shaderResourceMinLod) shaderResourceMinLod( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->shaderResourceMinLod; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseBinding) sparseBinding( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseBinding; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidencyBuffer) sparseResidencyBuffer( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidencyBuffer; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidencyImage2D) sparseResidencyImage2D( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidencyImage2D; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidencyImage3D) sparseResidencyImage3D( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidencyImage3D; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidency2Samples) sparseResidency2Samples( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidency2Samples; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidency4Samples) sparseResidency4Samples( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidency4Samples; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidency8Samples) sparseResidency8Samples( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidency8Samples; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidency16Samples) sparseResidency16Samples( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidency16Samples; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::sparseResidencyAliased) sparseResidencyAliased( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->sparseResidencyAliased; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::variableMultisampleRate) variableMultisampleRate( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->variableMultisampleRate; |
| } |
| |
| static decltype(::gpu::mojom::VkPhysicalDeviceFeatures::inheritedQueries) inheritedQueries( |
| const ::gpu::mojom::VkPhysicalDeviceFeaturesPtr& input) { |
| return input->inheritedQueries; |
| } |
| |
| static bool Read(::gpu::mojom::VkPhysicalDeviceFeatures::DataView input, ::gpu::mojom::VkPhysicalDeviceFeaturesPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkExtent3D::DataView, |
| ::gpu::mojom::VkExtent3DPtr> { |
| static bool IsNull(const ::gpu::mojom::VkExtent3DPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkExtent3DPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkExtent3D::width) width( |
| const ::gpu::mojom::VkExtent3DPtr& input) { |
| return input->width; |
| } |
| |
| static decltype(::gpu::mojom::VkExtent3D::height) height( |
| const ::gpu::mojom::VkExtent3DPtr& input) { |
| return input->height; |
| } |
| |
| static decltype(::gpu::mojom::VkExtent3D::depth) depth( |
| const ::gpu::mojom::VkExtent3DPtr& input) { |
| return input->depth; |
| } |
| |
| static bool Read(::gpu::mojom::VkExtent3D::DataView input, ::gpu::mojom::VkExtent3DPtr* output); |
| }; |
| |
| |
| template <> |
| struct GPU_EXPORT StructTraits<::gpu::mojom::VkQueueFamilyProperties::DataView, |
| ::gpu::mojom::VkQueueFamilyPropertiesPtr> { |
| static bool IsNull(const ::gpu::mojom::VkQueueFamilyPropertiesPtr& input) { return !input; } |
| static void SetToNull(::gpu::mojom::VkQueueFamilyPropertiesPtr* output) { output->reset(); } |
| |
| static decltype(::gpu::mojom::VkQueueFamilyProperties::queueFlags) queueFlags( |
| const ::gpu::mojom::VkQueueFamilyPropertiesPtr& input) { |
| return input->queueFlags; |
| } |
| |
| static decltype(::gpu::mojom::VkQueueFamilyProperties::queueCount) queueCount( |
| const ::gpu::mojom::VkQueueFamilyPropertiesPtr& input) { |
| return input->queueCount; |
| } |
| |
| static decltype(::gpu::mojom::VkQueueFamilyProperties::timestampValidBits) timestampValidBits( |
| const ::gpu::mojom::VkQueueFamilyPropertiesPtr& input) { |
| return input->timestampValidBits; |
| } |
| |
| static const decltype(::gpu::mojom::VkQueueFamilyProperties::minImageTransferGranularity)& minImageTransferGranularity( |
| const ::gpu::mojom::VkQueueFamilyPropertiesPtr& input) { |
| return input->minImageTransferGranularity; |
| } |
| |
| static bool Read(::gpu::mojom::VkQueueFamilyProperties::DataView input, ::gpu::mojom::VkQueueFamilyPropertiesPtr* output); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_H_ |
| |
| /* Metadata comment |
| eyJtZXRhIjogW3siZW5kIjogMTMzMywgImJlZ2luIjogMTMxMiwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0V4dGVuc2lvblByb3BlcnRpZXMi |
| fX0sIHsiZW5kIjogNTIwNSwgImJlZ2luIjogNTE5MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0V4dGVuc2lvblByb3BlcnRpZXMuZXh0ZW5z |
| aW9uTmFtZSJ9fSwgeyJlbmQiOiA1Mjk2LCAiYmVnaW4iOiA1Mjg1LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrRXh0ZW5zaW9uUHJvcGVydGll |
| cy5zcGVjVmVyc2lvbiJ9fSwgeyJlbmQiOiA2MzgxLCAiYmVnaW4iOiA2MzY0LCAiZWRnZSI6ICIl |
| L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi |
| OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs |
| YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrTGF5ZXJQcm9wZXJ0 |
| aWVzIn19LCB7ImVuZCI6IDEwMjE3LCAiYmVnaW4iOiAxMDIwOCwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0xheWVyUHJvcGVydGllcy5sYXll |
| ck5hbWUifX0sIHsiZW5kIjogMTAzMDQsICJiZWdpbiI6IDEwMjkzLCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrTGF5ZXJQcm9wZXJ0aWVzLnNw |
| ZWNWZXJzaW9uIn19LCB7ImVuZCI6IDEwNDExLCAiYmVnaW4iOiAxMDM5MCwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0xheWVyUHJvcGVydGll |
| cy5pbXBsZW1lbnRhdGlvblZlcnNpb24ifX0sIHsiZW5kIjogMTA1MDEsICJiZWdpbiI6IDEwNDkw |
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu |
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t |
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZr |
| TGF5ZXJQcm9wZXJ0aWVzLmRlc2NyaXB0aW9uIn19LCB7ImVuZCI6IDExNTYwLCAiYmVnaW4iOiAx |
| MTU1MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pv |
| bS5Wa0V4dGVudDNEIn19LCB7ImVuZCI6IDE1MTM3LCAiYmVnaW4iOiAxNTEzMiwgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0V4dGVudDNELndp |
| ZHRoIn19LCB7ImVuZCI6IDE1MjA3LCAiYmVnaW4iOiAxNTIwMSwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa0V4dGVudDNELmhlaWdodCJ9fSwg |
| eyJlbmQiOiAxNTI3NSwgImJlZ2luIjogMTUyNzAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtFeHRlbnQzRC5kZXB0aCJ9fSwgeyJlbmQiOiAx |
| NjMzMSwgImJlZ2luIjogMTYzMDksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cyJ9fSwgeyJlbmQiOiAyNDcy |
| MSwgImJlZ2luIjogMjQ3MDIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhJbWFnZURpbWVuc2lvbjFE |
| In19LCB7ImVuZCI6IDI0ODI5LCAiYmVnaW4iOiAyNDgxMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdl |
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi |
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi |
| bW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1h |
| eEltYWdlRGltZW5zaW9uMkQifX0sIHsiZW5kIjogMjQ5MzcsICJiZWdpbiI6IDI0OTE4LCAiZWRn |
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi |
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny |
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2lj |
| YWxEZXZpY2VMaW1pdHMubWF4SW1hZ2VEaW1lbnNpb24zRCJ9fSwgeyJlbmQiOiAyNTA0OSwgImJl |
| Z2luIjogMjUwMjgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJn |
| cHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhJbWFnZURpbWVuc2lvbkN1YmUifX0s |
| IHsiZW5kIjogMjUxNTcsICJiZWdpbiI6IDI1MTM4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu |
| ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj |
| aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv |
| bSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4SW1h |
| Z2VBcnJheUxheWVycyJ9fSwgeyJlbmQiOiAyNTI3MSwgImJlZ2luIjogMjUyNDksICJlZGdlIjog |
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt |
| ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg |
| Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERl |
| dmljZUxpbWl0cy5tYXhUZXhlbEJ1ZmZlckVsZW1lbnRzIn19LCB7ImVuZCI6IDI1MzgzLCAiYmVn |
| aW4iOiAyNTM2MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdw |
| dS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heFVuaWZvcm1CdWZmZXJSYW5nZSJ9fSwg |
| eyJlbmQiOiAyNTQ5NSwgImJlZ2luIjogMjU0NzQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhTdG9y |
| YWdlQnVmZmVyUmFuZ2UifX0sIHsiZW5kIjogMjU2MDUsICJiZWdpbiI6IDI1NTg1LCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VMaW1pdHMubWF4UHVzaENvbnN0YW50c1NpemUifX0sIHsiZW5kIjogMjU3MjMsICJiZWdp |
| biI6IDI1Njk5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j |
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu |
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1 |
| Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4TWVtb3J5QWxsb2NhdGlvbkNvdW50In19 |
| LCB7ImVuZCI6IDI1ODQzLCAiYmVnaW4iOiAyNTgxOCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heFNh |
| bXBsZXJBbGxvY2F0aW9uQ291bnQifX0sIHsiZW5kIjogMjU5NTcsICJiZWdpbiI6IDI1OTM1LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5 |
| c2ljYWxEZXZpY2VMaW1pdHMuYnVmZmVySW1hZ2VHcmFudWxhcml0eSJ9fSwgeyJlbmQiOiAyNjA3 |
| MSwgImJlZ2luIjogMjYwNDksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5zcGFyc2VBZGRyZXNzU3BhY2VT |
| aXplIn19LCB7ImVuZCI6IDI2MTg1LCAiYmVnaW4iOiAyNjE2MywgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRz |
| Lm1heEJvdW5kRGVzY3JpcHRvclNldHMifX0sIHsiZW5kIjogMjYzMTMsICJiZWdpbiI6IDI2Mjg0 |
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu |
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t |
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZr |
| UGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4UGVyU3RhZ2VEZXNjcmlwdG9yU2FtcGxlcnMifX0sIHsi |
| ZW5kIjogMjY0NTMsICJiZWdpbiI6IDI2NDE4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh |
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv |
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs |
| ICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4UGVyU3Rh |
| Z2VEZXNjcmlwdG9yVW5pZm9ybUJ1ZmZlcnMifX0sIHsiZW5kIjogMjY1OTMsICJiZWdpbiI6IDI2 |
| NTU4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl |
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No |
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9t |
| LlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4UGVyU3RhZ2VEZXNjcmlwdG9yU3RvcmFnZUJ1ZmZl |
| cnMifX0sIHsiZW5kIjogMjY3MzEsICJiZWdpbiI6IDI2Njk3LCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMu |
| bWF4UGVyU3RhZ2VEZXNjcmlwdG9yU2FtcGxlZEltYWdlcyJ9fSwgeyJlbmQiOiAyNjg2OSwgImJl |
| Z2luIjogMjY4MzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJn |
| cHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhQZXJTdGFnZURlc2NyaXB0b3JTdG9y |
| YWdlSW1hZ2VzIn19LCB7ImVuZCI6IDI3MDEzLCAiYmVnaW4iOiAyNjk3NiwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| TGltaXRzLm1heFBlclN0YWdlRGVzY3JpcHRvcklucHV0QXR0YWNobWVudHMifX0sIHsiZW5kIjog |
| MjcxMjMsICJiZWdpbiI6IDI3MTAzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4UGVyU3RhZ2VSZXNv |
| dXJjZXMifX0sIHsiZW5kIjogMjcyNDEsICJiZWdpbiI6IDI3MjE3LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1p |
| dHMubWF4RGVzY3JpcHRvclNldFNhbXBsZXJzIn19LCB7ImVuZCI6IDI3MzcxLCAiYmVnaW4iOiAy |
| NzM0MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pv |
| bS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heERlc2NyaXB0b3JTZXRVbmlmb3JtQnVmZmVycyJ9 |
| fSwgeyJlbmQiOiAyNzUxNSwgImJlZ2luIjogMjc0NzgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhE |
| ZXNjcmlwdG9yU2V0VW5pZm9ybUJ1ZmZlcnNEeW5hbWljIn19LCB7ImVuZCI6IDI3NjQ1LCAiYmVn |
| aW4iOiAyNzYxNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdw |
| dS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heERlc2NyaXB0b3JTZXRTdG9yYWdlQnVm |
| ZmVycyJ9fSwgeyJlbmQiOiAyNzc4OSwgImJlZ2luIjogMjc3NTIsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0 |
| cy5tYXhEZXNjcmlwdG9yU2V0U3RvcmFnZUJ1ZmZlcnNEeW5hbWljIn19LCB7ImVuZCI6IDI3OTE3 |
| LCAiYmVnaW4iOiAyNzg4OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl |
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl |
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl |
| IjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heERlc2NyaXB0b3JTZXRTYW1w |
| bGVkSW1hZ2VzIn19LCB7ImVuZCI6IDI4MDQ1LCAiYmVnaW4iOiAyODAxNiwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| TGltaXRzLm1heERlc2NyaXB0b3JTZXRTdG9yYWdlSW1hZ2VzIn19LCB7ImVuZCI6IDI4MTc5LCAi |
| YmVnaW4iOiAyODE0NywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog |
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291 |
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog |
| ImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heERlc2NyaXB0b3JTZXRJbnB1dEF0 |
| dGFjaG1lbnRzIn19LCB7ImVuZCI6IDI4Mjk3LCAiYmVnaW4iOiAyODI3MywgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| TGltaXRzLm1heFZlcnRleElucHV0QXR0cmlidXRlcyJ9fSwgeyJlbmQiOiAyODQxMSwgImJlZ2lu |
| IjogMjgzODksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUu |
| bW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhWZXJ0ZXhJbnB1dEJpbmRpbmdzIn19LCB7 |
| ImVuZCI6IDI4NTM5LCAiYmVnaW4iOiAyODUxMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy |
| YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy |
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i |
| LCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heFZlcnRl |
| eElucHV0QXR0cmlidXRlT2Zmc2V0In19LCB7ImVuZCI6IDI4NjYzLCAiYmVnaW4iOiAyODYzNiwg |
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz |
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1 |
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1Bo |
| eXNpY2FsRGV2aWNlTGltaXRzLm1heFZlcnRleElucHV0QmluZGluZ1N0cmlkZSJ9fSwgeyJlbmQi |
| OiAyODc4MywgImJlZ2luIjogMjg3NTgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhWZXJ0ZXhPdXRw |
| dXRDb21wb25lbnRzIn19LCB7ImVuZCI6IDI4OTEzLCAiYmVnaW4iOiAyODg4MywgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2 |
| aWNlTGltaXRzLm1heFRlc3NlbGxhdGlvbkdlbmVyYXRpb25MZXZlbCJ9fSwgeyJlbmQiOiAyOTAz |
| MSwgImJlZ2luIjogMjkwMDcsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhUZXNzZWxsYXRpb25QYXRj |
| aFNpemUifX0sIHsiZW5kIjogMjkxOTMsICJiZWdpbiI6IDI5MTQ3LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1p |
| dHMubWF4VGVzc2VsbGF0aW9uQ29udHJvbFBlclZlcnRleElucHV0Q29tcG9uZW50cyJ9fSwgeyJl |
| bmQiOiAyOTM1NywgImJlZ2luIjogMjkzMTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0 |
| ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t |
| aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg |
| InNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhUZXNzZWxs |
| YXRpb25Db250cm9sUGVyVmVydGV4T3V0cHV0Q29tcG9uZW50cyJ9fSwgeyJlbmQiOiAyOTUxOSwg |
| ImJlZ2luIjogMjk0NzMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhUZXNzZWxsYXRpb25Db250cm9s |
| UGVyUGF0Y2hPdXRwdXRDb21wb25lbnRzIn19LCB7ImVuZCI6IDI5Njc1LCAiYmVnaW4iOiAyOTYz |
| MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp |
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv |
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5W |
| a1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heFRlc3NlbGxhdGlvbkNvbnRyb2xUb3RhbE91dHB1dENv |
| bXBvbmVudHMifX0sIHsiZW5kIjogMjk4MjUsICJiZWdpbiI6IDI5Nzg1LCAiZWRnZSI6ICIlL2t5 |
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7 |
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n |
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VM |
| aW1pdHMubWF4VGVzc2VsbGF0aW9uRXZhbHVhdGlvbklucHV0Q29tcG9uZW50cyJ9fSwgeyJlbmQi |
| OiAyOTk3NywgImJlZ2luIjogMjk5MzYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhUZXNzZWxsYXRp |
| b25FdmFsdWF0aW9uT3V0cHV0Q29tcG9uZW50cyJ9fSwgeyJlbmQiOiAzMDEwMywgImJlZ2luIjog |
| MzAwNzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9q |
| b20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhHZW9tZXRyeVNoYWRlckludm9jYXRpb25zIn19 |
| LCB7ImVuZCI6IDMwMjI1LCAiYmVnaW4iOiAzMDE5OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heEdl |
| b21ldHJ5SW5wdXRDb21wb25lbnRzIn19LCB7ImVuZCI6IDMwMzQ5LCAiYmVnaW4iOiAzMDMyMiwg |
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz |
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1 |
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1Bo |
| eXNpY2FsRGV2aWNlTGltaXRzLm1heEdlb21ldHJ5T3V0cHV0Q29tcG9uZW50cyJ9fSwgeyJlbmQi |
| OiAzMDQ2OSwgImJlZ2luIjogMzA0NDQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhHZW9tZXRyeU91 |
| dHB1dFZlcnRpY2VzIn19LCB7ImVuZCI6IDMwNjAzLCAiYmVnaW4iOiAzMDU3MSwgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2 |
| aWNlTGltaXRzLm1heEdlb21ldHJ5VG90YWxPdXRwdXRDb21wb25lbnRzIn19LCB7ImVuZCI6IDMw |
| NzI1LCAiYmVnaW4iOiAzMDY5OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heEZyYWdtZW50SW5wdXRD |
| b21wb25lbnRzIn19LCB7ImVuZCI6IDMwODUxLCAiYmVnaW4iOiAzMDgyMywgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| TGltaXRzLm1heEZyYWdtZW50T3V0cHV0QXR0YWNobWVudHMifX0sIHsiZW5kIjogMzA5NzksICJi |
| ZWdpbiI6IDMwOTUwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi |
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy |
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi |
| Z3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4RnJhZ21lbnREdWFsU3JjQXR0YWNo |
| bWVudHMifX0sIHsiZW5kIjogMzExMTcsICJiZWdpbiI6IDMxMDgzLCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1p |
| dHMubWF4RnJhZ21lbnRDb21iaW5lZE91dHB1dFJlc291cmNlcyJ9fSwgeyJlbmQiOiAzMTIzOSwg |
| ImJlZ2luIjogMzEyMTMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhDb21wdXRlU2hhcmVkTWVtb3J5 |
| U2l6ZSJ9fSwgeyJlbmQiOiAzMTM3MCwgImJlZ2luIjogMzEzNDYsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0 |
| cy5tYXhDb21wdXRlV29ya0dyb3VwQ291bnQifX0sIHsiZW5kIjogMzE1MDAsICJiZWdpbiI6IDMx |
| NDcwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl |
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No |
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9t |
| LlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4Q29tcHV0ZVdvcmtHcm91cEludm9jYXRpb25zIn19 |
| LCB7ImVuZCI6IDMxNjI5LCAiYmVnaW4iOiAzMTYwNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heENv |
| bXB1dGVXb3JrR3JvdXBTaXplIn19LCB7ImVuZCI6IDMxNzQxLCAiYmVnaW4iOiAzMTcyMCwgImVk |
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg |
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z |
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNp |
| Y2FsRGV2aWNlTGltaXRzLnN1YlBpeGVsUHJlY2lzaW9uQml0cyJ9fSwgeyJlbmQiOiAzMTg1Mywg |
| ImJlZ2luIjogMzE4MzIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5zdWJUZXhlbFByZWNpc2lvbkJpdHMi |
| fX0sIHsiZW5kIjogMzE5NjEsICJiZWdpbiI6IDMxOTQyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWlw |
| bWFwUHJlY2lzaW9uQml0cyJ9fSwgeyJlbmQiOiAzMjA3OSwgImJlZ2luIjogMzIwNTUsICJlZGdl |
| IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2 |
| bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj |
| IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNh |
| bERldmljZUxpbWl0cy5tYXhEcmF3SW5kZXhlZEluZGV4VmFsdWUifX0sIHsiZW5kIjogMzIxODks |
| ICJiZWdpbiI6IDMyMTY5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi |
| OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz |
| b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi |
| OiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4RHJhd0luZGlyZWN0Q291bnQi |
| fX0sIHsiZW5kIjogMzIyOTAsICJiZWdpbiI6IDMyMjczLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4 |
| U2FtcGxlckxvZEJpYXMifX0sIHsiZW5kIjogMzIzOTcsICJiZWdpbiI6IDMyMzc3LCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VMaW1pdHMubWF4U2FtcGxlckFuaXNvdHJvcHkifX0sIHsiZW5kIjogMzI0OTEsICJiZWdp |
| biI6IDMyNDc5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j |
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu |
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1 |
| Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4Vmlld3BvcnRzIn19LCB7ImVuZCI6IDMy |
| NjE2LCAiYmVnaW4iOiAzMjU5NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heFZpZXdwb3J0RGltZW5z |
| aW9ucyJ9fSwgeyJlbmQiOiAzMjczNCwgImJlZ2luIjogMzI3MTUsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0 |
| cy52aWV3cG9ydEJvdW5kc1JhbmdlIn19LCB7ImVuZCI6IDMyODQ0LCAiYmVnaW4iOiAzMjgyNCwg |
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz |
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1 |
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1Bo |
| eXNpY2FsRGV2aWNlTGltaXRzLnZpZXdwb3J0U3ViUGl4ZWxCaXRzIn19LCB7ImVuZCI6IDMyOTU2 |
| LCAiYmVnaW4iOiAzMjkzNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl |
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl |
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl |
| IjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1pbk1lbW9yeU1hcEFsaWdubWVu |
| dCJ9fSwgeyJlbmQiOiAzMzA4NCwgImJlZ2luIjogMzMwNTUsICJlZGdlIjogIiUva3l0aGUvZWRn |
| ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz |
| IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog |
| Im1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5t |
| aW5UZXhlbEJ1ZmZlck9mZnNldEFsaWdubWVudCJ9fSwgeyJlbmQiOiAzMzIxNiwgImJlZ2luIjog |
| MzMxODUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9q |
| b20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50 |
| In19LCB7ImVuZCI6IDMzMzQ4LCAiYmVnaW4iOiAzMzMxNywgImVkZ2UiOiAiJS9reXRoZS9lZGdl |
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi |
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi |
| bW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1p |
| blN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQifX0sIHsiZW5kIjogMzM0NDUsICJiZWdpbiI6 |
| IDMzNDMxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1v |
| am9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWluVGV4ZWxPZmZzZXQifX0sIHsiZW5kIjogMzM1 |
| NDMsICJiZWdpbiI6IDMzNTI5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4VGV4ZWxPZmZzZXQifX0s |
| IHsiZW5kIjogMzM2NTIsICJiZWdpbiI6IDMzNjMyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu |
| ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj |
| aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv |
| bSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWluVGV4 |
| ZWxHYXRoZXJPZmZzZXQifX0sIHsiZW5kIjogMzM3NjIsICJiZWdpbiI6IDMzNzQyLCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VMaW1pdHMubWF4VGV4ZWxHYXRoZXJPZmZzZXQifX0sIHsiZW5kIjogMzM4NzMsICJiZWdp |
| biI6IDMzODUxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j |
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu |
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1 |
| Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWluSW50ZXJwb2xhdGlvbk9mZnNldCJ9fSwg |
| eyJlbmQiOiAzMzk4NCwgImJlZ2luIjogMzM5NjIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhJbnRl |
| cnBvbGF0aW9uT2Zmc2V0In19LCB7ImVuZCI6IDM0MTE2LCAiYmVnaW4iOiAzNDA4NSwgImVkZ2Ui |
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu |
| YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi |
| LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2Fs |
| RGV2aWNlTGltaXRzLnN1YlBpeGVsSW50ZXJwb2xhdGlvbk9mZnNldEJpdHMifX0sIHsiZW5kIjog |
| MzQyMjQsICJiZWdpbiI6IDM0MjA1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubWF4RnJhbWVidWZmZXJX |
| aWR0aCJ9fSwgeyJlbmQiOiAzNDMzNCwgImJlZ2luIjogMzQzMTQsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0 |
| cy5tYXhGcmFtZWJ1ZmZlckhlaWdodCJ9fSwgeyJlbmQiOiAzNDQ0NCwgImJlZ2luIjogMzQ0MjQs |
| ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l |
| cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p |
| dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQ |
| aHlzaWNhbERldmljZUxpbWl0cy5tYXhGcmFtZWJ1ZmZlckxheWVycyJ9fSwgeyJlbmQiOiAzNDU3 |
| MCwgImJlZ2luIjogMzQ1NDIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5mcmFtZWJ1ZmZlckNvbG9yU2Ft |
| cGxlQ291bnRzIn19LCB7ImVuZCI6IDM0Njk2LCAiYmVnaW4iOiAzNDY2OCwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| TGltaXRzLmZyYW1lYnVmZmVyRGVwdGhTYW1wbGVDb3VudHMifX0sIHsiZW5kIjogMzQ4MjYsICJi |
| ZWdpbiI6IDM0Nzk2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi |
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy |
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi |
| Z3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMuZnJhbWVidWZmZXJTdGVuY2lsU2FtcGxl |
| Q291bnRzIn19LCB7ImVuZCI6IDM0OTY4LCAiYmVnaW4iOiAzNDkzMiwgImVkZ2UiOiAiJS9reXRo |
| ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj |
| b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh |
| Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGlt |
| aXRzLmZyYW1lYnVmZmVyTm9BdHRhY2htZW50c1NhbXBsZUNvdW50cyJ9fSwgeyJlbmQiOiAzNTA3 |
| NiwgImJlZ2luIjogMzUwNTcsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhDb2xvckF0dGFjaG1lbnRz |
| In19LCB7ImVuZCI6IDM1MjA0LCAiYmVnaW4iOiAzNTE3NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl |
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi |
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi |
| bW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLnNh |
| bXBsZWRJbWFnZUNvbG9yU2FtcGxlQ291bnRzIn19LCB7ImVuZCI6IDM1MzM2LCAiYmVnaW4iOiAz |
| NTMwNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pv |
| bS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLnNhbXBsZWRJbWFnZUludGVnZXJTYW1wbGVDb3VudHMi |
| fX0sIHsiZW5kIjogMzU0NjQsICJiZWdpbiI6IDM1NDM1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMuc2Ft |
| cGxlZEltYWdlRGVwdGhTYW1wbGVDb3VudHMifX0sIHsiZW5kIjogMzU1OTYsICJiZWdpbiI6IDM1 |
| NTY1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl |
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No |
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9t |
| LlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMuc2FtcGxlZEltYWdlU3RlbmNpbFNhbXBsZUNvdW50cyJ9 |
| fSwgeyJlbmQiOiAzNTcxNCwgImJlZ2luIjogMzU2OTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5zdG9y |
| YWdlSW1hZ2VTYW1wbGVDb3VudHMifX0sIHsiZW5kIjogMzU4MjAsICJiZWdpbiI6IDM1ODAyLCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5 |
| c2ljYWxEZXZpY2VMaW1pdHMubWF4U2FtcGxlTWFza1dvcmRzIn19LCB7ImVuZCI6IDM1OTQwLCAi |
| YmVnaW4iOiAzNTkxMywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog |
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291 |
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog |
| ImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLnRpbWVzdGFtcENvbXB1dGVBbmRHcmFw |
| aGljcyJ9fSwgeyJlbmQiOiAzNjAzNywgImJlZ2luIjogMzYwMjIsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0 |
| cy50aW1lc3RhbXBQZXJpb2QifX0sIHsiZW5kIjogMzYxMzksICJiZWdpbiI6IDM2MTIzLCAiZWRn |
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi |
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny |
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2lj |
| YWxEZXZpY2VMaW1pdHMubWF4Q2xpcERpc3RhbmNlcyJ9fSwgeyJlbmQiOiAzNjI0MSwgImJlZ2lu |
| IjogMzYyMjUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUu |
| bW9qb20uVmtQaHlzaWNhbERldmljZUxpbWl0cy5tYXhDdWxsRGlzdGFuY2VzIn19LCB7ImVuZCI6 |
| IDM2MzczLCAiYmVnaW4iOiAzNjM0MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs |
| ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u |
| Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln |
| bmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlTGltaXRzLm1heENvbWJpbmVkQ2xp |
| cEFuZEN1bGxEaXN0YW5jZXMifX0sIHsiZW5kIjogMzY0ODksICJiZWdpbiI6IDM2NDY2LCAiZWRn |
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi |
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny |
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2lj |
| YWxEZXZpY2VMaW1pdHMuZGlzY3JldGVRdWV1ZVByaW9yaXRpZXMifX0sIHsiZW5kIjogMzY1OTcs |
| ICJiZWdpbiI6IDM2NTgzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi |
| OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz |
| b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi |
| OiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMucG9pbnRTaXplUmFuZ2UifX0sIHsi |
| ZW5kIjogMzY3MDUsICJiZWdpbiI6IDM2NjkxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh |
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv |
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs |
| ICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMubGluZVdpZHRo |
| UmFuZ2UifX0sIHsiZW5kIjogMzY4MTIsICJiZWdpbiI6IDM2NzkyLCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1p |
| dHMucG9pbnRTaXplR3JhbnVsYXJpdHkifX0sIHsiZW5kIjogMzY5MTksICJiZWdpbiI6IDM2ODk5 |
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu |
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t |
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZr |
| UGh5c2ljYWxEZXZpY2VMaW1pdHMubGluZVdpZHRoR3JhbnVsYXJpdHkifX0sIHsiZW5kIjogMzcw |
| MDcsICJiZWdpbiI6IDM2OTk2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMuc3RyaWN0TGluZXMifX0sIHsi |
| ZW5kIjogMzcxMTksICJiZWdpbiI6IDM3MDk2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh |
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv |
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs |
| ICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMuc3RhbmRhcmRT |
| YW1wbGVMb2NhdGlvbnMifX0sIHsiZW5kIjogMzcyNTMsICJiZWdpbiI6IDM3MjIxLCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VMaW1pdHMub3B0aW1hbEJ1ZmZlckNvcHlPZmZzZXRBbGlnbm1lbnQifX0sIHsiZW5kIjog |
| MzczOTEsICJiZWdpbiI6IDM3MzU3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VMaW1pdHMub3B0aW1hbEJ1ZmZlckNv |
| cHlSb3dQaXRjaEFsaWdubWVudCJ9fSwgeyJlbmQiOiAzNzQ5OSwgImJlZ2luIjogMzc0ODAsICJl |
| ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs |
| ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v |
| c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlz |
| aWNhbERldmljZUxpbWl0cy5ub25Db2hlcmVudEF0b21TaXplIn19LCB7ImVuZCI6IDM4NjE4LCAi |
| YmVnaW4iOiAzODU4NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog |
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291 |
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog |
| ImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlU3BhcnNlUHJvcGVydGllcyJ9fSwgeyJlbmQiOiA0 |
| MjkzNCwgImJlZ2luIjogNDI5MDUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZVNwYXJzZVByb3BlcnRpZXMucmVzaWRl |
| bmN5U3RhbmRhcmQyREJsb2NrU2hhcGUifX0sIHsiZW5kIjogNDMwOTAsICJiZWdpbiI6IDQzMDUw |
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu |
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t |
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZr |
| UGh5c2ljYWxEZXZpY2VTcGFyc2VQcm9wZXJ0aWVzLnJlc2lkZW5jeVN0YW5kYXJkMkRNdWx0aXNh |
| bXBsZUJsb2NrU2hhcGUifX0sIHsiZW5kIjogNDMyMjQsICJiZWdpbiI6IDQzMTk1LCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VTcGFyc2VQcm9wZXJ0aWVzLnJlc2lkZW5jeVN0YW5kYXJkM0RCbG9ja1NoYXBlIn19LCB7 |
| ImVuZCI6IDQzMzQ2LCAiYmVnaW4iOiA0MzMyMywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy |
| YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy |
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i |
| LCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlU3BhcnNlUHJvcGVydGll |
| cy5yZXNpZGVuY3lBbGlnbmVkTWlwU2l6ZSJ9fSwgeyJlbmQiOiA0MzQ3NCwgImJlZ2luIjogNDM0 |
| NDgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm |
| aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy |
| b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20u |
| VmtQaHlzaWNhbERldmljZVNwYXJzZVByb3BlcnRpZXMucmVzaWRlbmN5Tm9uUmVzaWRlbnRTdHJp |
| Y3QifX0sIHsiZW5kIjogNDQ2MjEsICJiZWdpbiI6IDQ0NTk1LCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0 |
| aWVzIn19LCB7ImVuZCI6IDQ4ODg0LCAiYmVnaW4iOiA0ODg3NCwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlUHJvcGVy |
| dGllcy5hcGlWZXJzaW9uIn19LCB7ImVuZCI6IDQ4OTg0LCAiYmVnaW4iOiA0ODk3MSwgImVkZ2Ui |
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu |
| YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi |
| LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2Fs |
| RGV2aWNlUHJvcGVydGllcy5kcml2ZXJWZXJzaW9uIn19LCB7ImVuZCI6IDQ5MDc0LCAiYmVnaW4i |
| OiA0OTA2NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5t |
| b2pvbS5Wa1BoeXNpY2FsRGV2aWNlUHJvcGVydGllcy52ZW5kb3JJRCJ9fSwgeyJlbmQiOiA0OTE2 |
| NCwgImJlZ2luIjogNDkxNTYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZVByb3BlcnRpZXMuZGV2aWNlSUQifX0sIHsi |
| ZW5kIjogNDkyNzIsICJiZWdpbiI6IDQ5MjYyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh |
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv |
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs |
| ICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLmRldmlj |
| ZVR5cGUifX0sIHsiZW5kIjogNDkzNjksICJiZWdpbiI6IDQ5MzU5LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VQcm9w |
| ZXJ0aWVzLmRldmljZU5hbWUifX0sIHsiZW5kIjogNDk0ODksICJiZWdpbiI6IDQ5NDcyLCAiZWRn |
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi |
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny |
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2lj |
| YWxEZXZpY2VQcm9wZXJ0aWVzLnBpcGVsaW5lQ2FjaGVVVUlEIn19LCB7ImVuZCI6IDQ5NTkxLCAi |
| YmVnaW4iOiA0OTU4NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog |
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291 |
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog |
| ImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlUHJvcGVydGllcy5saW1pdHMifX0sIHsiZW5kIjog |
| NDk3MjMsICJiZWdpbiI6IDQ5NzA3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnNwYXJzZVByb3Bl |
| cnRpZXMifX0sIHsiZW5kIjogNTA4NDIsICJiZWdpbiI6IDUwODE4LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0 |
| dXJlcyJ9fSwgeyJlbmQiOiA1NjU4OSwgImJlZ2luIjogNTY1NzEsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1 |
| cmVzLnJvYnVzdEJ1ZmZlckFjY2VzcyJ9fSwgeyJlbmQiOiA1NjY5NSwgImJlZ2luIjogNTY2NzYs |
| ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l |
| cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p |
| dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQ |
| aHlzaWNhbERldmljZUZlYXR1cmVzLmZ1bGxEcmF3SW5kZXhVaW50MzIifX0sIHsiZW5kIjogNTY3 |
| OTEsICJiZWdpbiI6IDU2Nzc3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5pbWFnZUN1YmVBcnJheSJ9 |
| fSwgeyJlbmQiOiA1Njg5MSwgImJlZ2luIjogNTY4NzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLmlu |
| ZGVwZW5kZW50QmxlbmQifX0sIHsiZW5kIjogNTY5ODcsICJiZWdpbiI6IDU2OTczLCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxE |
| ZXZpY2VGZWF0dXJlcy5nZW9tZXRyeVNoYWRlciJ9fSwgeyJlbmQiOiA1NzA5MSwgImJlZ2luIjog |
| NTcwNzMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9q |
| b20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnRlc3NlbGxhdGlvblNoYWRlciJ9fSwgeyJlbmQi |
| OiA1NzE5MywgImJlZ2luIjogNTcxNzYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNhbXBsZVJhdGVT |
| aGFkaW5nIn19LCB7ImVuZCI6IDU3Mjg1LCAiYmVnaW4iOiA1NzI3MywgImVkZ2UiOiAiJS9reXRo |
| ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj |
| b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh |
| Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlRmVh |
| dHVyZXMuZHVhbFNyY0JsZW5kIn19LCB7ImVuZCI6IDU3MzY3LCAiYmVnaW4iOiA1NzM2MCwgImVk |
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg |
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z |
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNp |
| Y2FsRGV2aWNlRmVhdHVyZXMubG9naWNPcCJ9fSwgeyJlbmQiOiA1NzQ2OSwgImJlZ2luIjogNTc0 |
| NTIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm |
| aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy |
| b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20u |
| VmtQaHlzaWNhbERldmljZUZlYXR1cmVzLm11bHRpRHJhd0luZGlyZWN0In19LCB7ImVuZCI6IDU3 |
| NTg3LCAiYmVnaW4iOiA1NzU2MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuZHJhd0luZGlyZWN0Rmly |
| c3RJbnN0YW5jZSJ9fSwgeyJlbmQiOiA1NzY3NSwgImJlZ2luIjogNTc2NjUsICJlZGdlIjogIiUv |
| a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6 |
| IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh |
| bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmlj |
| ZUZlYXR1cmVzLmRlcHRoQ2xhbXAifX0sIHsiZW5kIjogNTc3NzEsICJiZWdpbiI6IDU3NzU3LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5 |
| c2ljYWxEZXZpY2VGZWF0dXJlcy5kZXB0aEJpYXNDbGFtcCJ9fSwgeyJlbmQiOiA1Nzg3MSwgImJl |
| Z2luIjogNTc4NTUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJn |
| cHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLmZpbGxNb2RlTm9uU29saWQifX0sIHsi |
| ZW5kIjogNTc5NjEsICJiZWdpbiI6IDU3OTUwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh |
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv |
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs |
| ICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5kZXB0aEJv |
| dW5kcyJ9fSwgeyJlbmQiOiA1ODA0NywgImJlZ2luIjogNTgwMzgsICJlZGdlIjogIiUva3l0aGUv |
| ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y |
| cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl |
| IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1 |
| cmVzLndpZGVMaW5lcyJ9fSwgeyJlbmQiOiA1ODEzNywgImJlZ2luIjogNTgxMjYsICJlZGdlIjog |
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt |
| ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg |
| Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERl |
| dmljZUZlYXR1cmVzLmxhcmdlUG9pbnRzIn19LCB7ImVuZCI6IDU4MjI1LCAiYmVnaW4iOiA1ODIx |
| NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp |
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv |
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5W |
| a1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuYWxwaGFUb09uZSJ9fSwgeyJlbmQiOiA1ODMxOSwgImJl |
| Z2luIjogNTgzMDYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJn |
| cHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLm11bHRpVmlld3BvcnQifX0sIHsiZW5k |
| IjogNTg0MjEsICJiZWdpbiI6IDU4NDA0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zYW1wbGVyQW5p |
| c290cm9weSJ9fSwgeyJlbmQiOiA1ODUzMywgImJlZ2luIjogNTg1MTEsICJlZGdlIjogIiUva3l0 |
| aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsi |
| Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1 |
| YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZl |
| YXR1cmVzLnRleHR1cmVDb21wcmVzc2lvbkVUQzIifX0sIHsiZW5kIjogNTg2NTMsICJiZWdpbiI6 |
| IDU4NjI3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1v |
| am9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy50ZXh0dXJlQ29tcHJlc3Npb25BU1RDX0xEUiJ9 |
| fSwgeyJlbmQiOiA1ODc2MSwgImJlZ2luIjogNTg3NDEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnRl |
| eHR1cmVDb21wcmVzc2lvbkJDIn19LCB7ImVuZCI6IDU4ODcxLCAiYmVnaW4iOiA1ODg1MCwgImVk |
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg |
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z |
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNp |
| Y2FsRGV2aWNlRmVhdHVyZXMub2NjbHVzaW9uUXVlcnlQcmVjaXNlIn19LCB7ImVuZCI6IDU4OTg1 |
| LCAiYmVnaW4iOiA1ODk2MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl |
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl |
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl |
| IjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMucGlwZWxpbmVTdGF0aXN0aWNz |
| UXVlcnkifX0sIHsiZW5kIjogNTkxMTMsICJiZWdpbiI6IDU5MDgzLCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0 |
| dXJlcy52ZXJ0ZXhQaXBlbGluZVN0b3Jlc0FuZEF0b21pY3MifX0sIHsiZW5kIjogNTkyMjksICJi |
| ZWdpbiI6IDU5MjA1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi |
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy |
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi |
| Z3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5mcmFnbWVudFN0b3Jlc0FuZEF0b21p |
| Y3MifX0sIHsiZW5kIjogNTkzNzMsICJiZWdpbiI6IDU5MzM1LCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJl |
| cy5zaGFkZXJUZXNzZWxsYXRpb25BbmRHZW9tZXRyeVBvaW50U2l6ZSJ9fSwgeyJlbmQiOiA1OTQ5 |
| MSwgImJlZ2luIjogNTk0NjYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNoYWRlckltYWdlR2F0aGVy |
| RXh0ZW5kZWQifX0sIHsiZW5kIjogNTk2MjUsICJiZWdpbiI6IDU5NTkyLCAiZWRnZSI6ICIlL2t5 |
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7 |
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n |
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VG |
| ZWF0dXJlcy5zaGFkZXJTdG9yYWdlSW1hZ2VFeHRlbmRlZEZvcm1hdHMifX0sIHsiZW5kIjogNTk3 |
| NTEsICJiZWdpbiI6IDU5NzIyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zaGFkZXJTdG9yYWdlSW1h |
| Z2VNdWx0aXNhbXBsZSJ9fSwgeyJlbmQiOiA1OTg4OSwgImJlZ2luIjogNTk4NTQsICJlZGdlIjog |
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt |
| ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg |
| Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERl |
| dmljZUZlYXR1cmVzLnNoYWRlclN0b3JhZ2VJbWFnZVJlYWRXaXRob3V0Rm9ybWF0In19LCB7ImVu |
| ZCI6IDYwMDI5LCAiYmVnaW4iOiA1OTk5MywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl |
| cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p |
| dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi |
| c2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuc2hhZGVyU3Rv |
| cmFnZUltYWdlV3JpdGVXaXRob3V0Rm9ybWF0In19LCB7ImVuZCI6IDYwMTc1LCAiYmVnaW4iOiA2 |
| MDEzNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pv |
| bS5Wa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuc2hhZGVyVW5pZm9ybUJ1ZmZlckFycmF5RHluYW1p |
| Y0luZGV4aW5nIn19LCB7ImVuZCI6IDYwMzE5LCAiYmVnaW4iOiA2MDI4MSwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| RmVhdHVyZXMuc2hhZGVyU2FtcGxlZEltYWdlQXJyYXlEeW5hbWljSW5kZXhpbmcifX0sIHsiZW5k |
| IjogNjA0NjUsICJiZWdpbiI6IDYwNDI2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zaGFkZXJTdG9y |
| YWdlQnVmZmVyQXJyYXlEeW5hbWljSW5kZXhpbmcifX0sIHsiZW5kIjogNjA2MDksICJiZWdpbiI6 |
| IDYwNTcxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1v |
| am9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zaGFkZXJTdG9yYWdlSW1hZ2VBcnJheUR5bmFt |
| aWNJbmRleGluZyJ9fSwgeyJlbmQiOiA2MDcxMywgImJlZ2luIjogNjA2OTUsICJlZGdlIjogIiUv |
| a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6 |
| IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh |
| bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmlj |
| ZUZlYXR1cmVzLnNoYWRlckNsaXBEaXN0YW5jZSJ9fSwgeyJlbmQiOiA2MDgxNywgImJlZ2luIjog |
| NjA3OTksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9q |
| b20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNoYWRlckN1bGxEaXN0YW5jZSJ9fSwgeyJlbmQi |
| OiA2MDkxMSwgImJlZ2luIjogNjA4OTgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNoYWRlckZsb2F0 |
| NjQifX0sIHsiZW5kIjogNjEwMDEsICJiZWdpbiI6IDYwOTkwLCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJl |
| cy5zaGFkZXJJbnQ2NCJ9fSwgeyJlbmQiOiA2MTA5MSwgImJlZ2luIjogNjEwODAsICJlZGdlIjog |
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt |
| ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg |
| Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERl |
| dmljZUZlYXR1cmVzLnNoYWRlckludDE2In19LCB7ImVuZCI6IDYxMjA1LCAiYmVnaW4iOiA2MTE4 |
| MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp |
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv |
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5W |
| a1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuc2hhZGVyUmVzb3VyY2VSZXNpZGVuY3kifX0sIHsiZW5k |
| IjogNjEzMTMsICJiZWdpbiI6IDYxMjkzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zaGFkZXJSZXNv |
| dXJjZU1pbkxvZCJ9fSwgeyJlbmQiOiA2MTQwNywgImJlZ2luIjogNjEzOTQsICJlZGdlIjogIiUv |
| a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6 |
| IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh |
| bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmlj |
| ZUZlYXR1cmVzLnNwYXJzZUJpbmRpbmcifX0sIHsiZW5kIjogNjE1MTcsICJiZWdpbiI6IDYxNDk2 |
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu |
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t |
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZr |
| UGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zcGFyc2VSZXNpZGVuY3lCdWZmZXIifX0sIHsiZW5kIjog |
| NjE2MjksICJiZWdpbiI6IDYxNjA3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5zcGFyc2VSZXNpZGVu |
| Y3lJbWFnZTJEIn19LCB7ImVuZCI6IDYxNzQxLCAiYmVnaW4iOiA2MTcxOSwgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNl |
| RmVhdHVyZXMuc3BhcnNlUmVzaWRlbmN5SW1hZ2UzRCJ9fSwgeyJlbmQiOiA2MTg1NSwgImJlZ2lu |
| IjogNjE4MzIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUu |
| bW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNwYXJzZVJlc2lkZW5jeTJTYW1wbGVzIn19 |
| LCB7ImVuZCI6IDYxOTY5LCAiYmVnaW4iOiA2MTk0NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMuc3Bh |
| cnNlUmVzaWRlbmN5NFNhbXBsZXMifX0sIHsiZW5kIjogNjIwODMsICJiZWdpbiI6IDYyMDYwLCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUGh5 |
| c2ljYWxEZXZpY2VGZWF0dXJlcy5zcGFyc2VSZXNpZGVuY3k4U2FtcGxlcyJ9fSwgeyJlbmQiOiA2 |
| MjE5OSwgImJlZ2luIjogNjIxNzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLnNwYXJzZVJlc2lkZW5j |
| eTE2U2FtcGxlcyJ9fSwgeyJlbmQiOiA2MjMxMSwgImJlZ2luIjogNjIyODksICJlZGdlIjogIiUv |
| a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6 |
| IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh |
| bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmlj |
| ZUZlYXR1cmVzLnNwYXJzZVJlc2lkZW5jeUFsaWFzZWQifX0sIHsiZW5kIjogNjI0MjUsICJiZWdp |
| biI6IDYyNDAyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j |
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu |
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1 |
| Lm1vam9tLlZrUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy52YXJpYWJsZU11bHRpc2FtcGxlUmF0ZSJ9 |
| fSwgeyJlbmQiOiA2MjUyNSwgImJlZ2luIjogNjI1MDksICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uVmtQaHlzaWNhbERldmljZUZlYXR1cmVzLmlu |
| aGVyaXRlZFF1ZXJpZXMifX0sIHsiZW5kIjogNjM2MzUsICJiZWdpbiI6IDYzNjEyLCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUXVldWVGYW1p |
| bHlQcm9wZXJ0aWVzIn19LCB7ImVuZCI6IDY3NjI0LCAiYmVnaW4iOiA2NzYxNCwgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1F1ZXVlRmFtaWx5 |
| UHJvcGVydGllcy5xdWV1ZUZsYWdzIn19LCB7ImVuZCI6IDY3NzE1LCAiYmVnaW4iOiA2NzcwNSwg |
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz |
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1 |
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5Wa1F1 |
| ZXVlRmFtaWx5UHJvcGVydGllcy5xdWV1ZUNvdW50In19LCB7ImVuZCI6IDY3ODIyLCAiYmVnaW4i |
| OiA2NzgwNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImdwdS5t |
| b2pvbS5Wa1F1ZXVlRmFtaWx5UHJvcGVydGllcy50aW1lc3RhbXBWYWxpZEJpdHMifX0sIHsiZW5k |
| IjogNjc5NTEsICJiZWdpbiI6IDY3OTI0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZ3B1Lm1vam9tLlZrUXVldWVGYW1pbHlQcm9wZXJ0aWVzLm1pbkltYWdlVHJh |
| bnNmZXJHcmFudWxhcml0eSJ9fV0sICJ0eXBlIjogImt5dGhlMCJ9 |
| */ |