Compare commits
70 Commits
Author | SHA256 | Date | |
---|---|---|---|
3339a8c8c7 | |||
73ac162f98 | |||
1c3b4013b5 | |||
2725b78b8e | |||
|
8dace92026 | ||
bcb053c88b | |||
|
82380f061c | ||
|
71c74542d9 | ||
|
f05ae432d1 | ||
6e9adb1305 | |||
|
1540c60568 | ||
39aed69e5b | |||
|
1b181557cd | ||
d2cfc3a360 | |||
|
300e8a31b2 | ||
22b1d85aab | |||
12f7d540cc | |||
acb5906ade | |||
ae8af582f5 | |||
|
054f2a3488 | ||
be10cd150b | |||
|
9e80b11229 | ||
103ef0e7e8 | |||
|
2b4987b144 | ||
|
e418a7a454 | ||
|
acbb25ad65 | ||
|
ac2e8e2f0c | ||
1032db6e44 | |||
|
5b960576e0 | ||
9811977847 | |||
|
d67fd7a7dd | ||
6fd6e3d303 | |||
|
292428ea93 | ||
83e03f802e | |||
|
8784907685 | ||
fae10281e0 | |||
|
f8298c7b5e | ||
2143d8257f | |||
|
508e429528 | ||
45fd960f7b | |||
|
4f4da483dd | ||
|
8123c26635 | ||
20c189215d | |||
|
d42006b7a2 | ||
a5b0db87de | |||
|
262d774734 | ||
d640b12663 | |||
|
e9808a504a | ||
973b7d7e00 | |||
|
06885aabc7 | ||
2890656574 | |||
|
78c85b8c60 | ||
1808227a45 | |||
|
6c2c36fb61 | ||
|
e02a8f075e | ||
|
a014462a03 | ||
66c42f3e47 | |||
|
9a19407776 | ||
a4a6acb0a4 | |||
|
5ef713f48e | ||
275db9eefc | |||
|
fa2577dfb1 | ||
6ddc806833 | |||
|
5de860c1f4 | ||
cdc87adf0e | |||
ec7aba9473 | |||
|
afd376eb21 | ||
3ad57c7634 | |||
|
d6af5ce121 | ||
|
cce241a791 |
@@ -1,73 +0,0 @@
|
|||||||
From 582cbde53cfb9e79182663bfd7c86aa46c0b46eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
Date: Thu, 29 Aug 2024 15:20:54 -0400
|
|
||||||
Subject: [PATCH 1/3] kcms: pull dmidecode-helper into a separate dir
|
|
||||||
|
|
||||||
This allows us to reuse the helper in other
|
|
||||||
places, like the memory info kcm.
|
|
||||||
---
|
|
||||||
kcms/CMakeLists.txt | 1 +
|
|
||||||
kcms/about-distro/src/CMakeLists.txt | 2 --
|
|
||||||
kcms/helpers/CMakeLists.txt | 4 ++++
|
|
||||||
.../src => helpers}/dmidecode-helper/CMakeLists.txt | 0
|
|
||||||
.../{about-distro/src => helpers}/dmidecode-helper/helper.cpp | 0
|
|
||||||
kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h | 0
|
|
||||||
.../dmidecode-helper/org.kde.kinfocenter.dmidecode.actions | 0
|
|
||||||
7 files changed, 5 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 kcms/helpers/CMakeLists.txt
|
|
||||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/CMakeLists.txt (100%)
|
|
||||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.cpp (100%)
|
|
||||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h (100%)
|
|
||||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions (100%)
|
|
||||||
|
|
||||||
diff --git a/kcms/CMakeLists.txt b/kcms/CMakeLists.txt
|
|
||||||
index f283f477..ce534f40 100644
|
|
||||||
--- a/kcms/CMakeLists.txt
|
|
||||||
+++ b/kcms/CMakeLists.txt
|
|
||||||
@@ -1,3 +1,4 @@
|
|
||||||
+add_subdirectory(helpers)
|
|
||||||
|
|
||||||
add_subdirectory( about-distro )
|
|
||||||
add_subdirectory(vulkan)
|
|
||||||
diff --git a/kcms/about-distro/src/CMakeLists.txt b/kcms/about-distro/src/CMakeLists.txt
|
|
||||||
index fffb24d6..961ac959 100644
|
|
||||||
--- a/kcms/about-distro/src/CMakeLists.txt
|
|
||||||
+++ b/kcms/about-distro/src/CMakeLists.txt
|
|
||||||
@@ -1,8 +1,6 @@
|
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/Version.h)
|
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
-add_subdirectory(dmidecode-helper)
|
|
||||||
-
|
|
||||||
set(kcm_SRCS
|
|
||||||
CPUEntry.cpp
|
|
||||||
CPUEntry.h
|
|
||||||
diff --git a/kcms/helpers/CMakeLists.txt b/kcms/helpers/CMakeLists.txt
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..cbf024bd
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/kcms/helpers/CMakeLists.txt
|
|
||||||
@@ -0,0 +1,4 @@
|
|
||||||
+# SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
+
|
|
||||||
+add_subdirectory(dmidecode-helper)
|
|
||||||
diff --git a/kcms/about-distro/src/dmidecode-helper/CMakeLists.txt b/kcms/helpers/dmidecode-helper/CMakeLists.txt
|
|
||||||
similarity index 100%
|
|
||||||
rename from kcms/about-distro/src/dmidecode-helper/CMakeLists.txt
|
|
||||||
rename to kcms/helpers/dmidecode-helper/CMakeLists.txt
|
|
||||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
similarity index 100%
|
|
||||||
rename from kcms/about-distro/src/dmidecode-helper/helper.cpp
|
|
||||||
rename to kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
similarity index 100%
|
|
||||||
rename from kcms/about-distro/src/dmidecode-helper/helper.h
|
|
||||||
rename to kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
diff --git a/kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
similarity index 100%
|
|
||||||
rename from kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
rename to kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@@ -1,150 +0,0 @@
|
|||||||
From e6f449a1aa0bf5b1dceaff13390955bd3d21de9d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
Date: Thu, 5 Sep 2024 13:03:45 -0400
|
|
||||||
Subject: [PATCH 2/3] refactor(dmidecode-helper): support multiple methods
|
|
||||||
|
|
||||||
This allows the helper to extend and support other
|
|
||||||
types of information, eg. memory information.
|
|
||||||
---
|
|
||||||
kcms/helpers/dmidecode-helper/helper.cpp | 60 +++++++++++++++++-------
|
|
||||||
kcms/helpers/dmidecode-helper/helper.h | 15 ++++++
|
|
||||||
2 files changed, 58 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
index 396b2d74..e9d068dc 100644
|
|
||||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
||||||
// SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org>
|
|
||||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
|
|
||||||
#include "helper.h"
|
|
||||||
|
|
||||||
@@ -16,16 +17,18 @@ auto make_array(Input &&...args) -> std::array<Output, sizeof...(args)> // NB: w
|
|
||||||
return {std::forward<Input>(args)...};
|
|
||||||
}
|
|
||||||
|
|
||||||
-KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
+DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
|
||||||
+ : QObject(parent)
|
|
||||||
{
|
|
||||||
- Q_UNUSED(args);
|
|
||||||
-
|
|
||||||
// PATH is super minimal when invoked through dbus
|
|
||||||
setenv("PATH", "/usr/sbin:/sbin:/usr/local/sbin", 1);
|
|
||||||
- const QString dmidecode = QStandardPaths::findExecutable("dmidecode");
|
|
||||||
- if (dmidecode.isEmpty()) {
|
|
||||||
- return KAuth::ActionReply::HelperErrorReply();
|
|
||||||
- }
|
|
||||||
+
|
|
||||||
+ m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
+{
|
|
||||||
+ Q_UNUSED(args);
|
|
||||||
|
|
||||||
// NB: Microsoft also outlines a limited set of DMI values to be required for IOT OEM licensing, as such we
|
|
||||||
// can rely on the same fields to have sound content . Since this only applies to OEMs we still need to filter
|
|
||||||
@@ -33,19 +36,20 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
// https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/license-requirements?view=windows-11#smbios-support
|
|
||||||
|
|
||||||
KAuth::ActionReply reply;
|
|
||||||
- for (const auto &key : {QStringLiteral("system-manufacturer"),
|
|
||||||
- QStringLiteral("system-product-name"),
|
|
||||||
- QStringLiteral("system-version"),
|
|
||||||
- QStringLiteral("system-serial-number")}) {
|
|
||||||
- QProcess proc;
|
|
||||||
- proc.start(dmidecode, {QStringLiteral("--string"), key});
|
|
||||||
- proc.waitForFinished();
|
|
||||||
- const QByteArray output = proc.readAllStandardOutput().trimmed();
|
|
||||||
-
|
|
||||||
- if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
|
||||||
+
|
|
||||||
+ const auto keys = {QStringLiteral("system-manufacturer"),
|
|
||||||
+ QStringLiteral("system-product-name"),
|
|
||||||
+ QStringLiteral("system-version"),
|
|
||||||
+ QStringLiteral("system-serial-number")};
|
|
||||||
+
|
|
||||||
+ for (const auto &key : keys) {
|
|
||||||
+ auto result = executeDmidecode({QStringLiteral("--string"), key});
|
|
||||||
+ if (result.failed()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ const auto output = result.data().value("result").toString();
|
|
||||||
+
|
|
||||||
// Fairly exhaustive filter list based on a dozen or so samples gathered from reddit and other places.
|
|
||||||
// These are values that may appear in the DMI system information but aren't really useful.
|
|
||||||
static const auto dummyData = make_array<QString>(QStringLiteral("system version"),
|
|
||||||
@@ -59,12 +63,34 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
QStringLiteral("not specified"),
|
|
||||||
QStringLiteral("not applicable")
|
|
||||||
/* may also be empty, but that is filtered above already */);
|
|
||||||
+
|
|
||||||
if (std::find(dummyData.cbegin(), dummyData.cend(), output.toLower()) != dummyData.cend()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
reply.addData(key, output);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ return reply;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+KAuth::ActionReply DMIDecodeHelper::executeDmidecode(const QStringList &arguments)
|
|
||||||
+{
|
|
||||||
+ if (m_dmidecodePath.isEmpty()) {
|
|
||||||
+ return KAuth::ActionReply::HelperErrorReply();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ QProcess proc;
|
|
||||||
+ proc.start(m_dmidecodePath, arguments);
|
|
||||||
+ proc.waitForFinished();
|
|
||||||
+ const QByteArray output = proc.readAllStandardOutput().trimmed();
|
|
||||||
+
|
|
||||||
+ if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
|
||||||
+ return KAuth::ActionReply::HelperErrorReply();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ KAuth::ActionReply reply;
|
|
||||||
+ reply.addData("result", output);
|
|
||||||
return reply;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
index dd8fe90d..c1b588e8 100644
|
|
||||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
||||||
// SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
|
||||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
@@ -8,6 +9,20 @@
|
|
||||||
class DMIDecodeHelper : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
+
|
|
||||||
+public:
|
|
||||||
+ explicit DMIDecodeHelper(QObject *parent = nullptr);
|
|
||||||
+
|
|
||||||
public Q_SLOTS:
|
|
||||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
|
||||||
+
|
|
||||||
+private:
|
|
||||||
+ KAuth::ActionReply executeDmidecode(const QStringList &arguments);
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Path to the dmidecode binary.
|
|
||||||
+ *
|
|
||||||
+ * If the binary is not found, this helper will not work.
|
|
||||||
+ */
|
|
||||||
+ QString m_dmidecodePath;
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@@ -1,254 +0,0 @@
|
|||||||
From 375abcd571b991aa1ea8436fad6c7a4d30f62fa1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
Date: Mon, 14 Oct 2024 15:45:02 -0400
|
|
||||||
Subject: [PATCH 3/3] kcms/memory: use KAuth dmidecode helper
|
|
||||||
|
|
||||||
Refactor to use a KAuth helper to run dmidecode as
|
|
||||||
root, rather than using the CommandOutputContext.
|
|
||||||
|
|
||||||
This means the KCM no longer requires the user to
|
|
||||||
enter their password to view memory information,
|
|
||||||
and won't show an obtuse error like before if the
|
|
||||||
user cancelled the password dialog.
|
|
||||||
---
|
|
||||||
kcms/helpers/dmidecode-helper/helper.cpp | 26 ++++++++++
|
|
||||||
kcms/helpers/dmidecode-helper/helper.h | 5 ++
|
|
||||||
.../org.kde.kinfocenter.dmidecode.actions | 7 +++
|
|
||||||
kcms/memory/CMakeLists.txt | 9 +++-
|
|
||||||
kcms/memory/main.cpp | 48 ++++++++++++++++---
|
|
||||||
kcms/memory/ui/main.qml | 25 ++++++++--
|
|
||||||
6 files changed, 108 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
index e9d068dc..11921934 100644
|
|
||||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
|
||||||
@@ -26,6 +26,24 @@ DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
|
||||||
m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
|
||||||
}
|
|
||||||
|
|
||||||
+KAuth::ActionReply DMIDecodeHelper::memoryinformation(const QVariantMap &args)
|
|
||||||
+{
|
|
||||||
+ Q_UNUSED(args);
|
|
||||||
+
|
|
||||||
+ KAuth::ActionReply reply;
|
|
||||||
+ auto result = executeDmidecode({QStringLiteral("--type"), QStringLiteral("17")});
|
|
||||||
+
|
|
||||||
+ if (result.failed()) {
|
|
||||||
+ qWarning() << "DMIDecodeHelper: Unable to get memory information";
|
|
||||||
+ return KAuth::ActionReply::HelperErrorReply();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ const QString output = result.data().value("result").toString();
|
|
||||||
+ reply.addData("memory", output);
|
|
||||||
+
|
|
||||||
+ return reply;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
{
|
|
||||||
Q_UNUSED(args);
|
|
||||||
@@ -45,6 +63,8 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
for (const auto &key : keys) {
|
|
||||||
auto result = executeDmidecode({QStringLiteral("--string"), key});
|
|
||||||
if (result.failed()) {
|
|
||||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information for " << key;
|
|
||||||
+ // We don't want to fail the entire action if we can't get a single piece of information.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -71,6 +91,12 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
|
||||||
reply.addData(key, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (reply.data().isEmpty()) {
|
|
||||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information";
|
|
||||||
+ // If we didn't get any data, we should fail the action.
|
|
||||||
+ return KAuth::ActionReply::HelperErrorReply();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return reply;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
index c1b588e8..805d5fa6 100644
|
|
||||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
|
||||||
@@ -14,6 +14,11 @@ public:
|
|
||||||
explicit DMIDecodeHelper(QObject *parent = nullptr);
|
|
||||||
|
|
||||||
public Q_SLOTS:
|
|
||||||
+ /**
|
|
||||||
+ * Retrieves memory (RAM) information from dmidecode.
|
|
||||||
+ */
|
|
||||||
+ KAuth::ActionReply memoryinformation(const QVariantMap &args);
|
|
||||||
+
|
|
||||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
|
||||||
|
|
||||||
private:
|
|
||||||
diff --git a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
index 66d3aa99..9f0c76f3 100644
|
|
||||||
--- a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
+++ b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
|
||||||
@@ -1,5 +1,7 @@
|
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
# SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
|
||||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
+
|
|
||||||
[Domain]
|
|
||||||
Icon=computer
|
|
||||||
URL=https://www.kde.org
|
|
||||||
@@ -47,6 +49,11 @@ Name[x-test]=xxDesktop Management Interfacexx
|
|
||||||
Name[zh_CN]=桌面管理界面 (DMI)
|
|
||||||
Name[zh_TW]=桌面管理介面
|
|
||||||
|
|
||||||
+[org.kde.kinfocenter.dmidecode.memoryinformation]
|
|
||||||
+Policy=yes
|
|
||||||
+Name=Memory Information
|
|
||||||
+Description=Read memory information from system's Desktop Management Interface (DMI)
|
|
||||||
+
|
|
||||||
[org.kde.kinfocenter.dmidecode.systeminformation]
|
|
||||||
Policy=yes
|
|
||||||
PolicyInactive=yes
|
|
||||||
diff --git a/kcms/memory/CMakeLists.txt b/kcms/memory/CMakeLists.txt
|
|
||||||
index 49219ac4..59c93b69 100644
|
|
||||||
--- a/kcms/memory/CMakeLists.txt
|
|
||||||
+++ b/kcms/memory/CMakeLists.txt
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
# SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
|
||||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
|
|
||||||
find_package(dmidecode)
|
|
||||||
set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
|
||||||
@@ -7,4 +8,10 @@ set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
|
||||||
add_definitions(-DTRANSLATION_DOMAIN=\"kcm_memory\")
|
|
||||||
|
|
||||||
kinfocenter_add_kcm(kcm_memory main.cpp)
|
|
||||||
-target_link_libraries(kcm_memory PRIVATE KF6::CoreAddons KF6::KCMUtilsQuick KF6::I18n KInfoCenterInternal)
|
|
||||||
+target_link_libraries(kcm_memory PRIVATE
|
|
||||||
+ KF6::AuthCore
|
|
||||||
+ KF6::CoreAddons
|
|
||||||
+ KF6::KCMUtilsQuick
|
|
||||||
+ KF6::I18n
|
|
||||||
+ KInfoCenterInternal
|
|
||||||
+)
|
|
||||||
diff --git a/kcms/memory/main.cpp b/kcms/memory/main.cpp
|
|
||||||
index d2190140..7aab18ce 100644
|
|
||||||
--- a/kcms/memory/main.cpp
|
|
||||||
+++ b/kcms/memory/main.cpp
|
|
||||||
@@ -1,30 +1,64 @@
|
|
||||||
/*
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
||||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
|
||||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#include <KAuth/Action>
|
|
||||||
+#include <KAuth/ExecuteJob>
|
|
||||||
+#include <KLocalizedString>
|
|
||||||
#include <KPluginFactory>
|
|
||||||
#include <KQuickConfigModule>
|
|
||||||
|
|
||||||
-#include "CommandOutputContext.h"
|
|
||||||
-
|
|
||||||
class KCMMemory : public KQuickConfigModule
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
- Q_PROPERTY(CommandOutputContext *infoOutputContext READ outputContext CONSTANT FINAL)
|
|
||||||
+ Q_PROPERTY(QString memoryInformation READ memoryInformation NOTIFY changed)
|
|
||||||
public:
|
|
||||||
explicit KCMMemory(QObject *parent, const KPluginMetaData &data)
|
|
||||||
: KQuickConfigModule(parent, data)
|
|
||||||
{
|
|
||||||
- m_outputContext = new CommandOutputContext(QStringLiteral("pkexec"), {"dmidecode", "--type", "17"}, parent);
|
|
||||||
+ loadData();
|
|
||||||
}
|
|
||||||
- CommandOutputContext *outputContext() const
|
|
||||||
+
|
|
||||||
+ QString memoryInformation() const
|
|
||||||
{
|
|
||||||
- return m_outputContext;
|
|
||||||
+ return m_memoryInformation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
- CommandOutputContext *m_outputContext;
|
|
||||||
+ Q_SIGNAL void changed();
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * The memory information that will be displayed in the KCM.
|
|
||||||
+ */
|
|
||||||
+ QString m_memoryInformation;
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Load the memory information from the dmidecode helper.
|
|
||||||
+ */
|
|
||||||
+ void loadData()
|
|
||||||
+ {
|
|
||||||
+ KAuth::Action action(QStringLiteral("org.kde.kinfocenter.dmidecode.memoryinformation"));
|
|
||||||
+ action.setHelperId(QStringLiteral("org.kde.kinfocenter.dmidecode"));
|
|
||||||
+ KAuth::ExecuteJob *job = action.execute();
|
|
||||||
+
|
|
||||||
+ connect(job, &KJob::result, this, [this, job]() {
|
|
||||||
+ if (job->error()) {
|
|
||||||
+ qWarning() << "Failed to retrieve memory information: " << job->errorString();
|
|
||||||
+ return;
|
|
||||||
+ } else {
|
|
||||||
+ const auto reply = job->data();
|
|
||||||
+ if (reply.contains("memory")) {
|
|
||||||
+ m_memoryInformation = reply["memory"].toString();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Q_EMIT changed();
|
|
||||||
+ });
|
|
||||||
+
|
|
||||||
+ job->start();
|
|
||||||
+ }
|
|
||||||
};
|
|
||||||
|
|
||||||
K_PLUGIN_CLASS_WITH_JSON(KCMMemory, "kcm_memory.json")
|
|
||||||
diff --git a/kcms/memory/ui/main.qml b/kcms/memory/ui/main.qml
|
|
||||||
index 0300d619..42fdcbc7 100644
|
|
||||||
--- a/kcms/memory/ui/main.qml
|
|
||||||
+++ b/kcms/memory/ui/main.qml
|
|
||||||
@@ -1,14 +1,31 @@
|
|
||||||
/*
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
||||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
|
||||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
-import QtQuick 2.5
|
|
||||||
+import QtQuick 2.15
|
|
||||||
|
|
||||||
+import org.kde.kirigami 2.20 as Kirigami
|
|
||||||
import org.kde.kcmutils as KCM
|
|
||||||
|
|
||||||
-import org.kde.kinfocenter.private 1.0 as KInfoCenter
|
|
||||||
+KCM.SimpleKCM {
|
|
||||||
+ id: kcm_memory
|
|
||||||
+ Kirigami.Theme.colorSet: Kirigami.Theme.View
|
|
||||||
+ Kirigami.Theme.inherit: false
|
|
||||||
|
|
||||||
-KInfoCenter.CommandOutputKCM {
|
|
||||||
- output: kcm.infoOutputContext
|
|
||||||
+ Kirigami.PlaceholderMessage {
|
|
||||||
+ anchors.centerIn: parent
|
|
||||||
+ width: parent.width - (Kirigami.Units.largeSpacing * 8)
|
|
||||||
+ visible: kcm.memoryInformation === ""
|
|
||||||
+ icon.name: "data-warning"
|
|
||||||
+ text: i18ndc("kinfocenter", "@info the KCM has no data to display", "No data available")
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Kirigami.SelectableLabel {
|
|
||||||
+ id: text
|
|
||||||
+ text: kcm.memoryInformation
|
|
||||||
+ font.family: "monospace"
|
|
||||||
+ visible: kcm.memoryInformation !== ""
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:69c4bebf97c5a980c3da57deedfff628254f03b7c094cca8d742f537bfc45738
|
|
||||||
size 718828
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmaWVKMACgkQ11dEg7tX
|
|
||||||
sY3JMQ//Vdl6zMvBjoSN2gQQZK0Cq+lEiZHQsewVQXT9SgiZPrrjyHX0fv2l0Mpp
|
|
||||||
h8Q+wyQuvgBY5JYOslz5UVp/FdQwIeglWKTQ/SzifOizPsBT4P0brqDJEzcz5BJJ
|
|
||||||
eZtnzqVMMu2avmdOoBpgNR/oiSu4FSgwsRsSFrKEBTDT7DPE0CUsbTuUEIX5zy4l
|
|
||||||
iDjc2Nyv5On/O8OCCgN7aMV3Rp0fZtdrJXiqPeP05iY/R/AtBjzr3gk724Rc6T2N
|
|
||||||
zMHEZQDAsp1uluWhIKL/Wo8mkHdxSuQUk2fefnQ9USVPRb4oB3F2eIteYqzi4lVl
|
|
||||||
9FA9BptbZfvB9dcd9b8MPBg0ZKQ6ft1KbqdP2pKOBOHHcImaBvAhf8+3zHJL4mNP
|
|
||||||
AG+kvCfAhfAy1HrZX3w2LaT0H29N85ACgXAEiseUvSW7gRK18DNhTATztVMYF1tV
|
|
||||||
Nf1PFumtvtVFPhkqYYBAGv/bnTVRXQGVA5uI/4aN/CRN/y6tA3RbvkqHf4aZH/K0
|
|
||||||
/kK8tLcoy6sNyiPXZ+8N35PUDRrNl8A+6C39RgYznjFr4IVuODXSSmJtnRFm7RZB
|
|
||||||
c4kBzrylL7wdPHPGjjnADHj7bC7VZo2zxLqD6iHvIVZhknRxKbZsJL96CziFspD0
|
|
||||||
/4dEIYE6KpR6yjhjZ3qdq/0AmiOcE+DPDEpwZ+mj7RhAvxjukaI=
|
|
||||||
=H72k
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:179dfdc224ff66f1d692456560b1c9f0dd74b568e233347182316709ac2520d9
|
|
||||||
size 718988
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmayGCEACgkQ11dEg7tX
|
|
||||||
sY0/kw/9HIB8Hbw4Mz0qmz0xmswOKEkoRErJhUR56EhPh0uNFQsvMidUB5ubpHyJ
|
|
||||||
x4JDX8dvAzT1uPITDfG7fLq9gPRUoJkALLXl4serf61nE5zdWAGVuSgK+NMQFN8t
|
|
||||||
fHrH/cZfqKMbtszFDO/IDpPj5Kr2Irwdi/bgVkZSrkyaKrznOVkAZp1GIwo79y97
|
|
||||||
jRet86vZPwmlhSTtmcCeIOgkMz7JkxZ6O0pb+bb7m6cIE2IIITNFWXBv0xgcPsO0
|
|
||||||
AmqZc4hnR3yf91dFoQp4M2PQZwBmV+MboIRxmvJFkojd3uiqAeXjKllKP/zp/3Gn
|
|
||||||
KA/U8lbsP0qAzvRrJGn8QZ5L2pWsSdPjiT9hkJ5qFgkNOxM+xZyvGPbAte/yo58i
|
|
||||||
VDrReeiQKoIcnvworlcZUiEMNai0kRJP+UA6MUhV9vViOB6ZTgRIQ/imukeSJana
|
|
||||||
+qC8kz6dzcKdzU8b/gu88VKJfTEARjLpAhwx3JqLKKgR6fq3XUfK5AqdELrJV1gc
|
|
||||||
Asjsix4mFV5QzDQaPwk4k/ye0kV2L45cLue072R3kqGWstWM5hbAh5NjffSIyqPt
|
|
||||||
Zy+E/f5JxtFh4u3WZRyZPHF9wR66lTe4CzYXCnploFMBz7gA7f+dtyiA5uQ+YdYU
|
|
||||||
ulTrwTTX0H4RJEADErfZkWMlFOE+eQsn3yCA9uZy9/6uRv78F1A=
|
|
||||||
=lLoV
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0976ae43756b6ddbf4e70e750cb17f422dabe7604c5e2f824ab4f1e0161ae5d0
|
|
||||||
size 720016
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmbgCFQACgkQ11dEg7tX
|
|
||||||
sY2jxRAAukjAlx7cA4jJNgoqhjKhqjoYTJuhcZPxkwKVqyyGcArtHlciKGndpz/d
|
|
||||||
2YyoN6HDY9z8tIbwJTgJ2mPNqHnwaT8FPitkA8fO54McoWnfqCUNCVOE56wKYZPq
|
|
||||||
T3bqlLfO1fipyGsffs+ivTXl1jYWjt8wGSSnVI/a89/HKcn/snqAoTvhlfnzQg5m
|
|
||||||
SIsxPEXjP9lPuDJtKbvUWHV5ZzlZ8RY/EfeOzIYzypBP9eftqsEgVrZqdSnaiSat
|
|
||||||
+16ffHMl2CThSJ8y/6yUIAo65MNX+Ikw1oYWjRPhArmUPDpes15r+wdd/gkqWAJi
|
|
||||||
GfDL5pSwv5A8h+0BF9y0DHLpjAP5TDpja0kyVfGeUFfoSg9mNGWmfux4C5NOjW0D
|
|
||||||
ul0jalqz0D+PbIE7Q3ft2X65gQaoUfyI4qN49M649UHN04e5Eu15P5Wkbimo/qo2
|
|
||||||
Js+ESeYvBTkYGiWrGlJ6iSqOJgAM1olmaSw/7smuMYJA7RtRKwk26QOOZmEvzlST
|
|
||||||
UmrG8Ljto8FKRFuIvLha6vIsvbGjSLcI4Cu9doX3DZ7sw99msB49EUI5GRtM3n37
|
|
||||||
GWrzHwKswlNrjdUXrJVpbVYc1mHsrghOWGv2pwm73gYyUm3jU7+pHTTc1xcdozw/
|
|
||||||
4oxAlZyoUTvDPA5432JLObQf+jScjXIOSASzuiZcpdNkMEFmYeE=
|
|
||||||
=acRA
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:508730f7b44dc85ba4e67caf526199528cefcf3dd603f6280917a930e0fe06cc
|
|
||||||
size 729176
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmb+j+oACgkQ11dEg7tX
|
|
||||||
sY24wg//ZVyr962LpPxP+eaAnBqgNW0svVjOS9IA7Nmct0Ux0uGM0pFNPKq+RMrI
|
|
||||||
6ieWbSBBVzwhk32/Phi5u5F0LCbIQMs2r7I+Uouj+MbYte4AxBD1PureLlm91S+n
|
|
||||||
lJZrx+FJDuSxUQ+jN1e7B2SCST7ZL92EHrQX9FTGAFBs4ZyEz6oJJ5F6IKNnN7D7
|
|
||||||
gpn0agtaW6DbfXLIP4VZ3/4niNtbOCAsZquY+hY4hyzVgeVzaAfror8wvzyaEyI6
|
|
||||||
bzFzN+vFUzuAzBUm2a7cx3/ETfX/d/nFMZ65VPxKPhgVznk5+HH1jEcu0Xbw4oQb
|
|
||||||
vA67c1DdT77sXFYp6KDt9OxKSH+foPS18WVcFRV7RuJ+KQPp4zgvug32ZLahnzcw
|
|
||||||
FCD0Vx6iWP+9ZWMgmTHz+Bm8pGJFKG9P+7aM0AkanYmVJlxKprc+P7geo8iq6Um7
|
|
||||||
xO/rnw7x/5ht//6lwzUxq4Cd6Wh9kMlugV3zpajGriH0ffavybvppWQjvVfKBR0b
|
|
||||||
WnvywpM4XMp5RErF08kk9/H5LNoYDkhg+E+mR1YOLJU0aRxUOQSacIxivA77quRl
|
|
||||||
ys5Nw01QztnfHIdjQKXn2J7OroYmrCfYxOvn2Zg/6qTFUzYMfE6Lq+Nk33pk3jxM
|
|
||||||
+wh23CF8oGjZB3ksIRPFw7f07JUb51wJix7rDY8rx5PL/0VhFro=
|
|
||||||
=uQfZ
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:504162e6c9ba91f3d1af0898debe2b6a9c3f515bffb589227e739907b68060eb
|
|
||||||
size 731224
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcOan0ACgkQ11dEg7tX
|
|
||||||
sY3HtQ/9FEUzzWZTP5U5zNePx7nId/dmRqZG7jRfOMZU7PaFxKmuLj0rkjP63Auj
|
|
||||||
SjhzSkEdSGP/q9rprpmZSywk7IOjKdIJYcFDaWKMvR21xbZmvv84lF8Gt4Mb5zI6
|
|
||||||
PoCJYcVDJtTFbhZhyUqarkjx4/v+urERzbqlFR5mzPk9NnRYC91NGY5Jj2zgFNb3
|
|
||||||
mD0dZ8ItnbZ+OvTubiA6tJEIeLHJEajrB+ldl3ope7as83EFEMgCOUWkB2zrFjQj
|
|
||||||
j+KxawmzwoJ5GwdQq003bH5/SV7Rm65oksXtgpXS8EakH/W2vrqn9dHGJ3Lgz9CK
|
|
||||||
miIqKZcSVqojyGIbnbc8Ro4YhPEMv2CeKND94Eg9+Ws9ogTR9c7f6lvrxs3pkEY7
|
|
||||||
+zXAqWxgYwOJFpzAzBVlwSqTVnETg2yXXkCeN27txz+ZBlmSlpNaP54uzEhywukn
|
|
||||||
gNv7nz4SqmXrWFLGRhd2SxFym/EyS2IgkJW/A0d0DyihRV/7hPQhkuYiZeSJH3zM
|
|
||||||
wM0OtlHYcJ75mfIsjGaEFqbPm9zKy5VTEuymcYJ1BCyuP9FGQ6xywycDaLCnyzK8
|
|
||||||
2fg3zM9jqI2ROn/+XKpWO+H2sq0E2vV3p2nMkhVV0qjvtebICHLUWIPg/EHu8Jok
|
|
||||||
GW8b/27xecwETYpJDeBAN/miNbicI9qPpho+CLdzRtszHazpiJs=
|
|
||||||
=PIpt
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:897ed12aac54bf9ccdc3deba549009dd483ab1117839a382ebf022a1e9accca0
|
|
||||||
size 731288
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcqEQEACgkQ11dEg7tX
|
|
||||||
sY1gug/+Nh3/DGwSMgTWUzipy6b1fo5McJaPq7tf8HgDw6GXFkEp7VyzrxGzt6Gh
|
|
||||||
x6M8J8gN8dyvKovx5xJGs6iXn6iJHFBCBjdh4BSo1is8SX/E4m/ix5ykNGdZZCFY
|
|
||||||
RnjVy/90pJkHs34qZQblnJ/j86karj5Chz6cc9J4Ynsogw9uI3bms5kEZ98QiSru
|
|
||||||
Wtn9pkULqWPnY4sPnoiOibAg5KCOwgqY/oB6BkGVkybn1xVQQAznCk/LhupaffEo
|
|
||||||
rGLF1l1Hea3w2MiEgw/4jm7pMzwy9NBAMRmIbOfOvz/YINDl0o582UpuuzCejx3f
|
|
||||||
V2Z1ssObOAYklhh9Q4u5B8wH0SqEfuIuSVvq3sgpCClTdS/+3vvKVxeoQf8C0V7c
|
|
||||||
XNd5tF3oDJ/SeLLtTUaujc/a4JYw516Nx1vEZA9i3EEfbRfbQXiQaaQSNhSQbY2m
|
|
||||||
s9lbdd4SX1yxsBYx/uteeSagwRvkNmLnmNv+Ck5LIb/pB5h2tdl2c37zhj37Zw0v
|
|
||||||
nmEl3UvqBH3T8i+/t9NFD5CosKCxTGFnow9q/S9gTEaLPDdb0i2aXSRgvKkufjfU
|
|
||||||
HuFXBvZLomI94Jv8ONPgKD9/aEuHwemNNL2KLAI2d1KznN7u53imw2evkujNmeGI
|
|
||||||
jWbm7WbMr3BogwZ25t/ualu6B/SsHQdKsoEUZ8n9MYUjBF2q5uc=
|
|
||||||
=bXyY
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:6bdda6067f6d1156a258a43a56d73412620ff224b0640b3ea424adf122303ba2
|
|
||||||
size 731644
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdFndYACgkQ11dEg7tX
|
|
||||||
sY0JOA//Tdqbi1K44D+WDIYfO49Hi7t2bamjOgRLbLlr0YXfF0UBapZfilvCtRcF
|
|
||||||
SpPmV0XCkwcQOXfSlkxCJ+fpImuEqSATspi2kbV3Z8t1LKKA4x9ps3I2dCRZ2SNZ
|
|
||||||
jTHS43z1osqewRM0U3qDzN1YzEBEaeMop59YP2ULjBx9IVXPoT9OR82FRe01pl/+
|
|
||||||
uLU6IEo7kqRfNiZEf4r6jfVa8Bnw2ZcXpHDOsy3xXvIpXapqB8PcGTpVTpi0Pg46
|
|
||||||
I1H/N2vdUK3TpBg1JV/ZKc3OyJvesiRTm4I8CjpR8Nz4MnSFMsseqvFAfVI4QdQx
|
|
||||||
8NXNgOYEyQRuTy6CHNmAWo3RGvQpz4suDWIXuTIHgZ/hXnxGxjogCvBMUYzHD1M6
|
|
||||||
ZIZF6Z5DOq08/J3janDjVTR4cF92sHylzkvx5IP/KW/zeTGTr9SrVNpXiyQaBTsM
|
|
||||||
T6wQ/gHKVTYYti4tE9qtC8KIjA2W3n5OCrzpz+DXQVjdgbZdMAt3ePvjCDE2sC4p
|
|
||||||
umAAwj7sEtrHZ/e0bxwQSRvUy1FCviF6403hFx4vmf5UiTBuxyHepPSm4aHVs4Wq
|
|
||||||
q+v3OV8TKzaVIVP2eHbP+Yw5ghHY1FzVtnB3zayYLNeIhwE3J5vrj5+Y7wQsCGLH
|
|
||||||
4YNFtoW9bD/FivLHBUqj7imN7a3qCQtRUI1GRI1p+HCBME3pexA=
|
|
||||||
=E8Kl
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9ed87edb3a24256189f8dc79c821b8f45589aab7032d8dde78d5d94cf0639ff9
|
|
||||||
size 732392
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdy7PgACgkQ11dEg7tX
|
|
||||||
sY3N8hAAsQDSequKrBIJc6JJYxMSimq2LOBRTRMKp4nGDRIXMFzUKMVxjLiQY3DH
|
|
||||||
IgwGY7o12cxYvRnM3Ub3UEpFyeLfYgGFno9qIntp/cfj7Ef7T13z0a1xKjAXGaZT
|
|
||||||
5D14BRhRkCspSe6wXQB7Y4tkct16Uag7/Wk7jLb+FIU4VIFU5PiINT59L2YfOp1U
|
|
||||||
1guzAyiA9J6rbj9317IAMBWq/poHVYr8gqUOjCV3r+KcKzG7AHBHBbjfbwPHcXu4
|
|
||||||
RBCc7zTISi6/rTD5+5M3G5j5x4AYmHzZS44+TvNt82u17Nl+9yzhRFmSuYgtkojw
|
|
||||||
7zZ33RLgGkalYGvuQia/MeiUUGyTT4ygitanF+Q+qbYVV9jbnOjzfmLKHGt7MMQ+
|
|
||||||
gA1trPk2VUoRsxE5IOI+KrvEAuj40DUQKHYkz0ZoKOLpFXsIohguX2zAlq1QfSB3
|
|
||||||
XeFquIq/MYusgw99AS/A4NWa8Qz/lrM75kE6CdbDfyAXabXrCdj0XpxgqYHJyjVW
|
|
||||||
7vKD4WeUtp7Vx7frm488SWxCqblRmf0R6j+USpAXCs7MZHQACmw4PBMGZCFbrA0O
|
|
||||||
AEnoU0JgbjKsOc+jbta263m+qxF1yDol2tzX2w8PagwzgJaAhJNV31P4g6EIW3+g
|
|
||||||
Izq2PJoS64C9mkAUdSt95IBoc+EbLoRs5DZhkY/WY7wmmzBA6tg=
|
|
||||||
=BdEQ
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:20fb607366d166390dc18beca8f9321813924305a0adfee91f795e4e05ead311
|
|
||||||
size 747832
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmeklpAACgkQ11dEg7tX
|
|
||||||
sY2hpw//Sag4OEMDZy5QB5oyl00yeJpowAWSRlo0i5qEImrpLYboz7wtxdLxy9kw
|
|
||||||
cDsSIPvevfjUE8SEBPcPmbipDzW8vk3F32fEH4us7icJLng9uRg788hDurFhnN7b
|
|
||||||
fQ2wxiJHFyddWDNvuxk/xa4vHolgAJOAwlxXXMqvxXeNBUKaPlNS2VVkYt/7Fwgk
|
|
||||||
b4gqKBtgsYz2/Pari0n3L2jqOA/YUOMC3q3jpvdsINcV0T8uwsbQrO9NAlUQ/ppH
|
|
||||||
2FtnWO5+Di5Mea9dD2DHjSEtu4QdDgmGyUYXLPT1/qddvIB2OREurz73rn5nWVv7
|
|
||||||
kXR2Fs0NTjNa6850H0spAPmxGKpi9U9GdVxeBOosJB+Gafo94NquSEd3d9PqCuA2
|
|
||||||
J0mm+z3D5DvyZMwgiCQAsgd6UlSVN4I82XrOOVFmF2O82++rjpBn+4QyBFaO182I
|
|
||||||
RkUa9IpkaUG/2caEIMUzf2PLSNx9ibkxTQm30khvBDlHxwGGT7FVLrv9G+b6jk3Y
|
|
||||||
pxeSUStL2yOUNt2GYav8L3hqiKlIeZKFkv6yXoST7GyhZXLXJLqmWq/Y7rkZqzg9
|
|
||||||
MruVXciqBpV6E6we+RgrAIzcJiyYbGa9IYC5TlwN6C2RU5QxRmaLwQwhs36mFgKR
|
|
||||||
1BdwZ2W/Nq3sZaa/odonU9TrClhEkcHETk/G/5yvXcV4YMyjOlQ=
|
|
||||||
=6GpF
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:8370baddb5e389769c65103d7105acfad15a13bc12c98fe351a913264ff8587c
|
|
||||||
size 748632
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAme0iwsACgkQ11dEg7tX
|
|
||||||
sY1Y2A/+IlSol1RdonTNj+5IMa12hFhE4BheuwWq/aRmMagz8hp2zuaYIZD5MFkw
|
|
||||||
ALAc2MdowQG/uJ7XMQ/yIlbnz5K1sxlxynp2bsEmqC8wPRP116ZQQTA3JHB1lL+4
|
|
||||||
KZgHlM5Y8cOyZgAz42jH6lF2gKSfIi1iUdNebz8bUFJJYuzrplM586bJKP8ecTv/
|
|
||||||
QdOrMELhSHk9bJPcQrqlBVitY/6hJYBHtqjOGGWlzM5ULzbcW9AxyynRqmJGvt56
|
|
||||||
Be/3C8z1WJBx/GlJV8ozwF//P5BPPCP0Whx8pdM4Wy6KeZH09qapotR1/1IrB6SZ
|
|
||||||
KWPQ1boUZ8hEt0rC9qs0v8bLHIDNim5qI10nUPA8272bE8y0Ytb4cm98XVIrkF2T
|
|
||||||
e7x6g/PZFX7/6Y9hIVhYnFr6BzilycyMGy66nE61GVWEEUqEQtNRNwOEqSE1QbRT
|
|
||||||
L/r+CYxBtVeT5rRf6KfntguWBrdS2XfFKs9+CAga6aWj9F2Z/xPLS8jkpuRNp6H8
|
|
||||||
N8M3dMpvLQv0iQN2AFc0jYKWb7BK4mtq0yEM6q0DXkXPp0MMBqbKGKDesoyqWWox
|
|
||||||
fB0MXjUlu2gDHqO4AHgVS75MCfvTLDppX/31AYbokckX83sFdbJ7pViMeJ1evxf3
|
|
||||||
rs42Qw4VH/7dYvup9435B2EQWVWqhC3jDFg/UIrCo6EeOtZ7dio=
|
|
||||||
=VQ6f
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:c9269e50c451fd7b880b81013bdbdcddec14ba24e6f0b5d95fd035bd26eac5eb
|
|
||||||
size 748688
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAme96owACgkQ11dEg7tX
|
|
||||||
sY0iAQ/+M5x1At2/I2zYY2w8PVrT0JhSBgXAc36QqnfMv12zwqnu5+oYl16m8K1C
|
|
||||||
TgWEDTghDn/cW2aAExqpAZvf5NxJWmX6GRhMb9W1PwzeYxoc/pgD+JGp6MW8rWM3
|
|
||||||
OWwdugRocJVL3jFg7cu96Gku8lH81HdLbGb8GmyenWylGZdYXVWCkG3vgOGNhw3g
|
|
||||||
oti5Q9G/yo7/XPDh7yuP5e+ZUeT7sAZ7PG23cXpJaK/WzNaetytEMOKsWSVhXe8m
|
|
||||||
JG76dJS4uhGv2Yy/jidN9Onr/VDL7yCE1dJwY77aJq5IRugdnsAyIlCb0TBYNFbB
|
|
||||||
LhxeMjv3vpHPnGB7kNd4qJOXqimrCy16AqxFPJvQcrXQFbxMypeASdXcElYNmu0g
|
|
||||||
f1l66+S43tx0dWtQwG2wZ90sox+KgnMt+YLb1t++wjWFQ4A6hSfrd1+Ya85hawbg
|
|
||||||
rbhMVNCJDI8v/H5DY0N47MEEjXnNftERD+NsLfEC4f6eTsAq4XeUaxYzMSenT7gA
|
|
||||||
jzldw/Q56wL5dHcFqRbfMjUITyFhMgWrjd48Id3p/hxyv4YqNtggUd9muHJhT8Po
|
|
||||||
H0envuJR23+4VwnO9eprx6dghLc4kZ5LKz5Lch67YebyiboTxiYn6vE0+qrIizv4
|
|
||||||
bQEA6mpVsSvYD7fADE/VdkT40a3IKL8MH1deL514adqzQrCRvnA=
|
|
||||||
=DV//
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:26182e215e55b4f3ab60e980bbae5d0b1a6795406d11901ed33822e84812eea2
|
|
||||||
size 749032
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmfQPY8ACgkQ11dEg7tX
|
|
||||||
sY3DrA/9H1G55dWVTUEZei/dDxQKuEwgC6Dlu4iuJTg6UzcBgt5HdjnBvMiAmZ4X
|
|
||||||
00IQg+bhHBWx/glvB2UoV7rm1BMixV3Z2Fd7b/3onvQpHR7OXCVNN135P8qMNvr1
|
|
||||||
6Gq5akYy/VdTcnoVMY3+uSAwz96iOoko8QPXrTZfqz1BfOXjsC9Vuh/WZlBgJSr+
|
|
||||||
YA3chrvqNzkS+lu3GnaM5GFiaAWmjL14+aJxMFByOl/rdf9jsdIjnzGjxOftZ1Wj
|
|
||||||
B/P/1RihA2JV4cojA/YUnlNecAP/GnYLwfRcqHbhnnD95a/EuSIuucVR/gxryHA5
|
|
||||||
8VzancQRVSF6jxEWNrQ+IgPpNlTfnVjPVgUpbt+QZVDHQrHi+aAmKrucisICdXOO
|
|
||||||
KlSOW72HvNh603lmyKA3W1vTvlPu4bnk/lpcasXyjaTuKkYhvM7GQTwnCsat/Plk
|
|
||||||
SYqJGQ49Jb1y4eu10oUsTm/ff31VLHbs3P6GRGHKbYMNN4GX5FhUDSfo0tJivhF9
|
|
||||||
2lJmFqO4wodz5RRKFlZNlOE/6wKJuX8i2umMLnGXvhYgoYLkbgBvQ5+jUtyLOEnE
|
|
||||||
QWYFhxH0WQQHoRo3DiEnrkT5lVizk1VtX+bbmfWgY8qFnW7IrGkKadK6XH+gdOfY
|
|
||||||
jRs7plWVW6VuMormI5rA4N7JRme1MaF7mB8/4vBdgFvRVtdGD8c=
|
|
||||||
=LkLk
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:8ab78619f6c05e7162099d52ba83b0b5d11a3985cc4b0abf4112d91f815c2f69
|
|
||||||
size 749116
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmfssKsACgkQ11dEg7tX
|
|
||||||
sY1wqw/6AsIAQLu60plwtkXm3sVuK3ZkkaY1vCaXxQGahzTC31PPGs0KTJdkHaku
|
|
||||||
Fr/ivC3yssKPldGHpHrqcNHXGDE12piet9IYteU/yCdsAswvAquPSw6jp734n5ql
|
|
||||||
wA7s0SZM7sDkGN5Jdv9mpLv5z1Itw90ZN0k1nx8+Xss1imRpH2DIebjPCUJzOBhY
|
|
||||||
ZaoOgXaVE/JKyPSAbs+3BoZZcFYn4Hk2ZPIyL5ecfirjHn9hXt1ZlgWMn1KyvdLa
|
|
||||||
399tzY9EA2DlUA2PtcxWHlqa9gvBwSwSk0twclX4XmJrE1q2Y02COHLJnZElnpfT
|
|
||||||
wEzPXR0ZoSz5g8AcoJ6Hhdn6yVu1IOzf87FdpG2TjiFRMeCIZFcjorCvEWeG/3hS
|
|
||||||
uaiZu16IqtzDMWA7bHLtMB29/f2vap/6/kWNPTyC9yP3dpaXt6S2/25mOeLOLnof
|
|
||||||
6YHnd37sRFim+0JOD5bWOf2OMkCeYriHHE/eZKd5avoVi15xvSicqI5hlS+RkMBp
|
|
||||||
bE+GXWdMwwBRDgvicDX8aAEkqA+jdRF74G7XpYxkxtTPVCm77s7CiQLIKG+FMb6S
|
|
||||||
GODL4jdnajvdC1BBht8xGxj3ofgMz/X+AUjgSGz2nkTThb8mAfuVR9LRornn8GbO
|
|
||||||
7GcA633HNcB1e6VxahOS6S1fDp6whljE+6/T0eg6Z0f41sZs9UU=
|
|
||||||
=uXwj
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:403544aeeb606ffb3be55da4213d1712cbf93534c0982e38204ad863e01ae8c3
|
|
||||||
size 749100
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmgaTV4ACgkQ11dEg7tX
|
|
||||||
sY2VWA/+Pm+sHd5P3Yd3vmVX0P61kDuqrkEWd5/vDgKEbNRDyVceC1Zst4DDpo57
|
|
||||||
fmE5+0V6/sa7yDKTWt6rnF8EswMONHwi1pSaVJPEp9tuO/RgLs5pmSG7zlXGFb7u
|
|
||||||
OqPOiI3nysFepnLMF0/FODEmKt4FrNo2fgK2lkk0aCIWFAIP3SihkaVpmSnH4t0j
|
|
||||||
Ke2/hRmQxoMkyL+WtzU6AlcpHwRERsNn+oAkg2G0gB7rGvbbctx4kXi73YL+XjbI
|
|
||||||
cA02y2vTzMcupHVuiLpYFhlrLg4yxU9oc2OKF2UdvnT7XYtd+UGdH458HJuuc7Zx
|
|
||||||
pqsnWBZYhcIWOtMIv4jYncWYQkg/JtzE9GG051/ZpPl+JsNZK7qemibfIRHyPVL2
|
|
||||||
+IO7DFiUWoIOZAlCdx/nB+I8TKQHrtBpBRZql2Q8n0b781i2wWB39taep4fJEFZ7
|
|
||||||
k/zaP+/hmog2gbbDriFXN7HSWAxw2u4AY3EnO81hXX0g65hMGELJ0x8uG6DA89Wu
|
|
||||||
vyVYV44S/UJfsVt0OIzQncA91oPRgtgmIZpuigzvvWEv2clcQrVCdLX6I/zsUWGK
|
|
||||||
3gxuQPcSjiVen3XUhWEIVA+TsYam0HtndQ8W0bie8H+gqNuua/t9/RAd+L/ypMCI
|
|
||||||
TUQ+DrISOwItYMTeK9YUtZb0HFqOYiBI64DQqOzFpueFkwh4qmY=
|
|
||||||
=LH2q
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:20eafbae78a437f767b8b6e9493875b230033f9760454732e810483c82127927
|
|
||||||
size 758196
|
|
@@ -1,11 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQEzBAABCgAdFiEEs8s2ZVJUC+Bu6a2XEZaMRJKMrvwFAmhacDwACgkQEZaMRJKM
|
|
||||||
rvywKwf/afg8FZljY030lwyDduvqkk0HqmT1q667DLLCxbdWKaAlejMZUxDmKKJv
|
|
||||||
5GglO3j9bHqNxqrsUxfA+pdMdDugYJCzFg4XXR3xeBf2pE2a7PfczTsQQ4aGLel7
|
|
||||||
iszLAwLe0XeLb29Em7yLd+X1aiFrBIgdd3YAYtNZIfuZOorUQdN+WHwif1rT35tY
|
|
||||||
BH5ZokChQNBBNTq/JUUHon/KobnbHSiX6vE8JyjhLQ+QJZJKgP5+jErmRwbfJnOP
|
|
||||||
rMD82qeZbVQiIiQvO3s2Oqzodk1gtwU5B2QrasEw+tt9H22jnKL6xL4mWZffzlSg
|
|
||||||
KCXeYtg4S699pNJlJD6pDeJuPybVuw==
|
|
||||||
=YIgq
|
|
||||||
-----END PGP SIGNATURE-----
|
|
Reference in New Issue
Block a user