| // services/device/public/mojom/hid.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 SERVICES_DEVICE_PUBLIC_MOJOM_HID_MOJOM_H_ |
| #define SERVICES_DEVICE_PUBLIC_MOJOM_HID_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 "services/device/public/mojom/hid.mojom-shared.h" |
| #include "services/device/public/mojom/hid.mojom-forward.h" |
| #include <string> |
| #include <vector> |
| |
| #include "mojo/public/cpp/bindings/lib/control_message_handler.h" |
| #include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h" |
| |
| |
| #include "base/token.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace device { |
| namespace mojom { |
| |
| class HidManagerClientProxy; |
| |
| template <typename ImplRefTraits> |
| class HidManagerClientStub; |
| |
| class HidManagerClientRequestValidator; |
| |
| |
| // @generated_from: device.mojom.HidManagerClient |
| class HidManagerClient |
| : public HidManagerClientInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr base::Token Uuid_{ 1989324435969231918ULL, |
| 11342538021778458647ULL }; |
| static constexpr uint32_t Version_ = 2; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = HidManagerClientInterfaceBase; |
| using Proxy_ = HidManagerClientProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = HidManagerClientStub<ImplRefTraits>; |
| |
| using RequestValidator_ = HidManagerClientRequestValidator; |
| using ResponseValidator_ = mojo::PassThroughFilter; |
| enum MethodMinVersions : uint32_t { |
| kDeviceAddedMinVersion = 0, |
| kDeviceRemovedMinVersion = 0, |
| kDeviceChangedMinVersion = 2, |
| }; |
| |
| // crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK |
| // with not having this data in traces there. |
| #if !BUILDFLAG(IS_FUCHSIA) |
| struct DeviceAdded_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct DeviceRemoved_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct DeviceChanged_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~HidManagerClient() = default; |
| |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceAdded |
| virtual void DeviceAdded(HidDeviceInfoPtr device_info) = 0; |
| |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceRemoved |
| virtual void DeviceRemoved(HidDeviceInfoPtr device_info) = 0; |
| |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceChanged |
| virtual void DeviceChanged(HidDeviceInfoPtr device_info) = 0; |
| }; |
| |
| class HidManagerProxy; |
| |
| template <typename ImplRefTraits> |
| class HidManagerStub; |
| |
| class HidManagerRequestValidator; |
| class HidManagerResponseValidator; |
| |
| |
| // @generated_from: device.mojom.HidManager |
| class HidManager |
| : public HidManagerInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr base::Token Uuid_{ 11426502403248704253ULL, |
| 11368651741212670902ULL }; |
| static constexpr uint32_t Version_ = 2; |
| static constexpr bool PassesAssociatedKinds_ = true; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = HidManagerInterfaceBase; |
| using Proxy_ = HidManagerProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = HidManagerStub<ImplRefTraits>; |
| |
| using RequestValidator_ = HidManagerRequestValidator; |
| using ResponseValidator_ = HidManagerResponseValidator; |
| enum MethodMinVersions : uint32_t { |
| kGetDevicesAndSetClientMinVersion = 0, |
| kGetDevicesMinVersion = 0, |
| kConnectMinVersion = 0, |
| kAddReceiverMinVersion = 0, |
| }; |
| |
| // crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK |
| // with not having this data in traces there. |
| #if !BUILDFLAG(IS_FUCHSIA) |
| struct GetDevicesAndSetClient_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct GetDevices_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct Connect_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct AddReceiver_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~HidManager() = default; |
| |
| |
| using GetDevicesAndSetClientCallback = base::OnceCallback<void(std::vector<HidDeviceInfoPtr>)>; |
| |
| // @generated_from: device.mojom.HidManager.GetDevicesAndSetClient |
| virtual void GetDevicesAndSetClient(::mojo::PendingAssociatedRemote<HidManagerClient> client, GetDevicesAndSetClientCallback callback) = 0; |
| |
| |
| using GetDevicesCallback = base::OnceCallback<void(std::vector<HidDeviceInfoPtr>)>; |
| |
| // @generated_from: device.mojom.HidManager.GetDevices |
| virtual void GetDevices(GetDevicesCallback callback) = 0; |
| |
| |
| using ConnectCallback = base::OnceCallback<void(::mojo::PendingRemote<HidConnection>)>; |
| |
| // @generated_from: device.mojom.HidManager.Connect |
| virtual void Connect(const std::string& device_guid, ::mojo::PendingRemote<HidConnectionClient> connection_client, ::mojo::PendingRemote<HidConnectionWatcher> watcher, bool allow_protected_reports, bool allow_fido_reports, ConnectCallback callback) = 0; |
| |
| |
| // @generated_from: device.mojom.HidManager.AddReceiver |
| virtual void AddReceiver(::mojo::PendingReceiver<HidManager> receiver) = 0; |
| }; |
| |
| class HidConnectionProxy; |
| |
| template <typename ImplRefTraits> |
| class HidConnectionStub; |
| |
| class HidConnectionRequestValidator; |
| class HidConnectionResponseValidator; |
| |
| |
| // @generated_from: device.mojom.HidConnection |
| class HidConnection |
| : public HidConnectionInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr base::Token Uuid_{ 1989324435969231918ULL, |
| 11342538021778458647ULL }; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = HidConnectionInterfaceBase; |
| using Proxy_ = HidConnectionProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = HidConnectionStub<ImplRefTraits>; |
| |
| using RequestValidator_ = HidConnectionRequestValidator; |
| using ResponseValidator_ = HidConnectionResponseValidator; |
| enum MethodMinVersions : uint32_t { |
| kReadMinVersion = 0, |
| kWriteMinVersion = 0, |
| kGetFeatureReportMinVersion = 0, |
| kSendFeatureReportMinVersion = 0, |
| }; |
| |
| // crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK |
| // with not having this data in traces there. |
| #if !BUILDFLAG(IS_FUCHSIA) |
| struct Read_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct Write_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct GetFeatureReport_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| struct SendFeatureReport_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~HidConnection() = default; |
| |
| |
| using ReadCallback = base::OnceCallback<void(bool, uint8_t, const absl::optional<std::vector<uint8_t>>&)>; |
| |
| // @generated_from: device.mojom.HidConnection.Read |
| virtual void Read(ReadCallback callback) = 0; |
| |
| |
| using WriteCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.HidConnection.Write |
| virtual void Write(uint8_t report_id, const std::vector<uint8_t>& buffer, WriteCallback callback) = 0; |
| |
| |
| using GetFeatureReportCallback = base::OnceCallback<void(bool, const absl::optional<std::vector<uint8_t>>&)>; |
| |
| // @generated_from: device.mojom.HidConnection.GetFeatureReport |
| virtual void GetFeatureReport(uint8_t report_id, GetFeatureReportCallback callback) = 0; |
| |
| |
| using SendFeatureReportCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.HidConnection.SendFeatureReport |
| virtual void SendFeatureReport(uint8_t report_id, const std::vector<uint8_t>& buffer, SendFeatureReportCallback callback) = 0; |
| }; |
| |
| class HidConnectionClientProxy; |
| |
| template <typename ImplRefTraits> |
| class HidConnectionClientStub; |
| |
| class HidConnectionClientRequestValidator; |
| |
| |
| // @generated_from: device.mojom.HidConnectionClient |
| class HidConnectionClient |
| : public HidConnectionClientInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr base::Token Uuid_{ 1295147654301829780ULL, |
| 11831959762393443171ULL }; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = HidConnectionClientInterfaceBase; |
| using Proxy_ = HidConnectionClientProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = HidConnectionClientStub<ImplRefTraits>; |
| |
| using RequestValidator_ = HidConnectionClientRequestValidator; |
| using ResponseValidator_ = mojo::PassThroughFilter; |
| enum MethodMinVersions : uint32_t { |
| kOnInputReportMinVersion = 0, |
| }; |
| |
| // crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK |
| // with not having this data in traces there. |
| #if !BUILDFLAG(IS_FUCHSIA) |
| struct OnInputReport_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~HidConnectionClient() = default; |
| |
| |
| // @generated_from: device.mojom.HidConnectionClient.OnInputReport |
| virtual void OnInputReport(uint8_t report_id, const std::vector<uint8_t>& buffer) = 0; |
| }; |
| |
| class HidConnectionWatcherProxy; |
| |
| template <typename ImplRefTraits> |
| class HidConnectionWatcherStub; |
| |
| class HidConnectionWatcherRequestValidator; |
| |
| |
| // @generated_from: device.mojom.HidConnectionWatcher |
| class HidConnectionWatcher |
| : public HidConnectionWatcherInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr base::Token Uuid_{ 10011626994008345335ULL, |
| 11258823309103065552ULL }; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = HidConnectionWatcherInterfaceBase; |
| using Proxy_ = HidConnectionWatcherProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = HidConnectionWatcherStub<ImplRefTraits>; |
| |
| using RequestValidator_ = HidConnectionWatcherRequestValidator; |
| using ResponseValidator_ = mojo::PassThroughFilter; |
| enum MethodMinVersions : uint32_t { |
| }; |
| |
| // crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK |
| // with not having this data in traces there. |
| #if !BUILDFLAG(IS_FUCHSIA) |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~HidConnectionWatcher() = default; |
| }; |
| |
| |
| |
| // @generated_from: device.mojom.HidManagerClient |
| class HidManagerClientProxy |
| : public HidManagerClient { |
| public: |
| using InterfaceType = HidManagerClient; |
| |
| explicit HidManagerClientProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceAdded |
| void DeviceAdded(HidDeviceInfoPtr device_info) final; |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceRemoved |
| void DeviceRemoved(HidDeviceInfoPtr device_info) final; |
| |
| // @generated_from: device.mojom.HidManagerClient.DeviceChanged |
| void DeviceChanged(HidDeviceInfoPtr device_info) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| |
| |
| // @generated_from: device.mojom.HidManager |
| class HidManagerProxy |
| : public HidManager { |
| public: |
| using InterfaceType = HidManager; |
| |
| explicit HidManagerProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| // @generated_from: device.mojom.HidManager.GetDevicesAndSetClient |
| void GetDevicesAndSetClient(::mojo::PendingAssociatedRemote<HidManagerClient> client, GetDevicesAndSetClientCallback callback) final; |
| |
| // @generated_from: device.mojom.HidManager.GetDevices |
| void GetDevices(GetDevicesCallback callback) final; |
| |
| // @generated_from: device.mojom.HidManager.Connect |
| void Connect(const std::string& device_guid, ::mojo::PendingRemote<HidConnectionClient> connection_client, ::mojo::PendingRemote<HidConnectionWatcher> watcher, bool allow_protected_reports, bool allow_fido_reports, ConnectCallback callback) final; |
| |
| // @generated_from: device.mojom.HidManager.AddReceiver |
| void AddReceiver(::mojo::PendingReceiver<HidManager> receiver) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| |
| |
| // @generated_from: device.mojom.HidConnection |
| class HidConnectionProxy |
| : public HidConnection { |
| public: |
| using InterfaceType = HidConnection; |
| |
| explicit HidConnectionProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| // @generated_from: device.mojom.HidConnection.Read |
| void Read(ReadCallback callback) final; |
| |
| // @generated_from: device.mojom.HidConnection.Write |
| void Write(uint8_t report_id, const std::vector<uint8_t>& buffer, WriteCallback callback) final; |
| |
| // @generated_from: device.mojom.HidConnection.GetFeatureReport |
| void GetFeatureReport(uint8_t report_id, GetFeatureReportCallback callback) final; |
| |
| // @generated_from: device.mojom.HidConnection.SendFeatureReport |
| void SendFeatureReport(uint8_t report_id, const std::vector<uint8_t>& buffer, SendFeatureReportCallback callback) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| |
| |
| // @generated_from: device.mojom.HidConnectionClient |
| class HidConnectionClientProxy |
| : public HidConnectionClient { |
| public: |
| using InterfaceType = HidConnectionClient; |
| |
| explicit HidConnectionClientProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| // @generated_from: device.mojom.HidConnectionClient.OnInputReport |
| void OnInputReport(uint8_t report_id, const std::vector<uint8_t>& buffer) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| |
| |
| // @generated_from: device.mojom.HidConnectionWatcher |
| class HidConnectionWatcherProxy |
| : public HidConnectionWatcher { |
| public: |
| using InterfaceType = HidConnectionWatcher; |
| |
| explicit HidConnectionWatcherProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| class HidManagerClientStubDispatch { |
| public: |
| static bool Accept(HidManagerClient* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| HidManagerClient* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<HidManagerClient>> |
| class HidManagerClientStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| HidManagerClientStub() = default; |
| ~HidManagerClientStub() override = default; |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidManagerClientStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidManagerClientStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class HidManagerStubDispatch { |
| public: |
| static bool Accept(HidManager* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| HidManager* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<HidManager>> |
| class HidManagerStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| HidManagerStub() = default; |
| ~HidManagerStub() override = default; |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidManagerStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidManagerStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class HidConnectionStubDispatch { |
| public: |
| static bool Accept(HidConnection* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| HidConnection* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<HidConnection>> |
| class HidConnectionStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| HidConnectionStub() = default; |
| ~HidConnectionStub() override = default; |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class HidConnectionClientStubDispatch { |
| public: |
| static bool Accept(HidConnectionClient* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| HidConnectionClient* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<HidConnectionClient>> |
| class HidConnectionClientStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| HidConnectionClientStub() = default; |
| ~HidConnectionClientStub() override = default; |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionClientStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionClientStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class HidConnectionWatcherStubDispatch { |
| public: |
| static bool Accept(HidConnectionWatcher* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| HidConnectionWatcher* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<HidConnectionWatcher>> |
| class HidConnectionWatcherStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| HidConnectionWatcherStub() = default; |
| ~HidConnectionWatcherStub() override = default; |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionWatcherStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return HidConnectionWatcherStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class HidManagerClientRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidManagerRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidConnectionRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidConnectionClientRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidConnectionWatcherRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidManagerResponseValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class HidConnectionResponseValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.HidUsageAndPage |
| class HidUsageAndPage { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<HidUsageAndPage, T>::value>; |
| using DataView = HidUsageAndPageDataView; |
| using Data_ = internal::HidUsageAndPage_Data; |
| |
| template <typename... Args> |
| static HidUsageAndPagePtr New(Args&&... args) { |
| return HidUsageAndPagePtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static HidUsageAndPagePtr From(const U& u) { |
| return mojo::TypeConverter<HidUsageAndPagePtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, HidUsageAndPage>::Convert(*this); |
| } |
| |
| |
| HidUsageAndPage(); |
| |
| HidUsageAndPage( |
| uint16_t usage, |
| uint16_t usage_page); |
| |
| |
| ~HidUsageAndPage(); |
| |
| // 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 = HidUsageAndPagePtr> |
| HidUsageAndPagePtr 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, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| size_t Hash(size_t seed) const; |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| HidUsageAndPage::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| HidUsageAndPage::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::HidUsageAndPage_UnserializedMessageContext< |
| UserType, HidUsageAndPage::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<HidUsageAndPage::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return HidUsageAndPage::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::HidUsageAndPage_UnserializedMessageContext< |
| UserType, HidUsageAndPage::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<HidUsageAndPage::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.HidUsageAndPage.usage |
| uint16_t usage; |
| |
| // @generated_from: device.mojom.HidUsageAndPage.usage_page |
| uint16_t usage_page; |
| |
| // 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, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.HidReportItem |
| class HidReportItem { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<HidReportItem, T>::value>; |
| using DataView = HidReportItemDataView; |
| using Data_ = internal::HidReportItem_Data; |
| |
| template <typename... Args> |
| static HidReportItemPtr New(Args&&... args) { |
| return HidReportItemPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static HidReportItemPtr From(const U& u) { |
| return mojo::TypeConverter<HidReportItemPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, HidReportItem>::Convert(*this); |
| } |
| |
| |
| HidReportItem(); |
| |
| HidReportItem( |
| bool is_range, |
| bool is_constant, |
| bool is_variable, |
| bool is_relative, |
| bool wrap, |
| bool is_non_linear, |
| bool no_preferred_state, |
| bool has_null_position, |
| bool is_volatile, |
| bool is_buffered_bytes, |
| std::vector<HidUsageAndPagePtr> usages, |
| HidUsageAndPagePtr usage_minimum, |
| HidUsageAndPagePtr usage_maximum, |
| uint32_t designator_minimum, |
| uint32_t designator_maximum, |
| uint32_t string_minimum, |
| uint32_t string_maximum, |
| int32_t logical_minimum, |
| int32_t logical_maximum, |
| int32_t physical_minimum, |
| int32_t physical_maximum, |
| uint32_t unit_exponent, |
| uint32_t unit, |
| uint32_t report_size, |
| uint32_t report_count); |
| |
| HidReportItem(const HidReportItem&) = delete; |
| HidReportItem& operator=(const HidReportItem&) = delete; |
| |
| ~HidReportItem(); |
| |
| // 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 = HidReportItemPtr> |
| HidReportItemPtr 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, HidReportItem::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, HidReportItem::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< |
| HidReportItem::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| HidReportItem::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::HidReportItem_UnserializedMessageContext< |
| UserType, HidReportItem::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<HidReportItem::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return HidReportItem::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::HidReportItem_UnserializedMessageContext< |
| UserType, HidReportItem::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<HidReportItem::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.HidReportItem.is_range |
| bool is_range; |
| |
| // @generated_from: device.mojom.HidReportItem.is_constant |
| bool is_constant; |
| |
| // @generated_from: device.mojom.HidReportItem.is_variable |
| bool is_variable; |
| |
| // @generated_from: device.mojom.HidReportItem.is_relative |
| bool is_relative; |
| |
| // @generated_from: device.mojom.HidReportItem.wrap |
| bool wrap; |
| |
| // @generated_from: device.mojom.HidReportItem.is_non_linear |
| bool is_non_linear; |
| |
| // @generated_from: device.mojom.HidReportItem.no_preferred_state |
| bool no_preferred_state; |
| |
| // @generated_from: device.mojom.HidReportItem.has_null_position |
| bool has_null_position; |
| |
| // @generated_from: device.mojom.HidReportItem.is_volatile |
| bool is_volatile; |
| |
| // @generated_from: device.mojom.HidReportItem.is_buffered_bytes |
| bool is_buffered_bytes; |
| |
| // @generated_from: device.mojom.HidReportItem.usages |
| std::vector<HidUsageAndPagePtr> usages; |
| |
| // @generated_from: device.mojom.HidReportItem.usage_minimum |
| HidUsageAndPagePtr usage_minimum; |
| |
| // @generated_from: device.mojom.HidReportItem.usage_maximum |
| HidUsageAndPagePtr usage_maximum; |
| |
| // @generated_from: device.mojom.HidReportItem.designator_minimum |
| uint32_t designator_minimum; |
| |
| // @generated_from: device.mojom.HidReportItem.designator_maximum |
| uint32_t designator_maximum; |
| |
| // @generated_from: device.mojom.HidReportItem.string_minimum |
| uint32_t string_minimum; |
| |
| // @generated_from: device.mojom.HidReportItem.string_maximum |
| uint32_t string_maximum; |
| |
| // @generated_from: device.mojom.HidReportItem.logical_minimum |
| int32_t logical_minimum; |
| |
| // @generated_from: device.mojom.HidReportItem.logical_maximum |
| int32_t logical_maximum; |
| |
| // @generated_from: device.mojom.HidReportItem.physical_minimum |
| int32_t physical_minimum; |
| |
| // @generated_from: device.mojom.HidReportItem.physical_maximum |
| int32_t physical_maximum; |
| |
| // @generated_from: device.mojom.HidReportItem.unit_exponent |
| uint32_t unit_exponent; |
| |
| // @generated_from: device.mojom.HidReportItem.unit |
| uint32_t unit; |
| |
| // @generated_from: device.mojom.HidReportItem.report_size |
| uint32_t report_size; |
| |
| // @generated_from: device.mojom.HidReportItem.report_count |
| uint32_t report_count; |
| |
| // 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, HidReportItem::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, HidReportItem::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, HidReportItem::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, HidReportItem::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.HidReportDescription |
| class HidReportDescription { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<HidReportDescription, T>::value>; |
| using DataView = HidReportDescriptionDataView; |
| using Data_ = internal::HidReportDescription_Data; |
| |
| template <typename... Args> |
| static HidReportDescriptionPtr New(Args&&... args) { |
| return HidReportDescriptionPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static HidReportDescriptionPtr From(const U& u) { |
| return mojo::TypeConverter<HidReportDescriptionPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, HidReportDescription>::Convert(*this); |
| } |
| |
| |
| HidReportDescription(); |
| |
| HidReportDescription( |
| uint8_t report_id, |
| std::vector<HidReportItemPtr> items); |
| |
| HidReportDescription(const HidReportDescription&) = delete; |
| HidReportDescription& operator=(const HidReportDescription&) = delete; |
| |
| ~HidReportDescription(); |
| |
| // 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 = HidReportDescriptionPtr> |
| HidReportDescriptionPtr 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, HidReportDescription::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, HidReportDescription::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< |
| HidReportDescription::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| HidReportDescription::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::HidReportDescription_UnserializedMessageContext< |
| UserType, HidReportDescription::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<HidReportDescription::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return HidReportDescription::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::HidReportDescription_UnserializedMessageContext< |
| UserType, HidReportDescription::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<HidReportDescription::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.HidReportDescription.report_id |
| uint8_t report_id; |
| |
| // @generated_from: device.mojom.HidReportDescription.items |
| std::vector<HidReportItemPtr> items; |
| |
| // 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, HidReportDescription::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, HidReportDescription::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, HidReportDescription::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, HidReportDescription::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.HidCollectionInfo |
| class HidCollectionInfo { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<HidCollectionInfo, T>::value>; |
| using DataView = HidCollectionInfoDataView; |
| using Data_ = internal::HidCollectionInfo_Data; |
| |
| template <typename... Args> |
| static HidCollectionInfoPtr New(Args&&... args) { |
| return HidCollectionInfoPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static HidCollectionInfoPtr From(const U& u) { |
| return mojo::TypeConverter<HidCollectionInfoPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, HidCollectionInfo>::Convert(*this); |
| } |
| |
| |
| HidCollectionInfo(); |
| |
| HidCollectionInfo( |
| HidUsageAndPagePtr usage, |
| std::vector<uint8_t> report_ids, |
| uint32_t collection_type, |
| std::vector<HidReportDescriptionPtr> input_reports, |
| std::vector<HidReportDescriptionPtr> output_reports, |
| std::vector<HidReportDescriptionPtr> feature_reports, |
| std::vector<HidCollectionInfoPtr> children); |
| |
| HidCollectionInfo(const HidCollectionInfo&) = delete; |
| HidCollectionInfo& operator=(const HidCollectionInfo&) = delete; |
| |
| ~HidCollectionInfo(); |
| |
| // 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 = HidCollectionInfoPtr> |
| HidCollectionInfoPtr 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, HidCollectionInfo::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, HidCollectionInfo::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< |
| HidCollectionInfo::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| HidCollectionInfo::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::HidCollectionInfo_UnserializedMessageContext< |
| UserType, HidCollectionInfo::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<HidCollectionInfo::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return HidCollectionInfo::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::HidCollectionInfo_UnserializedMessageContext< |
| UserType, HidCollectionInfo::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<HidCollectionInfo::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.HidCollectionInfo.usage |
| HidUsageAndPagePtr usage; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.report_ids |
| std::vector<uint8_t> report_ids; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.collection_type |
| uint32_t collection_type; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.input_reports |
| std::vector<HidReportDescriptionPtr> input_reports; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.output_reports |
| std::vector<HidReportDescriptionPtr> output_reports; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.feature_reports |
| std::vector<HidReportDescriptionPtr> feature_reports; |
| |
| // @generated_from: device.mojom.HidCollectionInfo.children |
| std::vector<HidCollectionInfoPtr> children; |
| |
| // 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, HidCollectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, HidCollectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, HidCollectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, HidCollectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.HidDeviceInfo |
| class HidDeviceInfo { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<HidDeviceInfo, T>::value>; |
| using DataView = HidDeviceInfoDataView; |
| using Data_ = internal::HidDeviceInfo_Data; |
| |
| template <typename... Args> |
| static HidDeviceInfoPtr New(Args&&... args) { |
| return HidDeviceInfoPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static HidDeviceInfoPtr From(const U& u) { |
| return mojo::TypeConverter<HidDeviceInfoPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, HidDeviceInfo>::Convert(*this); |
| } |
| |
| |
| HidDeviceInfo(); |
| |
| HidDeviceInfo( |
| const std::string& guid, |
| const std::string& physical_device_id, |
| uint16_t vendor_id, |
| uint16_t product_id, |
| const std::string& product_name, |
| const std::string& serial_number, |
| HidBusType bus_type, |
| std::vector<uint8_t> report_descriptor, |
| std::vector<HidCollectionInfoPtr> collections, |
| bool has_report_id, |
| uint64_t max_input_report_size, |
| uint64_t max_output_report_size, |
| uint64_t max_feature_report_size, |
| const std::string& device_node); |
| |
| HidDeviceInfo( |
| const std::string& guid, |
| const std::string& physical_device_id, |
| uint16_t vendor_id, |
| uint16_t product_id, |
| const std::string& product_name, |
| const std::string& serial_number, |
| HidBusType bus_type, |
| std::vector<uint8_t> report_descriptor, |
| std::vector<HidCollectionInfoPtr> collections, |
| bool has_report_id, |
| uint64_t max_input_report_size, |
| uint64_t max_output_report_size, |
| uint64_t max_feature_report_size, |
| const std::string& device_node, |
| absl::optional<std::vector<uint8_t>> protected_input_report_ids, |
| absl::optional<std::vector<uint8_t>> protected_output_report_ids, |
| absl::optional<std::vector<uint8_t>> protected_feature_report_ids); |
| |
| HidDeviceInfo( |
| const std::string& guid, |
| const std::string& physical_device_id, |
| uint16_t vendor_id, |
| uint16_t product_id, |
| const std::string& product_name, |
| const std::string& serial_number, |
| HidBusType bus_type, |
| std::vector<uint8_t> report_descriptor, |
| std::vector<HidCollectionInfoPtr> collections, |
| bool has_report_id, |
| uint64_t max_input_report_size, |
| uint64_t max_output_report_size, |
| uint64_t max_feature_report_size, |
| const std::string& device_node, |
| absl::optional<std::vector<uint8_t>> protected_input_report_ids, |
| absl::optional<std::vector<uint8_t>> protected_output_report_ids, |
| absl::optional<std::vector<uint8_t>> protected_feature_report_ids, |
| bool is_excluded_by_blocklist); |
| |
| HidDeviceInfo(const HidDeviceInfo&) = delete; |
| HidDeviceInfo& operator=(const HidDeviceInfo&) = delete; |
| |
| ~HidDeviceInfo(); |
| |
| // 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 = HidDeviceInfoPtr> |
| HidDeviceInfoPtr 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, HidDeviceInfo::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, HidDeviceInfo::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< |
| HidDeviceInfo::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| HidDeviceInfo::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::HidDeviceInfo_UnserializedMessageContext< |
| UserType, HidDeviceInfo::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<HidDeviceInfo::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return HidDeviceInfo::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::HidDeviceInfo_UnserializedMessageContext< |
| UserType, HidDeviceInfo::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<HidDeviceInfo::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.HidDeviceInfo.guid |
| std::string guid; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.physical_device_id |
| std::string physical_device_id; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.vendor_id |
| uint16_t vendor_id; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.product_id |
| uint16_t product_id; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.product_name |
| std::string product_name; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.serial_number |
| std::string serial_number; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.bus_type |
| HidBusType bus_type; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.report_descriptor |
| std::vector<uint8_t> report_descriptor; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.collections |
| std::vector<HidCollectionInfoPtr> collections; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.has_report_id |
| bool has_report_id; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.max_input_report_size |
| uint64_t max_input_report_size; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.max_output_report_size |
| uint64_t max_output_report_size; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.max_feature_report_size |
| uint64_t max_feature_report_size; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.device_node |
| std::string device_node; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.protected_input_report_ids |
| absl::optional<std::vector<uint8_t>> protected_input_report_ids; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.protected_output_report_ids |
| absl::optional<std::vector<uint8_t>> protected_output_report_ids; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.protected_feature_report_ids |
| absl::optional<std::vector<uint8_t>> protected_feature_report_ids; |
| |
| // @generated_from: device.mojom.HidDeviceInfo.is_excluded_by_blocklist |
| bool is_excluded_by_blocklist; |
| |
| // 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, HidDeviceInfo::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, HidDeviceInfo::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, HidDeviceInfo::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, HidDeviceInfo::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| template <typename StructPtrType> |
| HidUsageAndPagePtr HidUsageAndPage::Clone() const { |
| return New( |
| mojo::Clone(usage), |
| mojo::Clone(usage_page) |
| ); |
| } |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>*> |
| bool HidUsageAndPage::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->usage, other_struct.usage)) |
| return false; |
| if (!mojo::Equals(this->usage_page, other_struct.usage_page)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, HidUsageAndPage::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.usage < rhs.usage) |
| return true; |
| if (rhs.usage < lhs.usage) |
| return false; |
| if (lhs.usage_page < rhs.usage_page) |
| return true; |
| if (rhs.usage_page < lhs.usage_page) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| HidReportItemPtr HidReportItem::Clone() const { |
| return New( |
| mojo::Clone(is_range), |
| mojo::Clone(is_constant), |
| mojo::Clone(is_variable), |
| mojo::Clone(is_relative), |
| mojo::Clone(wrap), |
| mojo::Clone(is_non_linear), |
| mojo::Clone(no_preferred_state), |
| mojo::Clone(has_null_position), |
| mojo::Clone(is_volatile), |
| mojo::Clone(is_buffered_bytes), |
| mojo::Clone(usages), |
| mojo::Clone(usage_minimum), |
| mojo::Clone(usage_maximum), |
| mojo::Clone(designator_minimum), |
| mojo::Clone(designator_maximum), |
| mojo::Clone(string_minimum), |
| mojo::Clone(string_maximum), |
| mojo::Clone(logical_minimum), |
| mojo::Clone(logical_maximum), |
| mojo::Clone(physical_minimum), |
| mojo::Clone(physical_maximum), |
| mojo::Clone(unit_exponent), |
| mojo::Clone(unit), |
| mojo::Clone(report_size), |
| mojo::Clone(report_count) |
| ); |
| } |
| |
| template <typename T, HidReportItem::EnableIfSame<T>*> |
| bool HidReportItem::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->is_range, other_struct.is_range)) |
| return false; |
| if (!mojo::Equals(this->is_constant, other_struct.is_constant)) |
| return false; |
| if (!mojo::Equals(this->is_variable, other_struct.is_variable)) |
| return false; |
| if (!mojo::Equals(this->is_relative, other_struct.is_relative)) |
| return false; |
| if (!mojo::Equals(this->wrap, other_struct.wrap)) |
| return false; |
| if (!mojo::Equals(this->is_non_linear, other_struct.is_non_linear)) |
| return false; |
| if (!mojo::Equals(this->no_preferred_state, other_struct.no_preferred_state)) |
| return false; |
| if (!mojo::Equals(this->has_null_position, other_struct.has_null_position)) |
| return false; |
| if (!mojo::Equals(this->is_volatile, other_struct.is_volatile)) |
| return false; |
| if (!mojo::Equals(this->is_buffered_bytes, other_struct.is_buffered_bytes)) |
| return false; |
| if (!mojo::Equals(this->usages, other_struct.usages)) |
| return false; |
| if (!mojo::Equals(this->usage_minimum, other_struct.usage_minimum)) |
| return false; |
| if (!mojo::Equals(this->usage_maximum, other_struct.usage_maximum)) |
| return false; |
| if (!mojo::Equals(this->designator_minimum, other_struct.designator_minimum)) |
| return false; |
| if (!mojo::Equals(this->designator_maximum, other_struct.designator_maximum)) |
| return false; |
| if (!mojo::Equals(this->string_minimum, other_struct.string_minimum)) |
| return false; |
| if (!mojo::Equals(this->string_maximum, other_struct.string_maximum)) |
| return false; |
| if (!mojo::Equals(this->logical_minimum, other_struct.logical_minimum)) |
| return false; |
| if (!mojo::Equals(this->logical_maximum, other_struct.logical_maximum)) |
| return false; |
| if (!mojo::Equals(this->physical_minimum, other_struct.physical_minimum)) |
| return false; |
| if (!mojo::Equals(this->physical_maximum, other_struct.physical_maximum)) |
| return false; |
| if (!mojo::Equals(this->unit_exponent, other_struct.unit_exponent)) |
| return false; |
| if (!mojo::Equals(this->unit, other_struct.unit)) |
| return false; |
| if (!mojo::Equals(this->report_size, other_struct.report_size)) |
| return false; |
| if (!mojo::Equals(this->report_count, other_struct.report_count)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, HidReportItem::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.is_range < rhs.is_range) |
| return true; |
| if (rhs.is_range < lhs.is_range) |
| return false; |
| if (lhs.is_constant < rhs.is_constant) |
| return true; |
| if (rhs.is_constant < lhs.is_constant) |
| return false; |
| if (lhs.is_variable < rhs.is_variable) |
| return true; |
| if (rhs.is_variable < lhs.is_variable) |
| return false; |
| if (lhs.is_relative < rhs.is_relative) |
| return true; |
| if (rhs.is_relative < lhs.is_relative) |
| return false; |
| if (lhs.wrap < rhs.wrap) |
| return true; |
| if (rhs.wrap < lhs.wrap) |
| return false; |
| if (lhs.is_non_linear < rhs.is_non_linear) |
| return true; |
| if (rhs.is_non_linear < lhs.is_non_linear) |
| return false; |
| if (lhs.no_preferred_state < rhs.no_preferred_state) |
| return true; |
| if (rhs.no_preferred_state < lhs.no_preferred_state) |
| return false; |
| if (lhs.has_null_position < rhs.has_null_position) |
| return true; |
| if (rhs.has_null_position < lhs.has_null_position) |
| return false; |
| if (lhs.is_volatile < rhs.is_volatile) |
| return true; |
| if (rhs.is_volatile < lhs.is_volatile) |
| return false; |
| if (lhs.is_buffered_bytes < rhs.is_buffered_bytes) |
| return true; |
| if (rhs.is_buffered_bytes < lhs.is_buffered_bytes) |
| return false; |
| if (lhs.usages < rhs.usages) |
| return true; |
| if (rhs.usages < lhs.usages) |
| return false; |
| if (lhs.usage_minimum < rhs.usage_minimum) |
| return true; |
| if (rhs.usage_minimum < lhs.usage_minimum) |
| return false; |
| if (lhs.usage_maximum < rhs.usage_maximum) |
| return true; |
| if (rhs.usage_maximum < lhs.usage_maximum) |
| return false; |
| if (lhs.designator_minimum < rhs.designator_minimum) |
| return true; |
| if (rhs.designator_minimum < lhs.designator_minimum) |
| return false; |
| if (lhs.designator_maximum < rhs.designator_maximum) |
| return true; |
| if (rhs.designator_maximum < lhs.designator_maximum) |
| return false; |
| if (lhs.string_minimum < rhs.string_minimum) |
| return true; |
| if (rhs.string_minimum < lhs.string_minimum) |
| return false; |
| if (lhs.string_maximum < rhs.string_maximum) |
| return true; |
| if (rhs.string_maximum < lhs.string_maximum) |
| return false; |
| if (lhs.logical_minimum < rhs.logical_minimum) |
| return true; |
| if (rhs.logical_minimum < lhs.logical_minimum) |
| return false; |
| if (lhs.logical_maximum < rhs.logical_maximum) |
| return true; |
| if (rhs.logical_maximum < lhs.logical_maximum) |
| return false; |
| if (lhs.physical_minimum < rhs.physical_minimum) |
| return true; |
| if (rhs.physical_minimum < lhs.physical_minimum) |
| return false; |
| if (lhs.physical_maximum < rhs.physical_maximum) |
| return true; |
| if (rhs.physical_maximum < lhs.physical_maximum) |
| return false; |
| if (lhs.unit_exponent < rhs.unit_exponent) |
| return true; |
| if (rhs.unit_exponent < lhs.unit_exponent) |
| return false; |
| if (lhs.unit < rhs.unit) |
| return true; |
| if (rhs.unit < lhs.unit) |
| return false; |
| if (lhs.report_size < rhs.report_size) |
| return true; |
| if (rhs.report_size < lhs.report_size) |
| return false; |
| if (lhs.report_count < rhs.report_count) |
| return true; |
| if (rhs.report_count < lhs.report_count) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| HidReportDescriptionPtr HidReportDescription::Clone() const { |
| return New( |
| mojo::Clone(report_id), |
| mojo::Clone(items) |
| ); |
| } |
| |
| template <typename T, HidReportDescription::EnableIfSame<T>*> |
| bool HidReportDescription::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->report_id, other_struct.report_id)) |
| return false; |
| if (!mojo::Equals(this->items, other_struct.items)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, HidReportDescription::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.report_id < rhs.report_id) |
| return true; |
| if (rhs.report_id < lhs.report_id) |
| return false; |
| if (lhs.items < rhs.items) |
| return true; |
| if (rhs.items < lhs.items) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| HidCollectionInfoPtr HidCollectionInfo::Clone() const { |
| return New( |
| mojo::Clone(usage), |
| mojo::Clone(report_ids), |
| mojo::Clone(collection_type), |
| mojo::Clone(input_reports), |
| mojo::Clone(output_reports), |
| mojo::Clone(feature_reports), |
| mojo::Clone(children) |
| ); |
| } |
| |
| template <typename T, HidCollectionInfo::EnableIfSame<T>*> |
| bool HidCollectionInfo::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->usage, other_struct.usage)) |
| return false; |
| if (!mojo::Equals(this->report_ids, other_struct.report_ids)) |
| return false; |
| if (!mojo::Equals(this->collection_type, other_struct.collection_type)) |
| return false; |
| if (!mojo::Equals(this->input_reports, other_struct.input_reports)) |
| return false; |
| if (!mojo::Equals(this->output_reports, other_struct.output_reports)) |
| return false; |
| if (!mojo::Equals(this->feature_reports, other_struct.feature_reports)) |
| return false; |
| if (!mojo::Equals(this->children, other_struct.children)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, HidCollectionInfo::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.usage < rhs.usage) |
| return true; |
| if (rhs.usage < lhs.usage) |
| return false; |
| if (lhs.report_ids < rhs.report_ids) |
| return true; |
| if (rhs.report_ids < lhs.report_ids) |
| return false; |
| if (lhs.collection_type < rhs.collection_type) |
| return true; |
| if (rhs.collection_type < lhs.collection_type) |
| return false; |
| if (lhs.input_reports < rhs.input_reports) |
| return true; |
| if (rhs.input_reports < lhs.input_reports) |
| return false; |
| if (lhs.output_reports < rhs.output_reports) |
| return true; |
| if (rhs.output_reports < lhs.output_reports) |
| return false; |
| if (lhs.feature_reports < rhs.feature_reports) |
| return true; |
| if (rhs.feature_reports < lhs.feature_reports) |
| return false; |
| if (lhs.children < rhs.children) |
| return true; |
| if (rhs.children < lhs.children) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| HidDeviceInfoPtr HidDeviceInfo::Clone() const { |
| return New( |
| mojo::Clone(guid), |
| mojo::Clone(physical_device_id), |
| mojo::Clone(vendor_id), |
| mojo::Clone(product_id), |
| mojo::Clone(product_name), |
| mojo::Clone(serial_number), |
| mojo::Clone(bus_type), |
| mojo::Clone(report_descriptor), |
| mojo::Clone(collections), |
| mojo::Clone(has_report_id), |
| mojo::Clone(max_input_report_size), |
| mojo::Clone(max_output_report_size), |
| mojo::Clone(max_feature_report_size), |
| mojo::Clone(device_node), |
| mojo::Clone(protected_input_report_ids), |
| mojo::Clone(protected_output_report_ids), |
| mojo::Clone(protected_feature_report_ids), |
| mojo::Clone(is_excluded_by_blocklist) |
| ); |
| } |
| |
| template <typename T, HidDeviceInfo::EnableIfSame<T>*> |
| bool HidDeviceInfo::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->guid, other_struct.guid)) |
| return false; |
| if (!mojo::Equals(this->physical_device_id, other_struct.physical_device_id)) |
| return false; |
| if (!mojo::Equals(this->vendor_id, other_struct.vendor_id)) |
| return false; |
| if (!mojo::Equals(this->product_id, other_struct.product_id)) |
| return false; |
| if (!mojo::Equals(this->product_name, other_struct.product_name)) |
| return false; |
| if (!mojo::Equals(this->serial_number, other_struct.serial_number)) |
| return false; |
| if (!mojo::Equals(this->bus_type, other_struct.bus_type)) |
| return false; |
| if (!mojo::Equals(this->report_descriptor, other_struct.report_descriptor)) |
| return false; |
| if (!mojo::Equals(this->collections, other_struct.collections)) |
| return false; |
| if (!mojo::Equals(this->has_report_id, other_struct.has_report_id)) |
| return false; |
| if (!mojo::Equals(this->max_input_report_size, other_struct.max_input_report_size)) |
| return false; |
| if (!mojo::Equals(this->max_output_report_size, other_struct.max_output_report_size)) |
| return false; |
| if (!mojo::Equals(this->max_feature_report_size, other_struct.max_feature_report_size)) |
| return false; |
| if (!mojo::Equals(this->device_node, other_struct.device_node)) |
| return false; |
| if (!mojo::Equals(this->protected_input_report_ids, other_struct.protected_input_report_ids)) |
| return false; |
| if (!mojo::Equals(this->protected_output_report_ids, other_struct.protected_output_report_ids)) |
| return false; |
| if (!mojo::Equals(this->protected_feature_report_ids, other_struct.protected_feature_report_ids)) |
| return false; |
| if (!mojo::Equals(this->is_excluded_by_blocklist, other_struct.is_excluded_by_blocklist)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, HidDeviceInfo::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.guid < rhs.guid) |
| return true; |
| if (rhs.guid < lhs.guid) |
| return false; |
| if (lhs.physical_device_id < rhs.physical_device_id) |
| return true; |
| if (rhs.physical_device_id < lhs.physical_device_id) |
| return false; |
| if (lhs.vendor_id < rhs.vendor_id) |
| return true; |
| if (rhs.vendor_id < lhs.vendor_id) |
| return false; |
| if (lhs.product_id < rhs.product_id) |
| return true; |
| if (rhs.product_id < lhs.product_id) |
| return false; |
| if (lhs.product_name < rhs.product_name) |
| return true; |
| if (rhs.product_name < lhs.product_name) |
| return false; |
| if (lhs.serial_number < rhs.serial_number) |
| return true; |
| if (rhs.serial_number < lhs.serial_number) |
| return false; |
| if (lhs.bus_type < rhs.bus_type) |
| return true; |
| if (rhs.bus_type < lhs.bus_type) |
| return false; |
| if (lhs.report_descriptor < rhs.report_descriptor) |
| return true; |
| if (rhs.report_descriptor < lhs.report_descriptor) |
| return false; |
| if (lhs.collections < rhs.collections) |
| return true; |
| if (rhs.collections < lhs.collections) |
| return false; |
| if (lhs.has_report_id < rhs.has_report_id) |
| return true; |
| if (rhs.has_report_id < lhs.has_report_id) |
| return false; |
| if (lhs.max_input_report_size < rhs.max_input_report_size) |
| return true; |
| if (rhs.max_input_report_size < lhs.max_input_report_size) |
| return false; |
| if (lhs.max_output_report_size < rhs.max_output_report_size) |
| return true; |
| if (rhs.max_output_report_size < lhs.max_output_report_size) |
| return false; |
| if (lhs.max_feature_report_size < rhs.max_feature_report_size) |
| return true; |
| if (rhs.max_feature_report_size < lhs.max_feature_report_size) |
| return false; |
| if (lhs.device_node < rhs.device_node) |
| return true; |
| if (rhs.device_node < lhs.device_node) |
| return false; |
| if (lhs.protected_input_report_ids < rhs.protected_input_report_ids) |
| return true; |
| if (rhs.protected_input_report_ids < lhs.protected_input_report_ids) |
| return false; |
| if (lhs.protected_output_report_ids < rhs.protected_output_report_ids) |
| return true; |
| if (rhs.protected_output_report_ids < lhs.protected_output_report_ids) |
| return false; |
| if (lhs.protected_feature_report_ids < rhs.protected_feature_report_ids) |
| return true; |
| if (rhs.protected_feature_report_ids < lhs.protected_feature_report_ids) |
| return false; |
| if (lhs.is_excluded_by_blocklist < rhs.is_excluded_by_blocklist) |
| return true; |
| if (rhs.is_excluded_by_blocklist < lhs.is_excluded_by_blocklist) |
| return false; |
| return false; |
| } |
| |
| |
| } // namespace mojom |
| } // namespace device |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::HidUsageAndPage::DataView, |
| ::device::mojom::HidUsageAndPagePtr> { |
| static bool IsNull(const ::device::mojom::HidUsageAndPagePtr& input) { return !input; } |
| static void SetToNull(::device::mojom::HidUsageAndPagePtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::HidUsageAndPage::usage) usage( |
| const ::device::mojom::HidUsageAndPagePtr& input) { |
| return input->usage; |
| } |
| |
| static decltype(::device::mojom::HidUsageAndPage::usage_page) usage_page( |
| const ::device::mojom::HidUsageAndPagePtr& input) { |
| return input->usage_page; |
| } |
| |
| static bool Read(::device::mojom::HidUsageAndPage::DataView input, ::device::mojom::HidUsageAndPagePtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::HidReportItem::DataView, |
| ::device::mojom::HidReportItemPtr> { |
| static bool IsNull(const ::device::mojom::HidReportItemPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::HidReportItemPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::HidReportItem::is_range) is_range( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_range; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_constant) is_constant( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_constant; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_variable) is_variable( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_variable; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_relative) is_relative( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_relative; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::wrap) wrap( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->wrap; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_non_linear) is_non_linear( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_non_linear; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::no_preferred_state) no_preferred_state( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->no_preferred_state; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::has_null_position) has_null_position( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->has_null_position; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_volatile) is_volatile( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_volatile; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::is_buffered_bytes) is_buffered_bytes( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->is_buffered_bytes; |
| } |
| |
| static const decltype(::device::mojom::HidReportItem::usages)& usages( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->usages; |
| } |
| |
| static const decltype(::device::mojom::HidReportItem::usage_minimum)& usage_minimum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->usage_minimum; |
| } |
| |
| static const decltype(::device::mojom::HidReportItem::usage_maximum)& usage_maximum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->usage_maximum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::designator_minimum) designator_minimum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->designator_minimum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::designator_maximum) designator_maximum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->designator_maximum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::string_minimum) string_minimum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->string_minimum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::string_maximum) string_maximum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->string_maximum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::logical_minimum) logical_minimum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->logical_minimum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::logical_maximum) logical_maximum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->logical_maximum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::physical_minimum) physical_minimum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->physical_minimum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::physical_maximum) physical_maximum( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->physical_maximum; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::unit_exponent) unit_exponent( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->unit_exponent; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::unit) unit( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->unit; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::report_size) report_size( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->report_size; |
| } |
| |
| static decltype(::device::mojom::HidReportItem::report_count) report_count( |
| const ::device::mojom::HidReportItemPtr& input) { |
| return input->report_count; |
| } |
| |
| static bool Read(::device::mojom::HidReportItem::DataView input, ::device::mojom::HidReportItemPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::HidReportDescription::DataView, |
| ::device::mojom::HidReportDescriptionPtr> { |
| static bool IsNull(const ::device::mojom::HidReportDescriptionPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::HidReportDescriptionPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::HidReportDescription::report_id) report_id( |
| const ::device::mojom::HidReportDescriptionPtr& input) { |
| return input->report_id; |
| } |
| |
| static const decltype(::device::mojom::HidReportDescription::items)& items( |
| const ::device::mojom::HidReportDescriptionPtr& input) { |
| return input->items; |
| } |
| |
| static bool Read(::device::mojom::HidReportDescription::DataView input, ::device::mojom::HidReportDescriptionPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::HidCollectionInfo::DataView, |
| ::device::mojom::HidCollectionInfoPtr> { |
| static bool IsNull(const ::device::mojom::HidCollectionInfoPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::HidCollectionInfoPtr* output) { output->reset(); } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::usage)& usage( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->usage; |
| } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::report_ids)& report_ids( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->report_ids; |
| } |
| |
| static decltype(::device::mojom::HidCollectionInfo::collection_type) collection_type( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->collection_type; |
| } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::input_reports)& input_reports( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->input_reports; |
| } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::output_reports)& output_reports( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->output_reports; |
| } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::feature_reports)& feature_reports( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->feature_reports; |
| } |
| |
| static const decltype(::device::mojom::HidCollectionInfo::children)& children( |
| const ::device::mojom::HidCollectionInfoPtr& input) { |
| return input->children; |
| } |
| |
| static bool Read(::device::mojom::HidCollectionInfo::DataView input, ::device::mojom::HidCollectionInfoPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::HidDeviceInfo::DataView, |
| ::device::mojom::HidDeviceInfoPtr> { |
| static bool IsNull(const ::device::mojom::HidDeviceInfoPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::HidDeviceInfoPtr* output) { output->reset(); } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::guid)& guid( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->guid; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::physical_device_id)& physical_device_id( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->physical_device_id; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::vendor_id) vendor_id( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->vendor_id; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::product_id) product_id( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->product_id; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::product_name)& product_name( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->product_name; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::serial_number)& serial_number( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->serial_number; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::bus_type) bus_type( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->bus_type; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::report_descriptor)& report_descriptor( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->report_descriptor; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::collections)& collections( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->collections; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::has_report_id) has_report_id( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->has_report_id; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::max_input_report_size) max_input_report_size( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->max_input_report_size; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::max_output_report_size) max_output_report_size( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->max_output_report_size; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::max_feature_report_size) max_feature_report_size( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->max_feature_report_size; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::device_node)& device_node( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->device_node; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::protected_input_report_ids)& protected_input_report_ids( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->protected_input_report_ids; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::protected_output_report_ids)& protected_output_report_ids( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->protected_output_report_ids; |
| } |
| |
| static const decltype(::device::mojom::HidDeviceInfo::protected_feature_report_ids)& protected_feature_report_ids( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->protected_feature_report_ids; |
| } |
| |
| static decltype(::device::mojom::HidDeviceInfo::is_excluded_by_blocklist) is_excluded_by_blocklist( |
| const ::device::mojom::HidDeviceInfoPtr& input) { |
| return input->is_excluded_by_blocklist; |
| } |
| |
| static bool Read(::device::mojom::HidDeviceInfo::DataView input, ::device::mojom::HidDeviceInfoPtr* output); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // SERVICES_DEVICE_PUBLIC_MOJOM_HID_MOJOM_H_ |
| |
| /* Metadata comment |
| eyJtZXRhIjogW3siZW5kIjogMTU0NCwgImJlZ2luIjogMTUyOCwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyQ2xpZW50In19 |
| LCB7ImVuZCI6IDMwODcsICJiZWdpbiI6IDMwNzYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkTWFuYWdlckNsaWVudC5EZXZpY2VBZGRl |
| ZCJ9fSwgeyJlbmQiOiAzMjE5LCAiYmVnaW4iOiAzMjA2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZE1hbmFnZXJDbGllbnQuRGV2aWNl |
| UmVtb3ZlZCJ9fSwgeyJlbmQiOiAzMzUxLCAiYmVnaW4iOiAzMzM4LCAiZWRnZSI6ICIlL2t5dGhl |
| L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv |
| cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn |
| ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZE1hbmFnZXJDbGllbnQu |
| RGV2aWNlQ2hhbmdlZCJ9fSwgeyJlbmQiOiAzNjA0LCAiYmVnaW4iOiAzNTk0LCAiZWRnZSI6ICIl |
| L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi |
| OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs |
| YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZE1hbmFnZXIi |
| fX0sIHsiZW5kIjogNTMzNiwgImJlZ2luIjogNTMxNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyLkdldERldmljZXNBbmRT |
| ZXRDbGllbnQifX0sIHsiZW5kIjogNTYxMiwgImJlZ2luIjogNTYwMiwgImVkZ2UiOiAiJS9reXRo |
| ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj |
| b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh |
| Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyLkdldERl |
| dmljZXMifX0sIHsiZW5kIjogNTgxNiwgImJlZ2luIjogNTgwOSwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyLkNvbm5lY3Qi |
| fX0sIHsiZW5kIjogNjEzNiwgImJlZ2luIjogNjEyNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyLkFkZFJlY2VpdmVyIn19 |
| LCB7ImVuZCI6IDY0MjMsICJiZWdpbiI6IDY0MTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkQ29ubmVjdGlvbiJ9fSwgeyJlbmQiOiA4 |
| MTM4LCAiYmVnaW4iOiA4MTM0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZGV2aWNlLm1vam9tLkhpZENvbm5lY3Rpb24uUmVhZCJ9fSwgeyJlbmQiOiA4MzAxLCAi |
| YmVnaW4iOiA4Mjk2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi |
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy |
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi |
| ZGV2aWNlLm1vam9tLkhpZENvbm5lY3Rpb24uV3JpdGUifX0sIHsiZW5kIjogODU5OCwgImJlZ2lu |
| IjogODU4MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj |
| ZS5tb2pvbS5IaWRDb25uZWN0aW9uLkdldEZlYXR1cmVSZXBvcnQifX0sIHsiZW5kIjogODgyOCwg |
| ImJlZ2luIjogODgxMSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog |
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291 |
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog |
| ImRldmljZS5tb2pvbS5IaWRDb25uZWN0aW9uLlNlbmRGZWF0dXJlUmVwb3J0In19LCB7ImVuZCI6 |
| IDkxNTIsICJiZWdpbiI6IDkxMzMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJkZXZpY2UubW9qb20uSGlkQ29ubmVjdGlvbkNsaWVudCJ9fSwgeyJlbmQiOiAxMDUx |
| MiwgImJlZ2luIjogMTA0OTksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJkZXZpY2UubW9qb20uSGlkQ29ubmVjdGlvbkNsaWVudC5PbklucHV0UmVwb3J0In19LCB7 |
| ImVuZCI6IDEwODA1LCAiYmVnaW4iOiAxMDc4NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy |
| YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy |
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i |
| LCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRDb25uZWN0aW9uV2F0Y2hlciJ9fSwgeyJl |
| bmQiOiAxMjI5OSwgImJlZ2luIjogMTIyODgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0 |
| ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t |
| aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg |
| InNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkTWFuYWdlckNsaWVudC5EZXZpY2VBZGRlZCJ9 |
| fSwgeyJlbmQiOiAxMjQyNCwgImJlZ2luIjogMTI0MTEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n |
| ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog |
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v |
| am9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkTWFuYWdlckNsaWVudC5EZXZpY2VS |
| ZW1vdmVkIn19LCB7ImVuZCI6IDEyNTQ5LCAiYmVnaW4iOiAxMjUzNiwgImVkZ2UiOiAiJS9reXRo |
| ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj |
| b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh |
| Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRNYW5hZ2VyQ2xpZW50 |
| LkRldmljZUNoYW5nZWQifX0sIHsiZW5kIjogMTI5NjUsICJiZWdpbiI6IDEyOTQzLCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZE1hbmFn |
| ZXIuR2V0RGV2aWNlc0FuZFNldENsaWVudCJ9fSwgeyJlbmQiOiAxMzE0NywgImJlZ2luIjogMTMx |
| MzcsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm |
| aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy |
| b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9q |
| b20uSGlkTWFuYWdlci5HZXREZXZpY2VzIn19LCB7ImVuZCI6IDEzMjUzLCAiYmVnaW4iOiAxMzI0 |
| NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp |
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv |
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pv |
| bS5IaWRNYW5hZ2VyLkNvbm5lY3QifX0sIHsiZW5kIjogMTM1NjYsICJiZWdpbiI6IDEzNTU1LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhp |
| ZE1hbmFnZXIuQWRkUmVjZWl2ZXIifX0sIHsiZW5kIjogMTM5ODAsICJiZWdpbiI6IDEzOTc2LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhp |
| ZENvbm5lY3Rpb24uUmVhZCJ9fSwgeyJlbmQiOiAxNDA3OSwgImJlZ2luIjogMTQwNzQsICJlZGdl |
| IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2 |
| bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj |
| IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkQ29u |
| bmVjdGlvbi5Xcml0ZSJ9fSwgeyJlbmQiOiAxNDI1NiwgImJlZ2luIjogMTQyNDAsICJlZGdlIjog |
| IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt |
| ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg |
| Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkQ29ubmVj |
| dGlvbi5HZXRGZWF0dXJlUmVwb3J0In19LCB7ImVuZCI6IDE0NDEwLCAiYmVnaW4iOiAxNDM5Mywg |
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz |
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1 |
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5I |
| aWRDb25uZWN0aW9uLlNlbmRGZWF0dXJlUmVwb3J0In19LCB7ImVuZCI6IDE0OTIzLCAiYmVnaW4i |
| OiAxNDkxMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj |
| ZS5tb2pvbS5IaWRDb25uZWN0aW9uQ2xpZW50Lk9uSW5wdXRSZXBvcnQifX0sIHsiZW5kIjogMjI5 |
| NjMsICJiZWdpbiI6IDIyOTQ4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5 |
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n |
| bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1 |
| cmUiOiAiZGV2aWNlLm1vam9tLkhpZFVzYWdlQW5kUGFnZSJ9fSwgeyJlbmQiOiAyNjY4NCwgImJl |
| Z2luIjogMjY2NzksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJk |
| ZXZpY2UubW9qb20uSGlkVXNhZ2VBbmRQYWdlLnVzYWdlIn19LCB7ImVuZCI6IDI2NzcwLCAiYmVn |
| aW4iOiAyNjc2MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl |
| dmljZS5tb2pvbS5IaWRVc2FnZUFuZFBhZ2UudXNhZ2VfcGFnZSJ9fSwgeyJlbmQiOiAyNzgyMywg |
| ImJlZ2luIjogMjc4MTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbSJ9fSwgeyJlbmQiOiAzMjI1OSwgImJlZ2luIjog |
| MzIyNTEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2Uu |
| bW9qb20uSGlkUmVwb3J0SXRlbS5pc19yYW5nZSJ9fSwgeyJlbmQiOiAzMjM0MSwgImJlZ2luIjog |
| MzIzMzAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf |
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v |
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2Uu |
| bW9qb20uSGlkUmVwb3J0SXRlbS5pc19jb25zdGFudCJ9fSwgeyJlbmQiOiAzMjQyMywgImJlZ2lu |
| IjogMzI0MTIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZp |
| Y2UubW9qb20uSGlkUmVwb3J0SXRlbS5pc192YXJpYWJsZSJ9fSwgeyJlbmQiOiAzMjUwNSwgImJl |
| Z2luIjogMzI0OTQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh |
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj |
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJk |
| ZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbS5pc19yZWxhdGl2ZSJ9fSwgeyJlbmQiOiAzMjU3Mywg |
| ImJlZ2luIjogMzI1NjksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbS53cmFwIn19LCB7ImVuZCI6IDMyNjU5LCAiYmVn |
| aW4iOiAzMjY0NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl |
| dmljZS5tb2pvbS5IaWRSZXBvcnRJdGVtLmlzX25vbl9saW5lYXIifX0sIHsiZW5kIjogMzI3NTUs |
| ICJiZWdpbiI6IDMyNzM3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi |
| OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz |
| b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi |
| OiAiZGV2aWNlLm1vam9tLkhpZFJlcG9ydEl0ZW0ubm9fcHJlZmVycmVkX3N0YXRlIn19LCB7ImVu |
| ZCI6IDMyODQ5LCAiYmVnaW4iOiAzMjgzMiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl |
| cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p |
| dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi |
| c2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBvcnRJdGVtLmhhc19udWxsX3Bvc2l0aW9u |
| In19LCB7ImVuZCI6IDMyOTMxLCAiYmVnaW4iOiAzMjkyMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdl |
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi |
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi |
| bW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBvcnRJdGVtLmlzX3ZvbGF0 |
| aWxlIn19LCB7ImVuZCI6IDMzMDI1LCAiYmVnaW4iOiAzMzAwOCwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBvcnRJdGVtLmlzX2J1 |
| ZmZlcmVkX2J5dGVzIn19LCB7ImVuZCI6IDMzMTI0LCAiYmVnaW4iOiAzMzExOCwgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBvcnRJ |
| dGVtLnVzYWdlcyJ9fSwgeyJlbmQiOiAzMzIyNCwgImJlZ2luIjogMzMyMTEsICJlZGdlIjogIiUv |
| a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6 |
| IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh |
| bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRl |
| bS51c2FnZV9taW5pbXVtIn19LCB7ImVuZCI6IDMzMzI0LCAiYmVnaW4iOiAzMzMxMSwgImVkZ2Ui |
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu |
| YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi |
| LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBv |
| cnRJdGVtLnVzYWdlX21heGltdW0ifX0sIHsiZW5kIjogMzM0MjQsICJiZWdpbiI6IDMzNDA2LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhp |
| ZFJlcG9ydEl0ZW0uZGVzaWduYXRvcl9taW5pbXVtIn19LCB7ImVuZCI6IDMzNTI0LCAiYmVnaW4i |
| OiAzMzUwNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj |
| ZS5tb2pvbS5IaWRSZXBvcnRJdGVtLmRlc2lnbmF0b3JfbWF4aW11bSJ9fSwgeyJlbmQiOiAzMzYx |
| NiwgImJlZ2luIjogMzM2MDIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw |
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds |
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy |
| ZSI6ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbS5zdHJpbmdfbWluaW11bSJ9fSwgeyJlbmQi |
| OiAzMzcwOCwgImJlZ2luIjogMzM2OTQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi |
| LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt |
| Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp |
| Z25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbS5zdHJpbmdfbWF4aW11bSJ9fSwg |
| eyJlbmQiOiAzMzgwMSwgImJlZ2luIjogMzM3ODYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l |
| cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo |
| cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t |
| IiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uSGlkUmVwb3J0SXRlbS5sb2dpY2FsX21pbmlt |
| dW0ifX0sIHsiZW5kIjogMzM4OTQsICJiZWdpbiI6IDMzODc5LCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZFJlcG9ydEl0ZW0ubG9naWNh |
| bF9tYXhpbXVtIn19LCB7ImVuZCI6IDMzOTg5LCAiYmVnaW4iOiAzMzk3MywgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRSZXBvcnRJdGVt |
| LnBoeXNpY2FsX21pbmltdW0ifX0sIHsiZW5kIjogMzQwODQsICJiZWdpbiI6IDM0MDY4LCAiZWRn |
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi |
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny |
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZFJl |
| cG9ydEl0ZW0ucGh5c2ljYWxfbWF4aW11bSJ9fSwgeyJlbmQiOiAzNDE3NCwgImJlZ2luIjogMzQx |
| NjEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm |
| aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy |
| b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9q |
| b20uSGlkUmVwb3J0SXRlbS51bml0X2V4cG9uZW50In19LCB7ImVuZCI6IDM0MjQ2LCAiYmVnaW4i |
| OiAzNDI0MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj |
| ZS5tb2pvbS5IaWRSZXBvcnRJdGVtLnVuaXQifX0sIHsiZW5kIjogMzQzMzIsICJiZWdpbiI6IDM0 |
| MzIxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl |
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No |
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1v |
| am9tLkhpZFJlcG9ydEl0ZW0ucmVwb3J0X3NpemUifX0sIHsiZW5kIjogMzQ0MjAsICJiZWdpbiI6 |
| IDM0NDA4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNl |
| Lm1vam9tLkhpZFJlcG9ydEl0ZW0ucmVwb3J0X2NvdW50In19LCB7ImVuZCI6IDM1NDcyLCAiYmVn |
| aW4iOiAzNTQ1MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl |
| dmljZS5tb2pvbS5IaWRSZXBvcnREZXNjcmlwdGlvbiJ9fSwgeyJlbmQiOiAzOTQ0MSwgImJlZ2lu |
| IjogMzk0MzIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZp |
| Y2UubW9qb20uSGlkUmVwb3J0RGVzY3JpcHRpb24ucmVwb3J0X2lkIn19LCB7ImVuZCI6IDM5NTQz |
| LCAiYmVnaW4iOiAzOTUzOCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl |
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl |
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl |
| IjogImRldmljZS5tb2pvbS5IaWRSZXBvcnREZXNjcmlwdGlvbi5pdGVtcyJ9fSwgeyJlbmQiOiA0 |
| MDYxNywgImJlZ2luIjogNDA2MDAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJkZXZpY2UubW9qb20uSGlkQ29sbGVjdGlvbkluZm8ifX0sIHsiZW5kIjogNDQ3NjQs |
| ICJiZWdpbiI6IDQ0NzU5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi |
| OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz |
| b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi |
| OiAiZGV2aWNlLm1vam9tLkhpZENvbGxlY3Rpb25JbmZvLnVzYWdlIn19LCB7ImVuZCI6IDQ0ODY0 |
| LCAiYmVnaW4iOiA0NDg1NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl |
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl |
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl |
| IjogImRldmljZS5tb2pvbS5IaWRDb2xsZWN0aW9uSW5mby5yZXBvcnRfaWRzIn19LCB7ImVuZCI6 |
| IDQ0OTYyLCAiYmVnaW4iOiA0NDk0NywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs |
| ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u |
| Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln |
| bmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRDb2xsZWN0aW9uSW5mby5jb2xsZWN0aW9uX3R5cGUi |
| fX0sIHsiZW5kIjogNDUwODQsICJiZWdpbiI6IDQ1MDcxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZENvbGxlY3Rpb25JbmZvLmlucHV0 |
| X3JlcG9ydHMifX0sIHsiZW5kIjogNDUyMDgsICJiZWdpbiI6IDQ1MTk0LCAiZWRnZSI6ICIlL2t5 |
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7 |
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n |
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZENvbGxlY3Rpb25J |
| bmZvLm91dHB1dF9yZXBvcnRzIn19LCB7ImVuZCI6IDQ1MzM0LCAiYmVnaW4iOiA0NTMxOSwgImVk |
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg |
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z |
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWRD |
| b2xsZWN0aW9uSW5mby5mZWF0dXJlX3JlcG9ydHMifX0sIHsiZW5kIjogNDU0NDMsICJiZWdpbiI6 |
| IDQ1NDM1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNl |
| Lm1vam9tLkhpZENvbGxlY3Rpb25JbmZvLmNoaWxkcmVuIn19LCB7ImVuZCI6IDQ2NDk3LCAiYmVn |
| aW4iOiA0NjQ4NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl |
| dmljZS5tb2pvbS5IaWREZXZpY2VJbmZvIn19LCB7ImVuZCI6IDUyMjQxLCAiYmVnaW4iOiA1MjIz |
| NywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp |
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv |
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pv |
| bS5IaWREZXZpY2VJbmZvLmd1aWQifX0sIHsiZW5kIjogNTIzNDQsICJiZWdpbiI6IDUyMzI2LCAi |
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi |
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt |
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhp |
| ZERldmljZUluZm8ucGh5c2ljYWxfZGV2aWNlX2lkIn19LCB7ImVuZCI6IDUyNDI2LCAiYmVnaW4i |
| OiA1MjQxNywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj |
| ZS5tb2pvbS5IaWREZXZpY2VJbmZvLnZlbmRvcl9pZCJ9fSwgeyJlbmQiOiA1MjUxMCwgImJlZ2lu |
| IjogNTI1MDAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZp |
| Y2UubW9qb20uSGlkRGV2aWNlSW5mby5wcm9kdWN0X2lkIn19LCB7ImVuZCI6IDUyNjAxLCAiYmVn |
| aW4iOiA1MjU4OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu |
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl |
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl |
| dmljZS5tb2pvbS5IaWREZXZpY2VJbmZvLnByb2R1Y3RfbmFtZSJ9fSwgeyJlbmQiOiA1MjY5NCwg |
| ImJlZ2luIjogNTI2ODEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJkZXZpY2UubW9qb20uSGlkRGV2aWNlSW5mby5zZXJpYWxfbnVtYmVyIn19LCB7ImVuZCI6IDUy |
| Nzc2LCAiYmVnaW4iOiA1Mjc2OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImRldmljZS5tb2pvbS5IaWREZXZpY2VJbmZvLmJ1c190eXBlIn19LCB7ImVuZCI6IDUy |
| ODg2LCAiYmVnaW4iOiA1Mjg2OSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImRldmljZS5tb2pvbS5IaWREZXZpY2VJbmZvLnJlcG9ydF9kZXNjcmlwdG9yIn19LCB7 |
| ImVuZCI6IDUyOTk3LCAiYmVnaW4iOiA1Mjk4NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy |
| YXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hy |
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20i |
| LCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWREZXZpY2VJbmZvLmNvbGxlY3Rpb25zIn19 |
| LCB7ImVuZCI6IDUzMDgzLCAiYmVnaW4iOiA1MzA3MCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl |
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi |
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q |
| b20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWREZXZpY2VJbmZvLmhhc19yZXBvcnRf |
| aWQifX0sIHsiZW5kIjogNTMxODksICJiZWdpbiI6IDUzMTY4LCAiZWRnZSI6ICIlL2t5dGhlL2Vk |
| Z2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1 |
| cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6 |
| ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZERldmljZUluZm8ubWF4X2lu |
| cHV0X3JlcG9ydF9zaXplIn19LCB7ImVuZCI6IDUzMjk3LCAiYmVnaW4iOiA1MzI3NSwgImVkZ2Ui |
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZu |
| YW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMi |
| LCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5IaWREZXZp |
| Y2VJbmZvLm1heF9vdXRwdXRfcmVwb3J0X3NpemUifX0sIHsiZW5kIjogNTM0MDcsICJiZWdpbiI6 |
| IDUzMzg0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y |
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t |
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNl |
| Lm1vam9tLkhpZERldmljZUluZm8ubWF4X2ZlYXR1cmVfcmVwb3J0X3NpemUifX0sIHsiZW5kIjog |
| NTM0OTYsICJiZWdpbiI6IDUzNDg1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg |
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n |
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu |
| YXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZERldmljZUluZm8uZGV2aWNlX25vZGUifX0sIHsiZW5k |
| IjogNTM2NDAsICJiZWdpbiI6IDUzNjE0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZERldmljZUluZm8ucHJvdGVjdGVkX2lucHV0X3Jl |
| cG9ydF9pZHMifX0sIHsiZW5kIjogNTM3ODYsICJiZWdpbiI6IDUzNzU5LCAiZWRnZSI6ICIlL2t5 |
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7 |
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n |
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZERldmljZUluZm8u |
| cHJvdGVjdGVkX291dHB1dF9yZXBvcnRfaWRzIn19LCB7ImVuZCI6IDUzOTM0LCAiYmVnaW4iOiA1 |
| MzkwNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5t |
| b2pvbS5IaWREZXZpY2VJbmZvLnByb3RlY3RlZF9mZWF0dXJlX3JlcG9ydF9pZHMifX0sIHsiZW5k |
| IjogNTQwNDIsICJiZWdpbiI6IDU0MDE4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLkhpZERldmljZUluZm8uaXNfZXhjbHVkZWRfYnlfYmxv |
| Y2tsaXN0In19XSwgInR5cGUiOiAia3l0aGUwIn0= |
| */ |