From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 057D420252 for ; Thu, 11 Apr 2024 20:34:55 +0200 (CEST) Received: (qmail 26525 invoked by uid 550); 11 Apr 2024 18:34:50 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 26491 invoked from network); 11 Apr 2024 18:34:50 -0000 Message-ID: <6a658a3b-f299-4c51-95c7-aafa1c55911c@inso.tuwien.ac.at> Date: Thu, 11 Apr 2024 20:34:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: musl@lists.openwall.com References: <20240411142455.GA4163@brightrain.aerifal.cx> <20240411165556.GB4163@brightrain.aerifal.cx> <20240411172956.GC4163@brightrain.aerifal.cx> Content-Language: de-DE, en-US From: Raphael Kiefmann Autocrypt: addr=raphael.kiefmann@inso.tuwien.ac.at; keydata= xjMEX1tu4RYJKwYBBAHaRw8BAQdAq1eZdf60I4liiyulKq4fRg32COnOktaXkPxeECPulj/N NVJhcGhhZWwgS2llZm1hbm4gPHJhcGhhZWwua2llZm1hbm5AaW5zby50dXdpZW4uYWMuYXQ+ wpYEExYIAD4WIQQYq4vZo+IX1KbsbSphFkXRFizUDwUCX1tu4QIbAwUJCWYBgAULCQgHAgYV CgkICwIEFgIDAQIeAQIXgAAKCRBhFkXRFizUDyzJAQDTHC/qbO2sQluzkEhj0LCXDi/52tFz NUvG4VnVqjxKKgEAqcF9kUz+PvtTxa11ckzjbBv4FwEwNHxPyHC3GZqn4wPOOARfW27hEgor BgEEAZdVAQUBAQdAhrb610TI9v2vzC13abBxJVEaTmxA43i7bX6Bum8l8woDAQgHwn4EGBYI ACYWIQQYq4vZo+IX1KbsbSphFkXRFizUDwUCX1tu4QIbDAUJCWYBgAAKCRBhFkXRFizUDydp APsF+ci7bnygc0ViLJBnGvdAn2+/+jszmI2wssrNCrlpagEAsyNyYGTRpGhpQGBd6+Ptff4J VRScaMyhk6gNb6ebMAc= In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------0jdpUaDMhMXAEn389vHEXq3z" Subject: Re: [musl] making termios BOTHER speeds work This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------0jdpUaDMhMXAEn389vHEXq3z Content-Type: multipart/mixed; boundary="------------59M0gmIaDnC7k5T55tfs6zXp"; protected-headers="v1" From: Raphael Kiefmann To: musl@lists.openwall.com Message-ID: <6a658a3b-f299-4c51-95c7-aafa1c55911c@inso.tuwien.ac.at> Subject: Re: [musl] making termios BOTHER speeds work References: <20240411142455.GA4163@brightrain.aerifal.cx> <20240411165556.GB4163@brightrain.aerifal.cx> <20240411172956.GC4163@brightrain.aerifal.cx> In-Reply-To: --------------59M0gmIaDnC7k5T55tfs6zXp Content-Type: multipart/mixed; boundary="------------0OyNmMZha0qsa9bXhPfM6kPv" --------------0OyNmMZha0qsa9bXhPfM6kPv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgSmVmZnJleSwNCg0KSSB3YXMgdGhlIG9uZSB0aGF0IGluaXRpYXRlZCB0aGlzIGluIHRo ZSBJUkMuIFRoZXJlIGFyZSB0aGVzZSBjaGVhcCANCkNoaW5lc2UgbWluaS1QQ3MgdGhhdCBz cG9ydCBhbiBJbnRlbCBOMTAwIGxpa2UgdGhlIFQ5IFBsdXMgWzFdLiBUaGV5IGFsbCANCmhh dmUgYSBMRUQgcmluZyBhdCB0aGUgYm90dG9tIHRoYXQgZ2xvd3MgaW4gdGhlIHN0b2NrIGNv bmZpZ3VyYXRpb24uDQoNCkFmdGVyIHNvbWUgc2VhcmNoIEkgZm91bmQgb3V0IHRoYXQgdGhl cmUgaXMgYSBXaW5kb3dzIGRyaXZlciBhbmQgdGhhdCANCnNvbWVvbmUgZWxzZSBbMV0gaGFk IGEgbG9vayBhdCB0aGUgcHJvdG9jb2wuIEZvciB3aGF0ZXZlciByZWFzb24gdGhpcyANCmRy aXZlciBvcGVucyBhIHBvcnQgd2l0aCBhIGJhdWQgcmF0ZSBvZiAxMF8wMDAuDQoNCkl0IHJl dmVyc2UgZW5naW5lZXJlZCB0aGUgLk5FVCBiaW5hcnkgYW5kIGNvbmZpcm1lZCB0aGF0IHRo ZSBvcmlnaW5hbCANCmRyaXZlciBfcmVhbGx5XyB1c2VzIGEgYmF1ZCByYXRlIG9mIDEwXzAw MC4gSSB3cm90ZSBhIHNtYWxsIENMSSANCmFwcGxpY2F0aW9uIHRoYXQgYWxzbyB3b3JrcyBv biBMaW51eCBhbmQgd2l0aCBhIHN0YXRpY2FsbHkgbGlua2VkIA0KZXhlY3V0YWJsZSBJIG5v dGljZWQgdGhhdCB0aGUgYXBwbGljYXRpb24gb25seSB3b3JrcyBmcm9tIHRpbWUgdG8gdGlt ZS4NCg0KSSBldmVudHVhbGx5IHR1cm5lZCB0byB0cmFjZSB0byBmaW5kIHRoYXQgdGhlIGxp bmUgd2FzIG1pc3NpbmcgZnJvbSB0aGUgDQpleGVjdXRpb24gb2YgYSBfbXVzbF8gYmFzZWQg YXBsaWNhdGlvbjoNCg0KaW9jdGwoMywgVENTRVRTMiwge2NfaWZsYWc9SUdOUEFSLCBjX29m bGFnPU5MMHxDUjB8VEFCMHxCUzB8VlQwfEZGMHwsIA0KY19jZmxhZz1CT1RIRVJ8Q1M4fENS RUFEfEhVUENMfENMT0NBTCwgY19sZmxhZz0sIGNfbGluZT1OX1RUWSwgDQpjX2NjPVtbVklO VFJdPTB4MywgW1ZRVUlUXT0weDFjLCBbVkVSQVNFXT0weDdmLCBbVktJTExdPTB4MTUsIA0K W1ZFT0ZdPTB4NCwgW1ZUSU1FXT0wLCBbVk1JTl09MCwgW1ZTV1RDXT0wLCBbVlNUQVJUXT0w eDExLCBbVlNUT1BdPTB4MTMsIA0KW1ZTVVNQXT0weDFhLCBbVkVPTF09MCwgW1ZSRVBSSU5U XT0weDEyLCBbVkRJU0NBUkRdPTB4ZiwgW1ZXRVJBU0VdPTB4MTcsIA0KW1ZMTkVYVF09MHgx NiwgW1ZFT0wyXT0wLCBbMTddPTAsIFsxOF09MF0sIGNfaXNwZWVkPTEwMDAwLCBjX29zcGVl ZD0xMDAwMH0pDQoNCkluc3RlYWQgdGhlIGZvbGxvd2luZyBsaW5lIHdhcyBwcmVzZW50Og0K DQppb2N0bCgzLCBTTkRDVExfVE1SX1NUQVJUIG9yIFRDU0VUUywge2NfaWZsYWc9SUdOUEFS LCANCmNfb2ZsYWc9TkwwfENSMHxUQUIwfEJTMHxWVDB8RkYwfCwgDQpjX2NmbGFnPUJPVEhF UnxDUzh8Q1JFQUR8SFVQQ0x8Q0xPQ0FMLCBjX2xmbGFnPSwgY19saW5lPU5fVFRZLCANCmNf Y2M9W1tWSU5UUl09MHgzLCBbVlFVSVRdPTB4MWMsIFtWRVJBU0VdPTB4N2YsIFtWS0lMTF09 MHgxNSwgDQpbVkVPRl09MHg0LCBbVlRJTUVdPTAsIFtWTUlOXT0weDEsIFtWU1dUQ109MCwg W1ZTVEFSVF09MHgxMSwgDQpbVlNUT1BdPTB4MTMsIFtWU1VTUF09MHgxYSwgW1ZFT0xdPTAs IFtWUkVQUklOVF09MHgxMiwgW1ZESVNDQVJEXT0weGYsIA0KW1ZXRVJBU0VdPTB4MTcsIFtW TE5FWFRdPTB4MTYsIFtWRU9MMl09MCwgWzE3XT0wLCBbMThdPTBdfSkNCg0KSSB0cmllZCB0 byBnZXQgcGFzdCBteSBpc3N1ZSB3aXRoIHRoZSBiYXVkIHJhdGUgYnkgdHJ5aW5nIGEgZmV3 IG90aGVyIA0KY2xvc2UgYmF1ZCByYXRlcyBhbmQgbWVzc2luZyB3aXRoIHNvbWUgcGF1c2Vz LCBidXQgbm9uZSBvZiBpdCBsZWQgdG8gDQpwZXJzaXN0ZW50IHJlc3VsdHMgbGlrZSB1c2lu ZyBhbiBhY3R1YWwgYmF1ZCByYXRlIG9mIDEwXzAwMC4NCg0KSSd2ZSBhbHNvIHJlYWQgYWJv dXQgc29tZSBvdGhlciBjYXNlcyBvZiB3ZWlyZCBiYXVkIHJhdGVzLCB5ZXMgdGhleSBhcmUg DQpyYXJlLCBidXQgdGhleSBleGlzdCBhbmQgZXNwZWNpYWxseSBvbiBwbGF0Zm9ybXMgdGhh dCB0ZW5kIHRvIHJlbHkgb24gX211c2xfDQoNCkJlc3QgcmVnYXJkcywNClJhcGhhZWwNCg0K WzFdIGh0dHBzOi8vYWxpZXhwcmVzcy5jb20vaXRlbS8xMDA1MDA0ODkzMTIwNDk1Lmh0bWwN ClsyXSANCmh0dHBzOi8vb2xkLnJlZGRpdC5jb20vci9NaW5pUENzL2NvbW1lbnRzLzE4aWN1 c2cvdDlfcGx1c19uMTAwX2hvd190b19jb250cm9sX2xlZC8NCg0KT24gMTEuMDQuMjQgMTk6 NTUsIEplZmZyZXkgV2FsdG9uIHdyb3RlOg0KPiANCj4gDQo+IE9uIFRodSwgQXByIDExLCAy MDI0IGF0IDE6MzDigK9QTSBSaWNoIEZlbGtlciA8ZGFsaWFzQGxpYmMub3JnIA0KPiA8bWFp bHRvOmRhbGlhc0BsaWJjLm9yZz4+IHdyb3RlOg0KPiANCj4gICAgIE9uIFRodSwgQXByIDEx LCAyMDI0IGF0IDEyOjU1OjU2UE0gLTA0MDAsIFJpY2ggRmVsa2VyIHdyb3RlOg0KPiAgICAg ID4gT24gVGh1LCBBcHIgMTEsIDIwMjQgYXQgMTA6MjQ6NTZBTSAtMDQwMCwgUmljaCBGZWxr ZXIgd3JvdGU6DQo+ICAgICAgPiA+IFNpbmNlIGl0J3MgY29tZSB1cCBhZ2FpbiwgSSdtIGxv b2tpbmcgYXQgd2hhdCBpdCB3b3VsZCB0YWtlIHRvIGdldA0KPiAgICAgID4gPiBzdXBwb3J0 IGZvciBjdXN0b20gYmF1ZCByYXRlcyBpbiB0ZXJtaW9zIHdvcmtpbmcuIFRoaXMgdG9waWMg aXMNCj4gICAgICA+ID4gc29tZXRoaW5nIG9mIGEgbWVzcywgYXMgaXQgaW52b2x2ZXMgZGlz Y3JlcGFuY2llcyBiZXR3ZWVuIG91cg0KPiAgICAgdGVybWlvcw0KPiAgICAgID4gPiBzdHJ1 Y3R1cmUgYW5kIHRoZSBrZXJuZWwgdGVybWlvcy90ZXJtaW9zMiBzdHJ1Y3R1cmVzLg0KPiAg ICAgID4gPg0KPiAgICAgID4gPiBTemFib2xjcyBOYWd5IGRpZCBzb21lIG9mIHRoZSBpbml0 aWFsIHJlc2VhcmNoIG9uIHRoZSBtaXNtYXRjaGVkDQo+ICAgICAgPiA+IGRlZmluaXRpb25z IGluIDIwMTY6DQo+ICAgICBodHRwczovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8y MDE2LzA0LzI2LzMNCj4gICAgIDxodHRwczovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVz bC8yMDE2LzA0LzI2LzM+DQo+ICAgICAgPiA+DQo+ICAgICAgPiA+IEJhc2ljYWxseSwgaXQg bG9va3MgbGlrZSB3aGF0IGhhcHBlbmVkIHdhcyB0aGF0IHdlIHRyaWVkIHRvDQo+ICAgICBt YXRjaCB0aGUNCj4gICAgICA+ID4gZ2xpYmMgZ2VuZXJpYyBBQkkgKGFuIGVhcmx5IGdvYWwg b2YgbG90cyBvZiBzdHVmZiBpbiBtdXNsKSBhcw0KPiAgICAgbG9uZyBhcw0KPiAgICAgID4g PiBpdCBsaW5lZCB1cCB3aXRoIHRoZSBrZXJuZWwgdGVybWlvcyAobm90IHRlcm1pb3MyKSBp b2N0bCBzdHJ1Y3R1cmUsDQo+ICAgICAgPiA+IGJ1dCBkZXZpYXRlZCB3aGVuIGl0IHdvdWxk bid0IChwb3dlcnBjIGhhZCBjX2xpbmUgYW5kIGNfY2Mgb3JkZXINCj4gICAgICA+ID4gZmxp cHBlZCBhbmQgd2UgZm9sbG93ZWQga2VybmVsIG9uIHRoYXQpLCBhbmQgZGlkbid0IGRvIGds aWJjDQo+ICAgICAgPiA+IGFyY2gtc3BlY2lmaWMgbWlzdGFrZXMgKGxpa2UgbWlwcyBvbWl0 dGluZyB0aGUgX19jX1tpb11zcGVlZA0KPiAgICAgZmllbGRzKS4NCj4gICAgICA+ID4NCj4g ICAgICA+ID4gSWYgd2UgaGFkIHVzZWQgdGhlIGtlcm5lbCB2YWx1ZSBvZiBOQ0NTIGV2ZXJ5 d2hlcmUsIHJhdGhlciB0aGFuIHRoZQ0KPiAgICAgID4gPiBpbmZsYXRlZCBnbGliYyB2YWx1 ZSBvZiAzMiwgd2UgY291bGQgYWRkIEJPVEhFUiBzdXBwb3J0IGp1c3QgYnkNCj4gICAgICA+ ID4gYXR0ZW1wdGluZyBUQ1NFVFMyIHVzaW5nIHRoZSBjYWxsZXIncyB0ZXJtaW9zIHN0cnVj dHVyZSwgYW5kIG9ubHkNCj4gICAgICA+ID4gZmFsbGluZyBiYWNrIGlmIGl0IGRvZXNuJ3Qg d29yay4gSW4gdGhlb3J5IHdlICpjb3VsZCogY2hhbmdlIHRvIGRvDQo+ICAgICAgPiA+IHRo aXMgbm93LiBUaGUgX19jX1tpb11zcGVlZCBtZW1iZXJzIGFyZSBub3QgaW4gdGhlIHB1Ymxp Yw0KPiAgICAgbmFtZXNwYWNlLA0KPiAgICAgID4gPiBhbmQgTkNDUyBjb3VsZCBiZSByZWR1 Y2VkIHRvIGFjY29tbW9kYXRlIHRoZW0gYXMgbG9uZyBhcyB0aGUNCj4gICAgIG92ZXJhbGwN Cj4gICAgICA+ID4gc3RydWN0IHNpemUgd2FzIHByZXNlcnZlZC4gVGhpcyBtaWdodCBiZSB+ dWdseX4gZm9yIHByb2dyYW1zIGJ1aWx0DQo+ICAgICAgPiA+IHdpdGggdGhlIG9sZCBOQ0NT IG9mIDMyLCB3aGljaCBtaWdodCBjb3B5IGNfY2MgcGFzdCBpdHMgbmV3DQo+ICAgICBlbmQs IGJ1dA0KPiAgICAgID4gPiB0aGV5J2QganVzdCBiZSBtb3Zpbmcgc3R1ZmYgdG8vZnJvbSB0 aGUgcmVzZXJ2ZWQgc3BlZWQgZmllbGRzIHRoZXkNCj4gICAgICA+ID4gY291bGRuJ3QgeWV0 IGJlIHVzaW5nLiBUaGUgd29yc3QgcGFydCBhYm91dCB0aGlzIHNlZW1zIHRvIGJlDQo+ICAg ICB0aGF0IHdlJ2QNCj4gICAgICA+ID4gYmUgaW50cm9kdWNpbmcgbW9yZSBhcmNoLXNwZWNp ZmljIHZlcnNpb25zIG9mIGJpdHMvdGVybWlvcy5oLCBzaW5jZQ0KPiAgICAgID4gPiB0aGUg ImdlbmVyaWMiIGRlZmluaXRpb24gd2UgaGF2ZSBub3cgYWN0dWFsbHkgaGFzIGRpZmZlcmVu dCBsYXlvdXQNCj4gICAgICA+ID4gZGVwZW5kaW5nIG9uIHRoZSBhcmNoJ3MgYWxpZ25tZW50 IHJlcXVpcmVtZW50cy4gSSB0aGluayB0aGlzIG9ubHkNCj4gICAgICA+ID4gYWZmZWN0cyBt NjhrICh3aGVyZSBpdCdzIDIgcmF0aGVyIHRoYW4gNCBieXRlIGFsaWdubWVudCBmb3INCj4g ICAgIGludCksIHNvDQo+ICAgICAgPiA+IG1heWJlIGl0J3Mgbm90IGEgYmlnIGRlYWwgdG8g YWRkIGp1c3Qgb25lLg0KPiAgICAgID4gPg0KPiAgICAgID4gPiBUaGUgYWx0ZXJuYXRpdmUg aXMgdG8gb25seSB1c2UgdGhlIGNhbGxlci1wcm92aWRlZCB0ZXJtaW9zDQo+ICAgICBpbi1w bGFjZSBpbg0KPiAgICAgID4gPiB0aGUgY2FzZSB3aGVyZSB3ZSBjYW4gZ2V0IGJ5IHdpdGhv dXQgdGVybWlvczIgaW50ZXJmYWNlczogdGhhdCBpcywNCj4gICAgICA+ID4gd2hlbiBlaXRo ZXIgQk9USEVSIGlzIG5vdCBzZXQgKGNsYXNzaWMgUE9TSVggYmF1ZCBmbGFncyksIG9yDQo+ ICAgICBUQ1NFVFMyDQo+ICAgICAgPiA+IGlzIG5vdCBkZWZpbmVkIChwbGFpbiB0ZXJtaW9z IGFscmVhZHkgc3VwcG9ydHMgQk9USEVSIGZvciB0aGlzDQo+ICAgICBhcmNoKS4NCj4gICAg ICA+ID4gT3RoZXJ3aXNlLCB0cmFuc2xhdGUgdG8gYSBrZXJuZWwgdGVybWlvczIgZm9ybSwg d2hpY2ggcmVhbGx5DQo+ICAgICByZXF1aXJlcw0KPiAgICAgID4gPiBub3RoaW5nIG90aGVy IHRoYW4ga25vd2luZyBhbiBhcmNoLWRlZmluZWQgb2Zmc2V0IGZvciB0aGUgc3BlZWQNCj4g ICAgICA+ID4gZmllbGRzLg0KPiAgICAgID4gPg0KPiAgICAgID4gPiBGb3IgZ29pbmcgdGhl IG90aGVyIGRpcmVjdGlvbiAodGNnZXRhdHRyKSBpdCdzIGV2ZW4gZWFzaWVyOiB3ZSdyZQ0K PiAgICAgID4gPiBhbGxvd2VkIHRvIGNsb2JiZXIgdGhlIGNhbGxlciBidWZmZXIsIHNvIGp1 c3QgdHJ5IFRDR0VUUzIgYW5kDQo+ICAgICBtb3ZlIHRoZQ0KPiAgICAgID4gPiBzcGVlZHMg ZnJvbSB0aGVpciBrZXJuZWwgb2Zmc2V0IGludG8gdGhlIGxpYmMgbWVtYmVyIG9mZnNzZXQu DQo+ICAgICAgPiA+DQo+ICAgICAgPiA+IEkgdGhpbmsgdGhpcyBzZWNvbmQgYXBwcm9hY2gg aXMgcHJvYmFibHkgYmV0dGVyLCBidXQgSSdtIG9wZW4gdG8NCj4gICAgICA+ID4gcmVhc29u cyB3aHkgaXQgbWlnaHQgbm90IGJlLg0KPiAgICAgID4NCj4gICAgICA+IE9uZSB0aGluZyBJ IGhhZG4ndCBldmVuIGNvbnNpZGVyZWQgeWV0IGlzIGhvdyB0aGUgYXBwbGljYXRpb24gaXMN Cj4gICAgICA+IGV4cGVjdGVkIHRvIHNldCBjdXN0b20gc3BlZWRzLiBXZSBkb24ndCBleHBv c2UgQk9USEVSLCBhbmQgd2hpbGUgd2UNCj4gICAgICA+IGNvdWxkIGV4cG9zZSBpdCBhbmQg cHV0IHRoZSBjX1tpb11zcGVlZCBtZW1iZXJzIGluIHRoZSBwdWJsaWMNCj4gICAgICA+IG5h bWVzcGFjZSBmb3IgZGlyZWN0IGFjY2VzcywgaXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlz IHRoZQ0KPiAgICAgcmlnaHQgd2F5DQo+ICAgICAgPiB0byBkbyBpdC4NCj4gICAgICA+DQo+ ICAgICAgPiBnbGliYydzIGFwcHJvYWNoIHNlZW1zIHRvIGJlIGhhdmluZyBjZnNldFtpb11z cGVlZCBhY2NlcHQgdmFsdWVzDQo+ICAgICBvdGhlcg0KPiAgICAgID4gdGhhbiB0aGUgc3lt Ym9saWMgQiBjb25zdGFudHMsIHdoaWNoIFBPU0lYIGFsbG93cyBhbmQgbWVudGlvbnMgaW4g dGhlDQo+ICAgICAgPiBSQVRJT05BTEU6DQo+ICAgICAgPg0KPiAgICAgID7CoCDCoCDCoFRo ZXJlIGlzIG5vdGhpbmcgdG8gcHJldmVudCBhbiBpbXBsZW1lbnRhdGlvbiBhY2NlcHRpbmcg YXMgYW4NCj4gICAgICA+wqAgwqAgwqBleHRlbnNpb24gYSBudW1iZXIgKHN1Y2ggYXMgMTI2 KSwgYW5kIHNpbmNlIHRoZSBlbmNvZGluZyBvZiB0aGUNCj4gICAgICA+wqAgwqAgwqBCeHh4 IHN5bWJvbHMgaXMgbm90IHNwZWNpZmllZCwgdGhpcyBjYW4gYmUgZG9uZSB0byBhdm9pZA0K PiAgICAgID7CoCDCoCDCoGludHJvZHVjaW5nIGFtYmlndWl0eS4NCj4gICAgICA+DQo+ICAg ICAgPg0KPiAgICAgaHR0cHM6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5 OTE5Nzk5L2Z1bmN0aW9ucy9jZmdldGlzcGVlZC5odG1sIDxodHRwczovL3B1YnMub3Blbmdy b3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL2NmZ2V0aXNwZWVkLmh0 bWw+DQo+ICAgICAgPg0KPiAgICAgID4gVGhpcyBzZWVtcyBsaWtlIGl0J3MgdGhlIGJldHRl ciBhcHByb2FjaC4gSXQgZG9lcyBoYXZlIHZhbHVlcw0KPiAgICAgMC0xNSBhbmQNCj4gICAg ICA+IDQwOTYtNDExMSBhcyBpbXBvc3NpYmxlLXRvLXNldCBiZWNhdXNlIHRoZXkgb3Zlcmxh cCB3aXRoIEIgY29uc3RhbnRzLA0KPiAgICAgID4gYnV0IHRoZXNlIGFyZSBub3QgdXNlZnVs IHNwZWVkcy4NCj4gDQo+ICAgICBPSywgbm8sIGl0IGRvZXNuJ3QuIE9ubHkgdGhlIG5vbnN0 YW5kYXJkIGNmc2V0c3BlZWQgb24gZ2xpYmMgYWNjZXB0cw0KPiAgICAgYWN0dWFsIG51bWJl cnMsIGFuZCBhcHBsaWVzIHRoZW0gdG8gYm90aCBpbnB1dCBhbmQgb3V0cHV0LiBUaGUNCj4g ICAgIHN0YW5kYXJkIGNmc2V0W2lvXXNwZWVkIGZ1bmN0aW9ucyBvbmx5IGFjY2VwdCB0aGUg c3ltYm9saWMgQg0KPiAgICAgY29uc3RhbnRzLiBBbmQuLi4gdGhleSBzZWVtIHRvIGJlIHN0 b3Jpbmcgc3ltYm9saWMgQiBjb25zdGFudHMgaW4gdGhlDQo+ICAgICBjX1tpb11zcGVlZCBt ZW1iZXJzLCB3aGljaCBzZWVtcyB3cm9uZy4gPl88DQo+IA0KPiAgICAgID4gT2YgY291cnNl IGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBsb29rIGF0IHdoYXQgYXBwbGljYXRpb25zIGV4cGVj dA0KPiAgICAgdG8gYmUNCj4gICAgICA+IGFibGUgdG8gZG8uDQo+IA0KPiAgICAgVGh1cywg YXBwbGljYXRpb25zIHVzaW5nIHRoZSBnbGliYyBBUEkgaGVyZSBuZWVkIEJPVEhFUiB0byBi ZSBkZWZpbmVkDQo+ICAgICBhbmQgbmVlZCB0byBkaXJlY3RseSBhY2Nlc3MgY19baW9dc3Bl ZWQgbWVtYmVycy4NCj4gDQo+ICAgICBUaGlzIHNlZW1zIGxpa2UgYW4gdWdseSBsZWFrIG9m IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGJ1dCBJJ20gbm90DQo+ICAgICBzdXJlIHdoZXRo ZXIgaXQgd291bGQgYmUgdXNlZnVsIHRvIGhhdmUgQVBJLWluY29tcGF0aWJsZSBzdXBwb3J0 IGZvcg0KPiAgICAgY3VzdG9tIGJhdWRzLg0KPiANCj4gDQo+IEkgaGF2ZSBuZXZlciBlbmNv dW50ZXJlZCBhIG5lZWQgZm9yIGEgY3VzdG9tIGJhdWQgcmF0ZSBkdWUgdG8gDQo+IHN0YW5k YXJkaXplZCBVQVJUIGNoaXBzLiBUaGVyZSBhcmUgcHJvYmFibHkgc29tZSBlZGdlIGNhc2Vz IG91dCB0aGVyZS4gDQo+IEknZCBsaWtlIHRvIGhlYXIgYWJvdXQgdGhlbS4NCj4gDQo+IFJl YWRpbmcgYSBiYXVkIHJhdGUgZnJvbSBhIGNvbmZpZyBmaWxlIHRoYXQgY2FuIGJlIG1vZGlm aWVkIGJ5IGEgdXNlciANCj4gaW50cm9kdWNlcyB0YWludGVkIGlucHV0cy4gSSBjbGFtcCB0 aGUgc3BlZWQgdG8gYSBCLWNvbnN0YW50IHRvIGNsZWFuc2UgDQo+IG1pc3Rha2VzIGFuZCBt YWxpY2lvdXMgaW5wdXRzOg0KPiANCj4gdW5zaWduZWQgaW50IHRlcm1fY2xhbXBfc3BlZWQo dW5zaWduZWQgaW50IHNwZWVkKQ0KPiB7DQo+ICNpZiBkZWZpbmVkKEI0MDAwMDAwKQ0KPiAg wqAgwqAgaWYgKHNwZWVkID49IDQwMDAwMDApDQo+ICDCoCDCoCDCoCDCoCByZXR1cm4gNDAw MDAwMDsNCj4gIMKgIMKgIGVsc2UNCj4gI2VuZGlmDQo+ICNpZiBkZWZpbmVkKEIzNTAwMDAw KQ0KPiAgwqAgwqAgaWYgKHNwZWVkID49IDM1MDAwMDApDQo+ICDCoCDCoCDCoCDCoCByZXR1 cm4gMzUwMDAwMDsNCj4gIMKgIMKgIGVsc2UNCj4gI2VuZGlmDQo+IC4uLg0KPiAgwqAgwqAg aWYgKHNwZWVkID49IDU3NjAwKQ0KPiAgwqAgwqAgwqAgwqAgcmV0dXJuIDU3NjAwOw0KPiAg wqAgwqAgZWxzZSBpZiAoc3BlZWQgPj0gMzg0MDApDQo+ICDCoCDCoCDCoCDCoCByZXR1cm4g Mzg0MDA7DQo+ICDCoCDCoCBlbHNlIGlmIChzcGVlZCA+PSAxOTIwMCkNCj4gIMKgIMKgIMKg IMKgIHJldHVybiAxOTIwMDsNCj4gIMKgIMKgIGVsc2UgaWYgKHNwZWVkID49IDk2MDApDQo+ ICDCoCDCoCDCoCDCoCByZXR1cm4gOTYwMDsNCj4gIMKgIMKgIGVsc2UgaWYgKHNwZWVkID49 IDQ4MDApDQo+ICDCoCDCoCDCoCDCoCByZXR1cm4gNDgwMDsNCj4gIMKgIMKgIGVsc2UgaWYg KHNwZWVkID49IDI0MDApDQo+ICDCoCDCoCDCoCDCoCByZXR1cm4gMjQwMDsNCj4gIMKgIMKg IGVsc2UNCj4gIMKgIMKgIMKgIMKgIHJldHVybiAxMjAwOw0KPiB9DQo+IA0KPiAgICAgTWF5 YmUgd2Ugc2hvdWxkIGNoZWNrIHdoYXQgdGhlIEJTRHMgb3IgYW55IG90aGVyIGltcGxlbWVu dGF0aW9ucyBkbw0KPiAgICAgaGVyZS4uLg0KPiANCj4gDQo+IEplZmYNCg== --------------0OyNmMZha0qsa9bXhPfM6kPv Content-Type: application/pgp-keys; name="OpenPGP_0x611645D1162CD40F.asc" Content-Disposition: attachment; filename="OpenPGP_0x611645D1162CD40F.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEX1tu4RYJKwYBBAHaRw8BAQdAq1eZdf60I4liiyulKq4fRg32COnOktaXkPxe ECPulj/NNVJhcGhhZWwgS2llZm1hbm4gPHJhcGhhZWwua2llZm1hbm5AaW5zby50 dXdpZW4uYWMuYXQ+wpYEExYIAD4WIQQYq4vZo+IX1KbsbSphFkXRFizUDwUCX1tu 4QIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBhFkXRFizUDyzJ AQDTHC/qbO2sQluzkEhj0LCXDi/52tFzNUvG4VnVqjxKKgEAqcF9kUz+PvtTxa11 ckzjbBv4FwEwNHxPyHC3GZqn4wPOOARfW27hEgorBgEEAZdVAQUBAQdAhrb610TI 9v2vzC13abBxJVEaTmxA43i7bX6Bum8l8woDAQgHwn4EGBYIACYWIQQYq4vZo+IX 1KbsbSphFkXRFizUDwUCX1tu4QIbDAUJCWYBgAAKCRBhFkXRFizUDydpAPsF+ci7 bnygc0ViLJBnGvdAn2+/+jszmI2wssrNCrlpagEAsyNyYGTRpGhpQGBd6+Ptff4J VRScaMyhk6gNb6ebMAc=3D =3DtasI -----END PGP PUBLIC KEY BLOCK----- --------------0OyNmMZha0qsa9bXhPfM6kPv-- --------------59M0gmIaDnC7k5T55tfs6zXp-- --------------0jdpUaDMhMXAEn389vHEXq3z Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQQYq4vZo+IX1KbsbSphFkXRFizUDwUCZhgtPAUDAAAAAAAKCRBhFkXRFizUD02H AQCeXsRiIzcdKMAesNf3S8padIeoLLqIgnKsNGixVBAemAEA3D2WHzcc7zoplC5AGglj3Oh8Vwao YfWYEex9vdGPowo= =otMt -----END PGP SIGNATURE----- --------------0jdpUaDMhMXAEn389vHEXq3z--