summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMerlin Jehli2024-04-28 00:09:31 +0200
committerMerlin Jehli2024-04-28 00:09:31 +0200
commit686d1ae221fcfd32b56a85f084c317720b277a48 (patch)
treef69746eee07852a58277064ea22ee77b97d6ddb4
parent6cd382fd93fb7c23520ac5d9ed01aee0809b2acd (diff)
downloadaur-686d1ae221fcfd32b56a85f084c317720b277a48.tar.gz
Update and description
-rw-r--r--.SRCINFO25
-rw-r--r--0002_added_machine_id_firmware_option.patch278
-rw-r--r--PKGBUILD10
3 files changed, 214 insertions, 99 deletions
diff --git a/.SRCINFO b/.SRCINFO
index dce80c44842e..ff14d6410454 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,7 @@
pkgbase = systemd-fml
- pkgver = 255.4
- pkgrel = 5
+ pkgdesc = systemd-stable with machine id from hw patch: https://github.com/systemd/systemd/pull/32086
+ pkgver = 255.5
+ pkgrel = 1
url = https://www.github.com/systemd/systemd
arch = x86_64
license = LGPL-2.1-or-later
@@ -52,7 +53,7 @@ pkgbase = systemd-fml
makedepends = lib32-gcc-libs
makedepends = python-pefile
conflicts = mkinitcpio<38-1
- source = systemd-fml-stable::git+https://github.com/systemd/systemd-stable#tag=v255.4
+ source = systemd-fml-stable::git+https://github.com/systemd/systemd-stable#tag=v255.5
source = 0001-Use-Arch-Linux-device-access-groups.patch
source = 0002_added_machine_id_firmware_option.patch
source = arch.conf
@@ -74,9 +75,9 @@ pkgbase = systemd-fml
validpgpkeys = A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E
validpgpkeys = 9A774DB5DB996C154EBBFBFDA0099A18E29326E1
validpgpkeys = 5C251B5FC54EB2F80F407AAAC54CA336CFEB557E
- sha512sums = 0c41c21931c5f08b5c91fe718d90f8cb11fb83429b3028bde9922605a35ea81d8452b00af99775b519b19195b8ba0084147d13dec1c5dfe9c905d769018b0676
+ sha512sums = ab0d47a29d60cb88f0934a9204c71cd78e2f5f568b9da532fdd4f8da55a352fce51cbcbaf17dc1a6f5b3c43ed7579876c724abcc2af5d8c4d3979f2ede60982f
sha512sums = 3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e
- sha512sums = 9980da54a6a5a8f81cb9a5ef6fd3de70408f95b9397c15f73b4b2bfe34fe66c2a6c95346b256e79a8376b6e99c7d01cec70d20d7c15ac16e05ed25967d5730c9
+ sha512sums = d2535a89e9b2326cd82e18ed4cc0e3acfb2dbac2431f64f4b9e1a4eb2fc54b4572a3ce6e480952bf5e920bb485e174eccb365667d4e433d235e5ef0649438d1c
sha512sums = 61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648
sha512sums = c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5
sha512sums = 5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75
@@ -148,9 +149,9 @@ pkgname = systemd-fml
optdepends = libp11-kit: support PKCS#11
optdepends = tpm2-tss: unlocking LUKS2 volumes with TPM2
provides = nss-myhostname
- provides = systemd-tools=255.4
- provides = udev=255.4
- provides = systemd=255.4
+ provides = systemd-tools=255.5
+ provides = udev=255.5
+ provides = systemd=255.5
conflicts = nss-myhostname
conflicts = systemd-tools
conflicts = udev
@@ -191,7 +192,7 @@ pkgname = systemd-libs-fml
provides = libsystemd
provides = libsystemd.so
provides = libudev.so
- provides = systemd-libs=255.4
+ provides = systemd-libs=255.5
conflicts = libsystemd
conflicts = systemd-libs
replaces = libsystemd
@@ -201,14 +202,14 @@ pkgname = systemd-resolvconf-fml
depends = systemd
provides = openresolv
provides = resolvconf
- provides = systemd-resolvconf=255.4
+ provides = systemd-resolvconf=255.5
conflicts = resolvconf
conflicts = systemd-resolvconf
pkgname = systemd-sysvcompat-fml
pkgdesc = sysvinit compat for systemd
depends = systemd
- provides = systemd-sysvcompat=255.4
+ provides = systemd-sysvcompat=255.5
conflicts = sysvinit
conflicts = systemd-sysvcompat
@@ -221,5 +222,5 @@ pkgname = systemd-ukify-fml
optdepends = python-pillow: Show the size of splash image
optdepends = sbsigntools: Sign the embedded kernel
provides = ukify
- provides = systemd-ukify=255.4
+ provides = systemd-ukify=255.5
conflicts = systemd-ukify
diff --git a/0002_added_machine_id_firmware_option.patch b/0002_added_machine_id_firmware_option.patch
index 456ef740e4e6..d389ebc1de41 100644
--- a/0002_added_machine_id_firmware_option.patch
+++ b/0002_added_machine_id_firmware_option.patch
@@ -1,113 +1,227 @@
-Subject: [PATCH] added systemd.machine_id=firmware option
----
-Index: man/machine-id.xml
+Index: src/shared/machine-id-setup.c
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
-diff --git a/man/machine-id.xml b/man/machine-id.xml
---- a/man/machine-id.xml (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5)
-+++ b/man/machine-id.xml (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85)
-@@ -102,7 +102,8 @@
- value of the kernel command line option <varname>container_uuid</varname>, the KVM DMI
- <filename>product_uuid</filename> or the devicetree <filename>vm,uuid</filename>
- (on KVM systems), the Xen hypervisor <filename>uuid</filename>, and finally a randomly
-- generated UUID.</para>
-+ generated UUID. <varname>systemd.machine_id=firmware</varname> can be set to generate the machine id
-+ from the firmware.</para>
-
- <para>After the machine ID is established,
- <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c
+--- a/src/shared/machine-id-setup.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
++++ b/src/shared/machine-id-setup.c (date 1714255351696)
+@@ -28,7 +28,8 @@
+ #include "umask-util.h"
+ #include "virt.h"
+
+-static int acquire_machine_id_from_credential(sd_id128_t *ret) {
++static int acquire_machine_id_from_credential(sd_id128_t *ret_machine_id, bool *ret_machine_id_from_firmware) {
++
+ _cleanup_free_ char *buf = NULL;
+ int r;
+
+@@ -38,7 +39,12 @@
+ if (r == 0) /* not found */
+ return -ENXIO;
+
+- r = sd_id128_from_string(buf, ret);
++ if (streq(buf, "firmware")) {
++ *ret_machine_id_from_firmware = true;
++ return 0;
++ }
++
++ r = sd_id128_from_string(buf, ret_machine_id);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to parse system.machine_id credential, ignoring: %m");
+
+@@ -46,7 +52,7 @@
+ return 0;
+ }
+
+-static int generate_machine_id(const char *root, sd_id128_t *ret) {
++static int generate_machine_id(const char *root, sd_id128_t *ret, bool machine_id_from_firmware) {
+ _cleanup_close_ int fd = -EBADF;
+ int r;
+
+@@ -61,7 +67,7 @@
+
+ if (isempty(root) && running_in_chroot() <= 0) {
+ /* Let's use a system credential for the machine ID if we can */
+- r = acquire_machine_id_from_credential(ret);
++ r = acquire_machine_id_from_credential(ret, &machine_id_from_firmware);
+ if (r >= 0)
+ return r;
+
+@@ -78,14 +84,14 @@
+ return 0;
+ }
+
+- } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN)) {
++ } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN) || machine_id_from_firmware) {
+
+ /* If we are not running in a container, see if we are running in a VM that provides
+ * a system UUID via the SMBIOS/DMI interfaces. Such environments include QEMU/KVM
+ * with the -uuid on the qemu command line or the Amazon EC2 Nitro hypervisor. */
+
+ if (id128_get_product(ret) >= 0) {
+- log_info("Initializing machine ID from VM UUID.");
++ log_info("Initializing machine ID from SMBIOS/DMI UUID.");
+ return 0;
+ }
+ }
+@@ -100,12 +106,16 @@
+ return 0;
+ }
+
+-int machine_id_setup(const char *root, bool force_transient, sd_id128_t machine_id, sd_id128_t *ret) {
++int machine_id_setup(const char *root, sd_id128_t machine_id, MachineIdSetupFlags flags, sd_id128_t *ret) {
+ const char *etc_machine_id, *run_machine_id;
+ _cleanup_close_ int fd = -EBADF;
+ bool writable;
++ bool machine_id_from_firmware = false;
+ int r;
+
++ if (flags & MACHINE_ID_SETUP_FORCE_FIRMWARE)
++ machine_id_from_firmware = true;
++
+ etc_machine_id = prefix_roota(root, "/etc/machine-id");
+
+ WITH_UMASK(0000) {
+@@ -138,14 +148,14 @@
+ }
+
+ /* A we got a valid machine ID argument, that's what counts */
+- if (sd_id128_is_null(machine_id)) {
++ if (sd_id128_is_null(machine_id) || machine_id_from_firmware) {
+
+ /* Try to read any existing machine ID */
+ if (id128_read_fd(fd, ID128_FORMAT_PLAIN, ret) >= 0)
+ return 0;
+
+ /* Hmm, so, the id currently stored is not useful, then let's generate one */
+- r = generate_machine_id(root, &machine_id);
++ r = generate_machine_id(root, &machine_id, machine_id_from_firmware);
+ if (r < 0)
+ return r;
+ }
+@@ -161,7 +171,7 @@
+ * disk and overmount it with a transient file.
+ *
+ * Otherwise write the machine-id directly to disk. */
+- if (force_transient) {
++ if (flags & MACHINE_ID_SETUP_FORCE_TRANSIENT) {
+ r = loop_write(fd, "uninitialized\n", SIZE_MAX);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write uninitialized %s: %m", etc_machine_id);
+@@ -199,7 +209,7 @@
+ return r;
+ }
+
+- log_full(force_transient ? LOG_DEBUG : LOG_INFO, "Installed transient %s file.", etc_machine_id);
++ log_full(flags & MACHINE_ID_SETUP_FORCE_TRANSIENT ? LOG_DEBUG : LOG_INFO, "Installed transient %s file.", etc_machine_id);
+
+ /* Mark the mount read-only */
+ r = mount_follow_verbose(LOG_WARNING, NULL, etc_machine_id, NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, NULL);
Index: src/core/main.c
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/core/main.c b/src/core/main.c
---- a/src/core/main.c (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5)
-+++ b/src/core/main.c (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85)
-@@ -354,10 +354,13 @@
+--- a/src/core/main.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
++++ b/src/core/main.c (date 1714255351649)
+@@ -144,6 +144,7 @@
+ static Set* arg_syscall_archs;
+ static FILE* arg_serialization;
+ static sd_id128_t arg_machine_id;
++static bool arg_machine_id_from_firmware = false;
+ static EmergencyAction arg_cad_burst_action;
+ static CPUSet arg_cpu_affinity;
+ static NUMAPolicy arg_numa_policy;
+@@ -352,10 +353,15 @@
if (proc_cmdline_value_missing(key, value))
return 0;
-
+
- r = id128_from_string_nonzero(value, &arg_machine_id);
- if (r < 0)
- log_warning_errno(r, "MachineID '%s' is not valid, ignoring: %m", value);
-
-+ if (streq(value, "firmware")) {
-+ arg_machine_id = SD_ID128_FIRMWARE;
-+ } else {
++ if (streq(value, "firmware"))
++ arg_machine_id_from_firmware = true;
++ else {
+ r = id128_from_string_nonzero(value, &arg_machine_id);
+ if (r < 0)
+ log_warning_errno(r, "MachineID '%s' is not valid, ignoring: %m", value);
++ else
++ arg_machine_id_from_firmware = false;
+ }
} else if (proc_cmdline_key_streq(key, "systemd.default_timeout_start_sec")) {
-
+
if (proc_cmdline_value_missing(key, value))
-Index: src/shared/machine-id-setup.c
+@@ -2234,8 +2240,13 @@
+
+ (void) os_release_status();
+ (void) hostname_setup(true);
+- /* Force transient machine-id on first boot. */
+- machine_id_setup(/* root= */ NULL, /* force_transient= */ first_boot, arg_machine_id, /* ret_machine_id */ NULL);
++
++ /* Set up the machine ID flags */
++ MachineIdSetupFlags machine_id_setup_flags = 0;
++ machine_id_setup_flags = (first_boot ? MACHINE_ID_SETUP_FORCE_TRANSIENT : 0) |
++ (arg_machine_id_from_firmware ? MACHINE_ID_SETUP_FORCE_FIRMWARE : 0);
++
++ machine_id_setup(/* root= */ NULL, arg_machine_id, machine_id_setup_flags, /* ret_machine_id */ NULL);
+ (void) loopback_setup();
+ bump_unix_max_dgram_qlen();
+ bump_file_max_and_nr_open();
+Index: man/machine-id.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
-diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c
---- a/src/shared/machine-id-setup.c (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5)
-+++ b/src/shared/machine-id-setup.c (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85)
-@@ -5,6 +5,7 @@
- #include <sys/mount.h>
- #include <unistd.h>
-
-+#include "proc-cmdline.h"
- #include "sd-id128.h"
-
-
-@@ -80,14 +81,14 @@
- return 0;
- }
-
-- } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN)) {
-+ } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN) || sd_id128_is_firmware(*ret)) {
-
- /* If we are not running in a container, see if we are running in a VM that provides
- * a system UUID via the SMBIOS/DMI interfaces. Such environments include QEMU/KVM
- * with the -uuid on the qemu command line or the Amazon EC2 Nitro hypervisor. */
-
- if (id128_get_product(ret) >= 0) {
-- log_info("Initializing machine ID from VM UUID.");
-+ log_info("Initializing machine ID from SMBIOS/DMI UUID.");
- return 0;
- }
- }
-@@ -140,7 +141,7 @@
- }
-
- /* A we got a valid machine ID argument, that's what counts */
-- if (sd_id128_is_null(machine_id)) {
-+ if (sd_id128_is_null(machine_id) || sd_id128_is_firmware(machine_id)) {
-
- /* Try to read any existing machine ID */
- if (id128_read_fd(fd, ID128_FORMAT_PLAIN, &machine_id) >= 0)
-Index: src/systemd/sd-id128.h
+diff --git a/man/machine-id.xml b/man/machine-id.xml
+--- a/man/machine-id.xml (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
++++ b/man/machine-id.xml (date 1714255351569)
+@@ -102,7 +102,8 @@
+ value of the kernel command line option <varname>container_uuid</varname>, the KVM DMI
+ <filename>product_uuid</filename> or the devicetree <filename>vm,uuid</filename>
+ (on KVM systems), the Xen hypervisor <filename>uuid</filename>, and finally a randomly
+- generated UUID.</para>
++ generated UUID. <varname>systemd.machine_id=firmware</varname> can be set to generate the machine id
++ from the firmware.</para>
+
+ <para>After the machine ID is established,
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+Index: src/machine-id-setup/machine-id-setup-main.c
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
-diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
---- a/src/systemd/sd-id128.h (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5)
-+++ b/src/systemd/sd-id128.h (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85)
-@@ -126,11 +126,16 @@
- return a.qwords[0] == 0 && a.qwords[1] == 0;
- }
-
-+_sd_pure_ static __inline__ int sd_id128_is_firmware(sd_id128_t a) {
-+ return a.qwords[0] == 0 && a.qwords[1] == 1;
-+}
+diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c
+--- a/src/machine-id-setup/machine-id-setup-main.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
++++ b/src/machine-id-setup/machine-id-setup-main.c (date 1714255351673)
+@@ -188,7 +188,7 @@
+ } else {
+ sd_id128_t id;
+
+- r = machine_id_setup(arg_root, false, SD_ID128_NULL, &id);
++ r = machine_id_setup(arg_root, SD_ID128_NULL, 0, &id);
+ if (r < 0)
+ return r;
+
+Index: src/shared/machine-id-setup.h
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/shared/machine-id-setup.h b/src/shared/machine-id-setup.h
+--- a/src/shared/machine-id-setup.h (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711)
++++ b/src/shared/machine-id-setup.h (date 1714255351713)
+@@ -3,5 +3,10 @@
+
+ #include <stdbool.h>
+
++typedef enum MachineIdSetupFlags {
++ MACHINE_ID_SETUP_FORCE_TRANSIENT = 1 << 0,
++ MACHINE_ID_SETUP_FORCE_FIRMWARE = 1 << 1,
++} MachineIdSetupFlags;
+
- _sd_pure_ static __inline__ int sd_id128_is_allf(sd_id128_t a) {
- return a.qwords[0] == UINT64_C(0xFFFFFFFFFFFFFFFF) && a.qwords[1] == UINT64_C(0xFFFFFFFFFFFFFFFF);
- }
-
- #define SD_ID128_NULL ((const sd_id128_t) { .qwords = { 0, 0 }})
-+#define SD_ID128_FIRMWARE ((const sd_id128_t) { .qwords = { 0, 1 }})
- #define SD_ID128_ALLF ((const sd_id128_t) { .qwords = { UINT64_C(0xFFFFFFFFFFFFFFFF), UINT64_C(0xFFFFFFFFFFFFFFFF) }})
-
- _sd_pure_ static __inline__ int sd_id128_in_setv(sd_id128_t a, va_list ap) {
+ int machine_id_commit(const char *root);
+-int machine_id_setup(const char *root, bool force_transient, sd_id128_t requested, sd_id128_t *ret);
++int machine_id_setup(const char *root, sd_id128_t machine_id, MachineIdSetupFlags flags, sd_id128_t *ret);
diff --git a/PKGBUILD b/PKGBUILD
index 17ec06d2b167..9ed0f1d4df49 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,7 +6,8 @@ pkgname=('systemd-fml'
'systemd-resolvconf-fml'
'systemd-sysvcompat-fml'
'systemd-ukify-fml')
-_tag='255.4'
+pkgdesc='systemd-stable with machine id from hw patch: https://github.com/systemd/systemd/pull/32086'
+_tag='255.5'
# Upstream versioning is incompatible with pacman's version comparisons so we
# replace tildes with the empty string to make sure pacman's version comparing
# does the right thing for rc versions:
@@ -15,7 +16,7 @@ _tag='255.4'
# ➜ vercmp 255rc1 255
# -1
pkgver="${_tag/~/}"
-pkgrel=5
+pkgrel=1
arch=('x86_64')
license=('LGPL-2.1-or-later')
url='https://www.github.com/systemd/systemd'
@@ -33,7 +34,6 @@ validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering <
'9A774DB5DB996C154EBBFBFDA0099A18E29326E1' # Yu Watanabe <watanabe.yu+github@gmail.com>
'5C251B5FC54EB2F80F407AAAC54CA336CFEB557E') # Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
source=("$pkgbase-stable::git+https://github.com/systemd/systemd-stable#tag=v${_tag}"
-# "$pkgbase::git+https://github.com/systemd/systemd#tag=v${_tag%.*}?signed"
'0001-Use-Arch-Linux-device-access-groups.patch'
'0002_added_machine_id_firmware_option.patch'
# bootloader files
@@ -55,9 +55,9 @@ source=("$pkgbase-stable::git+https://github.com/systemd/systemd-stable#tag=v${_
'30-systemd-udev-reload.hook'
'30-systemd-update.hook')
-sha512sums=('0c41c21931c5f08b5c91fe718d90f8cb11fb83429b3028bde9922605a35ea81d8452b00af99775b519b19195b8ba0084147d13dec1c5dfe9c905d769018b0676'
+sha512sums=('ab0d47a29d60cb88f0934a9204c71cd78e2f5f568b9da532fdd4f8da55a352fce51cbcbaf17dc1a6f5b3c43ed7579876c724abcc2af5d8c4d3979f2ede60982f'
'3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e'
- '9980da54a6a5a8f81cb9a5ef6fd3de70408f95b9397c15f73b4b2bfe34fe66c2a6c95346b256e79a8376b6e99c7d01cec70d20d7c15ac16e05ed25967d5730c9'
+ 'd2535a89e9b2326cd82e18ed4cc0e3acfb2dbac2431f64f4b9e1a4eb2fc54b4572a3ce6e480952bf5e920bb485e174eccb365667d4e433d235e5ef0649438d1c'
'61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648'
'c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5'
'5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75'