From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Tony Olagbaiye Newsgroups: gmane.emacs.bugs Subject: bug#46534: Lexical change in bindat breaks weechat.el Date: Mon, 15 Feb 2021 19:19:54 +0000 Message-ID: References: Reply-To: Tony Olagbaiye Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="---------------------b537be18bd8e08931448240e78ae305c"; charset=utf-8 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9596"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 46534@debbugs.gnu.org, storm@cua.dk To: monnier@iro.umontreal.ca Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Feb 15 20:24:14 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lBjTh-0002GH-2e for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 15 Feb 2021 20:24:13 +0100 Original-Received: from localhost ([::1]:53562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lBjTf-00007N-N4 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 15 Feb 2021 14:24:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lBjQg-0006R1-Ai for bug-gnu-emacs@gnu.org; Mon, 15 Feb 2021 14:21:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:55416) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lBjQb-0003qc-Vw for bug-gnu-emacs@gnu.org; Mon, 15 Feb 2021 14:21:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lBjQb-0000em-Sx for bug-gnu-emacs@gnu.org; Mon, 15 Feb 2021 14:21:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Tony Olagbaiye Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 15 Feb 2021 19:21:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 46534 X-GNU-PR-Package: emacs Original-Received: via spool by 46534-submit@debbugs.gnu.org id=B46534.16134168122440 (code B ref 46534); Mon, 15 Feb 2021 19:21:01 +0000 Original-Received: (at 46534) by debbugs.gnu.org; 15 Feb 2021 19:20:12 +0000 Original-Received: from localhost ([127.0.0.1]:38725 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBjPn-0000dH-Sb for submit@debbugs.gnu.org; Mon, 15 Feb 2021 14:20:12 -0500 Original-Received: from mail-40131.protonmail.ch ([185.70.40.131]:34619) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBjPl-0000cn-83 for 46534@debbugs.gnu.org; Mon, 15 Feb 2021 14:20:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fron.io; s=protonmail; t=1613416802; bh=1nYvR+e2uvIYKWNWFDVDe45HY2TtLjREo7Zhr4OysTs=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=gDkj2V7bFoLBbaQi8gkzVrwpHbdOlCY/M2Azkfw4NSzxuw48dFPeZkdjtWKXtkRFO LjRL9b/kL9qXF+pyO09+NwvsxdXCYe7TG/LFNxadl0J3wHHa/c3L2jBc8UOy0MP0k6 aO0pu8ITK/ldQeF89Pc9itOCx/52rKicoedvhG9w= In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:200079 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) -----------------------b537be18bd8e08931448240e78ae305c Content-Type: multipart/mixed; boundary="---------------------5caa3414225e814cc515c07fe2fb7f9e" -----------------------5caa3414225e814cc515c07fe2fb7f9e Content-Type: multipart/alternative; boundary="---------------------1f1ca185d9c3b27c506ecc9f2e88d20a" -----------------------1f1ca185d9c3b27c506ecc9f2e88d20a Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Indeed, I can confirm this fixes the test file as well as weechat.el proper= , thanks! Sent from ProtonMail mobile \-------- Original Message -------- On 15 Feb 2021, 15:50, Stefan Monnier < monnier@iro.umontreal.ca> wrote: > > > > \[ Hi Kim, long time no see. > I'd appreciate your opinion on this issue with bindat.el. \] > > > (defconst minrepro--str-spec > > '((len u32) > > (val str (eval (let ((len (minrepro--bindat-unsigned-to-signed > > (bindat-get-field struct 'len) > > 4))) > > ;; Hack for signed/unsigned problems > > (if (<=3D len 0) 0 len)))))) > > Hmm... the doc of bindat.el does not include \`struct\` among the vars yo= u > can use in \`eval\`. > > OTOH, a variable which you can use is \`last\` and it indeed contains > exactly the info you need from \`struct\`, so you can rewrite the above t= o: > > (defconst minrepro--str-spec > '((len u32) > (val str (eval (let ((len (minrepro--bindat-unsigned-to-signed > last 4))) > ;; Hack for signed/unsigned problems > (if (<=3D len 0) 0 len)))))) > > > (defconst minrepro--message-spec > > '((length u32) > > (compression u8) > > (id struct minrepro--str-spec) > > (data vec (eval (let ((l (- (bindat-get-field struct 'length) > > 4 ;length > > 1 ;compression > > (+ 4 (length (bindat-get-field struct 'id 'val)))))) > > l))))) > > This one OTOH can't just use \`last\` since that only gives us the \`id\` > field but not the \`length\` field :-( > > I can't see any way to do what you want given the documentation found in > the \`Commentary:\` of \`bindat.el\`, so I guess we do need to extend the > documented functionality. > > I installed the patch below, for now. It fixes the problem in your test > case and hopefully in other cases as well. Please confirm. > > > Stefan > > > diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el > index 0d9ba57d66..bf01347ae0 100644 > \--- a/lisp/emacs-lisp/bindat.el > \+++ b/lisp/emacs-lisp/bindat.el > @@ -26,7 +26,7 @@ > ;; Packing and unpacking of (binary) data structures. > ;; > ;; The data formats used in binary files and network protocols are > \-;; often structed data which can be described by a C-style structure > \+;; often structured data which can be described by a C-style structure > ;; such as the one shown below. Using the bindat package, decoding > ;; and encoding binary data formats like these is made simple using a > ;; structure specification which closely resembles the C style > @@ -135,7 +135,8 @@ > ;; \| ( \[FIELD\] repeat COUNT ITEM... ) > > ;; -- In (eval EXPR), the value of the last field is available in > \-;; the dynamically bound variable \`last'. > \+;; the dynamically bound variable \`last' and all the previous > \+;; ones in the variable \`struct'. > > ;; TYPE ::=3D ( eval EXPR ) -- interpret result as TYPE > ;; \| u8 \| byte -- length 1 > @@ -191,7 +192,7 @@ > ;;; Code: > > ;; Helper functions for structure unpacking. > \-;; Relies on dynamic binding of BINDAT-RAW and BINDAT-IDX > \+;; Relies on dynamic binding of \`bindat-raw' and \`bindat-idx'. > > (defvar bindat-raw) > (defvar bindat-idx) > @@ -276,8 +277,8 @@ bindat--unpack-item > (t nil))) > > (defun bindat--unpack-group (spec) > \- (with-suppressed-warnings ((lexical last)) > \- (defvar last)) > \+ (with-suppressed-warnings ((lexical struct last)) > \+ (defvar struct) (defvar last)) > (let (struct last) > (while spec > (let\* ((item (car spec)) > @@ -378,9 +379,9 @@ bindat--fixed-length-alist > (ip . 4))) > > (defun bindat--length-group (struct spec) > \- (with-suppressed-warnings ((lexical last)) > \- (defvar last)) > \- (let (last) > \+ (with-suppressed-warnings ((lexical struct last)) > \+ (defvar struct) (defvar last)) > \+ (let ((struct struct) last) > (while spec > (let\* ((item (car spec)) > (field (car item)) > @@ -544,9 +545,9 @@ bindat--pack-item > (setq bindat-idx (+ bindat-idx len))))) > > (defun bindat--pack-group (struct spec) > \- (with-suppressed-warnings ((lexical last)) > \- (defvar last)) > \- (let (last) > \+ (with-suppressed-warnings ((lexical struct last)) > \+ (defvar struct) (defvar last)) > \+ (let ((struct struct) last) > (while spec > (let\* ((item (car spec)) > (field (car item)) -----------------------1f1ca185d9c3b27c506ecc9f2e88d20a Content-Type: multipart/related; boundary="---------------------076ecf528f6aa7bc5a42e6899947c24f" -----------------------076ecf528f6aa7bc5a42e6899947c24f Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 SW5kZWVkLCBJIGNhbiBjb25maXJtIHRoaXMgZml4ZXMgdGhlIHRlc3QgZmlsZSBhcyB3ZWxsIGFz IHdlZWNoYXQuZWwgcHJvcGVyLCB0aGFua3MhPGJyPjxicj48YnI+U2VudCBmcm9tIFByb3Rvbk1h aWwgbW9iaWxlPGJyPjxicj48YnI+PGJyPi0tLS0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0t LS08YnI+T24gMTUgRmViIDIwMjEsIDE1OjUwLCBTdGVmYW4gTW9ubmllciA8IG1vbm5pZXJAaXJv LnVtb250cmVhbC5jYT4gd3JvdGU6PGJsb2NrcXVvdGUgY2xhc3M9InByb3Rvbm1haWxfcXVvdGUi Pjxicj48cCBkaXI9Imx0ciI+WyBIaSBLaW0sIGxvbmcgdGltZSBubyBzZWUuPGJyPg0KSSdkIGFw cHJlY2lhdGUgeW91ciBvcGluaW9uIG9uIHRoaXMgaXNzdWUgd2l0aCBiaW5kYXQuZWwuIF08L3A+ DQo8cCBkaXI9Imx0ciI+Jmd0OyAoZGVmY29uc3QgbWlucmVwcm8tLXN0ci1zcGVjPGJyPg0KJmd0 OyAnKChsZW4gdTMyKTxicj4NCiZndDsgKHZhbCBzdHIgKGV2YWwgKGxldCAoKGxlbiAobWlucmVw cm8tLWJpbmRhdC11bnNpZ25lZC10by1zaWduZWQ8YnI+DQomZ3Q7ICYjOTsmIzk7JiM5OyAoYmlu ZGF0LWdldC1maWVsZCBzdHJ1Y3QgJ2xlbik8YnI+DQomZ3Q7ICYjOTsmIzk7JiM5OyA0KSkpPGJy Pg0KJmd0OyAmIzk7JiM5OyA7OyBIYWNrIGZvciBzaWduZWQvdW5zaWduZWQgcHJvYmxlbXM8YnI+ DQomZ3Q7ICYjOTsmIzk7IChpZiAoJmx0Oz0gbGVuIDApIDAgbGVuKSkpKSkpPC9wPg0KPHAgZGly PSJsdHIiPkhtbS4uLiB0aGUgZG9jIG9mIGJpbmRhdC5lbCBkb2VzIG5vdCBpbmNsdWRlIGBzdHJ1 Y3RgIGFtb25nIHRoZSB2YXJzIHlvdTxicj4NCmNhbiB1c2UgaW4gYGV2YWxgLjwvcD4NCjxwIGRp cj0ibHRyIj5PVE9ILCBhIHZhcmlhYmxlIHdoaWNoIHlvdSBjYW4gdXNlIGlzIGBsYXN0YCBhbmQg aXQgaW5kZWVkIGNvbnRhaW5zPGJyPg0KZXhhY3RseSB0aGUgaW5mbyB5b3UgbmVlZCBmcm9tIGBz dHJ1Y3RgLCBzbyB5b3UgY2FuIHJld3JpdGUgdGhlIGFib3ZlIHRvOjwvcD4NCjxwIGRpcj0ibHRy Ij4oZGVmY29uc3QgbWlucmVwcm8tLXN0ci1zcGVjPGJyPg0KJygobGVuIHUzMik8YnI+DQoodmFs IHN0ciAoZXZhbCAobGV0ICgobGVuIChtaW5yZXByby0tYmluZGF0LXVuc2lnbmVkLXRvLXNpZ25l ZDxicj4NCmxhc3QgNCkpKTxicj4NCjs7IEhhY2sgZm9yIHNpZ25lZC91bnNpZ25lZCBwcm9ibGVt czxicj4NCihpZiAoJmx0Oz0gbGVuIDApIDAgbGVuKSkpKSkpPC9wPg0KPHAgZGlyPSJsdHIiPiZn dDsgKGRlZmNvbnN0IG1pbnJlcHJvLS1tZXNzYWdlLXNwZWM8YnI+DQomZ3Q7ICcoKGxlbmd0aCB1 MzIpPGJyPg0KJmd0OyAoY29tcHJlc3Npb24gdTgpPGJyPg0KJmd0OyAoaWQgc3RydWN0IG1pbnJl cHJvLS1zdHItc3BlYyk8YnI+DQomZ3Q7IChkYXRhIHZlYyAoZXZhbCAobGV0ICgobCAoLSAoYmlu ZGF0LWdldC1maWVsZCBzdHJ1Y3QgJ2xlbmd0aCk8YnI+DQomZ3Q7ICYjOTsmIzk7JiM5OyYjOTs0 IDtsZW5ndGg8YnI+DQomZ3Q7ICYjOTsmIzk7JiM5OyYjOTsxIDtjb21wcmVzc2lvbjxicj4NCiZn dDsgJiM5OyYjOTsmIzk7JiM5OygrIDQgKGxlbmd0aCAoYmluZGF0LWdldC1maWVsZCBzdHJ1Y3Qg J2lkICd2YWwpKSkpKSk8YnI+DQomZ3Q7ICYjOTsmIzk7IGwpKSkpKTwvcD4NCjxwIGRpcj0ibHRy Ij5UaGlzIG9uZSBPVE9IIGNhbid0IGp1c3QgdXNlIGBsYXN0YCBzaW5jZSB0aGF0IG9ubHkgZ2l2 ZXMgdXMgdGhlIGBpZGA8YnI+DQpmaWVsZCBidXQgbm90IHRoZSBgbGVuZ3RoYCBmaWVsZCA6LSg8 L3A+DQo8cCBkaXI9Imx0ciI+SSBjYW4ndCBzZWUgYW55IHdheSB0byBkbyB3aGF0IHlvdSB3YW50 IGdpdmVuIHRoZSBkb2N1bWVudGF0aW9uIGZvdW5kIGluPGJyPg0KdGhlIGBDb21tZW50YXJ5OmAg b2YgYGJpbmRhdC5lbGAsIHNvIEkgZ3Vlc3Mgd2UgZG8gbmVlZCB0byBleHRlbmQgdGhlPGJyPg0K ZG9jdW1lbnRlZCBmdW5jdGlvbmFsaXR5LjwvcD4NCjxwIGRpcj0ibHRyIj5JIGluc3RhbGxlZCB0 aGUgcGF0Y2ggYmVsb3csIGZvciBub3cuIEl0IGZpeGVzIHRoZSBwcm9ibGVtIGluIHlvdXIgdGVz dDxicj4NCmNhc2UgYW5kIGhvcGVmdWxseSBpbiBvdGhlciBjYXNlcyBhcyB3ZWxsLiBQbGVhc2Ug Y29uZmlybS48YnI+PC9wPg0KPHAgZGlyPSJsdHIiPlN0ZWZhbjxicj48L3A+DQo8cCBkaXI9Imx0 ciI+ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9iaW5kYXQuZWwgYi9saXNwL2VtYWNzLWxp c3AvYmluZGF0LmVsPGJyPg0KaW5kZXggMGQ5YmE1N2Q2Ni4uYmYwMTM0N2FlMCAxMDA2NDQ8YnI+ DQotLS0gYS9saXNwL2VtYWNzLWxpc3AvYmluZGF0LmVsPGJyPg0KKysrIGIvbGlzcC9lbWFjcy1s aXNwL2JpbmRhdC5lbDxicj4NCkBAIC0yNiw3ICsyNiw3IEBAPGJyPg0KOzsgUGFja2luZyBhbmQg dW5wYWNraW5nIG9mIChiaW5hcnkpIGRhdGEgc3RydWN0dXJlcy48YnI+DQo7Ozxicj4NCjs7IFRo ZSBkYXRhIGZvcm1hdHMgdXNlZCBpbiBiaW5hcnkgZmlsZXMgYW5kIG5ldHdvcmsgcHJvdG9jb2xz IGFyZTxicj4NCi07OyBvZnRlbiBzdHJ1Y3RlZCBkYXRhIHdoaWNoIGNhbiBiZSBkZXNjcmliZWQg YnkgYSBDLXN0eWxlIHN0cnVjdHVyZTxicj4NCis7OyBvZnRlbiBzdHJ1Y3R1cmVkIGRhdGEgd2hp Y2ggY2FuIGJlIGRlc2NyaWJlZCBieSBhIEMtc3R5bGUgc3RydWN0dXJlPGJyPg0KOzsgc3VjaCBh cyB0aGUgb25lIHNob3duIGJlbG93LiBVc2luZyB0aGUgYmluZGF0IHBhY2thZ2UsIGRlY29kaW5n PGJyPg0KOzsgYW5kIGVuY29kaW5nIGJpbmFyeSBkYXRhIGZvcm1hdHMgbGlrZSB0aGVzZSBpcyBt YWRlIHNpbXBsZSB1c2luZyBhPGJyPg0KOzsgc3RydWN0dXJlIHNwZWNpZmljYXRpb24gd2hpY2gg Y2xvc2VseSByZXNlbWJsZXMgdGhlIEMgc3R5bGU8YnI+DQpAQCAtMTM1LDcgKzEzNSw4IEBAPGJy Pg0KOzsgfCAoIFtGSUVMRF0gcmVwZWF0IENPVU5UIElURU0uLi4gKTwvcD4NCjxwIGRpcj0ibHRy Ij47OyAtLSBJbiAoZXZhbCBFWFBSKSwgdGhlIHZhbHVlIG9mIHRoZSBsYXN0IGZpZWxkIGlzIGF2 YWlsYWJsZSBpbjxicj4NCi07OyB0aGUgZHluYW1pY2FsbHkgYm91bmQgdmFyaWFibGUgYGxhc3Qn Ljxicj4NCis7OyB0aGUgZHluYW1pY2FsbHkgYm91bmQgdmFyaWFibGUgYGxhc3QnIGFuZCBhbGwg dGhlIHByZXZpb3VzPGJyPg0KKzs7IG9uZXMgaW4gdGhlIHZhcmlhYmxlIGBzdHJ1Y3QnLjwvcD4N CjxwIGRpcj0ibHRyIj47OyBUWVBFIDo6PSAoIGV2YWwgRVhQUiApJiM5OyYjOTstLSBpbnRlcnBy ZXQgcmVzdWx0IGFzIFRZUEU8YnI+DQo7OyYjOTsgfCB1OCB8IGJ5dGUmIzk7JiM5Oy0tIGxlbmd0 aCAxPGJyPg0KQEAgLTE5MSw3ICsxOTIsNyBAQDxicj4NCjs7OyBDb2RlOjwvcD4NCjxwIGRpcj0i bHRyIj47OyBIZWxwZXIgZnVuY3Rpb25zIGZvciBzdHJ1Y3R1cmUgdW5wYWNraW5nLjxicj4NCi07 OyBSZWxpZXMgb24gZHluYW1pYyBiaW5kaW5nIG9mIEJJTkRBVC1SQVcgYW5kIEJJTkRBVC1JRFg8 YnI+DQorOzsgUmVsaWVzIG9uIGR5bmFtaWMgYmluZGluZyBvZiBgYmluZGF0LXJhdycgYW5kIGBi aW5kYXQtaWR4Jy48L3A+DQo8cCBkaXI9Imx0ciI+KGRlZnZhciBiaW5kYXQtcmF3KTxicj4NCihk ZWZ2YXIgYmluZGF0LWlkeCk8YnI+DQpAQCAtMjc2LDggKzI3Nyw4IEBAIGJpbmRhdC0tdW5wYWNr LWl0ZW08YnI+DQoodCBuaWwpKSk8L3A+DQo8cCBkaXI9Imx0ciI+KGRlZnVuIGJpbmRhdC0tdW5w YWNrLWdyb3VwIChzcGVjKTxicj4NCi0gKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGxleGlj YWwgbGFzdCkpPGJyPg0KLSAoZGVmdmFyIGxhc3QpKTxicj4NCisgKHdpdGgtc3VwcHJlc3NlZC13 YXJuaW5ncyAoKGxleGljYWwgc3RydWN0IGxhc3QpKTxicj4NCisgKGRlZnZhciBzdHJ1Y3QpIChk ZWZ2YXIgbGFzdCkpPGJyPg0KKGxldCAoc3RydWN0IGxhc3QpPGJyPg0KKHdoaWxlIHNwZWM8YnI+ DQoobGV0KiAoKGl0ZW0gKGNhciBzcGVjKSk8YnI+DQpAQCAtMzc4LDkgKzM3OSw5IEBAIGJpbmRh dC0tZml4ZWQtbGVuZ3RoLWFsaXN0PGJyPg0KKGlwIC4gNCkpKTwvcD4NCjxwIGRpcj0ibHRyIj4o ZGVmdW4gYmluZGF0LS1sZW5ndGgtZ3JvdXAgKHN0cnVjdCBzcGVjKTxicj4NCi0gKHdpdGgtc3Vw cHJlc3NlZC13YXJuaW5ncyAoKGxleGljYWwgbGFzdCkpPGJyPg0KLSAoZGVmdmFyIGxhc3QpKTxi cj4NCi0gKGxldCAobGFzdCk8YnI+DQorICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChsZXhp Y2FsIHN0cnVjdCBsYXN0KSk8YnI+DQorIChkZWZ2YXIgc3RydWN0KSAoZGVmdmFyIGxhc3QpKTxi cj4NCisgKGxldCAoKHN0cnVjdCBzdHJ1Y3QpIGxhc3QpPGJyPg0KKHdoaWxlIHNwZWM8YnI+DQoo bGV0KiAoKGl0ZW0gKGNhciBzcGVjKSk8YnI+DQomIzk7IChmaWVsZCAoY2FyIGl0ZW0pKTxicj4N CkBAIC01NDQsOSArNTQ1LDkgQEAgYmluZGF0LS1wYWNrLWl0ZW08YnI+DQooc2V0cSBiaW5kYXQt aWR4ICgrIGJpbmRhdC1pZHggbGVuKSkpKSk8L3A+DQo8cCBkaXI9Imx0ciI+KGRlZnVuIGJpbmRh dC0tcGFjay1ncm91cCAoc3RydWN0IHNwZWMpPGJyPg0KLSAod2l0aC1zdXBwcmVzc2VkLXdhcm5p bmdzICgobGV4aWNhbCBsYXN0KSk8YnI+DQotIChkZWZ2YXIgbGFzdCkpPGJyPg0KLSAobGV0IChs YXN0KTxicj4NCisgKHdpdGgtc3VwcHJlc3NlZC13YXJuaW5ncyAoKGxleGljYWwgc3RydWN0IGxh c3QpKTxicj4NCisgKGRlZnZhciBzdHJ1Y3QpIChkZWZ2YXIgbGFzdCkpPGJyPg0KKyAobGV0ICgo c3RydWN0IHN0cnVjdCkgbGFzdCk8YnI+DQood2hpbGUgc3BlYzxicj4NCihsZXQqICgoaXRlbSAo Y2FyIHNwZWMpKTxicj4NCiYjOTsgKGZpZWxkIChjYXIgaXRlbSkpPC9wPg0KPC9kaXY+ -----------------------076ecf528f6aa7bc5a42e6899947c24f-- -----------------------1f1ca185d9c3b27c506ecc9f2e88d20a-- -----------------------5caa3414225e814cc515c07fe2fb7f9e Content-Type: application/pgp-keys; name="publickey - EmailAddress(s=me@fron.io) - 0x3026807C.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - EmailAddress(s=me@fron.io) - 0x3026807C.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tClZlcnNpb246IEdvcGVuUEdQIDIu MC4xCkNvbW1lbnQ6IGh0dHBzOi8vZ29wZW5wZ3Aub3JnCgp4ak1FWGM4dFpoWUpLd1lCQkFIYVJ3 OEJBUWRBanBKdUs5bUQyYTN3aEVHdncrY2RyMzhKNkFUM2NKRG9NNjVHCng0YnRmbS9ORjIxbFFH WnliMjR1YVc4Z1BHMWxRR1p5YjI0dWFXOCt3bmNFRUJZS0FCOEZBbDNQTFdZR0N3a0gKQ0FNQ0JC VUlDZ0lERmdJQkFoa0JBaHNEQWg0QkFBb0pFTGN0V010U2Eyd3hCdGdBLzI1aFVNZXZTMnRmQURj OApFaUxadWhOMWwwTGwrOUluelpWYk44KytmSHBaQVBzRmh1dzJYNFJHVWkwT21DcW1hajhDVGdi NXB6dEFJaWlMCnhJWmYvM0ZHRE00NEJGM1BMV1lTQ2lzR0FRUUJsMVVCQlFFQkIwQlFCck50MDNw ZG56UjBpZ3EycXB5NXZZbTEKYjVlYk9wNGcxYThGZGJQM1F3TUJDQWZDWVFRWUZnZ0FDUVVDWGM4 dFpnSWJEQUFLQ1JDM0xWakxVbXRzTVhGRwpBUUNieGJaZ2ZyRlBBc3Z0QlVWTitxWUNqMCtPRGFk azV2UC9Tajg0VnZZN29BRC9SeXliTExmYnNEeEpHbStmCnYrYzBubkttUGx5V2tYUFc4emg2Qlg4 b0pRaz0KPTNWZ2UKLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ== -----------------------5caa3414225e814cc515c07fe2fb7f9e-- -----------------------b537be18bd8e08931448240e78ae305c Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wmgEARYIABAFAmAqyaoJELctWMtSa2wxAAoJELctWMtSa2wxIWYA+gMF9FqY Sx+Kl2iYsXrc5TyppX+Y/owEQNvlzqoL35/eAQCBgwtolj2RhOEVeswIK4aB r7W5204HGDFoOe1fZrkTCQ== =+YTk -----END PGP SIGNATURE----- -----------------------b537be18bd8e08931448240e78ae305c--