From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A645BE77188 for ; Tue, 14 Jan 2025 18:53:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=y/InD9uXDF2D+3ITuPFpWkICFCANPKNO5QILIOqeLd4=; b=KZ9RRRLDV8qJfPXd9J56IapjLg 5XJ832BBOoN4Vz9fckFdQLHcDdlUbtns7bnPFgUSXESlfXCs/rPQHtt04C7iF8XvaMWsuT7zJIPwv vJ/DixEGhz+eMjh6ngpVtYxymfz1zHnP/4raYTisydhm0dxUl+4LBndp/ta4o/okLVRKPAg9d7S9c yJ/NBuid9XZks1UBTvsoi2YK97m3zOPfGt5h97Sa3tHgmDsbDiAfovOq3e4kP3ZajNbjHn9sLrgnh BOdDUOFBqzJhu1NGYSnSWkpA6BCGn/6I4QDu/tGGgM9yhAaXMi/ZaLfeAMfzVt5aiD7F5tiqLizpR ZL1cqhnw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tXm2w-00000009TBH-1FYA; Tue, 14 Jan 2025 18:53:50 +0000 Received: from s3.sipsolutions.net ([2a01:4f8:242:246e::2] helo=sipsolutions.net) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tXm2t-00000009TAU-03kM for linux-um@lists.infradead.org; Tue, 14 Jan 2025 18:53:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=MIME-Version:Content-Type:References: In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Content-Transfer-Encoding: Sender:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-To:Resent-Cc:Resent-Message-ID; bh=y/InD9uXDF2D+3ITuPFpWkICFCANPKNO5QILIOqeLd4=; t=1736880824; x=1738090424; b=n7sn7AbNInp3U8h5cUuA+HZF2whngqb/en74SBY5y6FsiUeSRZjTLRAZy4TjGJ3Yi8mBBmwgxoa LEqBX3qzVi4e9pIBfNcToEsqJL2EUtmUUWAO1/e2ZgLqLRxaMzjO/rw0h88/YKVPM9iZk5xzVR3z0 Ppb57IW4orrz+gfJsxTTbZE1uJcRx1m88b9DFBt13zyuGnqJabAMCBx6oSBmD6GPmZ1joJNmvYfZW sjLtlkoQrcONYK/dOArazF3VFqXCrpBmb6dm88XGWoGjxxAfKDYotu6Skv9c/yi/MdqTH9nnDiKsn MKPS0ads/5Dkg5684+JrNCqFJSKEZkQrAY6w==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98) (envelope-from ) id 1tXm2k-0000000En9c-4AYV; Tue, 14 Jan 2025 19:53:39 +0100 Message-ID: <3db55c1586f66718c871b678ec10d6c2aa88fbb3.camel@sipsolutions.net> Subject: Re: [PATCH v6 00/13] nommu UML From: Benjamin Berg To: Hajime Tazaki , linux-um@lists.infradead.org Cc: ricarkol@google.com, Liam.Howlett@oracle.com Date: Tue, 14 Jan 2025 19:53:36 +0100 In-Reply-To: References: Content-Type: multipart/mixed; boundary="=-gXkPpLcPKKxmAp9ykZ7c" User-Agent: Evolution 3.54.2 (3.54.2-1.fc41) MIME-Version: 1.0 X-malware-bazaar: not-scanned X-malware-bazaar-2: OK X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250114_105347_449672_76B18CAC X-CRM114-Status: GOOD ( 32.01 ) X-BeenThere: linux-um@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-um" Errors-To: linux-um-bounces+linux-um=archiver.kernel.org@lists.infradead.org --=-gXkPpLcPKKxmAp9ykZ7c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGksCgpPbiBUdWUsIDIwMjUtMDEtMTQgYXQgMjA6MzAgKzA5MDAsIEhhamltZSBUYXpha2kgd3Jv dGU6Cj4gVGhpcyBwYXRjaHNldCBpcyBhbm90aGVyIHNwaW4gb2Ygbm9tbXUgbW9kZSBhZGRpdGlv biB0byBVTUwuwqAgSXQgZG9lc24ndAo+IGNoYW5nZSBhIGxvdCBzaW5jZSB0aGUgbGFzdCB2ZXJz aW9uICh2NSksIGJ1dCBjb250YWluIGNsZWFuIHVwcy7CoCBJdCB3b3VsZAo+IGJlIG5pY2UgdG8g aGVhciBhYm91dCB5b3VyIG9waW5pb25zIG9uIHRoYXQuCj4gCj4gVGhlcmUgYXJlIHN0aWxsIHNl dmVyYWwgbGltaXRhdGlvbnMvaXNzdWVzIHdoaWNoIHdlIGFscmVhZHkgZm91bmQ7Cj4gaGVyZSBp cyB0aGUgbGlzdCBvZiB0aG9zZSBpc3N1ZXMuCj4gCj4gLSBtZW1vcnkgbWFwcGVkIGJ5IGxvYWRh YmxlIG1vZHVsZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGVkIGZyb20KPiDCoCB1c2Vyc3BhY2UgbWVt b3J5LgoKTWF5YmUgSSBhbSBtaXNzaW5nIGl0LCBidXQgSSBkbyBub3QgeWV0IHNlZSBwcm9wZXIg RlAgcmVnaXN0ZXIKaGFuZGxpbmcuIFRoaXMgd2lsbCBiZSBuZWVkZWQgZm9yIHRhc2svdGhyZWFk IHN3aXRjaGVzIGFuZCBhbHNvIHNpZ25hbAplbWlzc2lvbi9zaWdyZXR1cm4uIEkgYW0gYXR0YWNo aW5nIHRoZSB0ZXN0IHByb2dyYW0gdGhhdCBJIHVzZWQgdG8KdmVyaWZ5IHRoZSBjb3JyZWN0IGJl aGF2aW91ciB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgcmVjZW50IGNoYW5nZXMgdG8gRlAKcmVnaXN0 ZXIgaGFuZGxpbmcgaW4gVU1MLgoKQmVuamFtaW4KCj4gCj4gLS0gSGFqaW1lCj4gCj4gdjY6Cj4g LSByZWJhc2UgdG8gdGhlIGxhdGVzdCB1bWwvbmV4dCB0cmVlCj4gLSBtb3JlIGNsZWFuIHVwIG9u IG1tdS9ub21tdSBmb3Igc2lnbmFsIGhhbmRsaW5nIFsxMC8xM10KPiAtIHJlbmFtZSBmdW5jdGlv bnMgb2YgbWNvbnRleHQgcm91dGluZXMgWzA2LDEwLzEzXQo+IC0gYWRkZWQgQWNrZWQtYnkgdGFn IGZvciBiaW5mbXRfZWxmX2ZkcGljIFswMi8xM10KPiAKPiB2NToKPiAtIGNsZWFuIHVwIHN0YWNr IG1hbmlwdWxhdGlvbiBjb2RlIFswNSwwNiwwNywxMC8xM10KPiAtCj4gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvbGludXgtdW0vY292ZXIuMTczMzk5ODE2OC5naXQudGhlaGFqaW1lQGdtYWlsLmNv bS8KPiAKPiB2NDoKPiAtIGFkZCBhcmNoL3VtL25vbW11LCBhcmNoL3g4Ni91bS9ub21tdSB0byBj b250YWluICFNTVUgc3BlY2lmaWMgY29kZXMKPiAtIHJlbW92ZSB6cG9saW5lIHBhdGNoCj4gLSBk cm9wIGJpbmZtdF9lbGZfZmRwaWMgcGF0Y2gKPiAtIHJlZHVjZSBpZm5kZWYgQ09ORklHX01NVSBp ZiBwb3NzaWJsZQo+IC0gc3BsaXQgdG8gZWxmIGhlYWRlciBjbGVhbnVwIHBhdGNoIFswMS8xM10K PiAtIGZpeCBrZXJuZWwgdGVzdCByb2JvdCB3YXJuaW5ncyBbMDYvMTNdCj4gLSBmaXggY29kaW5n IHN0eWxlcyBbMDcvMTNdCj4gLSBtb3ZlIHRhc2tfdG9wX29mX3N0YWNrIGRlZmluaXRpb24gWzA1 LzEzXQo+IC0KPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC11bS9jb3Zlci4xNzMzNjUy OTI5LmdpdC50aGVoYWppbWVAZ21haWwuY29tLwo+IAo+IHYzOgo+IC0KPiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9saW51eC11bS9jb3Zlci4xNzMzMTk5NzY5LmdpdC50aGVoYWppbWVAZ21haWwu Y29tLwo+IC0gYWRkIHNlY2NvbXAtYmFzZWQgc3lzY2FsbCBob29rIGluIGFkZGl0aW9uIHRvIHpw b2xpbmUgWzA2LzEzXQo+IC0gcmVtb3ZlIFJGQywgYWRkIGEgbGluZSB0byBNQUlOVEFJTkVSUyBm aWxlCj4gLSBmaXgga2VybmVsIHRlc3Qgcm9ib3Qgd2FybmluZ3MgWzAyLzEzLDA4LzEzLDEwLzEz XQo+IC0gYWRkIGJhc2UtY29tbWl0IHRhZyB0byBjb3ZlciBsZXR0ZXIKPiAtIHB1bGwgdGhlIGxh dGVzdCB1bWwvbmV4dAo+IC0gY2xlYW4gdXAgU0lHU0VHViBoYW5kbGluZyBbMTAvMTNdCj4gLSBk ZXRlY3QgZnNnc2Jhc2UgYXZhaWxhYmlsaXR5IHdpdGggZWxmIGF1eCB2ZWN0b3IgWzA4LzEzXQo+ IC0gc2ltcGxpZnkgdmRzbyBjb2RlIHdpdGggbWFjcm9zIFswOS8xM10KPiAKPiBSRkMgdjI6Cj4g LQo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXVtL2NvdmVyLjE3MzEyOTA1NjcuZ2l0 LnRoZWhhamltZUBnbWFpbC5jb20vCj4gLSBiYXNlIGJyYW5jaCBpcyBub3cgdW1sL2xpbnV4Lmdp dCBpbnN0ZWFkIG9mIHRvcnZhbGRzL2xpbnV4LmdpdC4KPiAtIHJlb3JnYW5pemUgdGhlIHBhdGNo IHNlcmllcyB0byBjbGVhbiB1cAo+IC0gZml4ZWQgdmFyaW91cyBjb2Rpbmcgc3R5bGVzIGlzc3Vl cwo+IC0gY2xlYW4gdXAgZXhlYyBjb2RlIHBhdGggWzA3LzEzXQo+IC0gZml4ZWQgdGhlIGNyYXNo L1NJR1NFR1YgY2FzZSBvbiB1c2Vyc3BhY2UgcHJvZ3JhbXMgWzEwLzEzXQo+IC0gYWRkIHNlY2Nv bXAgZmlsdGVyIHRvIGxpbWl0IHN5c2NhbGwgY2FsbGVyIGFkZHJlc3MgWzA2LzEzXQo+IC0gZGV0 ZWN0IGZzZ3NiYXNlIGF2YWlsYWJpbGl0eSB3aXRoIHNpZ3NldGptcC9zaWdsb25nam1wIFswOC8x M10KPiAtIHJlbW92ZXMgdW5yZWxhdGVkIGNoYW5nZXMKPiAtIHJlbW92ZXMgdW5uZWVkZWQgaWZu ZGVmIENPTkZJR19NTVUKPiAtIGNvbnZlcnQgVU1MX0NPTkZJR19NTVUgdG8gQ09ORklHX01NVSBh cyB1c2luZyB1bWwvbGludXguZ2l0Cj4gLSBwcm9wb3NlZCBhIHBhdGNoIG9mIG1hcGxlLXRyZWUg aXNzdWUgKHJlc29sdmluZyBhIGxpbWl0YXRpb24gaW4gUkZDCj4gdjEpCj4gwqAKPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9saW51eC1tbS8yMDI0MTEwODIyMjgzNC4zNjI1MjE3LTEtdGhlaGFq aW1lQGdtYWlsLmNvbS8KPiAKPiBSRkM6Cj4gLQo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xp bnV4LXVtL2NvdmVyLjE3Mjk3NzAzNzMuZ2l0LnRoZWhhamltZUBnbWFpbC5jb20vCj4gCj4gSGFq aW1lIFRhemFraSAoMTMpOgo+IMKgIHg4Ni91bTogY2xlYW4gdXAgZWxmIHNwZWNpZmljIGRlZmlu aXRpb25zCj4gwqAgeDg2L3VtOiBub21tdTogZWxmIGxvYWRlciBmb3IgZmRwaWMKPiDCoCB1bTog ZGVjb3VwbGUgTU1VIHNwZWNpZmljIGNvZGUgZnJvbSB0aGUgY29tbW9uIHBhcnQKPiDCoCB1bTog bm9tbXU6IG1lbW9yeSBoYW5kbGluZwo+IMKgIHg4Ni91bTogbm9tbXU6IHN5c2NhbGwgaGFuZGxp bmcKPiDCoCB1bTogbm9tbXU6IHNlY2NvbXAgc3lzY2FsbHMgaG9vawo+IMKgIHg4Ni91bTogbm9t bXU6IHByb2Nlc3MvdGhyZWFkIGhhbmRsaW5nCj4gwqAgdW06IG5vbW11OiBjb25maWd1cmUgZnMg cmVnaXN0ZXIgb24gaG9zdCBzeXNjYWxsIGludm9jYXRpb24KPiDCoCB4ODYvdW0vdmRzbzogbm9t bXU6IHZkc28gbWVtb3J5IHVwZGF0ZQo+IMKgIHg4Ni91bTogbm9tbXU6IHNpZ25hbCBoYW5kbGlu Zwo+IMKgIHVtOiBjaGFuZ2UgbWFjaGluZSBuYW1lIGZvciB1bmFtZSBvdXRwdXQKPiDCoCB1bTog bm9tbXU6IGFkZCBkb2N1bWVudGF0aW9uIG9mIG5vbW11IFVNTAo+IMKgIHVtOiBub21tdTogcGx1 ZyBub21tdSBjb2RlIGludG8gYnVpbGQgc3lzdGVtCj4gCj4gwqBEb2N1bWVudGF0aW9uL3ZpcnQv dW1sL25vbW11LXVtbC5yc3TCoMKgwqAgfCAxNzcgKysrKysrKysrKysrKysrKysrKysrKwo+IMKg TUFJTlRBSU5FUlPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAxICsKPiDCoGFyY2gvdW0vS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTQgKy0KPiDCoGFyY2gvdW0vTWFr ZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAx MCArKwo+IMKgYXJjaC91bS9jb25maWdzL3g4Nl82NF9ub21tdV9kZWZjb25maWfCoCB8wqAgNjQg KysrKysrKysKPiDCoGFyY2gvdW0vaW5jbHVkZS9hc20vS2J1aWxkwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqAgMSArCj4gwqBhcmNoL3VtL2luY2x1ZGUvYXNtL2Z1dGV4LmjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArCj4gwqBhcmNoL3VtL2luY2x1ZGUvYXNtL21tdS5o wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsKPiDCoGFyY2gvdW0vaW5jbHVk ZS9hc20vbW11X2NvbnRleHQuaMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoGFyY2gvdW0vaW5j bHVkZS9hc20vcHRyYWNlLWdlbmVyaWMuaMKgwqDCoCB8wqDCoCA2ICsKPiDCoGFyY2gvdW0vaW5j bHVkZS9hc20vdWFjY2Vzcy5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNyArLQo+IMKgYXJj aC91bS9pbmNsdWRlL3NoYXJlZC9rZXJuX3V0aWwuaMKgwqDCoMKgwqAgfMKgIDEyICsrCj4gwqBh cmNoL3VtL2luY2x1ZGUvc2hhcmVkL29zLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDE2 ICsrCj4gwqBhcmNoL3VtL2tlcm5lbC9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgIDUgKy0KPiDCoGFyY2gvdW0va2VybmVsL21lbS1wZ3RhYmxlLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCA1NSArKysrKysrCj4gwqBhcmNoL3VtL2tlcm5lbC9tZW0uY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzOSArLS0tLQo+IMKgYXJj aC91bS9rZXJuZWwvcHJvY2Vzcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAy NSArKysrCj4gwqBhcmNoL3VtL2tlcm5lbC9za2FzL3Byb2Nlc3MuY8KgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCAyNyAtLS0tCj4gwqBhcmNoL3VtL2tlcm5lbC91bV9hcmNoLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gwqBhcmNoL3VtL25vbW11L01ha2VmaWxlwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICsKPiDCoGFyY2gvdW0vbm9t bXUvb3MtTGludXgvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDcgKwo+IMKgYXJjaC91 bS9ub21tdS9vcy1MaW51eC9zaWduYWwuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDI4ICsrKysKPiDC oGFyY2gvdW0vbm9tbXUvdHJhcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAxODgKPiArKysrKysrKysrKysrKysrKysrKysrKysKPiDCoGFyY2gvdW0vb3MtTGludXgv TWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKy0KPiDCoGFyY2gv dW0vb3MtTGludXgvaW50ZXJuYWwuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsK PiDCoGFyY2gvdW0vb3MtTGludXgvbWVtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgIDQgKwo+IMKgYXJjaC91bS9vcy1MaW51eC9wcm9jZXNzLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDE0OSArKysrKysrKysrKysrKysrKystCj4gwqBhcmNoL3VtL29zLUxp bnV4L3NlY2NvbXAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA4NyArKysrKysrKysr Kwo+IMKgYXJjaC91bS9vcy1MaW51eC9zaWduYWwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDMxICsrKy0KPiDCoGFyY2gvdW0vb3MtTGludXgvc2thcy9wcm9jZXNzLmPCoMKgwqDC oMKgwqDCoMKgIHwgMTMyIC0tLS0tLS0tLS0tLS0tLS0tCj4gwqBhcmNoL3VtL29zLUxpbnV4L3N0 YXJ0X3VwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIwICsrKwo+IMKgYXJjaC91bS9v cy1MaW51eC91dGlsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICst Cj4gwqBhcmNoL3g4Ni91bS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgIDcgKy0KPiDCoGFyY2gveDg2L3VtL2FzbS9lbGYuaMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICstCj4gwqBhcmNoL3g4Ni91bS9hc20vbW9k dWxlLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI0IC0tLQo+IMKgYXJjaC94 ODYvdW0vbm9tbXUvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsK PiDCoGFyY2gveDg2L3VtL25vbW11L2RvX3N5c2NhbGxfNjQuY8KgwqDCoMKgwqDCoCB8wqAgNzQg KysrKysrKysrKwo+IMKgYXJjaC94ODYvdW0vbm9tbXUvZW50cnlfNjQuU8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCAxMTMgKysrKysrKysrKysrKysKPiDCoGFyY2gveDg2L3VtL25vbW11L29zLUxp bnV4L01ha2VmaWxlwqDCoMKgwqAgfMKgwqAgNiArCj4gwqBhcmNoL3g4Ni91bS9ub21tdS9vcy1M aW51eC9tY29udGV4dC5jwqDCoCB8wqAgMjQgKysrCj4gwqBhcmNoL3g4Ni91bS9ub21tdS9zeXNj YWxscy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTYgKysKPiDCoGFyY2gveDg2L3VtL25v bW11L3N5c2NhbGxzXzY0LmPCoMKgwqDCoMKgwqDCoMKgIHwgMTE1ICsrKysrKysrKysrKysrKwo+ IMKgYXJjaC94ODYvdW0vc2hhcmVkL3N5c2RlcC9tY29udGV4dC5owqDCoMKgIHzCoMKgIDQgKwo+ IMKgYXJjaC94ODYvdW0vc2hhcmVkL3N5c2RlcC9zeXNjYWxsc182NC5oIHzCoMKgIDYgKwo+IMKg YXJjaC94ODYvdW0vc2lnbmFsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCA3ICsKPiDCoGFyY2gveDg2L3VtL3Zkc28vdm1hLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCAxNyArKy0KPiDCoGZzL0tjb25maWcuYmluZm10wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+IMKgNDcgZmls ZXMgY2hhbmdlZCwgMTMyOCBpbnNlcnRpb25zKCspLCAyNDQgZGVsZXRpb25zKC0pCj4gwqBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC9ub21tdS11bWwucnN0Cj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC91bS9jb25maWdzL3g4Nl82NF9ub21tdV9kZWZjb25maWcK PiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3VtL2tlcm5lbC9tZW0tcGd0YWJsZS5jCj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC91bS9ub21tdS9NYWtlZmlsZQo+IMKgY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvdW0vbm9tbXUvb3MtTGludXgvTWFrZWZpbGUKPiDCoGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL3VtL25vbW11L29zLUxpbnV4L3NpZ25hbC5jCj4gwqBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC91bS9ub21tdS90cmFwLmMKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3VtL29z LUxpbnV4L3NlY2NvbXAuYwo+IMKgZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3VtL2FzbS9t b2R1bGUuaAo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3VtL25vbW11L01ha2VmaWxl Cj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvdW0vbm9tbXUvZG9fc3lzY2FsbF82NC5j Cj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvdW0vbm9tbXUvZW50cnlfNjQuUwo+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3VtL25vbW11L29zLUxpbnV4L01ha2VmaWxlCj4g wqBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvdW0vbm9tbXUvb3MtTGludXgvbWNvbnRleHQu Ywo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3VtL25vbW11L3N5c2NhbGxzLmgKPiDC oGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni91bS9ub21tdS9zeXNjYWxsc182NC5jCj4gCj4g Cj4gYmFzZS1jb21taXQ6IDJkMmI2MWFlMzhiZDkxMjE3ZWE3Y2M1YmM3MDBhMmI5ZTc1YjM5MzcK Cg== --=-gXkPpLcPKKxmAp9ykZ7c Content-Disposition: attachment; filename="test-signal-restore.c" Content-Type: text/x-csrc; name="test-signal-restore.c"; charset="UTF-8" Content-Transfer-Encoding: base64 LyoKICogZ2NjIHRlc3Qtc2lnbmFsLXJlc3RvcmUuYyAtbyB0ZXN0LXNpZ25hbC1yZXN0b3JlLWFt ZDY0CiAqIGdjYyAtbTMyIC1tYXJjaD1pNjg2IC1sbSB0ZXN0LXNpZ25hbC1yZXN0b3JlLmMgLW8g dGVzdC1zaWduYWwtcmVzdG9yZS1pMzg2CiAqLwoKLyogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRv ICpub3QqIGluY2x1ZGUgYml0cy9zaWdjb250ZXh0Lmg/ICovCiNpbmNsdWRlIDxmZWF0dXJlcy5o PgojdW5kZWYgX19VU0VfTUlTQwojaW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4KCiNpbmNsdWRl IDxlbGYuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxz aWduYWwuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1 ZGUgPHN5cy93YWl0Lmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNp bmNsdWRlIDxzeXMvcHRyYWNlLmg+CiNpbmNsdWRlIDxzeXMvdXNlci5oPgojaW5jbHVkZSA8c3lz L3Vpby5oPgojaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgoKI2RlZmluZSBTVDBfRVhQX0FERCAxMAoK dm9pZCAqc2NyYXRjaF9wYWdlOwoKdm9pZCBzaWdoYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAq aW5mbywgdm9pZCAqcCkKewoJdWNvbnRleHRfdCAqdWMgPSBwOwoKCXByaW50Zigic2lnaGFuZGxl cjogZXh0ZW5kZWRfc2l6ZTogJWQsIHhzdGF0ZV9zaXplOiAlZFxuIiwKCSAgICAgICAoKHN0cnVj dCBfZnBzdGF0ZSAqKXVjLT51Y19tY29udGV4dC5fX2ZwcmVncyktPnN3X3Jlc2VydmVkLmV4dGVu ZGVkX3NpemUsCgkgICAgICAgICgoc3RydWN0IF9mcHN0YXRlICopdWMtPnVjX21jb250ZXh0Ll9f ZnByZWdzKS0+c3dfcmVzZXJ2ZWQueHN0YXRlX3NpemUpOwoKCXVjLT51Y19tY29udGV4dC5fX2Zw cmVncy0+X3N0WzBdLl9fZXhwb25lbnQgKz0gU1QwX0VYUF9BREQ7Cn0KCmludCB0ZXN0X2ZwKCkK ewoJZG91YmxlIG51bSA9IDAuNTsKCWxvbmcgcmV0OwoKCXByaW50ZigicHJlLXNpZ25hbDogJWdc biIsIG51bSk7CgkvKgoJICogVGhpcyBkb2VzIGtpbGwoZ2V0cGlkKCksIFNJR1VTUjEpOyB3aXRo ICJudW0iIGJlaW5nIHBhc3NlZCBpbiBBTkQKCSAqIG91dCBvZiB0aGUgZmxvYXRpbmcgcG9pbnQg c3RhY2suIFdlIGNhbiB0aGVyZWZvcmUgbW9kaWZ5IG51bSBieQoJICogY2hhbmdpbmcgc3RbMF0g d2hlbiBoYW5kbGluZyB0aGUgc2lnbmFsLgoJICovCiNpZmRlZiBfX2kzODZfXwoJYXNtIHZvbGF0 aWxlICgKCQkiaW50ICQweDgwOyIKCQk6ICI9dCIgKG51bSksICI9YSIgKHJldCkKCQk6ICIwIiAo bnVtKSwgIjEiIChfX05SX2tpbGwpLCAiYiIgKGdldHBpZCgpKSwgImMiIChTSUdVU1IxKSA6ICk7 CiNlbHNlCglhc20gdm9sYXRpbGUgKAoJCSJzeXNjYWxsOyIKCQk6ICI9dCIgKG51bSksICI9YSIg KHJldCkKCQk6ICIwIiAobnVtKSwgIjEiIChfX05SX2tpbGwpLCAiRCIgKGdldHBpZCgpKSwgIlMi IChTSUdVU1IxKSA6ICJyMTEiLCAicmN4Iik7CiNlbmRpZgoJcHJpbnRmKCJwb3N0LXNpZ25hbDog JWdcbiIsIG51bSk7CgoJaWYgKG51bSAhPSBwb3coMiwgU1QwX0VYUF9BREQgLSAxKSkgewoJCXBy aW50ZigiZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgd2FzIG5vdCBtYW5pcHVsYXRlZFxuIik7CgkJ cmV0dXJuIDE7Cgl9CgoJcmV0dXJuIDA7Cn0KCmVudW0gc291cmNlIHsKCVNfRlBSRUdTID0gMCwK CVNfRlBYUkVHUyA9IDEsCglTX0dFVFJFR1NfRlBSRUdTID0gMiwKCVNfR0VUUkVHU19YRlBSRUdT ID0gMywKCVNfR0VUUkVHU19YU1RBVEUgPSA0LAp9OwoKaW50IHRlc3RfZnBfcHRyYWNlKGVudW0g c291cmNlIHNvdXJjZSkKewoJaW50IHBpZCwgc3RhdHVzLCByZXQ7CgoJcGlkID0gZm9yaygpOwoJ aWYgKHBpZCA8IDApCgkJcmV0dXJuIDEyNzsKCglpZiAocGlkID09IDApIHsKCQkvKiBjaGlsZCAq LwoJCXB0cmFjZShQVFJBQ0VfVFJBQ0VNRSwgMCwgMCwgMCk7CgkJa2lsbChnZXRwaWQoKSwgU0lH U1RPUCk7CgkJCgkJaWYgKHRlc3RfZnAoKSkKCQkJZXhpdCgxKTsKCgkJZXhpdCgwKTsKCX0KCgkv KiBXYWl0IGZvciBjaGlsZCB0byBzdG9wIGl0c2VsZiAqLwoJZG8gewoJCXJldCA9IHdhaXRwaWQo cGlkLCAmc3RhdHVzLCAwKTsKCX0gd2hpbGUgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwoJ aWYgKCFXSUZTVE9QUEVEKHN0YXR1cykpCgkJcmV0dXJuIDEyNzsKCgkvKiBDb250aW51ZSB1bnRp bCBTSUdVU1IxIHRvIHNlbGYgKi8KCXB0cmFjZShQVFJBQ0VfQ09OVCwgcGlkLCBOVUxMLCAwKTsK CWRvIHsKCQlyZXQgPSB3YWl0cGlkKHBpZCwgJnN0YXR1cywgMCk7Cgl9IHdoaWxlIChyZXQgPCAw ICYmIGVycm5vID09IEVJTlRSKTsKCWlmICghV0lGU1RPUFBFRChzdGF0dXMpKQoJCXJldHVybiAx Mjc7CgoJaWYgKHNvdXJjZSA9PSBTX0ZQWFJFR1MgfHwgc291cmNlID09IFNfR0VUUkVHU19YRlBS RUdTKSB7CiNpZmRlZiBfX2kzODZfXwoJCXN0cnVjdCB1c2VyX2ZweHJlZ3Nfc3RydWN0ICpmcHN0 YXRlOwoJCXN0cnVjdCBpb3ZlYyBpb3YgPSB7CgkJCS5pb3ZfbGVuID0gc2l6ZW9mKCpmcHN0YXRl KSwKCQl9OwoJCWludCByZXQ7CgoJCWZwc3RhdGUgPSBzY3JhdGNoX3BhZ2UgKyA0MDk2IC0gaW92 Lmlvdl9sZW47CgkJaW92Lmlvdl9iYXNlID0gZnBzdGF0ZTsKCgkJaWYgKHNvdXJjZSA9PSBTX0dF VFJFR1NfWEZQUkVHUykKCQkJcmV0ID0gcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHBpZCwgTlRf UFJYRlBSRUcsICZpb3YpOwoJCWVsc2UKCQkJcmV0ID0gcHRyYWNlKFBUUkFDRV9HRVRGUFhSRUdT LCBwaWQsIE5VTEwsIGZwc3RhdGUpOwoKCQlpZiAocmV0KSB7CgkJCWtpbGwocGlkLCBTSUdLSUxM KTsKCQkJaWYgKGVycm5vID09IEVJTlZBTCkgewoJCQkJcHJpbnRmKCJHZXR0aW5nIEZQWCByZWdz IG5vdCBzdXBwb3J0ZWRcbiIpOwoJCQkJcmV0dXJuIDA7CgkJCX0gZWxzZSB7CgkJCQlwcmludGYo IkVycm9yIGdldHRpbmcgRlBYIHJlZ3M6ICVkXG4iLCBlcnJubyk7CgkJCQlyZXR1cm4gMTI3OwoJ CQl9CgkJfQoJCSgoc3RydWN0IF9mcHhyZWcqKSZmcHN0YXRlLT5zdF9zcGFjZVswXSktPmV4cG9u ZW50ICs9IFNUMF9FWFBfQUREOwoKCQlpZiAoc291cmNlID09IFNfR0VUUkVHU19YRlBSRUdTKQoJ CQlyZXQgPSBwdHJhY2UoUFRSQUNFX1NFVFJFR1NFVCwgcGlkLCBOVF9QUlhGUFJFRywgJmlvdik7 CgkJZWxzZQoJCQlyZXQgPSBwdHJhY2UoUFRSQUNFX1NFVEZQWFJFR1MsIHBpZCwgTlVMTCwgZnBz dGF0ZSk7CgkJaWYgKHJldCkKCQkJcmV0dXJuIC0xMjc7CgojZWxzZQoJCXByaW50ZigiTm8gRlBY UkVHUyBvbiB4ODZfNjRcbiIpOwoJCWtpbGwocGlkLCBTSUdLSUxMKTsKCQlyZXR1cm4gMTI3Owoj ZW5kaWYKCX0gZWxzZSBpZiAoc291cmNlID09IFNfRlBSRUdTIHx8IHNvdXJjZSA9PSBTX0dFVFJF R1NfRlBSRUdTKSB7CgkJc3RydWN0IF9mcHN0YXRlICpmcHN0YXRlOwoJCXN0cnVjdCBpb3ZlYyBp b3YgPSB7CgkJCS5pb3ZfbGVuID0gc2l6ZW9mKCpmcHN0YXRlKSwKCQl9OwoKCQlmcHN0YXRlID0g c2NyYXRjaF9wYWdlOyAvLyArIDQwOTYgLSBzaXplb2YoKmZwc3RhdGUpOwoJCWlvdi5pb3ZfYmFz ZSA9IGZwc3RhdGU7CgoJCWlmIChzb3VyY2UgPT0gU19HRVRSRUdTX0ZQUkVHUykKCQkJcmV0ID0g cHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHBpZCwgTlRfUFJGUFJFRywgJmlvdik7CgkJZWxzZQoJ CQlyZXQgPSBwdHJhY2UoUFRSQUNFX0dFVEZQUkVHUywgcGlkLCBOVUxMLCBmcHN0YXRlKTsKCgoJ CWlmIChyZXQpIHsKCQkJa2lsbChwaWQsIFNJR0tJTEwpOwoJCQlpZiAoZXJybm8gPT0gRUlOVkFM KSB7CgkJCQlwcmludGYoIkdldHRpbmcgRlAgcmVncyBub3Qgc3VwcG9ydGVkXG4iKTsKCQkJCXJl dHVybiAwOwoJCQl9IGVsc2UgewoJCQkJcHJpbnRmKCJFcnJvciBnZXR0aW5nIEZQWCByZWdzOiAl ZFxuIiwgZXJybm8pOwoJCQkJcmV0dXJuIDEyNzsKCQkJfQoJCX0KI2lmZGVmIF9faTM4Nl9fCgkJ KChzdHJ1Y3QgX2ZwcmVnKikgJmZwc3RhdGUtPl9zdFswXSktPmV4cG9uZW50ICs9IFNUMF9FWFBf QUREOwojZWxzZQoJCSgoc3RydWN0IF9mcHhyZWcqKSAmZnBzdGF0ZS0+c3Rfc3BhY2VbMF0pLT5l eHBvbmVudCArPSBTVDBfRVhQX0FERDsKI2VuZGlmCgoJCWlmIChzb3VyY2UgPT0gU19HRVRSRUdT X0ZQUkVHUykKCQkJcmV0ID0gcHRyYWNlKFBUUkFDRV9TRVRSRUdTRVQsIHBpZCwgTlRfUFJGUFJF RywgJmlvdik7CgkJZWxzZQoJCQlyZXQgPSBwdHJhY2UoUFRSQUNFX1NFVEZQUkVHUywgcGlkLCBO VUxMLCBmcHN0YXRlKTsKCgkJaWYgKHJldCkKCQkJcmV0dXJuIDEyNzsKCX0gZWxzZSBpZiAoc291 cmNlID09IFNfR0VUUkVHU19YU1RBVEUpIHsKI2lmZGVmIF9faTM4Nl9fCgkJc3RydWN0IHVzZXJf ZnB4cmVnc19zdHJ1Y3QgKmZwc3RhdGU7CiNlbHNlCgkJc3RydWN0IHVzZXJfZnByZWdzX3N0cnVj dCAqZnBzdGF0ZTsKI2VuZGlmCgkJc3RydWN0IGlvdmVjIGlvdiA9IHsKCQkJLmlvdl9sZW4gPSA0 MDk2LAoJCX07CgoJCWZwc3RhdGUgPSBzY3JhdGNoX3BhZ2UgKyA0MDk2IC0gaW92Lmlvdl9sZW47 CgkJaW92Lmlvdl9iYXNlID0gZnBzdGF0ZTsKCgkJcmV0ID0gcHRyYWNlKFBUUkFDRV9HRVRSRUdT RVQsIHBpZCwgTlRfWDg2X1hTVEFURSwgJmlvdik7CgkJaWYgKHJldCkgewoJCQlraWxsKHBpZCwg U0lHS0lMTCk7CgkJCWlmIChlcnJubyA9PSBFSU5WQUwpIHsKCQkJCXByaW50ZigiR2V0dGluZyBY U1RBVEUgbm90IHN1cHBvcnRlZFxuIik7CgkJCQlyZXR1cm4gMDsKCQkJfSBlbHNlIHsKCQkJCXBy aW50ZigiRXJyb3IgZ2V0dGluZyBYU1RBVEUgc2l6ZTogJWRcbiIsIGVycm5vKTsKCQkJCXJldHVy biAxMjc7CgkJCX0KCQl9CgoJCXByaW50ZigiaG9zdCB4c3RhdGUgc2l6ZTogJWxkXG4iLCBpb3Yu aW92X2xlbik7CgoJCS8qIFNlY29uZCB0aW1lIHdpdGggdGhlIGV4YWN0IGxlbmd0aCAodG8gdGVz dCB0aGUga2VybmVsKSAqLwoJCWZwc3RhdGUgPSBzY3JhdGNoX3BhZ2UgKyA0MDk2IC0gaW92Lmlv dl9sZW47CgkJaW92Lmlvdl9iYXNlID0gZnBzdGF0ZTsKCgkJcmV0ID0gcHRyYWNlKFBUUkFDRV9H RVRSRUdTRVQsIHBpZCwgTlRfWDg2X1hTVEFURSwgJmlvdik7CgkJaWYgKHJldCkgewoJCQlwcmlu dGYoIkVycm9yIGdldHRpbmcgWFNUQVRFOiAlZFxuIiwgZXJybm8pOwoJCQlyZXR1cm4gMTI3OwoJ CX0KCgkJZnBzdGF0ZSA9IHNjcmF0Y2hfcGFnZSArIDQwOTYgLSBpb3YuaW92X2xlbjsKCQlpb3Yu aW92X2Jhc2UgPSBmcHN0YXRlOwoKCQlyZXQgPSBwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgcGlk LCBOVF9YODZfWFNUQVRFLCAmaW92KTsKCQlpZiAocmV0KSB7CgkJCWtpbGwocGlkLCBTSUdLSUxM KTsKCQkJcHJpbnRmKCJFcnJvciBnZXR0aW5nIFhTVEFURSAod2l0aCBjb3JyZWN0IHNpemUpOiAl ZFxuIiwgZXJybm8pOwoJCQlyZXR1cm4gMTI3OwoJCX0KCiNpZmRlZiBfX2kzODZfXwoJCSgoc3Ry dWN0IF9mcHhyZWcgKikmZnBzdGF0ZS0+c3Rfc3BhY2VbMF0pLT5leHBvbmVudCArPSBTVDBfRVhQ X0FERDsKI2Vsc2UKCQkoKHN0cnVjdCBfZnB4cmVnICopJmZwc3RhdGUtPnN0X3NwYWNlWzBdKS0+ ZXhwb25lbnQgKz0gU1QwX0VYUF9BREQ7CiNlbmRpZgoKCQlyZXQgPSBwdHJhY2UoUFRSQUNFX1NF VFJFR1NFVCwgcGlkLCBOVF9YODZfWFNUQVRFLCAmaW92KTsKCQlpZiAocmV0KSB7CgkJCXByaW50 ZigiRmFpbGVkIHRvIHNldCBYU1RBVEU6ICVkXG4iLCBlcnJubyk7CgkJCXJldHVybiAxMjc7CgkJ fQoKCX0gZWxzZSB7CgkJcmV0dXJuIDEyNzsKCX0KCgkvKiBSdW4gdW50aWwgY29tcGxldGlvbiAo d2l0aG91dCBoYW5kbGluZyB0aGUgc2lnbmFsKSAqLwoJcHRyYWNlKFBUUkFDRV9DT05ULCBwaWQs IE5VTEwsIDApOwoJZG8gewoJCXJldCA9IHdhaXRwaWQocGlkLCAmc3RhdHVzLCAwKTsKCX0gd2hp bGUgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwoKCWlmICghV0lGRVhJVEVEKHN0YXR1cykp CgkJcmV0dXJuIDEyNzsKCglyZXR1cm4gV0VYSVRTVEFUVVMoc3RhdHVzKTsKfQoKaW50IG1haW4o KQp7CglzdHJ1Y3Qgc2lnYWN0aW9uIHNhID0gewoJCS5zYV9mbGFncyA9IFNBX1NJR0lORk8sCgkJ LnNhX2hhbmRsZXIgPSAodm9pZCAoKikoaW50KSlzaWdoYW5kbGVyLAoJfTsKCWludCByZXQ7CgoJ c2NyYXRjaF9wYWdlID0gbW1hcChOVUxMLCA4MTkyLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBN QVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKCW11bm1hcChzY3JhdGNoX3BhZ2Ug KyA0MDk2LCA0MDk2KTsKCglzaWdhY3Rpb24oU0lHVVNSMSwgJnNhLCBOVUxMKTsKCglpZiAodGVz dF9mcCgpKQoJCXJldHVybiAxOwoKCXNhLnNhX2hhbmRsZXIgPSBTSUdfREZMOwoJc2lnYWN0aW9u KFNJR1VTUjEsICZzYSwgTlVMTCk7CgoJcHJpbnRmKCJcbm1vZGlmeSB1c2luZyBwdHJhY2UgUFRS QUNFX1NFVEZQUkVHUyBpbnN0ZWFkIG9mIHNpZ2hhbmRsZXI6XG4iKTsKCXJldCA9IHRlc3RfZnBf cHRyYWNlKFNfRlBSRUdTKTsKCWlmIChyZXQpCgkJcmV0dXJuIHJldDsKCiNpZmRlZiBfX2kzODZf XwoJcHJpbnRmKCJcbm1vZGlmeSB1c2luZyBwdHJhY2UgUFRSQUNFX1NFVEZQWFJFR1MgaW5zdGVh ZCBvZiBzaWdoYW5kbGVyOlxuIik7CglyZXQgPSB0ZXN0X2ZwX3B0cmFjZShTX0ZQWFJFR1MpOwoJ aWYgKHJldCkKCQlyZXR1cm4gcmV0OwojZW5kaWYKCgoJcHJpbnRmKCJcbm1vZGlmeSB1c2luZyBw dHJhY2UgUFRSQUNFX1NFVFJFR1NFVCwgdmlhIE5UX1BSRlBSRUcgaW5zdGVhZCBvZiBzaWdoYW5k bGVyOlxuIik7CglyZXQgPSB0ZXN0X2ZwX3B0cmFjZShTX0dFVFJFR1NfRlBSRUdTKTsKCWlmIChy ZXQpCgkJcmV0dXJuIHJldDsKCiNpZmRlZiBfX2kzODZfXwoJcHJpbnRmKCJcbm1vZGlmeSB1c2lu ZyBwdHJhY2UgUFRSQUNFX1NFVFJFR1NFVCwgdmlhIE5UX1hGUFJFR1MgaW5zdGVhZCBvZiBzaWdo YW5kbGVyOlxuIik7CglyZXQgPSB0ZXN0X2ZwX3B0cmFjZShTX0dFVFJFR1NfWEZQUkVHUyk7Cglp ZiAocmV0KQoJCXJldHVybiByZXQ7CiNlbmRpZgoKCXByaW50ZigiXG5tb2RpZnkgdXNpbmcgcHRy YWNlIFBUUkFDRV9TRVRSRUdTRVQsIHZpYSBOVF9YODZfWFNUQVRFIGluc3RlYWQgb2Ygc2lnaGFu ZGxlcjpcbiIpOwoJcmV0ID0gdGVzdF9mcF9wdHJhY2UoU19HRVRSRUdTX1hTVEFURSk7CglpZiAo cmV0KQoJCXJldHVybiByZXQ7CgoJcmV0dXJuIDA7Cn0K --=-gXkPpLcPKKxmAp9ykZ7c--