From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 8EB1415800A for ; Fri, 14 Jul 2023 09:44:28 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1C367E08C4; Fri, 14 Jul 2023 09:44:25 +0000 (UTC) Received: from mail-40133.protonmail.ch (mail-40133.protonmail.ch [185.70.40.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 93785E08BE for ; Fri, 14 Jul 2023 09:44:24 +0000 (UTC) Date: Fri, 14 Jul 2023 09:44:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail3; t=1689327861; x=1689587061; bh=iu4gbdbnoPtOKBCSEx6pSbsUG0Fo26flq/j4/bNzlrU=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=YdbFHaqZsNzcujuDchWk5sYNa1Qqr7TdjLm/Wbj1YsETx3DE/l4eFS8ZLRl8KNuqJ mF7zFfihbYSU1flyTmiOv7J81yGpeoLWHp+bCkFZK0nsEQXYX6l1GVPWcgHq0AN+X+ rObhRa96iVOMtb0Un8Q9ZOKiqgyJB5BfL6u4+FdbblyogtB2b7AH1GyCiqZ8HwIaby 3gPp8HMiqX/F5g7CJcOT6FH7fMejQh3Beg38nXtUuhPi1f+U68CBPfvqKmG6xgbrQE E3MMC+2un7uWwVlSUvrufrLUXrsWeQnjOa1z5CcVKEgh/hlqUbRg+X34olyNvfVuXV pJ8wTFHkIVshw== To: "gentoo-dev@lists.gentoo.org" From: freijon@pm.me Subject: [gentoo-dev] Re: shell-completion.eclass Message-ID: In-Reply-To: References: Feedback-ID: 11347655:user:proton Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="------f7f59e399ce14dea150468388225d6ca13e5f173de93765fd695469789ca5ad1"; charset=utf-8 X-Archives-Salt: 971a719b-1f78-47eb-856b-fb9e37df83a4 X-Archives-Hash: 1f25e527b3d238f9c4a1359439a3562b This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------f7f59e399ce14dea150468388225d6ca13e5f173de93765fd695469789ca5ad1 Content-Type: multipart/mixed;boundary=---------------------7954ee476747fcdcb9cdabe662daecd5 -----------------------7954ee476747fcdcb9cdabe662daecd5 Content-Type: multipart/alternative;boundary=---------------------48ccd72f76d6ff98f2dcb86327831528 -----------------------48ccd72f76d6ff98f2dcb86327831528 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 For convenience I attach the proposed eclass for review: From: Jonas Frei Date: =C2=A0 Fri Jul 14 11:13:14 2023 +020= 0 Subject: shell-completion.eclass shell-completion.eclass: Add new eclass Signed-off-by: Jonas Frei diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.ecla= ss new file mode 100644 index 000000000000..b7b59802a5f7 --- /dev/null +++ b/eclass/shell-completion.eclass @@ -0,0 +1,114 @@ +# Copyright 2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: shell-completion.eclass +# @SUPPORTED_EAPIS: 8 +# @PROVIDES: bash-completion-r1 +# @AUTHOR: +# Alfred Wingate +# @MAINTAINER: +# Jonas Frei +# @BLURB: a few quick functions to install various shell completion files +# @DESCRIPTION: +# This eclass provides a standardised way to install shell completions +# for popular shells. =C2=A0It inherits the already widely adopted +# 'bash-completion-r1', thus extending on its functionality. + +case ${EAPI} in + 8) ;; + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" +esac + +if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then +_SHELL_COMPLETION_ECLASS=3D1 + +# Extend bash-completion-r1 +inherit bash-completion-r1 + +# @FUNCTION: _shell-completion_get_fishcompdir +# @INTERNAL +# @RETURN: unprefixed fish completions directory +_shell-completion_get_fishcompdir() { + echo "/usr/share/fish/vendor_completions.d" +} + +# @FUNCTION: _shell-completion_get_zshcompdir +# @INTERNAL +# @RETURN: unprefixed zsh completions directory +_shell-completion_get_zshcompdir() { + echo "/usr/share/zsh/site-functions" +} + +# @FUNCTION: get_fishcompdir +# @RETURN: the fish completions directory (with EPREFIX) +get_fishcompdir() { + debug-print-function ${FUNCNAME} "${@}" + + echo "${EPREFIX}$(_shell-completion_get_fishcompdir)" +} + +# @FUNCTION: get_zshcompdir +# @RETURN: the zsh completions directory (with EPREFIX) +get_zshcompdir() { + debug-print-function ${FUNCNAME} "${@}" + + echo "${EPREFIX}$(_shell-completion_get_zshcompdir)" +} + +# @FUNCTION: dofishcomp +# @USAGE: +# @DESCRIPTION: +# Install fish completion files passed as args. +dofishcomp() { + debug-print-function ${FUNCNAME} "${@}" + + ( + insopts -m 0644 + insinto "$(_shell-completion_get_fishcompdir)" + doins "${@}" + ) +} + +# @FUNCTION: dozshcomp +# @USAGE: +# @DESCRIPTION: +# Install zsh completion files passed as args. +dozshcomp() { + debug-print-function ${FUNCNAME} "${@}" + + ( + insopts -m 0644 + insinto "$(_shell-completion_get_zshcompdir)" + doins "${@}" + ) +} + +# @FUNCTION: newfishcomp +# @USAGE: +# @DESCRIPTION: +# Install fish file under a new name. +newfishcomp() { + debug-print-function ${FUNCNAME} "${@}" + + ( + insopts -m 0644 + insinto "$(_shell-completion_get_fishcompdir)" + newins "${@}" + ) +} + +# @FUNCTION: newzshcomp +# @USAGE: +# @DESCRIPTION: +# Install zsh file under a new name. +newzshcomp() { + debug-print-function ${FUNCNAME} "${@}" + + ( + insopts -m 0644 + insinto "$(_shell-completion_get_zshcompdir)" + newins "${@}" + ) +} + +fi ------- Original Message ------- On Tuesday, July 11th, 2023 at 12:36 PM, freijon@pm.me wro= te: > On July 2nd we had a discussion on #gentoo-guru on IRC about adding shel= l-completion.eclass to ::gentoo. It's already well established on GURU and= used in 23 ebuilds. It's basically bash-completion-r1, but also includes = `zsh` and `fish` with standard install locations for the completion script= s. > For the raison d'=C3=AAtre, see: https://bugs.gentoo.org/843875 > = > Check out the eclass here: https://gitweb.gentoo.org/repo/proj/guru.git/= tree/eclass/shell-completion.eclass > = > I hereby ask for a code review and to add this eclass to the ::gentoo re= pository. > = > I offer to continue maintaining the eclass and Florian Schmaus (Flow) of= fered to co-maintain the eclass. > = > Please let me know your thoughts about this. -----------------------48ccd72f76d6ff98f2dcb86327831528 Content-Type: multipart/related;boundary=---------------------b2547fd9db7b5ee3e2cb54ed5cdff08a -----------------------b2547fd9db7b5ee3e2cb54ed5cdff08a Content-Type: text/html;charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0 cHg7Ij5Gb3IgY29udmVuaWVuY2UgSSBhdHRhY2ggdGhlIHByb3Bvc2VkIGVjbGFzcyBmb3IgcmV2 aWV3OjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxNHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyI+PHNwYW4+RnJvbTogSm9uYXMgRnJlaSAmbHQ7 PGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub2ZvbGxvdyBub29wZW5lciIgaHJl Zj0ibWFpbHRvOmZyZWlqb25AcG0ubWUiPmZyZWlqb25AcG0ubWU8L2E+Jmd0Ozwvc3Bhbj48ZGl2 PjxzcGFuPkRhdGU6ICZuYnNwOyBGcmkgSnVsIDE0IDExOjEzOjE0IDIwMjMgKzAyMDA8L3NwYW4+ PC9kaXY+PGRpdj48c3Bhbj5TdWJqZWN0OiBzaGVsbC1jb21wbGV0aW9uLmVjbGFzczwvc3Bhbj48 L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuPnNoZWxsLWNvbXBsZXRpb24uZWNsYXNzOiBB ZGQgbmV3IGVjbGFzczwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPiZuYnNwOyAmbmJzcDsgPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4+U2lnbmVkLW9mZi1ieTogSm9uYXMgRnJlaSAmbHQ7PGEgdGFyZ2V0 PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub2ZvbGxvdyBub29wZW5lciIgaHJlZj0ibWFpbHRv OmZyZWlqb25AcG0ubWUiPmZyZWlqb25AcG0ubWU8L2E+Jmd0Ozwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPmRpZmYgLS1naXQgYS9lY2xhc3Mvc2hlbGwtY29tcGxldGlvbi5lY2xhc3MgYi9lY2xhc3Mv c2hlbGwtY29tcGxldGlvbi5lY2xhc3M8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5uZXcgZmlsZSBt b2RlIDEwMDY0NDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPmluZGV4IDAwMDAwMDAwMDAwMC4uYjdi NTk4MDJhNWY3PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+LS0tIC9kZXYvbnVsbDwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuPisrKyBiL2VjbGFzcy9zaGVsbC1jb21wbGV0aW9uLmVjbGFzczwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuPkBAIC0wLDAgKzEsMTE0IEBAPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+ KyMgQ29weXJpZ2h0IDIwMjMgR2VudG9vIEF1dGhvcnM8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4r IyBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHYyPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu PisjIEBFQ0xBU1M6IHNoZWxsLWNvbXBsZXRpb24uZWNsYXNzPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+KyMgQFNVUFBPUlRFRF9FQVBJUzogODwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBQUk9W SURFUzogYmFzaC1jb21wbGV0aW9uLXIxPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQEFVVEhP Ujo8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rIyBBbGZyZWQgV2luZ2F0ZSAmbHQ7PGEgdGFyZ2V0 PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub2ZvbGxvdyBub29wZW5lciIgaHJlZj0ibWFpbHRv OnBhcm9uYUBwcm90b25tYWlsLmNvbSI+cGFyb25hQHByb3Rvbm1haWwuY29tPC9hPiZndDs8L3Nw YW4+PC9kaXY+PGRpdj48c3Bhbj4rIyBATUFJTlRBSU5FUjo8L3NwYW4+PC9kaXY+PGRpdj48c3Bh bj4rIyBKb25hcyBGcmVpICZsdDs8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5v Zm9sbG93IG5vb3BlbmVyIiBocmVmPSJtYWlsdG86ZnJlaWpvbkBwbS5tZSI+ZnJlaWpvbkBwbS5t ZTwvYT4mZ3Q7PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQEJMVVJCOiBhIGZldyBxdWljayBm dW5jdGlvbnMgdG8gaW5zdGFsbCB2YXJpb3VzIHNoZWxsIGNvbXBsZXRpb24gZmlsZXM8L3NwYW4+ PC9kaXY+PGRpdj48c3Bhbj4rIyBAREVTQ1JJUFRJT046PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+ KyMgVGhpcyBlY2xhc3MgcHJvdmlkZXMgYSBzdGFuZGFyZGlzZWQgd2F5IHRvIGluc3RhbGwgc2hl bGwgY29tcGxldGlvbnM8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rIyBmb3IgcG9wdWxhciBzaGVs bHMuICZuYnNwO0l0IGluaGVyaXRzIHRoZSBhbHJlYWR5IHdpZGVseSBhZG9wdGVkPC9zcGFuPjwv ZGl2PjxkaXY+PHNwYW4+KyMgJ2Jhc2gtY29tcGxldGlvbi1yMScsIHRodXMgZXh0ZW5kaW5nIG9u IGl0cyBmdW5jdGlvbmFsaXR5Ljwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8L3NwYW4+PC9kaXY+ PGRpdj48c3Bhbj4rY2FzZSAke0VBUEl9IGluPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kwk4KSA7 Ozwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisJKikgZGllICIke0VDTEFTU306IEVBUEkgJHtFQVBJ Oi0wfSBub3Qgc3VwcG9ydGVkIjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitlc2FjPC9zcGFuPjwv ZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitpZiBbWyAhICR7X1NIRUxM X0NPTVBMRVRJT05fRUNMQVNTfSBdXTsgdGhlbjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitfU0hF TExfQ09NUExFVElPTl9FQ0xBU1M9MTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8L3NwYW4+PC9k aXY+PGRpdj48c3Bhbj4rIyBFeHRlbmQgYmFzaC1jb21wbGV0aW9uLXIxPC9zcGFuPjwvZGl2Pjxk aXY+PHNwYW4+K2luaGVyaXQgYmFzaC1jb21wbGV0aW9uLXIxPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBGVU5DVElPTjogX3NoZWxsLWNvbXBsZXRp b25fZ2V0X2Zpc2hjb21wZGlyPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQElOVEVSTkFMPC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQFJFVFVSTjogdW5wcmVmaXhlZCBmaXNoIGNvbXBsZXRp b25zIGRpcmVjdG9yeTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitfc2hlbGwtY29tcGxldGlvbl9n ZXRfZmlzaGNvbXBkaXIoKSB7PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KwllY2hvICIvdXNyL3No YXJlL2Zpc2gvdmVuZG9yX2NvbXBsZXRpb25zLmQiPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+K308 L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQEZVTkNU SU9OOiBfc2hlbGwtY29tcGxldGlvbl9nZXRfenNoY29tcGRpcjwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPisjIEBJTlRFUk5BTDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBSRVRVUk46IHVucHJl Zml4ZWQgenNoIGNvbXBsZXRpb25zIGRpcmVjdG9yeTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitf c2hlbGwtY29tcGxldGlvbl9nZXRfenNoY29tcGRpcigpIHs8L3NwYW4+PC9kaXY+PGRpdj48c3Bh bj4rCWVjaG8gIi91c3Ivc2hhcmUvenNoL3NpdGUtZnVuY3Rpb25zIjwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuPit9PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu PisjIEBGVU5DVElPTjogZ2V0X2Zpc2hjb21wZGlyPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMg QFJFVFVSTjogdGhlIGZpc2ggY29tcGxldGlvbnMgZGlyZWN0b3J5ICh3aXRoIEVQUkVGSVgpPC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4+K2dldF9maXNoY29tcGRpcigpIHs8L3NwYW4+PC9kaXY+PGRp dj48c3Bhbj4rCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9Ijwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuPis8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCWVjaG8gIiR7RVBSRUZJ WH0kKF9zaGVsbC1jb21wbGV0aW9uX2dldF9maXNoY29tcGRpcikiPC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4+K308L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+ KyMgQEZVTkNUSU9OOiBnZXRfenNoY29tcGRpcjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBS RVRVUk46IHRoZSB6c2ggY29tcGxldGlvbnMgZGlyZWN0b3J5ICh3aXRoIEVQUkVGSVgpPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4+K2dldF96c2hjb21wZGlyKCkgezwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iPC9zcGFuPjwvZGl2 PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisJZWNobyAiJHtFUFJFRklYfSQo X3NoZWxsLWNvbXBsZXRpb25fZ2V0X3pzaGNvbXBkaXIpIjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu Pit9PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBG VU5DVElPTjogZG9maXNoY29tcDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEBVU0FHRTogJmx0 O2ZpbGUuLi4mZ3Q7PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQERFU0NSSVBUSU9OOjwvc3Bh bj48L2Rpdj48ZGl2PjxzcGFuPisjIEluc3RhbGwgZmlzaCBjb21wbGV0aW9uIGZpbGVzIHBhc3Nl ZCBhcyBhcmdzLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPitkb2Zpc2hjb21wKCkgezwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuPisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0i PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisJKDwvc3Bh bj48L2Rpdj48ZGl2PjxzcGFuPisJCWluc29wdHMgLW0gMDY0NDwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPisJCWluc2ludG8gIiQoX3NoZWxsLWNvbXBsZXRpb25fZ2V0X2Zpc2hjb21wZGlyKSI8L3Nw YW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlkb2lucyAiJHtAfSI8L3NwYW4+PC9kaXY+PGRpdj48c3Bh bj4rCSk8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rfTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8 L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rIyBARlVOQ1RJT046IGRvenNoY29tcDwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuPisjIEBVU0FHRTogJmx0O2ZpbGUuLi4mZ3Q7PC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4+KyMgQERFU0NSSVBUSU9OOjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEluc3RhbGwg enNoIGNvbXBsZXRpb24gZmlsZXMgcGFzc2VkIGFzIGFyZ3MuPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+K2RvenNoY29tcCgpIHs8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCWRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9Ijwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8L3NwYW4+ PC9kaXY+PGRpdj48c3Bhbj4rCSg8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlpbnNvcHRzIC1t IDA2NDQ8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlpbnNpbnRvICIkKF9zaGVsbC1jb21wbGV0 aW9uX2dldF96c2hjb21wZGlyKSI8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlkb2lucyAiJHtA fSI8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCSk8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rfTwv c3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rIyBARlVOQ1RJ T046IG5ld2Zpc2hjb21wPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQFVTQUdFOiAmbHQ7Zmls ZSZndDsgJmx0O25ld25hbWUmZ3Q7PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQERFU0NSSVBU SU9OOjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisjIEluc3RhbGwgZmlzaCBmaWxlIHVuZGVyIGEg bmV3IG5hbWUuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+K25ld2Zpc2hjb21wKCkgezwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuPisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0i PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+Kzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPisJKDwvc3Bh bj48L2Rpdj48ZGl2PjxzcGFuPisJCWluc29wdHMgLW0gMDY0NDwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPisJCWluc2ludG8gIiQoX3NoZWxsLWNvbXBsZXRpb25fZ2V0X2Zpc2hjb21wZGlyKSI8L3Nw YW4+PC9kaXY+PGRpdj48c3Bhbj4rCQluZXdpbnMgIiR7QH0iPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+KwkpPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+K308L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4r PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQEZVTkNUSU9OOiBuZXd6c2hjb21wPC9zcGFuPjwv ZGl2PjxkaXY+PHNwYW4+KyMgQFVTQUdFOiAmbHQ7ZmlsZSZndDsgJmx0O25ld25hbWUmZ3Q7PC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4+KyMgQERFU0NSSVBUSU9OOjwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuPisjIEluc3RhbGwgenNoIGZpbGUgdW5kZXIgYSBuZXcgbmFtZS48L3NwYW4+PC9kaXY+PGRp dj48c3Bhbj4rbmV3enNoY29tcCgpIHs8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCWRlYnVnLXBy aW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9Ijwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPis8 L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCSg8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlpbnNv cHRzIC1tIDA2NDQ8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQlpbnNpbnRvICIkKF9zaGVsbC1j b21wbGV0aW9uX2dldF96c2hjb21wZGlyKSI8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rCQluZXdp bnMgIiR7QH0iPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+KwkpPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+K308L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4rPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+K2Zp PC9zcGFuPjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9j ayBwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay1lbXB0eSIgc3R5bGU9ImZvbnQtZmFtaWx5OiBB cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyI+CiAgICA8ZGl2IGNsYXNzPSJwcm90 b25tYWlsX3NpZ25hdHVyZV9ibG9jay11c2VyIHByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrLWVt cHR5Ij4KICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAKICAgICAgICAgICAgPGRpdiBj bGFzcz0icHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stcHJvdG9uIHByb3Rvbm1haWxfc2lnbmF0 dXJlX2Jsb2NrLWVtcHR5Ij4KICAgICAgICAKICAgICAgICAgICAgPC9kaXY+PGJyPjwvZGl2Pjxk aXYgY2xhc3M9InByb3Rvbm1haWxfcXVvdGUiPgogICAgICAgIC0tLS0tLS0gT3JpZ2luYWwgTWVz c2FnZSAtLS0tLS0tPGJyPgogICAgICAgIE9uIFR1ZXNkYXksIEp1bHkgMTF0aCwgMjAyMyBhdCAx MjozNiBQTSwgZnJlaWpvbkBwbS5tZSAmbHQ7ZnJlaWpvbkBwbS5tZSZndDsgd3JvdGU6PGJyPjxi cj4KICAgICAgICA8YmxvY2txdW90ZSBjbGFzcz0icHJvdG9ubWFpbF9xdW90ZSIgdHlwZT0iY2l0 ZSI+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJp ZjsgZm9udC1zaXplOiAxNHB4OyI+PHNwYW4+T24gSnVseSAybmQgd2UgaGFkIGEgZGlzY3Vzc2lv biBvbiAjZ2VudG9vLWd1cnUgb24gSVJDIGFib3V0IGFkZGluZyBzaGVsbC1jb21wbGV0aW9uLmVj bGFzcyB0byA6OmdlbnRvby4gSXQncyBhbHJlYWR5IHdlbGwgZXN0YWJsaXNoZWQgb24gR1VSVSBh bmQgdXNlZCBpbiAyMyBlYnVpbGRzLiBJdCdzIGJhc2ljYWxseSBiYXNoLWNvbXBsZXRpb24tcjEs IGJ1dCBhbHNvIGluY2x1ZGVzIGB6c2hgIGFuZCBgZmlzaGAgd2l0aCBzdGFuZGFyZCBpbnN0YWxs IGxvY2F0aW9ucyBmb3IgdGhlIGNvbXBsZXRpb24gc2NyaXB0cy48L3NwYW4+PGRpdj48YnI+PC9k aXY+PGRpdj48c3Bhbj5Gb3IgdGhlIHJhaXNvbiBkJ8OqdHJlLCBzZWU6IDxhIGhyZWY9Imh0dHBz Oi8vYnVncy5nZW50b28ub3JnLzg0Mzg3NSIgcmVsPSJub3JlZmVycmVyIG5vZm9sbG93IG5vb3Bl bmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvODQzODc1PC9hPjwv c3Bhbj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuPkNoZWNrIG91dCB0aGUgZWNsYXNz IGhlcmU6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0d2ViLmdlbnRvby5vcmcvcmVwby9wcm9qL2d1cnUu Z2l0L3RyZWUvZWNsYXNzL3NoZWxsLWNvbXBsZXRpb24uZWNsYXNzIiByZWw9Im5vcmVmZXJyZXIg bm9mb2xsb3cgbm9vcGVuZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdHdlYi5nZW50b28u b3JnL3JlcG8vcHJvai9ndXJ1LmdpdC90cmVlL2VjbGFzcy9zaGVsbC1jb21wbGV0aW9uLmVjbGFz czwvYT48L3NwYW4+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48c3Bhbj5JIGhlcmVieSBhc2sg Zm9yIGEgY29kZSByZXZpZXcgYW5kIHRvIGFkZCB0aGlzIGVjbGFzcyB0byB0aGUgOjpnZW50b28g cmVwb3NpdG9yeS48L3NwYW4+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48c3Bhbj5JIG9mZmVy IHRvIGNvbnRpbnVlIG1haW50YWluaW5nIHRoZSBlY2xhc3MgYW5kIEZsb3JpYW4gU2NobWF1cyAo Rmxvdykgb2ZmZXJlZCB0byBjby1tYWludGFpbiB0aGUgZWNsYXNzLjwvc3Bhbj48L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2PjxzcGFuPlBsZWFzZSBsZXQgbWUga25vdyB5b3VyIHRob3VnaHRzIGFi b3V0IHRoaXMuPC9zcGFuPjwvZGl2PjwvZGl2Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQXJp YWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSJwcm90b25tYWlsX3NpZ25h dHVyZV9ibG9jayBwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay1lbXB0eSI+CiAgICA8ZGl2IGNs YXNzPSJwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay11c2VyIHByb3Rvbm1haWxfc2lnbmF0dXJl X2Jsb2NrLWVtcHR5Ij48L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3Rvbm1haWxf c2lnbmF0dXJlX2Jsb2NrLXByb3RvbiBwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay1lbXB0eSI+ CgogICAgICAgICAgICA8L2Rpdj4KPC9kaXY+CgogICAgICAgIDwvYmxvY2txdW90ZT48YnI+CiAg ICA8L2Rpdj4= -----------------------b2547fd9db7b5ee3e2cb54ed5cdff08a-- -----------------------48ccd72f76d6ff98f2dcb86327831528-- -----------------------7954ee476747fcdcb9cdabe662daecd5 Content-Type: text/x-patch; filename="shell-completion.patch"; name="shell-completion.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shell-completion.patch"; name="shell-completion.patch" RnJvbTogSm9uYXMgRnJlaSA8ZnJlaWpvbkBwbS5tZT4KRGF0ZTogICBGcmkgSnVsIDE0IDExOjEz OjE0IDIwMjMgKzAyMDAKU3ViamVjdDogc2hlbGwtY29tcGxldGlvbi5lY2xhc3MKCnNoZWxsLWNv bXBsZXRpb24uZWNsYXNzOiBBZGQgbmV3IGVjbGFzcwogICAgClNpZ25lZC1vZmYtYnk6IEpvbmFz IEZyZWkgPGZyZWlqb25AcG0ubWU+CmRpZmYgLS1naXQgYS9lY2xhc3Mvc2hlbGwtY29tcGxldGlv bi5lY2xhc3MgYi9lY2xhc3Mvc2hlbGwtY29tcGxldGlvbi5lY2xhc3MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iN2I1OTgwMmE1ZjcKLS0tIC9kZXYvbnVsbAorKysg Yi9lY2xhc3Mvc2hlbGwtY29tcGxldGlvbi5lY2xhc3MKQEAgLTAsMCArMSwxMTQgQEAKKyMgQ29w eXJpZ2h0IDIwMjMgR2VudG9vIEF1dGhvcnMKKyMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgorCisjIEBFQ0xBU1M6IHNoZWxs LWNvbXBsZXRpb24uZWNsYXNzCisjIEBTVVBQT1JURURfRUFQSVM6IDgKKyMgQFBST1ZJREVTOiBi YXNoLWNvbXBsZXRpb24tcjEKKyMgQEFVVEhPUjoKKyMgQWxmcmVkIFdpbmdhdGUgPHBhcm9uYUBw cm90b25tYWlsLmNvbT4KKyMgQE1BSU5UQUlORVI6CisjIEpvbmFzIEZyZWkgPGZyZWlqb25AcG0u bWU+CisjIEBCTFVSQjogYSBmZXcgcXVpY2sgZnVuY3Rpb25zIHRvIGluc3RhbGwgdmFyaW91cyBz aGVsbCBjb21wbGV0aW9uIGZpbGVzCisjIEBERVNDUklQVElPTjoKKyMgVGhpcyBlY2xhc3MgcHJv dmlkZXMgYSBzdGFuZGFyZGlzZWQgd2F5IHRvIGluc3RhbGwgc2hlbGwgY29tcGxldGlvbnMKKyMg Zm9yIHBvcHVsYXIgc2hlbGxzLiAgSXQgaW5oZXJpdHMgdGhlIGFscmVhZHkgd2lkZWx5IGFkb3B0 ZWQKKyMgJ2Jhc2gtY29tcGxldGlvbi1yMScsIHRodXMgZXh0ZW5kaW5nIG9uIGl0cyBmdW5jdGlv bmFsaXR5LgorCitjYXNlICR7RUFQSX0gaW4KKwk4KSA7OworCSopIGRpZSAiJHtFQ0xBU1N9OiBF QVBJICR7RUFQSTotMH0gbm90IHN1cHBvcnRlZCIKK2VzYWMKKworaWYgW1sgISAke19TSEVMTF9D T01QTEVUSU9OX0VDTEFTU30gXV07IHRoZW4KK19TSEVMTF9DT01QTEVUSU9OX0VDTEFTUz0xCisK KyMgRXh0ZW5kIGJhc2gtY29tcGxldGlvbi1yMQoraW5oZXJpdCBiYXNoLWNvbXBsZXRpb24tcjEK KworIyBARlVOQ1RJT046IF9zaGVsbC1jb21wbGV0aW9uX2dldF9maXNoY29tcGRpcgorIyBASU5U RVJOQUwKKyMgQFJFVFVSTjogdW5wcmVmaXhlZCBmaXNoIGNvbXBsZXRpb25zIGRpcmVjdG9yeQor X3NoZWxsLWNvbXBsZXRpb25fZ2V0X2Zpc2hjb21wZGlyKCkgeworCWVjaG8gIi91c3Ivc2hhcmUv ZmlzaC92ZW5kb3JfY29tcGxldGlvbnMuZCIKK30KKworIyBARlVOQ1RJT046IF9zaGVsbC1jb21w bGV0aW9uX2dldF96c2hjb21wZGlyCisjIEBJTlRFUk5BTAorIyBAUkVUVVJOOiB1bnByZWZpeGVk IHpzaCBjb21wbGV0aW9ucyBkaXJlY3RvcnkKK19zaGVsbC1jb21wbGV0aW9uX2dldF96c2hjb21w ZGlyKCkgeworCWVjaG8gIi91c3Ivc2hhcmUvenNoL3NpdGUtZnVuY3Rpb25zIgorfQorCisjIEBG VU5DVElPTjogZ2V0X2Zpc2hjb21wZGlyCisjIEBSRVRVUk46IHRoZSBmaXNoIGNvbXBsZXRpb25z IGRpcmVjdG9yeSAod2l0aCBFUFJFRklYKQorZ2V0X2Zpc2hjb21wZGlyKCkgeworCWRlYnVnLXBy aW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IgorCisJZWNobyAiJHtFUFJFRklYfSQoX3No ZWxsLWNvbXBsZXRpb25fZ2V0X2Zpc2hjb21wZGlyKSIKK30KKworIyBARlVOQ1RJT046IGdldF96 c2hjb21wZGlyCisjIEBSRVRVUk46IHRoZSB6c2ggY29tcGxldGlvbnMgZGlyZWN0b3J5ICh3aXRo IEVQUkVGSVgpCitnZXRfenNoY29tcGRpcigpIHsKKwlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZV TkNOQU1FfSAiJHtAfSIKKworCWVjaG8gIiR7RVBSRUZJWH0kKF9zaGVsbC1jb21wbGV0aW9uX2dl dF96c2hjb21wZGlyKSIKK30KKworIyBARlVOQ1RJT046IGRvZmlzaGNvbXAKKyMgQFVTQUdFOiA8 ZmlsZS4uLj4KKyMgQERFU0NSSVBUSU9OOgorIyBJbnN0YWxsIGZpc2ggY29tcGxldGlvbiBmaWxl cyBwYXNzZWQgYXMgYXJncy4KK2RvZmlzaGNvbXAoKSB7CisJZGVidWctcHJpbnQtZnVuY3Rpb24g JHtGVU5DTkFNRX0gIiR7QH0iCisKKwkoCisJCWluc29wdHMgLW0gMDY0NAorCQlpbnNpbnRvICIk KF9zaGVsbC1jb21wbGV0aW9uX2dldF9maXNoY29tcGRpcikiCisJCWRvaW5zICIke0B9IgorCSkK K30KKworIyBARlVOQ1RJT046IGRvenNoY29tcAorIyBAVVNBR0U6IDxmaWxlLi4uPgorIyBAREVT Q1JJUFRJT046CisjIEluc3RhbGwgenNoIGNvbXBsZXRpb24gZmlsZXMgcGFzc2VkIGFzIGFyZ3Mu Citkb3pzaGNvbXAoKSB7CisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0i CisKKwkoCisJCWluc29wdHMgLW0gMDY0NAorCQlpbnNpbnRvICIkKF9zaGVsbC1jb21wbGV0aW9u X2dldF96c2hjb21wZGlyKSIKKwkJZG9pbnMgIiR7QH0iCisJKQorfQorCisjIEBGVU5DVElPTjog bmV3ZmlzaGNvbXAKKyMgQFVTQUdFOiA8ZmlsZT4gPG5ld25hbWU+CisjIEBERVNDUklQVElPTjoK KyMgSW5zdGFsbCBmaXNoIGZpbGUgdW5kZXIgYSBuZXcgbmFtZS4KK25ld2Zpc2hjb21wKCkgewor CWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IgorCisJKAorCQlpbnNvcHRz IC1tIDA2NDQKKwkJaW5zaW50byAiJChfc2hlbGwtY29tcGxldGlvbl9nZXRfZmlzaGNvbXBkaXIp IgorCQluZXdpbnMgIiR7QH0iCisJKQorfQorCisjIEBGVU5DVElPTjogbmV3enNoY29tcAorIyBA VVNBR0U6IDxmaWxlPiA8bmV3bmFtZT4KKyMgQERFU0NSSVBUSU9OOgorIyBJbnN0YWxsIHpzaCBm aWxlIHVuZGVyIGEgbmV3IG5hbWUuCituZXd6c2hjb21wKCkgeworCWRlYnVnLXByaW50LWZ1bmN0 aW9uICR7RlVOQ05BTUV9ICIke0B9IgorCisJKAorCQlpbnNvcHRzIC1tIDA2NDQKKwkJaW5zaW50 byAiJChfc2hlbGwtY29tcGxldGlvbl9nZXRfenNoY29tcGRpcikiCisJCW5ld2lucyAiJHtAfSIK KwkpCit9CisKK2ZpCg== -----------------------7954ee476747fcdcb9cdabe662daecd5 Content-Type: application/pgp-keys; filename="publickey - freijon@pm.me - 0x259C4FF5.asc"; name="publickey - freijon@pm.me - 0x259C4FF5.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - freijon@pm.me - 0x259C4FF5.asc"; name="publickey - freijon@pm.me - 0x259C4FF5.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4c0ZOQkZ4ei9ZNEJFQURKWWlq S3d5Mm9lSitqM0JST2M5RFJWTlNObUFlaVRkWXFMZGx3dzZqS2xNRUMKd1ZkOUJnVUROQ1hhLzBX NEpMZUlHL0tyeVpGL2pybWs0MEtyK2Q0QkxwbDNMSTdUWSsyVGQwNCtMdXZNCjVzeVQ5QVBwU3Qw b2x5ODc1UklDaEJCUWdHZmwrUnZhQW4ySkNZMXZvdnhIOGhVOTNZM082bXdzZE94dwpOc3dNTXUr U3VBRUlDRC9WQmpvQmpNVlBHcHdsSnczNEh5SkdUTUpwdWtPZWw5RDN0MmxFSC9mbmNKeTcKYmdM WitJbFBiUkthQlBoakhyREhSQzdqOXNPWG5KTE1YYjBEd1piWlhLUUgwUVlVbHFzdXN5ME8za0F6 CklIQjhJdEtyNnEwVkVyK3hVeEI1R1c5OGt1L0docFViZDU3OCtlZDc3VEVtOFp1TVVsUkwzeEtp M3dxQgpHR1lLbUIwYjIrUzR0N1RTS2phS29UTFoxUDVZMmtuN2hmSXlYMS9vMG9aS08wcWFkekJY QXJHR1U4alEKSDJkenRObC8xNDVIQU5wSTZPQ2FaN3pHV3R6L0pranZ1UENyRjhKS0QvelByTkhI cXE2bTYvdVBKVHFTCjFUSzM5QlBHMTdnZlEvaHBiYk5qaWZlNXVsYWZOczF0L1dWRzhwR3dKWWlv c2Qrei9QY0NZbWg5OFM4UQpsQUFoV2dRYVluRmd2aEpPditQak5WbzB4RkN6NVY2UThabXJGWTNS anZkaW5HY2FFTnpIRTU5VHBpZUYKdlhpeElFRlF6OFBCQ3BtL1V4aEExL2VTQWJsZHJkU244QnNy TGVWUEZUb1NDdEFBeDRHamVUeEtSc0x4CkRISWgwWWpYNjFKTUo1dTBScFFrY0pKZVlKWW82U0ZC S2ZXL1h3QVJBUUFCelI4aVpuSmxhV3B2YmtCdwpiUzV0WlNJZ1BHWnlaV2xxYjI1QWNHMHViV1Ur d3NGMUJCQUJDQUFmQlFKY2MvMk9CZ3NKQndnREFnUVYKQ0FvQ0F4WUNBUUlaQVFJYkF3SWVBUUFL Q1JCa08yUXFKenNnYjlodkVBQ3BSMzdVYTdrbHV6V1kzZEJwCmJvcG91TFNDUCtXSXgwUFBVSzFh M3hZSmNhZHhIdlV4S2pIUmdTT1JnYzZ2WDhHMjJ2ak9uY0ozK1J6dwpRVkpXMkJCdytJYlJJOHpr cTJIVlVWRzRia3lEb0NhWTBTUkJ1RHBWWGE0eDRnYXIwWU5pcUYwNjVleCsKZ3E0Z3JOTG8zZWRl bTJqRFlFc1hlWmdkazNER2dOR3drUVFYbGozQ1dxbzVYMXNhTHV1N2pudE02cXpyCjZJTHVabFd3 cGtMeVd2NDJSL20wSE9YTTBqc3ZtcGlBVkk0TStVVU5sbW1qdGFYcU9oNzFkZnhUc1pZeApFRVcz M2xKU0xVeW82T3BacGduOXR1ZW84NG9CYSs5dWFQbStaMDZJMk91cWNlU0RwQjhoRjFNZHN6UHcK MGQvMWxNU3NLcnZFcHlwd2txRjFjL2U0YXNVaVZtaWo1azF3S21UZUZYYTVoZU53WjlmRnNnMG5w Si9PCkdvQmovNnZ2RXFjZllpcnRZcUVMVUFKNmpydWthelE0aFZBa1FVM2NHZXJKWWNIOG1Yb2ZX NVRyUDMrWQpqTHFxWTRGNlJ2SGo1ZzRVMUM1STZwV2tFdFJ0QVIzNFRSQzZ1L2hSUmVnOE1LbU9v a3UvTGtDUWZNRjEKaHgzNC93UWFBdkZoZDVOeE1PTTI1Mm8xNW8wWlJIM1ZVcVl5d2NaTW0xZk92 S1c1bmJPY01yNGtuWmljCjhsTmhhOHUvdlFtbWlwUUM1Sm5HdlJmMVlZYmpZL3pTeHVkU0djbGNs d2VrQUJqK3pLNXVPaURlc2RWYQpmY2J1OTB1Ukk0ZzFXRGt4RmpLelp5VmEwVm02dTJtdmg3WHBD eVlRSkZiZTUwc1dnZDNjbG4ra2F0YnIKRlpsRjdjN0JUUVJjYy8yT0FSQUF6MUExTzI2Rm5xcmNx alZqYU4vbUZ1RUhjdG14VG1UZnRib21NeE9lCjhyZnhBRGFERFlMRkpFRkkrbEN2SGtoMHRkVlRv SThManM3clVicG1nYjdsVlRJTkhPdjBGS3VwN205ZgowTW5HMTExc0hYbDBlb29kM1RLNzJHUTlo eG93T3RnOURMMWdSVGJRbXpBNTMycjdQeHFiYlhmd1RMNmYKSlN2RDQ3L0hBQms1M0wvTklVUWJj WVNIOTBHRGdvK2dFSERJZGxVODhRUGVZSVNrTGQ3VmhaSzVVcVFUCjkvMnZDZTBTVmFJcm1YVlRX YmdPbTRTOXhPL2ZoWEh2T25KbTZTanJIajIraHFUeGJPK1dRaTdYTjA2cApQdHRzYkFsd3RrNENr U1pwVlFxaTZjalRKS2MzbFN0bDZIeFM1RXJDWWhKNmVsVVF3UXpqZlIvb2s5RG4KeU1wOHp4eWVh cHZCVEsvTXN5NENST3NaOU1sL2pNSmhWUE05OTVvWFJBQzI2ZzhPTW4xR2JlSUtKYXZlCjA1OGph bHpSU1BKQi9DRnVnNmNvSytTc291VWc5U200U2VNZzk4dytxT2hJV0pkM3lwZU5NUkNvRUppTApj R3dROUhYL0JveHdGN2tDb00xVHNnUFRqckE2MFBGRGFWeVdYWGJ6MEc4aThPY245VHFMTFp1VFdm OHAKbDRqOVNnT3BGNW91c2pMaG9wOGZOMkorc0FXb2pHdFhpbnYvWVVwSXFUYldRMmIxRW53bHpo NllzRFZ2Ck9NL2FzREZKUTM5TUNuNlE2NnhXOUJDYWx6VDNmWHJaZmR5Vm1Wb0MzcEJyYTEycitm alAvUFBDT20wVApqRmVyWFFrWktna202QWl2N1REYjNNVzhQd040Z2U3Unl5Y0E2V2ticnE4QUVR RUFBY0xCWHdRWUFRZ0EKQ1FVQ1hIUDlqZ0liREFBS0NSQmtPMlFxSnpzZ2J3RVVELzBkYm1NR0Vz Y3pTSkdDWWR4ZDJHM2xCbDhxCjVWWGtySTRUU2cybjNMMk1NQ0F3c09LczdIMXRqMC9hT2c1K29r R0FCV2xYejVVNkZVR3ZxWHZRc3UrUwpCcHQxN09uNVYrVE1hcWpPMzRibmVkSmlWYlFkUUY0T3dl SDluQUliVkRJZmZUMy9qVndIWkxqamRwTHIKQnU0RmdaSFdlSEZiSy82QjlBYk4wUVFaY2lPWlZO QWRNYWNOZitrM2t2RUcxMjB6UEpPSzc0VEgrY1lRCjl6dHBqYmxhaWV6dDgrU1RmZWcwWEUxczFr UFV3RnN2eHRqcHFvTFIwcU5NMDdjdGdzNHE3M2JIdUhZLwpCbWRWbnF6UlRVd1FGTFNqdWZlcGFq dE5yNEEvMFBxQy9hSktkSUlZa3JXTlV6SDBLU3pzSlZHQ0NhYloKY01Sd0YvdjI1eWtHaU43cGda Z0NYRGYvcFk5aFhQV2JhV2RpTkxsd3FZQTk0RzJHczhHV0RaOEtEc2hMCm05V0hIWktBdnRVZ3p5 ZWg0Z3gvMElHbVlmTzhDYWdwaWJ6K0pudXJkZTNwSVRRcEVPaDczZ2crYWpsSAphRVBNa1RxSFJY MGpxcFg0MUxFZE03c0xCTTJ6c2hpcmVKOFMwbFc5Q2dxSUxXaVl5bEMzOGJuR1lBekUKMWtackIz SFloY2x5QkwyOXdyOVlGbmF3ODdiRllnUkxTaUFheU52em1Sa0RwQXMra0FBZjRLcXRGREc0Cnlw cmVObXJ6QUY5ZFF6U0JSNzJnRTJPVzUyRUtvUDRETXNNREszelA0YmlUS1VBUkEzdDRoN0NSaS91 RQpCZXRsRHMyQ3ZOSEdpclV6ZEozZTdRdTNyQ1R4QXd6V2IvQlFhUlc2UGpFOEZZcmtrVFFiUTBK dEFnPT0KPXdDTFEKLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQo= -----------------------7954ee476747fcdcb9cdabe662daecd5-- --------f7f59e399ce14dea150468388225d6ca13e5f173de93765fd695469789ca5ad1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wsFzBAEBCAAnBYJksRjVCZBkO2QqJzsgbxYhBCWcT/ULzMgNGwmv7mQ7ZCon OyBvAAB8pBAAknjPGGWzvDfahe7ai+LcN0Kny6gaG2g8skGizE62ZDxVd8Yd oMGLE1Q9p8p0qdbmMv/bWJwzcwUO6TDqYUTSzZWDbtf1og2mejUov6gxRLoK xz0mKBDO1SjO54l+0riDktWGYxnXtEKba463Fy6eG/N5pOhJFiOxTb/LfyRi DpeAEaLM2IemnlnqTalPqZUB2O+DbuBeHaGf9eJIntE+BJ5lviSTbPm4e840 bkBo0PzvVFXYCiK7zvAE7RbmpetuWJZSaGJyxLQW7c4XdlLs0DNmhkJy2/wm IgREr3TdT7rRGvHJDVsUtVL1PrMyRprpm37jxYVVg9SbK+6S/9kYtuTFWSJf CyC0aIMHDIMUd/sDMxESkOGWufVgGWyEyqN7Hzg8RwiwrnsD7IrgOyAHgSzV lUDkNfv3Wiz/FdMlBMcx32rbyFM1uo7ZYORICJo8l1nTjlg5DMVEx5cGZDfA IHb6+e/cV0ZCL107yMBZeNtLrGBIwhWjDpx4VYGP5vaHEcd+iD2TCJFgGiT7 l62dqUuoz8NhJtR4Vi0twh0sMROJRMC5/9D8ykzrenrhxIto0v9giZ3wXSKX k2iZAX4K+P3xijDx5pk1dwAEDtPQ8l9NEo+RMfmmFB12BbALOb3gXP8UVWRQ Y3Gtsd9HBT0s8yOWXSYrfwzmBkaeggsji6M= =InXW -----END PGP SIGNATURE----- --------f7f59e399ce14dea150468388225d6ca13e5f173de93765fd695469789ca5ad1--