From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 13464 invoked from network); 14 Oct 2021 03:02:16 -0000 Received: from 4ess.inri.net (216.126.196.42) by inbox.vuxu.org with ESMTPUTF8; 14 Oct 2021 03:02:16 -0000 Received: from mail.posixcafe.org ([45.76.19.58]) by 4ess; Wed Oct 13 22:08:46 -0400 2021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posixcafe.org; s=20200506; t=1634176920; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=VyV9Y2fz8uC1D+K5T/3/XJ+WaKp6nMyAHBupXtfBsl8=; b=OOHOfdmgDS2GcbJHoax+VDcO8gJzMsWqPN9/sNLFmhY1T7qQrsNxKbb0Rn8O6NbXlsGkkU 0lWziu6Xac78PYaSzfA+oIdtd2egp1QXe748WDPGMlJZqvep3jmC2tXHXbdWkwVMrfaq6o h7sbGjgYd5t6AtpcyBEN382Bnez24UI= Received: from [192.168.168.200] (161-97-228-135.lpcnextlight.net [161.97.228.135]) by mail.posixcafe.org (OpenSMTPD) with ESMTPSA id f780934c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for <9front@9front.org>; Wed, 13 Oct 2021 21:01:59 -0500 (CDT) Content-Type: multipart/mixed; boundary="------------MFqms1wVDkDd11PYafeEkA2X" Message-ID: Date: Wed, 13 Oct 2021 19:59:54 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Content-Language: en-US To: 9front@9front.org From: Jacob Moody List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: generic template scripting frontend Subject: [9front] [drawterm] Wayland support and misc patches Reply-To: 9front@9front.org Precedence: bulk This is a multi-part message in MIME format. --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hello, I've written a wayland graphical backend for drawterm and have been dogfooding it for a little bit now. I think most of the larger bugs have been worked out of it. There is also a patch for adding pipewire support for devaudio. For both of these there is a patch for adding a CONF=linux target While working on these I found that there is code in libc/ that expects to be compiled with -DPTHREAD to avoid resorting to spin locks. I think we might want to add -DPTHREAD to the unix target CFLAGS. However adding the define on my machine caused gcc to get confused about the ordering of the members for kern/devmouse.c:/^Cursorinfo\tarrow/ There is a patch that specifies the members, which seemed to fix the issue. But I am sure what is causing this. Also I am not sure why there was a sleep within the kern/term.c:/^resizeproc/ loop, but I noticed the delay when working on the wayland backend. There is a patch for removing that sleep. Not sure which, if any, of these are desirable to have upstream but wanted to offer them up. Thanks, moody --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: text/x-patch; charset=UTF-8; name="drawterm-wl.patch" Content-Disposition: attachment; filename="drawterm-wl.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2d1aS13bC9NYWtlZmlsZSBiL2d1aS13bC9NYWtlZmlsZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzE1YTUxCi0tLSAvZGV2L251bGwKKysr IGIvZ3VpLXdsL01ha2VmaWxlCkBAIC0wLDAgKzEsMzYgQEAKK1JPT1Q9Li4KK2luY2x1ZGUg Li4vTWFrZS5jb25maWcKK0xJQj1saWJndWkuYQorCitYREdfU0hFTEw9L3Vzci9zaGFyZS93 YXlsYW5kLXByb3RvY29scy9zdGFibGUveGRnLXNoZWxsL3hkZy1zaGVsbC54bWwKK1hER19E RUNPPS91c3Ivc2hhcmUvd2F5bGFuZC1wcm90b2NvbHMvdW5zdGFibGUveGRnLWRlY29yYXRp b24veGRnLWRlY29yYXRpb24tdW5zdGFibGUtdjEueG1sCisKK0hGSUxFUz1cCisJeGRnLXNo ZWxsLXByb3RvY29sLmhcCisJeGRnLWRlY29yYXRpb24tcHJvdG9jb2wuaFwKKwl3bC1pbmMu aFwKKworT0ZJTEVTPVwKKwl4ZGctc2hlbGwtcHJvdG9jb2wuJE9cCisJeGRnLWRlY29yYXRp b24tcHJvdG9jb2wuJE9cCisJd2wtY2IuJE9cCisJd2wtc2NyZWVuLiRPXAorCXdsLXV0aWwu JE9cCisKK3hkZy1zaGVsbC1wcm90b2NvbC5jOgorCXdheWxhbmQtc2Nhbm5lciBwcml2YXRl LWNvZGUgPCAkKFhER19TSEVMTCkgPiB4ZGctc2hlbGwtcHJvdG9jb2wuYworCit4ZGctc2hl bGwtcHJvdG9jb2wuaDoKKwl3YXlsYW5kLXNjYW5uZXIgY2xpZW50LWhlYWRlciA8ICQoWERH X1NIRUxMKSA+IHhkZy1zaGVsbC1wcm90b2NvbC5oCisKK3hkZy1kZWNvcmF0aW9uLXByb3Rv Y29sLmM6CisJd2F5bGFuZC1zY2FubmVyIHByaXZhdGUtY29kZSA8ICQoWERHX0RFQ08pID4g eGRnLWRlY29yYXRpb24tcHJvdG9jb2wuYworCit4ZGctZGVjb3JhdGlvbi1wcm90b2NvbC5o OgorCXdheWxhbmQtc2Nhbm5lciBjbGllbnQtaGVhZGVyIDwgJChYREdfREVDTykgPiB4ZGct ZGVjb3JhdGlvbi1wcm90b2NvbC5oCisKK2RlZmF1bHQ6ICQoTElCKQorJChMSUIpOiAkKEhG SUxFUykgJChPRklMRVMpCisJJChBUikgciAkKExJQikgJChPRklMRVMpCisJJChSQU5MSUIp ICQoTElCKQorCmRpZmYgLS1naXQgYS9ndWktd2wvd2wtY2IuYyBiL2d1aS13bC93bC1jYi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGNmMDUKLS0tIC9kZXYv bnVsbAorKysgYi9ndWktd2wvd2wtY2IuYwpAQCAtMCwwICsxLDU4MyBAQAorI2RlZmluZSBf UE9TSVhfQ19TT1VSQ0UgMjAwODA5TAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVk ZSA8d2F5bGFuZC1jbGllbnQuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC1wcm90b2Nv bC5oPgorI2luY2x1ZGUgPGxpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmg+CisjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvc3Rh dC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8eGtiY29tbW9uL3hrYmNvbW1v bi5oPgorI2luY2x1ZGUgInhkZy1zaGVsbC1wcm90b2NvbC5oIgorI2luY2x1ZGUgInhkZy1k ZWNvcmF0aW9uLXByb3RvY29sLmgiCisKKyNpbmNsdWRlICJ1LmgiCisjaW5jbHVkZSAibGli LmgiCisjaW5jbHVkZSAia2Vybi9kYXQuaCIKKyNpbmNsdWRlICJrZXJuL2Zucy5oIgorI2lu Y2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAidXNlci5oIgorI2luY2x1ZGUgPGRyYXcuaD4K KyNpbmNsdWRlIDxtZW1kcmF3Lmg+CisjaW5jbHVkZSA8a2V5Ym9hcmQuaD4KKyNpbmNsdWRl ICJzY3JlZW4uaCIKKyNpbmNsdWRlICJ3bC1pbmMuaCIKKworI3VuZGVmIGNsb3NlCisjdW5k ZWYgc2VuZAorI3VuZGVmIHBpcGUKKyN1bmRlZiB3cml0ZQorI3VuZGVmIHJlYWQKKworc3Rh dGljIHZvaWQKK3hkZ19zdXJmYWNlX2hhbmRsZV9jb25maWd1cmUodm9pZCAqZGF0YSwgc3Ry dWN0IHhkZ19zdXJmYWNlICp4ZGdfc3VyZmFjZSwgdWludDMyX3Qgc2VyaWFsKQoreworCVds d2luICp3bDsKKworCXdsID0gZGF0YTsKKwl4ZGdfc3VyZmFjZV9hY2tfY29uZmlndXJlKHhk Z19zdXJmYWNlLCBzZXJpYWwpOworCXdsX3N1cmZhY2VfY29tbWl0KHdsLT5zdXJmYWNlKTsK K30KKworY29uc3Qgc3RydWN0IHhkZ19zdXJmYWNlX2xpc3RlbmVyIHhkZ19zdXJmYWNlX2xp c3RlbmVyID0geworCS5jb25maWd1cmUgPSB4ZGdfc3VyZmFjZV9oYW5kbGVfY29uZmlndXJl LAorfTsKKworc3RhdGljIHZvaWQKK3hkZ190b3BsZXZlbF9oYW5kbGVfY2xvc2Uodm9pZCAq ZGF0YSwgc3RydWN0IHhkZ190b3BsZXZlbCAqeGRnX3RvcGxldmVsKQoreworCVdsd2luICp3 bDsKKwl3bCA9IGRhdGE7CisJd2wtPnJ1bmluZyA9IDA7CisJZXhpdHMobmlsKTsKK30KKwor c3RhdGljIHZvaWQKK3hkZ190b3BsZXZlbF9oYW5kbGVfY29uZmlndXJlKHZvaWQgKmRhdGEs IHN0cnVjdCB4ZGdfdG9wbGV2ZWwgKnhkZ190b3BsZXZlbCwgaW50MzJfdCB3aWR0aCwgaW50 MzJfdCBoZWlnaHQsIHN0cnVjdCB3bF9hcnJheSAqc3RhdGVzKQoreworCVdsd2luICp3bDsK KworCXdsID0gZGF0YTsKKwlpZih3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwIHx8ICh3aWR0 aCA9PSB3bC0+ZHggJiYgaGVpZ2h0ID09IHdsLT5keSkpCisJCXJldHVybjsKKwl3bHJlc2l6 ZSh3bCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK2NvbnN0IHN0cnVjdCB4ZGdfdG9wbGV2ZWxf bGlzdGVuZXIgeGRnX3RvcGxldmVsX2xpc3RlbmVyID0geworCS5jb25maWd1cmUgPSB4ZGdf dG9wbGV2ZWxfaGFuZGxlX2NvbmZpZ3VyZSwKKwkuY2xvc2UgPSB4ZGdfdG9wbGV2ZWxfaGFu ZGxlX2Nsb3NlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0 ZW5lciB3bF9zdXJmYWNlX2ZyYW1lX2xpc3RlbmVyOworCitzdGF0aWMgdm9pZAord2xfc3Vy ZmFjZV9mcmFtZV9kb25lKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9jYWxsYmFjayAqY2IsIHVp bnQzMl90IHRpbWUpCit7CisJV2x3aW4gKndsOworCisJd2wgPSBkYXRhOworCXdsX2NhbGxi YWNrX2Rlc3Ryb3koY2IpOworCWNiID0gd2xfc3VyZmFjZV9mcmFtZSh3bC0+c3VyZmFjZSk7 CisJcWxvY2soJmRyYXdsb2NrKTsKKwl3bGZsdXNoKHdsKTsKKwlxdW5sb2NrKCZkcmF3bG9j ayk7CisJd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKGNiLCAmd2xfc3VyZmFjZV9mcmFtZV9s aXN0ZW5lciwgd2wpOworfQorCitzdGF0aWMgdm9pZAora2V5Ym9hcmRfa2V5bWFwKHZvaWQg KmRhdGEsIHN0cnVjdCB3bF9rZXlib2FyZCAqa2V5Ym9hcmQsIHVpbnQzMl90IGZvcm1hdCwg aW50MzJfdCBmZCwgdWludDMyX3Qgc2l6ZSkKK3sKKwlzdGF0aWMgc3RydWN0IHhrYl9rZXlt YXAgKmtleW1hcCA9IG5pbDsKKwljaGFyICprZXltYXBfc3RyaW5nOworCVdsd2luICp3bDsK KworCXdsID0gZGF0YTsKKwlrZXltYXBfc3RyaW5nID0gbW1hcChOVUxMLCBzaXplLCBQUk9U X1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKwl4a2Jfa2V5bWFwX3VucmVmKGtleW1hcCk7 CisJa2V5bWFwID0geGtiX2tleW1hcF9uZXdfZnJvbV9zdHJpbmcod2wtPnhrYl9jb250ZXh0 LCBrZXltYXBfc3RyaW5nLCBYS0JfS0VZTUFQX0ZPUk1BVF9URVhUX1YxLCBYS0JfS0VZTUFQ X0NPTVBJTEVfTk9fRkxBR1MpOworCW11bm1hcChrZXltYXBfc3RyaW5nLCBzaXplKTsKKwlj bG9zZShmZCk7CisJeGtiX3N0YXRlX3VucmVmKHdsLT54a2Jfc3RhdGUpOworCXdsLT54a2Jf c3RhdGUgPSB4a2Jfc3RhdGVfbmV3KGtleW1hcCk7Cit9CisKK3N0YXRpYyB2b2lkCitrZXli b2FyZF9lbnRlciAodm9pZCAqZGF0YSwgc3RydWN0IHdsX2tleWJvYXJkICprZXlib2FyZCwg dWludDMyX3Qgc2VyaWFsLCBzdHJ1Y3Qgd2xfc3VyZmFjZSAqc3VyZmFjZSwgc3RydWN0IHds X2FycmF5ICprZXlzKQoreworCVdsd2luICp3bDsKKworCXdsID0gZGF0YTsKKwlxbG9jaygm d2wtPmNsaXAubGspOworCXdsLT5jbGlwLnNlcmlhbCA9IHNlcmlhbDsKKwlxdW5sb2NrKCZ3 bC0+Y2xpcC5sayk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgeworCVJlbmRleiB6OworCVFMb2Nr IGxrOworCWludCBhY3RpdmU7CisJbG9uZyBrZXl0aW1lOworCWludDMyX3Qga2V5OworCWlu dDMyX3QgcmF0ZTsKKwlpbnQzMl90IGRlbGF5OworfSByZXBlYXRzdGF0ZTsKKworc3RhdGlj IGludAoraXNhY3RpdmUodm9pZCAqYXJnKQoreworCXJldHVybiByZXBlYXRzdGF0ZS5hY3Rp dmU7Cit9CisKK3ZvaWQKK3JlcGVhdHByb2Modm9pZCopCit7CisJaW50IG1zOworCWxvbmcg a2V5dGltZTsKKworCWZvcig7Oyl7CisJCWtzbGVlcCgmcmVwZWF0c3RhdGUueiwgaXNhY3Rp dmUsIDApOworCQlxbG9jaygmcmVwZWF0c3RhdGUubGspOworCQlrZXl0aW1lID0gcmVwZWF0 c3RhdGUua2V5dGltZTsKKwkJcXVubG9jaygmcmVwZWF0c3RhdGUubGspOworCQlvc21zbGVl cChyZXBlYXRzdGF0ZS5kZWxheSk7CisKK3JlcGVhdDoKKwkJcWxvY2soJnJlcGVhdHN0YXRl LmxrKTsKKwkJaWYocmVwZWF0c3RhdGUuYWN0aXZlID09IDAgfHwga2V5dGltZSAhPSByZXBl YXRzdGF0ZS5rZXl0aW1lKXsKKwkJCXF1bmxvY2soJnJlcGVhdHN0YXRlLmxrKTsKKwkJCWNv bnRpbnVlOworCQl9CisJCW1zID0gMTAwMC9yZXBlYXRzdGF0ZS5yYXRlOworCQlrYmRrZXko cmVwZWF0c3RhdGUua2V5LCAwKTsKKwkJa2Jka2V5KHJlcGVhdHN0YXRlLmtleSwgMSk7CisJ CXF1bmxvY2soJnJlcGVhdHN0YXRlLmxrKTsKKwkJb3Ntc2xlZXAobXMpOworCQlnb3RvIHJl cGVhdDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitrZXlib2FyZF9yZXBlYXRfaW5mbyh2b2lk ICpkYXRhLCBzdHJ1Y3Qgd2xfa2V5Ym9hcmQgKndsX2tleWJvYXJkLCBpbnQzMl90IHJhdGUs IGludDMyX3QgZGVsYXkpCit7CisJcWxvY2soJnJlcGVhdHN0YXRlLmxrKTsKKwlyZXBlYXRz dGF0ZS5yYXRlID0gcmF0ZTsKKwlyZXBlYXRzdGF0ZS5kZWxheSA9IGRlbGF5OworCXF1bmxv Y2soJnJlcGVhdHN0YXRlLmxrKTsKK30KKworc3RhdGljIHZvaWQKK2tleWJvYXJkX2xlYXZl ICh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfa2V5Ym9hcmQgKmtleWJvYXJkLCB1aW50MzJfdCBz ZXJpYWwsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQoreworfQorCitzdGF0aWMgdm9p ZAora2V5Ym9hcmRfa2V5KHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9rZXlib2FyZCAqa2V5Ym9h cmQsIHVpbnQzMl90IHNlcmlhbCwgdWludDMyX3QgdGltZSwgdWludDMyX3Qga2V5LCB1aW50 MzJfdCBzdGF0ZSkKK3sKKwlXbHdpbiAqd2w7CisJdWludDMyX3QgdXRmMzI7CisKKwl3bCA9 IGRhdGE7CisJeGtiX2tleXN5bV90IGtleXN5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9z eW0od2wtPnhrYl9zdGF0ZSwga2V5KzgpOworCXN3aXRjaChrZXlzeW0pIHsKKwljYXNlIFhL Ql9LRVlfUmV0dXJuOgorCQl1dGYzMiA9ICdcbic7CisJCWJyZWFrOworCWNhc2UgWEtCX0tF WV9UYWI6CisJCXV0ZjMyID0gJ1x0JzsKKwkJYnJlYWs7CisJY2FzZSBYS0JfS0VZX1VwOgor CQl1dGYzMiA9IEt1cDsKKwkJYnJlYWs7CisJY2FzZSBYS0JfS0VZX0Rvd246CisJCXV0ZjMy ID0gS2Rvd247CisJCWJyZWFrOworCWNhc2UgWEtCX0tFWV9MZWZ0OgorCQl1dGYzMiA9IEts ZWZ0OworCQlicmVhazsKKwljYXNlIFhLQl9LRVlfUmlnaHQ6CisJCXV0ZjMyID0gS3JpZ2h0 OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl1dGYzMiA9IHhrYl9rZXlzeW1fdG9fdXRmMzIo a2V5c3ltKTsKKwkJYnJlYWs7CisJfQorCWlmKHV0ZjMyID09IDApCisJCXJldHVybjsKKwor CWlmKHhrYl9zdGF0ZV9tb2RfbmFtZV9pc19hY3RpdmUod2wtPnhrYl9zdGF0ZSwgWEtCX01P RF9OQU1FX0NUUkwsIFhLQl9TVEFURV9NT0RTX0VGRkVDVElWRSkgPiAwKQorCWlmKHV0ZjMy ID49ICdhJyAmJiB1dGYzMiA8PSAneicpCisJCXV0ZjMyIC09ICgnYScgLSAxKTsKKworCWti ZGtleSh1dGYzMiwgc3RhdGUpOworCXFsb2NrKCZyZXBlYXRzdGF0ZS5sayk7CisJcmVwZWF0 c3RhdGUuYWN0aXZlID0gc3RhdGU7CisJcmVwZWF0c3RhdGUua2V5dGltZSA9IHRpbWU7CisJ cmVwZWF0c3RhdGUua2V5ID0gdXRmMzI7CisJcXVubG9jaygmcmVwZWF0c3RhdGUubGspOwor CXdha2V1cCgmcmVwZWF0c3RhdGUueik7Cit9CisKK3N0YXRpYyB2b2lkCitrZXlib2FyZF9t b2RpZmllcnMgKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9rZXlib2FyZCAqa2V5Ym9hcmQsIHVp bnQzMl90IHNlcmlhbCwgdWludDMyX3QgbW9kc19kZXByZXNzZWQsIHVpbnQzMl90IG1vZHNf bGF0Y2hlZCwgdWludDMyX3QgbW9kc19sb2NrZWQsIHVpbnQzMl90IGdyb3VwKQoreworCVds d2luICp3bDsKKworCXdsID0gZGF0YTsKKwl4a2Jfc3RhdGVfdXBkYXRlX21hc2sod2wtPnhr Yl9zdGF0ZSwgbW9kc19kZXByZXNzZWQsIG1vZHNfbGF0Y2hlZCwgbW9kc19sb2NrZWQsIDAs IDAsIGdyb3VwKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0 ZW5lciB3bF9zdXJmYWNlX2ZyYW1lX2xpc3RlbmVyID0geworCS5kb25lID0gd2xfc3VyZmFj ZV9mcmFtZV9kb25lLAorfTsKKworc3RhdGljIHN0cnVjdCB3bF9rZXlib2FyZF9saXN0ZW5l ciBrZXlib2FyZF9saXN0ZW5lciA9IHsKKwkua2V5bWFwID0ga2V5Ym9hcmRfa2V5bWFwLAor CS5lbnRlciA9IGtleWJvYXJkX2VudGVyLAorCS5sZWF2ZSA9IGtleWJvYXJkX2xlYXZlLAor CS5rZXkgPSBrZXlib2FyZF9rZXksCisJLm1vZGlmaWVycyA9IGtleWJvYXJkX21vZGlmaWVy cywKKwkucmVwZWF0X2luZm8gPSBrZXlib2FyZF9yZXBlYXRfaW5mbywKK307CisKK2VudW17 CisJV2xNb3VzZTEgPSAyNzIsCisJV2xNb3VzZTIgPSAyNzQsCisJV2xNb3VzZTMgPSAyNzMs CisKKwlQOU1vdXNlMSA9IDEsCisJUDlNb3VzZTIgPSAyLAorCVA5TW91c2UzID0gNCwKK307 CisKK3N0YXRpYyB2b2lkCitwb2ludGVyX2hhbmRsZV9idXR0b24odm9pZCAqZGF0YSwgc3Ry dWN0IHdsX3BvaW50ZXIgKnBvaW50ZXIsIHVpbnQzMl90IHNlcmlhbCwgdWludDMyX3QgdGlt ZSwgdWludDMyX3QgYnV0dG9uLCB1aW50MzJfdCBzdGF0ZSkKK3sKKwlXbHdpbiAqd2w7CisK Kwl3bCA9IGRhdGE7CisJaWYoc3RhdGUpCisJCXN3aXRjaChidXR0b24peworCQljYXNlIFds TW91c2UxOiAvKiBNMSAqLworCQkJd2wtPm1vdXNlLmJ1dHRvbnMgfD0gUDlNb3VzZTE7CisJ CQlicmVhazsKKwkJY2FzZSBXbE1vdXNlMjogLyogTTIgKi8KKwkJCXdsLT5tb3VzZS5idXR0 b25zIHw9IFA5TW91c2UyOworCQkJYnJlYWs7CisJCWNhc2UgV2xNb3VzZTM6IC8qIE0zICov CisJCQl3bC0+bW91c2UuYnV0dG9ucyB8PSBQOU1vdXNlMzsKKwkJCWJyZWFrOworCQl9CisJ ZWxzZQorCQlzd2l0Y2goYnV0dG9uKXsKKwkJY2FzZSBXbE1vdXNlMTogLyogTTEgKi8KKwkJ CXdsLT5tb3VzZS5idXR0b25zICY9IH5QOU1vdXNlMTsKKwkJCWJyZWFrOworCQljYXNlIFds TW91c2UyOiAvKiBNMiAqLworCQkJd2wtPm1vdXNlLmJ1dHRvbnMgJj0gflA5TW91c2UyOwor CQkJYnJlYWs7CisJCWNhc2UgV2xNb3VzZTM6IC8qIE0zICovCisJCQl3bC0+bW91c2UuYnV0 dG9ucyAmPSB+UDlNb3VzZTM7CisJCQlicmVhazsKKwkJfQorCisJd2wtPm1vdXNlLm1zZWMg PSB0aW1lOworCWFic21vdXNldHJhY2sod2wtPm1vdXNlLnh5LngsIHdsLT5tb3VzZS54eS55 LCB3bC0+bW91c2UuYnV0dG9ucywgd2wtPm1vdXNlLm1zZWMpOworfQorCitzdGF0aWMgdm9p ZAorcG9pbnRlcl9oYW5kbGVfbW90aW9uKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9wb2ludGVy ICp3bF9wb2ludGVyLCB1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHN1cmZhY2VfeCwgd2xf Zml4ZWRfdCBzdXJmYWNlX3kpCit7CisJV2x3aW4gKndsOworCisJd2wgPSBkYXRhOworCXds LT5tb3VzZS54eS54ID0gc3VyZmFjZV94IC8gMjU2OworCXdsLT5tb3VzZS54eS55ID0gc3Vy ZmFjZV95IC8gMjU2OworCXdsLT5tb3VzZS5tc2VjID0gdGltZTsKKwlhYnNtb3VzZXRyYWNr KHdsLT5tb3VzZS54eS54LCB3bC0+bW91c2UueHkueSwgd2wtPm1vdXNlLmJ1dHRvbnMsIHds LT5tb3VzZS5tc2VjKTsKK30KKworc3RhdGljIHZvaWQKK3BvaW50ZXJfaGFuZGxlX2VudGVy KHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9wb2ludGVyICp3bF9wb2ludGVyLCB1aW50MzJfdCBz ZXJpYWwsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlLCB3bF9maXhlZF90IHN1cmZhY2Vf eCwgd2xfZml4ZWRfdCBzdXJmYWNlX3kpCit7CisJV2x3aW4gKndsOworCisJd2wgPSBkYXRh OworCXdsLT5wb2ludGVyc2VyaWFsID0gc2VyaWFsOworCWlmKHdsLT5jdXJzb3JzdXJmYWNl ID09IG5pbCkKKwkJcmV0dXJuOworCXdsX3BvaW50ZXJfc2V0X2N1cnNvcih3bC0+cG9pbnRl ciwgd2wtPnBvaW50ZXJzZXJpYWwsIHdsLT5jdXJzb3JzdXJmYWNlLCAtY3Vyc29yLm9mZnNl dC54LCAtY3Vyc29yLm9mZnNldC55KTsKK30KKworc3RhdGljIHZvaWQKK3BvaW50ZXJfaGFu ZGxlX2xlYXZlKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9wb2ludGVyICp3bF9wb2ludGVyLCB1 aW50MzJfdCBzZXJpYWwsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQoreworfQorCitz dGF0aWMgdm9pZAorcG9pbnRlcl9oYW5kbGVfYXhpcyh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xf cG9pbnRlciAqd2xfcG9pbnRlciwgdWludDMyX3QgdGltZSwgdWludDMyX3QgYXhpcywgd2xf Zml4ZWRfdCB2YWx1ZSkKK3sKKwlXbHdpbiAqd2w7CisJaW50IGJ1dHRvbnM7CisKKwlpZihh eGlzID09IDEpCisJCXJldHVybjsgLyogSG9yaXpvbnRhbCBzY3JvbGwgKi8KKwl3bCA9IGRh dGE7CisJYnV0dG9ucyA9IHdsLT5tb3VzZS5idXR0b25zOworCWlmKHZhbHVlIDwgMCl7CisJ CWJ1dHRvbnMgfD0gODsKKwl9IGVsc2UgeworCQlidXR0b25zIHw9IDE2OworCX0KKwl3bC0+ bW91c2UubXNlYyA9IHRpbWU7CisJLyogcDkgZXhwZWN0cyBhIHNjcm9sbCBldmVudCB0byB3 b3JrIGxpa2UgYSBidXR0b24sIGEgc2V0IGFuZCBhIHJlbGVhc2UgKi8KKwlhYnNtb3VzZXRy YWNrKHdsLT5tb3VzZS54eS54LCB3bC0+bW91c2UueHkueSwgYnV0dG9ucywgd2wtPm1vdXNl Lm1zZWMpOworCWFic21vdXNldHJhY2sod2wtPm1vdXNlLnh5LngsIHdsLT5tb3VzZS54eS55 LCB3bC0+bW91c2UuYnV0dG9ucywgd2wtPm1vdXNlLm1zZWMpOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IHdsX3BvaW50ZXJfbGlzdGVuZXIgcG9pbnRlcl9saXN0ZW5lciA9IHsKKwku ZW50ZXIgPSBwb2ludGVyX2hhbmRsZV9lbnRlciwKKwkubGVhdmUgPSBwb2ludGVyX2hhbmRs ZV9sZWF2ZSwKKwkubW90aW9uID0gcG9pbnRlcl9oYW5kbGVfbW90aW9uLAorCS5idXR0b24g PSBwb2ludGVyX2hhbmRsZV9idXR0b24sCisJLmF4aXMgPSBwb2ludGVyX2hhbmRsZV9heGlz LAorfTsKKworc3RhdGljIHZvaWQKK3NlYXRfaGFuZGxlX2NhcGFiaWxpdGllcyh2b2lkICpk YXRhLCBzdHJ1Y3Qgd2xfc2VhdCAqc2VhdCwgdWludDMyX3QgY2FwYWJpbGl0aWVzKQorewor CVdsd2luICp3bDsKKworCXdsID0gZGF0YTsKKwlpZihjYXBhYmlsaXRpZXMgJiBXTF9TRUFU X0NBUEFCSUxJVFlfUE9JTlRFUikgeworCQl3bC0+cG9pbnRlciA9IHdsX3NlYXRfZ2V0X3Bv aW50ZXIoc2VhdCk7CisJCXdsX3BvaW50ZXJfYWRkX2xpc3RlbmVyKHdsLT5wb2ludGVyLCAm cG9pbnRlcl9saXN0ZW5lciwgd2wpOworCX0KKwlpZihjYXBhYmlsaXRpZXMgJiBXTF9TRUFU X0NBUEFCSUxJVFlfS0VZQk9BUkQpIHsKKwkJc3RydWN0IHdsX2tleWJvYXJkICprZXlib2Fy ZCA9IHdsX3NlYXRfZ2V0X2tleWJvYXJkKHNlYXQpOworCQl3bF9rZXlib2FyZF9hZGRfbGlz dGVuZXIoa2V5Ym9hcmQsICZrZXlib2FyZF9saXN0ZW5lciwgd2wpOworCX0KK30KKworc3Rh dGljIHZvaWQKK3NlYXRfaGFuZGxlX25hbWUodm9pZCAqZGF0YSwgc3RydWN0IHdsX3NlYXQg KnNlYXQsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCB3bF9zZWF0X2xpc3RlbmVyIHNlYXRfbGlzdGVuZXIgPSB7CisJLmNhcGFiaWxpdGllcyA9 IHNlYXRfaGFuZGxlX2NhcGFiaWxpdGllcywKKwkubmFtZSA9IHNlYXRfaGFuZGxlX25hbWUs Cit9OworCitzdGF0aWMgdm9pZAorZGF0YV9zb3VyY2VfaGFuZGxlX3NlbmQodm9pZCAqZGF0 YSwgc3RydWN0IHdsX2RhdGFfc291cmNlICpzb3VyY2UsIGNvbnN0IGNoYXIgKm1pbWVfdHlw ZSwgaW50IGZkKQoreworCXVsb25nIG47CisJdWxvbmcgcG9zOworCXVsb25nIGxlbjsKKwlX bHdpbiAqd2w7CisKKwlpZihzdHJjbXAobWltZV90eXBlLCAidGV4dC9wbGFpbjtjaGFyc2V0 PXV0Zi04IikgIT0gMCkKKwkJcmV0dXJuOworCisJd2wgPSBkYXRhOworCXFsb2NrKCZ3bC0+ Y2xpcC5sayk7CisJbGVuID0gc3RybGVuKHdsLT5jbGlwLmNvbnRlbnQpOworCWZvcihwb3Mg PSAwOyAobiA9IHdyaXRlKGZkLCB3bC0+Y2xpcC5jb250ZW50K3BvcywgbGVuLXBvcykpID4g MCAmJiBwb3MgPCBsZW47IHBvcyArPSBuKQorCQk7CisJd2wtPmNsaXAucG9zdGVkID0gMDsK KwljbG9zZShmZCk7CisJcXVubG9jaygmd2wtPmNsaXAubGspOworfQorCitzdGF0aWMgdm9p ZAorZGF0YV9zb3VyY2VfaGFuZGxlX2NhbmNlbGxlZCh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xf ZGF0YV9zb3VyY2UgKnNvdXJjZSkKK3sKKwlXbHdpbiAqd2w7CisKKwl3bCA9IGRhdGE7CisJ cWxvY2soJndsLT5jbGlwLmxrKTsKKwl3bC0+Y2xpcC5wb3N0ZWQgPSAwOworCXF1bmxvY2so JndsLT5jbGlwLmxrKTsKKwl3bF9kYXRhX3NvdXJjZV9kZXN0cm95KHNvdXJjZSk7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfZGF0YV9zb3VyY2VfbGlzdGVuZXIgZGF0YV9zb3Vy Y2VfbGlzdGVuZXIgPSB7CisJLnNlbmQgPSBkYXRhX3NvdXJjZV9oYW5kbGVfc2VuZCwKKwku Y2FuY2VsbGVkID0gZGF0YV9zb3VyY2VfaGFuZGxlX2NhbmNlbGxlZCwKK307CisKK3N0YXRp YyB2b2lkCitkYXRhX2RldmljZV9oYW5kbGVfZGF0YV9vZmZlcih2b2lkICpkYXRhLCBzdHJ1 Y3Qgd2xfZGF0YV9kZXZpY2UgKmRhdGFfZGV2aWNlLCBzdHJ1Y3Qgd2xfZGF0YV9vZmZlciAq b2ZmZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkCitkYXRhX2RldmljZV9oYW5kbGVfc2VsZWN0 aW9uKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9kYXRhX2RldmljZSAqZGF0YV9kZXZpY2UsIHN0 cnVjdCB3bF9kYXRhX29mZmVyICpvZmZlcikKK3sKKwlXbHdpbiAqd2w7CisJdWxvbmcgbjsK Kwl1bG9uZyBzaXplOworCXVsb25nIHBvczsKKwlpbnQgZmRzWzJdOworCisJLy8gQW4gYXBw bGljYXRpb24gaGFzIHNldCB0aGUgY2xpcGJvYXJkIGNvbnRlbnRzCisJaWYgKG9mZmVyID09 IE5VTEwpIHsKKwkJcmV0dXJuOworCX0KKworCXdsID0gZGF0YTsKKwlwaXBlKGZkcyk7CisJ d2xfZGF0YV9vZmZlcl9yZWNlaXZlKG9mZmVyLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04 IiwgZmRzWzFdKTsKKwljbG9zZShmZHNbMV0pOworCisJd2xfZGlzcGxheV9yb3VuZHRyaXAo d2wtPmRpc3BsYXkpOworCisJcWxvY2soJndsLT5jbGlwLmxrKTsKKwlzaXplID0gODE5MjsK Kwl3bC0+Y2xpcC5jb250ZW50ID0gcmVhbGxvYyh3bC0+Y2xpcC5jb250ZW50LCBzaXplKzEp OworCW1lbXNldCh3bC0+Y2xpcC5jb250ZW50LCAwLCBzaXplKzEpOworCWZvcihwb3MgPSAw OyAobiA9IHJlYWQoZmRzWzBdLCB3bC0+Y2xpcC5jb250ZW50K3Bvcywgc2l6ZS1wb3MpKSA+ IDA7KXsKKwkJcG9zICs9IG47CisJCWlmKHBvcyA+PSBzaXplKXsKKwkJCXNpemUgKj0gMjsK KwkJCXdsLT5jbGlwLmNvbnRlbnQgPSByZWFsbG9jKHdsLT5jbGlwLmNvbnRlbnQsIHNpemUr MSk7CisJCQltZW1zZXQod2wtPmNsaXAuY29udGVudCtwb3MsIDAsIChzaXplLXBvcykrMSk7 CisJCX0KKwl9CisJY2xvc2UoZmRzWzBdKTsKKwlxdW5sb2NrKCZ3bC0+Y2xpcC5sayk7CisJ d2xfZGF0YV9vZmZlcl9kZXN0cm95KG9mZmVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCB3bF9kYXRhX2RldmljZV9saXN0ZW5lciBkYXRhX2RldmljZV9saXN0ZW5lciA9IHsKKwku ZGF0YV9vZmZlciA9IGRhdGFfZGV2aWNlX2hhbmRsZV9kYXRhX29mZmVyLAorCS5zZWxlY3Rp b24gPSBkYXRhX2RldmljZV9oYW5kbGVfc2VsZWN0aW9uLAorfTsKKworc3RhdGljIHZvaWQK K3hkZ193bV9iYXNlX3Bpbmcodm9pZCAqZGF0YSwgc3RydWN0IHhkZ193bV9iYXNlICp4ZGdf d21fYmFzZSwgdWludDMyX3Qgc2VyaWFsKQoreworCXhkZ193bV9iYXNlX3BvbmcoeGRnX3dt X2Jhc2UsIHNlcmlhbCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeGRnX3dtX2Jhc2Vf bGlzdGVuZXIgeGRnX3dtX2Jhc2VfbGlzdGVuZXIgPSB7CisJLnBpbmcgPSB4ZGdfd21fYmFz ZV9waW5nLAorfTsKKworc3RhdGljIHZvaWQKK2hhbmRsZV9nbG9iYWwodm9pZCAqZGF0YSwg c3RydWN0IHdsX3JlZ2lzdHJ5ICpyZWdpc3RyeSwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hh ciAqaW50ZXJmYWNlLCB1aW50MzJfdCB2ZXJzaW9uKQoreworCVdsd2luICp3bDsKKworCXds ID0gZGF0YTsKKwlpZihzdHJjbXAoaW50ZXJmYWNlLCB3bF9zaG1faW50ZXJmYWNlLm5hbWUp ID09IDApIHsKKwkJd2wtPnNobSA9IHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUs ICZ3bF9zaG1faW50ZXJmYWNlLCAxKTsKKwl9IGVsc2UgaWYoc3RyY21wKGludGVyZmFjZSwg d2xfc2VhdF9pbnRlcmZhY2UubmFtZSkgPT0gMCkgeworCQl3bC0+c2VhdCA9IHdsX3JlZ2lz dHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsICZ3bF9zZWF0X2ludGVyZmFjZSwgNCk7CisJCXds X3NlYXRfYWRkX2xpc3RlbmVyKHdsLT5zZWF0LCAmc2VhdF9saXN0ZW5lciwgd2wpOworCX0g ZWxzZSBpZihzdHJjbXAoaW50ZXJmYWNlLCB3bF9jb21wb3NpdG9yX2ludGVyZmFjZS5uYW1l KSA9PSAwKSB7CisJCXdsLT5jb21wb3NpdG9yID0gd2xfcmVnaXN0cnlfYmluZChyZWdpc3Ry eSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKTsKKwl9IGVsc2UgaWYoc3Ry Y21wKGludGVyZmFjZSwgeGRnX3dtX2Jhc2VfaW50ZXJmYWNlLm5hbWUpID09IDApIHsKKwkJ d2wtPnhkZ193bV9iYXNlID0gd2xfcmVnaXN0cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJnhk Z193bV9iYXNlX2ludGVyZmFjZSwgMSk7CisJCXhkZ193bV9iYXNlX2FkZF9saXN0ZW5lcih3 bC0+eGRnX3dtX2Jhc2UsICZ4ZGdfd21fYmFzZV9saXN0ZW5lciwgd2wpOworCX0gZWxzZSBp ZihzdHJjbXAoaW50ZXJmYWNlLCB3bF9kYXRhX2RldmljZV9tYW5hZ2VyX2ludGVyZmFjZS5u YW1lKSA9PSAwKSB7CisJCXdsLT5kYXRhX2RldmljZV9tYW5hZ2VyID0gd2xfcmVnaXN0cnlf YmluZChyZWdpc3RyeSwgbmFtZSwgJndsX2RhdGFfZGV2aWNlX21hbmFnZXJfaW50ZXJmYWNl LCAzKTsKKwl9IGVsc2UgaWYoc3RyY21wKGludGVyZmFjZSwgenhkZ19kZWNvcmF0aW9uX21h bmFnZXJfdjFfaW50ZXJmYWNlLm5hbWUpID09IDApIHsKKwkJd2wtPmRlY29tYW4gPSB3bF9y ZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmenhkZ19kZWNvcmF0aW9uX21hbmFnZXJf djFfaW50ZXJmYWNlLCAxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitoYW5kbGVfZ2xvYmFs X3JlbW92ZSh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LCB1aW50 MzJfdCBuYW1lKQoreworfQorCitjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIg cmVnaXN0cnlfbGlzdGVuZXIgPSB7CisJLmdsb2JhbCA9IGhhbmRsZV9nbG9iYWwsCisJLmds b2JhbF9yZW1vdmUgPSBoYW5kbGVfZ2xvYmFsX3JlbW92ZSwKK307CisKK3ZvaWQKK3dsc2V0 Y2IoV2x3aW4gKndsKQoreworCXN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnk7CisJc3Ry dWN0IHhkZ19zdXJmYWNlICp4ZGdfc3VyZmFjZTsKKwlzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNi OworCXN0cnVjdCB6eGRnX3RvcGxldmVsX2RlY29yYXRpb25fdjEgKmRlY287CisKKwkvL1dh eWxhbmQgZG9lc24ndCBkbyBrZXlib2FyZCByZXBlYXQsIGJ1dCBhbHNvIG1heQorCS8vbm90 IHRlbGwgdXMgd2hhdCB0aGUgdXNlciB3b3VsZCBsaWtlLCBzbyB3ZQorCS8vcGljayBzb21l IHNhbmUgZGVmYXVsdHMuCisJcmVwZWF0c3RhdGUuZGVsYXkgPSAyMDA7CisJcmVwZWF0c3Rh dGUucmF0ZSA9IDIwOworCWtwcm9jKCJrZXlib2FyZCByZXBlYXQiLCByZXBlYXRwcm9jLCAw KTsKKworCXJlZ2lzdHJ5ID0gd2xfZGlzcGxheV9nZXRfcmVnaXN0cnkod2wtPmRpc3BsYXkp OworCXdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihyZWdpc3RyeSwgJnJlZ2lzdHJ5X2xpc3Rl bmVyLCB3bCk7CisJd2xfZGlzcGxheV9yb3VuZHRyaXAod2wtPmRpc3BsYXkpOworCXdsLT54 a2JfY29udGV4dCA9IHhrYl9jb250ZXh0X25ldyhYS0JfQ09OVEVYVF9OT19GTEFHUyk7CisK KwlpZih3bC0+c2htID09IG5pbCB8fCB3bC0+Y29tcG9zaXRvciA9PSBuaWwgfHwgd2wtPnhk Z193bV9iYXNlID09IG5pbCB8fCB3bC0+c2VhdCA9PSBuaWwgfHwgd2wtPmRlY29tYW4gPT0g bmlsKQorCQlzeXNmYXRhbCgiUmVnaXN0cmF0aW9uIGZlbGwgc2hvcnQiKTsKKworCisJd2wt PmRhdGFfZGV2aWNlID0gd2xfZGF0YV9kZXZpY2VfbWFuYWdlcl9nZXRfZGF0YV9kZXZpY2Uo d2wtPmRhdGFfZGV2aWNlX21hbmFnZXIsIHdsLT5zZWF0KTsKKwl3bF9kYXRhX2RldmljZV9h ZGRfbGlzdGVuZXIod2wtPmRhdGFfZGV2aWNlLCAmZGF0YV9kZXZpY2VfbGlzdGVuZXIsIHds KTsKKwl3bGFsbG9jYnVmZmVyKHdsKTsKKwl3bC0+c3VyZmFjZSA9IHdsX2NvbXBvc2l0b3Jf Y3JlYXRlX3N1cmZhY2Uod2wtPmNvbXBvc2l0b3IpOworCisJeGRnX3N1cmZhY2UgPSB4ZGdf d21fYmFzZV9nZXRfeGRnX3N1cmZhY2Uod2wtPnhkZ193bV9iYXNlLCB3bC0+c3VyZmFjZSk7 CisJd2wtPnhkZ190b3BsZXZlbCA9IHhkZ19zdXJmYWNlX2dldF90b3BsZXZlbCh4ZGdfc3Vy ZmFjZSk7CisJZGVjbyA9IHp4ZGdfZGVjb3JhdGlvbl9tYW5hZ2VyX3YxX2dldF90b3BsZXZl bF9kZWNvcmF0aW9uKHdsLT5kZWNvbWFuLCB3bC0+eGRnX3RvcGxldmVsKTsKKwl6eGRnX3Rv cGxldmVsX2RlY29yYXRpb25fdjFfc2V0X21vZGUoZGVjbywgWlhER19UT1BMRVZFTF9ERUNP UkFUSU9OX1YxX01PREVfU0VSVkVSX1NJREUpOworCXhkZ19zdXJmYWNlX2FkZF9saXN0ZW5l cih4ZGdfc3VyZmFjZSwgJnhkZ19zdXJmYWNlX2xpc3RlbmVyLCB3bCk7CisJeGRnX3RvcGxl dmVsX2FkZF9saXN0ZW5lcih3bC0+eGRnX3RvcGxldmVsLCAmeGRnX3RvcGxldmVsX2xpc3Rl bmVyLCB3bCk7CisKKwl3bF9zdXJmYWNlX2NvbW1pdCh3bC0+c3VyZmFjZSk7CisJd2xfZGlz cGxheV9yb3VuZHRyaXAod2wtPmRpc3BsYXkpOworCisJeGRnX3RvcGxldmVsX3NldF9hcHBf aWQod2wtPnhkZ190b3BsZXZlbCwgImRyYXd0ZXJtIik7CisKKwljYiA9IHdsX3N1cmZhY2Vf ZnJhbWUod2wtPnN1cmZhY2UpOworCXdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihjYiwgJnds X3N1cmZhY2VfZnJhbWVfbGlzdGVuZXIsIHdsKTsKK30KKwordm9pZAord2xzZXR0aXRsZShX bHdpbiAqd2wsIGNoYXIgKnMpCit7CisJeGRnX3RvcGxldmVsX3NldF90aXRsZSh3bC0+eGRn X3RvcGxldmVsLCBzKTsKK30KKwordm9pZAord2xzZXRzbmFyZihXbHdpbiAqd2wsIGNoYXIg KnMpCit7CisJc3RydWN0IHdsX2RhdGFfc291cmNlICpzb3VyY2U7CisKKwlxbG9jaygmd2wt PmNsaXAubGspOworCWlmKHdsLT5jbGlwLmNvbnRlbnQgIT0gbmlsKQorCQlmcmVlKHdsLT5j bGlwLmNvbnRlbnQpOworCisJd2wtPmNsaXAuY29udGVudCA9IHN0cmR1cChzKTsKKwkvKiBE byB3ZSBzdGlsbCBvd24gdGhlIGNsaXBib2FyZD8gKi8KKwlpZih3bC0+Y2xpcC5wb3N0ZWQg PT0gMSkKKwkJZ290byBkb25lOworCisJc291cmNlID0gd2xfZGF0YV9kZXZpY2VfbWFuYWdl cl9jcmVhdGVfZGF0YV9zb3VyY2Uod2wtPmRhdGFfZGV2aWNlX21hbmFnZXIpOworCXdsX2Rh dGFfc291cmNlX2FkZF9saXN0ZW5lcihzb3VyY2UsICZkYXRhX3NvdXJjZV9saXN0ZW5lciwg d2wpOworCXdsX2RhdGFfc291cmNlX29mZmVyKHNvdXJjZSwgInRleHQvcGxhaW47Y2hhcnNl dD11dGYtOCIpOworCXdsX2RhdGFfZGV2aWNlX3NldF9zZWxlY3Rpb24od2wtPmRhdGFfZGV2 aWNlLCBzb3VyY2UsIHdsLT5jbGlwLnNlcmlhbCk7CisJd2wtPmNsaXAucG9zdGVkID0gMTsK K2RvbmU6CisJcXVubG9jaygmd2wtPmNsaXAubGspOworfQorCitjaGFyKgord2xnZXRzbmFy ZihXbHdpbiAqd2wpCit7CisJY2hhciAqczsKKwlxbG9jaygmd2wtPmNsaXAubGspOworCXMg PSBzdHJkdXAod2wtPmNsaXAuY29udGVudCk7CisJcXVubG9jaygmd2wtPmNsaXAubGspOwor CXJldHVybiBzOworfQpkaWZmIC0tZ2l0IGEvZ3VpLXdsL3dsLWluYy5oIGIvZ3VpLXdsL3ds LWluYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMDU2YjUKLS0t IC9kZXYvbnVsbAorKysgYi9ndWktd2wvd2wtaW5jLmgKQEAgLTAsMCArMSw3OCBAQAordHlw ZWRlZiBzdHJ1Y3QgV2x3aW4gV2x3aW47Cit0eXBlZGVmIHN0cnVjdCBDbGlwYm9hcmQgQ2xp cGJvYXJkOworCisvKiBUaGUgY29udGVudHMgb2YgdGhlIGNsaXBib2FyZAorICogYXJlIG5v dCBzdG9yZWQgaW4gdGhlIGNvbXBvc2l0b3IuCisgKiBJbnN0ZWFkIHdlIHNpZ25hbCB0aGF0 IHdlIGhhdmUgY29udGVudAorICogYW5kIHRoZSBjb21wb3NpdG9yIGdpdmVzIHVzIGEgcGlw ZQorICogdG8gdGhlIHByb2dyYW0gdGhhdCB3YW50cyBpdCB3aGVuCisgKiB0aGUgY29udGVu dCBpcyBwYXN0ZWQuICovCitzdHJ1Y3QgQ2xpcGJvYXJkIHsKKwlRTG9jayBsazsKKwljaGFy ICpjb250ZW50OworCisJLyogV2F5bGFuZCByZXF1aXJlcyB0aGF0IGluIG9yZGVyCisJICog dG8gcHV0IGRhdGEgaW4gdG8gdGhlIGNsaXBib2FyZAorCSAqIHlvdSBtdXN0IGJlIHRoZSBm b2N1c2VkIGFwcGxpY2F0aW9uLgorCSAqIFNvIHdlIG11c3QgcHJvdmlkZSB0aGUgc2VyaWFs IHdlIGdldAorCSAqIG9uIGtleWJvYXJkLmVudGVyLiAqLworCXUzMmludCBzZXJpYWw7CisK KwkvKiBCZWNhdXNlIHdlIGRvbnQgYWN0dWFsbHkgY291Z2gKKwkgKiB1cCB0aGUgYnVmZmVy IHVudGlsIHNvbWVvbmUgZWxzZQorCSAqIGFza3MsIHdlIGNhbiBjaGFuZ2UgdGhlIGNvbnRl bnRzCisJICogbG9jYWxseSB3aXRob3V0IGEgcm91bmQgdHJpcC4KKwkgKiBQb3N0ZWQgc3Rv cmVzIGlmIHdlIGFscmVhZHkgbWFkZQorCSAqIG91ciByb3VuZCB0cmlwICovCisJaW50IHBv c3RlZDsKK307CisKK3N0cnVjdCBNb3VzZSB7CisJUG9pbnQgeHk7CisJaW50IGJ1dHRvbnM7 CisJdWxvbmcgbXNlYzsKK307CisKK3N0cnVjdCBXbHdpbiB7CisJaW50IGR4OworCWludCBk eTsKKwlpbnQgbW9ueDsKKwlpbnQgbW9ueTsKKwlNb3VzZSBtb3VzZTsKKwlDbGlwYm9hcmQg Y2xpcDsKKwlpbnQgZGlydHk7CisKKwkvKiBXYXlsYW5kIFN0YXRlICovCisJaW50IHJ1bmlu ZzsKKwlpbnQgcG9vbHNpemU7CisJaW50IHBvaW50ZXJzZXJpYWw7CisJdm9pZCAqc2htX2Rh dGE7CisJc3RydWN0IHdsX2NvbXBvc2l0b3IgKmNvbXBvc2l0b3I7CisJc3RydWN0IHdsX2Rp c3BsYXkgKmRpc3BsYXk7CisJc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2U7CisJc3RydWN0 IHdsX3N1cmZhY2UgKmN1cnNvcnN1cmZhY2U7CisJc3RydWN0IHhkZ193bV9iYXNlICp4ZGdf d21fYmFzZTsKKwlzdHJ1Y3QgeGRnX3RvcGxldmVsICp4ZGdfdG9wbGV2ZWw7CisJc3RydWN0 IHdsX3NobV9wb29sICpwb29sOworCXN0cnVjdCB3bF9idWZmZXIgKnNjcmVlbmJ1ZmZlcjsK KwlzdHJ1Y3Qgd2xfYnVmZmVyICpjdXJzb3JidWZmZXI7CisJc3RydWN0IHdsX3NobSAqc2ht OworCXN0cnVjdCB3bF9zZWF0ICpzZWF0OworCXN0cnVjdCB3bF9kYXRhX2RldmljZV9tYW5h Z2VyICpkYXRhX2RldmljZV9tYW5hZ2VyOworCXN0cnVjdCB3bF9kYXRhX2RldmljZSAqZGF0 YV9kZXZpY2U7CisJc3RydWN0IHdsX3BvaW50ZXIgKnBvaW50ZXI7CisJLyogS2V5Ym9hcmQg c3RhdGUgKi8KKwlzdHJ1Y3QgeGtiX3N0YXRlICp4a2Jfc3RhdGU7CisJc3RydWN0IHhrYl9j b250ZXh0ICp4a2JfY29udGV4dDsKKworCXN0cnVjdCB6eGRnX2RlY29yYXRpb25fbWFuYWdl cl92MSAqZGVjb21hbjsKK307CisKK3ZvaWQgd2xhbGxvY2J1ZmZlcihXbHdpbiopOwordm9p ZCB3bHNldGNiKFdsd2luKik7Cit2b2lkIHdsc2V0dGl0bGUoV2x3aW4qLCBjaGFyKik7Citj aGFyKiB3bGdldHNuYXJmKFdsd2luKik7Cit2b2lkIHdsc2V0c25hcmYoV2x3aW4qLCBjaGFy Kik7Cit2b2lkIHdsZHJhd2N1cnNvcihXbHdpbiosIEN1cnNvcmluZm8qKTsKK3ZvaWQgd2xy ZXNpemUoV2x3aW4qLCBpbnQsIGludCk7Cit2b2lkIHdsZmx1c2goV2x3aW4qKTsKZGlmZiAt LWdpdCBhL2d1aS13bC93bC1zY3JlZW4uYyBiL2d1aS13bC93bC1zY3JlZW4uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWYzMjJkCi0tLSAvZGV2L251bGwKKysr IGIvZ3VpLXdsL3dsLXNjcmVlbi5jCkBAIC0wLDAgKzEsMTk5IEBACisjZGVmaW5lIF9QT1NJ WF9DX1NPVVJDRSAyMDA4MDlMCisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx3 YXlsYW5kLWNsaWVudC5oPgorI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+ CisjaW5jbHVkZSA8bGludXgvaW5wdXQtZXZlbnQtY29kZXMuaD4KKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx4a2Jjb21tb24veGtiY29tbW9uLmg+ CisjaW5jbHVkZSAieGRnLXNoZWxsLXByb3RvY29sLmgiCisKKyNpbmNsdWRlICJ1LmgiCisj aW5jbHVkZSAibGliLmgiCisjaW5jbHVkZSAia2Vybi9kYXQuaCIKKyNpbmNsdWRlICJrZXJu L2Zucy5oIgorI2luY2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAidXNlci5oIgorI2luY2x1 ZGUgPGRyYXcuaD4KKyNpbmNsdWRlIDxtZW1kcmF3Lmg+CisjaW5jbHVkZSA8a2V5Ym9hcmQu aD4KKyNpbmNsdWRlIDxjdXJzb3IuaD4KKyNpbmNsdWRlICJzY3JlZW4uaCIKKyNpbmNsdWRl ICJ3bC1pbmMuaCIKKworI3VuZGVmIGNsb3NlCisKK3N0YXRpYyBXbHdpbiAqZ3dpbjsKKwor TWVtaW1hZ2UgKmdzY3JlZW47CisKK3N0YXRpYyBXbHdpbioKK25ld3dsd2luKHZvaWQpCit7 CisJV2x3aW4gKndsOworCisJd2wgPSBtYWxsb2N6KHNpemVvZiAqd2wsIDEpOworCWlmKHds ID09IG5pbCkKKwkJc3lzZmF0YWwoIm1hbGxvYyBXbHdpbiIpOworCXdsLT5keCA9IDEwMjQ7 CisJd2wtPmR5ID0gMTAyNDsKKwl3bC0+bW9ueCA9IDE5MjA7CisJd2wtPm1vbnkgPSAxMDgw OworCXJldHVybiB3bDsKK30KKwordm9pZAord2xmbHVzaChXbHdpbiAqd2wpCit7CisJaWYo d2wtPmRpcnR5ID09IDEpCisJCW1lbWNweSh3bC0+c2htX2RhdGEsIGdzY3JlZW4tPmRhdGEt PmJkYXRhLCB3bC0+ZHgqd2wtPmR5KjQpOworCisJd2xfc3VyZmFjZV9hdHRhY2god2wtPnN1 cmZhY2UsIHdsLT5zY3JlZW5idWZmZXIsIDAsIDApOworCXdsX3N1cmZhY2VfZGFtYWdlKHds LT5zdXJmYWNlLCAwLCAwLCB3bC0+ZHgsIHdsLT5keSk7CisJd2xfc3VyZmFjZV9jb21taXQo d2wtPnN1cmZhY2UpOworCXdsLT5kaXJ0eSA9IDA7Cit9CisKK3ZvaWQKK3dscmVzaXplKFds d2luICp3bCwgaW50IHgsIGludCB5KQoreworCVJlY3RhbmdsZSByOworCisJd2wtPmR4ID0g eDsKKwl3bC0+ZHkgPSB5OworCisJcWxvY2soJmRyYXdsb2NrKTsKKwl3bGFsbG9jYnVmZmVy KHdsKTsKKwlyID0gUmVjdCgwLCAwLCB3bC0+ZHgsIHdsLT5keSk7CisJZ3NjcmVlbiA9IGFs bG9jbWVtaW1hZ2UociwgWFJHQjMyKTsKKwlnc2NyZWVuLT5jbGlwciA9IFpSOworCXF1bmxv Y2soJmRyYXdsb2NrKTsKKworCXNjcmVlbnJlc2l6ZShyKTsKKworCXFsb2NrKCZkcmF3bG9j ayk7CisJd2wtPmRpcnR5ID0gMTsKKwl3bGZsdXNoKHdsKTsKKwlxdW5sb2NrKCZkcmF3bG9j ayk7Cit9CisKK3ZvaWQKK2Rpc3BhdGNocHJvYyh2b2lkICphKQoreworCVdsd2luICp3bDsK Kwl3bCA9IGE7CisJZm9yKDt3bC0+cnVuaW5nID09IDE7KXsKKwkJd2xfZGlzcGxheV9kaXNw YXRjaCh3bC0+ZGlzcGxheSk7CisJfQorfQorCitzdGF0aWMgV2x3aW4qCit3bGF0dGFjaChj aGFyICpsYWJlbCkKK3sKKwlSZWN0YW5nbGUgcjsKKwlXbHdpbiAqd2w7CisKKwl3bCA9IG5l d3dsd2luKCk7CisJZ3dpbiA9IHdsOworCXdsLT5kaXNwbGF5ID0gd2xfZGlzcGxheV9jb25u ZWN0KE5VTEwpOworCWlmKHdsLT5kaXNwbGF5ID09IG5pbCkKKwkJc3lzZmF0YWwoImNvdWxk IG5vdCBjb25uZWN0IHRvIGRpc3BsYXkiKTsKKworCW1lbWltYWdlaW5pdCgpOworCXdsc2V0 Y2Iod2wpOworCXdsZmx1c2god2wpOworCXdsc2V0dGl0bGUod2wsIGxhYmVsKTsKKworCXIg PSBSZWN0KDAsIDAsIHdsLT5keCwgd2wtPmR5KTsKKwlnc2NyZWVuID0gYWxsb2NtZW1pbWFn ZShyLCBYUkdCMzIpOworCWdzY3JlZW4tPmNsaXByID0gcjsKKwlnc2NyZWVuLT5yID0gcjsK KwlyZWN0Y2xpcCgmKGdzY3JlZW4tPmNsaXByKSwgZ3NjcmVlbi0+cik7CisKKwl3bC0+cnVu aW5nID0gMTsKKwlrcHJvYygid2xkaXNwYXRjaCIsIGRpc3BhdGNocHJvYywgd2wpOworCXRl cm1pbml0KCk7CisJcWxvY2soJmRyYXdsb2NrKTsKKwl3bGZsdXNoKHdsKTsKKwlxdW5sb2Nr KCZkcmF3bG9jayk7CisJcmV0dXJuIHdsOworfQorCit2b2lkCitzY3JlZW5pbml0KHZvaWQp Cit7CisJd2xhdHRhY2goImRyYXd0ZXJtIik7Cit9CisKK3ZvaWQKK2d1aW1haW4odm9pZCkK K3sKKwljcHVib2R5KCk7Cit9CisKK01lbWRhdGEqCithdHRhY2hzY3JlZW4oUmVjdGFuZ2xl ICpyLCB1bG9uZyAqY2hhbiwgaW50ICpkZXB0aCwgaW50ICp3aWR0aCwgaW50ICpzb2Z0c2Ny ZWVuKQoreworCSpyID0gZ3NjcmVlbi0+Y2xpcHI7CisJKmNoYW4gPSBnc2NyZWVuLT5jaGFu OworCSpkZXB0aCA9IGdzY3JlZW4tPmRlcHRoOworCSp3aWR0aCA9IGdzY3JlZW4tPndpZHRo OworCSpzb2Z0c2NyZWVuID0gMTsKKworCWdzY3JlZW4tPmRhdGEtPnJlZisrOworCXJldHVy biBnc2NyZWVuLT5kYXRhOworfQorCit2b2lkCitmbHVzaG1lbXNjcmVlbihSZWN0YW5nbGUg cikKK3sKKwlXbHdpbiAqd2w7CisKKwl3bCA9IGd3aW47CisJd2wtPmRpcnR5ID0gMTsKKwl3 bGZsdXNoKHdsKTsKK30KKwordm9pZAorc2NyZWVuc2l6ZShSZWN0YW5nbGUgciwgdWxvbmcg Y2hhbikKK3sKKwlnd2luLT5kaXJ0eSA9IDE7Cit9CisKK3ZvaWQKK3NldGN1cnNvcih2b2lk KQoreworCXFsb2NrKCZkcmF3bG9jayk7CisJd2xkcmF3Y3Vyc29yKGd3aW4sICZjdXJzb3Ip OworCXF1bmxvY2soJmRyYXdsb2NrKTsKK30KKwordm9pZAorbW91c2VzZXQoUG9pbnQgcCkK K3sKK30KKworY2hhcioKK2NsaXByZWFkKHZvaWQpCit7CisJcmV0dXJuIHdsZ2V0c25hcmYo Z3dpbik7Cit9CisKK2ludAorY2xpcHdyaXRlKGNoYXIgKmRhdGEpCit7CisJd2xzZXRzbmFy Zihnd2luLCBkYXRhKTsKKwlyZXR1cm4gc3RybGVuKGRhdGEpOworfQorCit2b2lkCitnZXRj b2xvcih1bG9uZyBpLCB1bG9uZyAqciwgdWxvbmcgKmcsIHVsb25nICpiKQoreworfQorCit2 b2lkCitzZXRjb2xvcih1bG9uZyBpbmRleCwgdWxvbmcgcmVkLCB1bG9uZyBncmVlbiwgdWxv bmcgYmx1ZSkKK3sKK30KZGlmZiAtLWdpdCBhL2d1aS13bC93bC11dGlsLmMgYi9ndWktd2wv d2wtdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTBiNDUK LS0tIC9kZXYvbnVsbAorKysgYi9ndWktd2wvd2wtdXRpbC5jCkBAIC0wLDAgKzEsMTUzIEBA CisjZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAyMDA4MDlMCisjaW5jbHVkZSA8c3lzL21tYW4u aD4KKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgorI2luY2x1ZGUgPHdheWxhbmQtY2xp ZW50LXByb3RvY29sLmg+CisjaW5jbHVkZSA8bGludXgvaW5wdXQtZXZlbnQtY29kZXMuaD4K KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx4a2Jjb21t b24veGtiY29tbW9uLmg+CisjaW5jbHVkZSAieGRnLXNoZWxsLXByb3RvY29sLmgiCisKKyNp bmNsdWRlICJ1LmgiCisjaW5jbHVkZSAibGliLmgiCisjaW5jbHVkZSAia2Vybi9kYXQuaCIK KyNpbmNsdWRlICJrZXJuL2Zucy5oIgorI2luY2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAi dXNlci5oIgorI2luY2x1ZGUgPGRyYXcuaD4KKyNpbmNsdWRlIDxtZW1kcmF3Lmg+CisjaW5j bHVkZSA8a2V5Ym9hcmQuaD4KKyNpbmNsdWRlIDxjdXJzb3IuaD4KKyNpbmNsdWRlICJzY3Jl ZW4uaCIKKyNpbmNsdWRlICJ3bC1pbmMuaCIKKworI3VuZGVmIGNsb3NlCisKK3N0YXRpYyB2 b2lkCityYW5kbmFtZShjaGFyICpidWYpCit7CisJc3RydWN0IHRpbWVzcGVjIHRzOworCWlu dCBpOworCisJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKwlsb25nIHIg PSB0cy50dl9uc2VjOworCWZvcihpPTA7IGkgPCA2OyBpKyspIHsKKwkJYnVmW2ldID0gJ0En KyhyJjE1KSsocisxNikqMjsKKwkJciA+Pj0gNTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK3ds Y3JlYXRlc2htKG9mZl90IHNpemUpCit7CisJY2hhciBuYW1lW10gPSAiL2RyYXd0ZXJtLS1Y WFhYWFgiOworCWludCByZXRyaWVzID0gMTAwOworCWludCBmZDsKKworCWRvIHsKKwkJcmFu ZG5hbWUobmFtZSArIHN0cmxlbihuYW1lKSAtIDYpOworCQktLXJldHJpZXM7CisJCWZkID0g c2htX29wZW4obmFtZSwgT19SRFdSIHwgT19DUkVBVCB8IE9fRVhDTCwgMDYwMCk7CisJCWlm KGZkID49IDApeworCQkJc2htX3VubGluayhuYW1lKTsKKwkJCWlmKGZ0cnVuY2F0ZShmZCwg c2l6ZSkgPCAwKXsKKwkJCQljbG9zZShmZCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJ cmV0dXJuIGZkOworCQl9CisJfSB3aGlsZSAocmV0cmllcyA+IDAgJiYgZXJybm8gPT0gRUVY SVNUKTsKKwlyZXR1cm4gLTE7Cit9CisKK3ZvaWQKK3dsYWxsb2Nwb29sKFdsd2luICp3bCkK K3sKKwlpbnQgc2NyZWVueCwgc2NyZWVueTsKKwlpbnQgc2NyZWVuc2l6ZSwgY3Vyc29yc2l6 ZTsKKwlpbnQgZGVwdGg7CisJaW50IGZkOworCisJaWYod2wtPnBvb2wgIT0gbmlsKQorCQl3 bF9zaG1fcG9vbF9kZXN0cm95KHdsLT5wb29sKTsKKworCWRlcHRoID0gNDsKKwlzY3JlZW54 ID0gd2wtPmR4ID4gd2wtPm1vbnggPyB3bC0+ZHggOiB3bC0+bW9ueDsKKwlzY3JlZW55ID0g d2wtPmR5ID4gd2wtPm1vbnkgPyB3bC0+ZHkgOiB3bC0+bW9ueTsKKwlzY3JlZW5zaXplID0g c2NyZWVueCAqIHNjcmVlbnkgKiBkZXB0aDsKKwljdXJzb3JzaXplID0gMTYgKiAxNiAqIGRl cHRoOworCisJZmQgPSB3bGNyZWF0ZXNobShzY3JlZW5zaXplK2N1cnNvcnNpemUpOworCWlm KGZkIDwgMCkKKwkJc3lzZmF0YWwoImNvdWxkIG5vdCBta19zaG1fZmQiKTsKKworCXdsLT5z aG1fZGF0YSA9IG1tYXAobmlsLCBzY3JlZW5zaXplK2N1cnNvcnNpemUsIFBST1RfUkVBRCB8 IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKwlpZih3bC0+c2htX2RhdGEgPT0g TUFQX0ZBSUxFRCkKKwkJc3lzZmF0YWwoImNvdWxkIG5vdCBtbWFwIHNobV9kYXRhIik7CisK Kwl3bC0+cG9vbCA9IHdsX3NobV9jcmVhdGVfcG9vbCh3bC0+c2htLCBmZCwgc2NyZWVuc2l6 ZStjdXJzb3JzaXplKTsKKwl3bC0+cG9vbHNpemUgPSBzY3JlZW5zaXplK2N1cnNvcnNpemU7 CisJY2xvc2UoZmQpOworfQorCit2b2lkCit3bGFsbG9jYnVmZmVyKFdsd2luICp3bCkKK3sK KwlpbnQgZGVwdGg7CisJaW50IHNpemU7CisKKwlkZXB0aCA9IDQ7CisJc2l6ZSA9IHdsLT5k eCAqIHdsLT5keSAqIGRlcHRoOworCWlmKHdsLT5wb29sID09IG5pbCB8fCBzaXplKygxNiox NipkZXB0aCkgPiB3bC0+cG9vbHNpemUpCisJCXdsYWxsb2Nwb29sKHdsKTsKKworCWlmKHds LT5zY3JlZW5idWZmZXIgIT0gbmlsKQorCQl3bF9idWZmZXJfZGVzdHJveSh3bC0+c2NyZWVu YnVmZmVyKTsKKwlpZih3bC0+Y3Vyc29yYnVmZmVyICE9IG5pbCkKKwkJd2xfYnVmZmVyX2Rl c3Ryb3kod2wtPmN1cnNvcmJ1ZmZlcik7CisKKwl3bC0+c2NyZWVuYnVmZmVyID0gd2xfc2ht X3Bvb2xfY3JlYXRlX2J1ZmZlcih3bC0+cG9vbCwgMCwgd2wtPmR4LCB3bC0+ZHksIHdsLT5k eCo0LCBXTF9TSE1fRk9STUFUX1hSR0I4ODg4KTsKKwl3bC0+Y3Vyc29yYnVmZmVyID0gd2xf c2htX3Bvb2xfY3JlYXRlX2J1ZmZlcih3bC0+cG9vbCwgc2l6ZSwgMTYsIDE2LCAxNio0LCBX TF9TSE1fRk9STUFUX0FSR0I4ODg4KTsKK30KKworZW51bSB7CisJV2hpdGUgPSAweEZGRkZG RkZGLAorCUJsYWNrID0gMHhGRjAwMDAwMCwKKwlHcmVlbiA9IDB4RkYwMEZGMDAsCisJVHJh bnNwYXJlbnQgPSAweDAwMDAwMDAwLAorfTsKKwordm9pZAord2xkcmF3Y3Vyc29yKFdsd2lu ICp3bCwgQ3Vyc29yaW5mbyAqYykKK3sKKwlpbnQgaSwgajsKKwlpbnQgcG9zLCBtYXNrOwor CXUzMmludCAqYnVmOworCXVpbnQxNl90IGNsclsxNl0sIHNldFsxNl07CisKKwlidWYgPSB3 bC0+c2htX2RhdGErKHdsLT5keCp3bC0+ZHkqNCk7CisJZm9yKGk9MCxqPTA7IGkgPCAxNjsg aSsrLGorPTIpeworCQljbHJbaV0gPSBjLT5jbHJbal08PDggfCBjLT5jbHJbaisxXTsKKwkJ c2V0W2ldID0gYy0+c2V0W2pdPDw4IHwgYy0+c2V0W2orMV07CisJfQorCWZvcihpPTA7IGkg PCAxNjsgaSsrKXsKKwkJZm9yKGogPSAwOyBqIDwgMTY7IGorKyl7CisJCQlwb3MgPSBpKjE2 ICsgajsKKwkJCW1hc2sgPSAoMTw8MTYpID4+IGo7CisKKwkJCWJ1Zltwb3NdID0gVHJhbnNw YXJlbnQ7CisJCQlpZihjbHJbaV0gJiBtYXNrKQorCQkJCWJ1Zltwb3NdID0gV2hpdGU7CisJ CQlpZihzZXRbaV0gJiBtYXNrKQorCQkJCWJ1Zltwb3NdID0gQmxhY2s7CisJCX0KKwl9CisJ aWYod2wtPmN1cnNvcnN1cmZhY2UgIT0gbmlsKQorCQl3bF9zdXJmYWNlX2Rlc3Ryb3kod2wt PmN1cnNvcnN1cmZhY2UpOworCXdsLT5jdXJzb3JzdXJmYWNlID0gd2xfY29tcG9zaXRvcl9j cmVhdGVfc3VyZmFjZSh3bC0+Y29tcG9zaXRvcik7CisJd2xfc3VyZmFjZV9hdHRhY2god2wt PmN1cnNvcnN1cmZhY2UsIHdsLT5jdXJzb3JidWZmZXIsIDAsIDApOworCXdsX3N1cmZhY2Vf Y29tbWl0KHdsLT5jdXJzb3JzdXJmYWNlKTsKKwl3bF9wb2ludGVyX3NldF9jdXJzb3Iod2wt PnBvaW50ZXIsIHdsLT5wb2ludGVyc2VyaWFsLCB3bC0+Y3Vyc29yc3VyZmFjZSwgLWMtPm9m ZnNldC54LCAtYy0+b2Zmc2V0LnkpOworfQo= --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: text/x-patch; charset=UTF-8; name="drawterm-pipweireaudio.patch" Content-Disposition: attachment; filename="drawterm-pipweireaudio.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2tlcm4vZGV2YXVkaW8tcGlwZXdpcmUuYyBiL2tlcm4vZGV2YXVkaW8t cGlwZXdpcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDc1NGZi Ci0tLSAvZGV2L251bGwKKysrIGIva2Vybi9kZXZhdWRpby1waXBld2lyZS5jCkBAIC0wLDAg KzEsMTc3IEBACisjaW5jbHVkZQkidS5oIgorI2luY2x1ZGUJImxpYi5oIgorI2luY2x1ZGUJ ImRhdC5oIgorI2luY2x1ZGUJImZucy5oIgorI2luY2x1ZGUJImVycm9yLmgiCisjaW5jbHVk ZQkiZGV2YXVkaW8uaCIKKworI3VuZGVmIGxvbmcKKyNpbmNsdWRlIDxwaXBld2lyZS9waXBl d2lyZS5oPgorI2luY2x1ZGUgPHNwYS9wYXJhbS9hdWRpby9mb3JtYXQtdXRpbHMuaD4KKwor c3RhdGljIHN0cnVjdCB7CisJTG9jayBsazsKKwlSZW5kZXogejsKKwlpbnQgaW5pdDsKKwlz dHJ1Y3QgcHdfbWFpbl9sb29wICpsb29wOworCXN0cnVjdCBwd19zdHJlYW0gKm91dHB1dDsK KworCWNoYXIgYnVmWzgxOTJdOworCWludCB3cml0dGVuOyAvKiAwIG1lYW5zIGVtcHR5IGJ1 ZmZlciAqLworfSBwd3N0YXRlOworCitzdGF0aWMgY2hhciAqYXJndltdID0geyAiZHJhd3Rl cm0iIH07CitzdGF0aWMgaW50IGFyZ2MgPSAxOworCitzdGF0aWMgdm9pZAorb25fcHJvY2Vz cyh2b2lkICpkYXRhKQoreworCXN0cnVjdCBwd19idWZmZXIgKmI7CisJc3RydWN0IHNwYV9i dWZmZXIgKmJ1ZjsKKwlpbnQxNl90ICpkc3Q7CisKKwlsb2NrKCZwd3N0YXRlLmxrKTsKKwlp Zihwd3N0YXRlLndyaXR0ZW4gPT0gMCl7CisJCXVubG9jaygmcHdzdGF0ZS5sayk7CisJCXJl dHVybjsKKwl9CisJYiA9IHB3X3N0cmVhbV9kZXF1ZXVlX2J1ZmZlcihwd3N0YXRlLm91dHB1 dCk7CisKKwlidWYgPSBiLT5idWZmZXI7CisJZHN0ID0gYnVmLT5kYXRhc1swXS5kYXRhOwor CisJbWVtY3B5KGRzdCwgcHdzdGF0ZS5idWYsIHB3c3RhdGUud3JpdHRlbik7CisJYnVmLT5k YXRhc1swXS5jaHVuay0+b2Zmc2V0ID0gMDsKKwlidWYtPmRhdGFzWzBdLmNodW5rLT5zdHJp ZGUgPSBzaXplb2YoaW50MTZfdCkgKiAyOworCWJ1Zi0+ZGF0YXNbMF0uY2h1bmstPnNpemUg PSBwd3N0YXRlLndyaXR0ZW47CisKKwlwd19zdHJlYW1fcXVldWVfYnVmZmVyKHB3c3RhdGUu b3V0cHV0LCBiKTsKKwlwd3N0YXRlLndyaXR0ZW4gPSAwOworCXVubG9jaygmcHdzdGF0ZS5s ayk7CisJd2FrZXVwKCZwd3N0YXRlLnopOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHB3 X3N0cmVhbV9ldmVudHMgc3RyZWFtX2V2ZW50cyA9IHsKKwlQV19WRVJTSU9OX1NUUkVBTV9F VkVOVFMsCisJLnByb2Nlc3MgPSBvbl9wcm9jZXNzLAorfTsKKworc3RhdGljIHZvaWQKK3B3 cHJvYyh2b2lkICphcmcpCit7CisJc3RydWN0IHB3X21haW5fbG9vcCAqbG9vcDsKKworCWxv b3AgPSBhcmc7CisJcHdfbWFpbl9sb29wX3J1bihsb29wKTsKK30KKwordm9pZAorYXVkaW9k ZXZvcGVuKHZvaWQpCit7CisJY29uc3Qgc3RydWN0IHNwYV9wb2QgKnBhcmFtc1sxXTsKKwlz dHJ1Y3Qgc3BhX3BvZF9idWlsZGVyIGIgPSBTUEFfUE9EX0JVSUxERVJfSU5JVChwd3N0YXRl LmJ1Ziwgc2l6ZW9mKHB3c3RhdGUuYnVmKSk7CisJaW50IGVycjsKKworCWxvY2soJnB3c3Rh dGUubGspOworCWlmKHB3c3RhdGUuaW5pdCA+IDApeworCQlrcHJvYygicGlwZXdpcmUgbWFp biBsb29wIiwgcHdwcm9jLCBwd3N0YXRlLmxvb3ApOworCQl1bmxvY2soJnB3c3RhdGUubGsp OworCQlyZXR1cm47CisJfQorCisJcHdzdGF0ZS5pbml0Kys7CisJcHdfaW5pdCgmYXJnYywg KGNoYXIqKiopJmFyZ3YpOworCXB3c3RhdGUubG9vcCA9IHB3X21haW5fbG9vcF9uZXcoTlVM TCk7CisJaWYocHdzdGF0ZS5sb29wID09IE5VTEwpCisJCXN5c2ZhdGFsKCJjb3VsZCBub3Qg Y3JlYXRlIGxvb3AiKTsKKwlwd3N0YXRlLm91dHB1dCA9IHB3X3N0cmVhbV9uZXdfc2ltcGxl KAorCQlwd19tYWluX2xvb3BfZ2V0X2xvb3AocHdzdGF0ZS5sb29wKSwKKwkJImRyYXd0ZXJt IiwKKwkJcHdfcHJvcGVydGllc19uZXcoCisJCQlQV19LRVlfTUVESUFfVFlQRSwgIkF1ZGlv IiwKKwkJCVBXX0tFWV9NRURJQV9DQVRFR09SWSwgIlBsYXliYWNrIiwKKwkJCVBXX0tFWV9N RURJQV9ST0xFLCAiTXVzaWMiLAorCQkJTlVMTCksCisJCSZzdHJlYW1fZXZlbnRzLAorCQlO VUxMKTsKKworCWlmKHB3c3RhdGUub3V0cHV0ID09IE5VTEwpeworCQl1bmxvY2soJnB3c3Rh dGUubGspOworCQllcnJvcigiY291bGQgbm90IGNyZWF0ZSBwaXBld2lyZSBvdXRwdXQiKTsK KwkJcmV0dXJuOworCX0KKwlwYXJhbXNbMF0gPSBzcGFfZm9ybWF0X2F1ZGlvX3Jhd19idWls ZCgmYiwgU1BBX1BBUkFNX0VudW1Gb3JtYXQsCisJCSZTUEFfQVVESU9fSU5GT19SQVdfSU5J VCgKKwkJCS5mb3JtYXQgPSBTUEFfQVVESU9fRk9STUFUX1MxNl9MRSwKKwkJCS5jaGFubmVs cyA9IDIsCisJCQkucmF0ZSA9IDQ0MTAwICkpOworCisJZXJyID0gcHdfc3RyZWFtX2Nvbm5l Y3QocHdzdGF0ZS5vdXRwdXQsCisJCVBXX0RJUkVDVElPTl9PVVRQVVQsCisJCVBXX0lEX0FO WSwKKwkJUFdfU1RSRUFNX0ZMQUdfQVVUT0NPTk5FQ1QgfAorCQlQV19TVFJFQU1fRkxBR19N QVBfQlVGRkVSUyB8CisJCVBXX1NUUkVBTV9GTEFHX1JUX1BST0NFU1MsCisJCXBhcmFtcywg MSk7CisKKwl1bmxvY2soJnB3c3RhdGUubGspOworCWlmKGVyciA8IDApeworCQllcnJvcigi Y291bGQgbm90IGNvbm5lY3QgcGlwZXdpcmUgc3RyZWFtIik7CisJCXJldHVybjsKKwl9CisK KwlrcHJvYygicGlwZXdpcmUgbWFpbiBsb29wIiwgcHdwcm9jLCBwd3N0YXRlLmxvb3ApOwor fQorCit2b2lkCithdWRpb2RldmNsb3NlKHZvaWQpCit7CisJbG9jaygmcHdzdGF0ZS5sayk7 CisJcHdfbWFpbl9sb29wX3F1aXQocHdzdGF0ZS5sb29wKTsKKwl1bmxvY2soJnB3c3RhdGUu bGspOworfQorCitpbnQKK2F1ZGlvZGV2cmVhZCh2b2lkICphLCBpbnQgbikKK3sKKwllcnJv cigibm8gcmVjb3JkIHN1cHBvcnQiKTsKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQK K2NhbndyaXRlKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gcHdzdGF0ZS53cml0dGVuID09IDA7 Cit9CisKK2ludAorYXVkaW9kZXZ3cml0ZSh2b2lkICphLCBpbnQgbikKK3sKKwlpZihuID4g c2l6ZW9mKHB3c3RhdGUuYnVmKSl7CisJCWVycm9yKCJ3cml0ZSB0b28gbGFyZ2UiKTsKKwkJ cmV0dXJuIC0xOworCX0KKwlsb2NrKCZwd3N0YXRlLmxrKTsKKwlpZihwd3N0YXRlLndyaXR0 ZW4gIT0gMCl7CisJCXVubG9jaygmcHdzdGF0ZS5sayk7CisJCXNsZWVwKCZwd3N0YXRlLnos IGNhbndyaXRlLCAwKTsKKwkJbG9jaygmcHdzdGF0ZS5sayk7CisJfQorCW1lbWNweShwd3N0 YXRlLmJ1ZiwgYSwgbik7CisJcHdzdGF0ZS53cml0dGVuID0gbjsKKwl1bmxvY2soJnB3c3Rh dGUubGspOworCXJldHVybiBuOworfQorCit2b2lkCithdWRpb2RldnNldHZvbChpbnQgd2hh dCwgaW50IGxlZnQsIGludCByaWdodCkKK3sKKwllcnJvcigibm8gdm9sdW1lIHN1cHBvcnQi KTsKK30KKwordm9pZAorYXVkaW9kZXZnZXR2b2woaW50IHdoYXQsIGludCAqbGVmdCwgaW50 ICpyaWdodCkKK3sKKwllcnJvcigibm8gdm9sdW1lIHN1cHBvcnQiKTsKK30KKwo= --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: multipart/mixed; boundary="upas-qnsnnlbntqzglaedqjwxvcybmp" Content-Disposition: inline This is a multi-part message in MIME format. --upas-qnsnnlbntqzglaedqjwxvcybmp Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit from postmaster@4ess: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Type: text/x-patch; charset=UTF-8; name="drawterm-pthreadcursor.patch" Content-Disposition: attachment; filename="drawterm-pthreadcursor.patch" Content-Transfer-Encoding: base64 --upas-qnsnnlbntqzglaedqjwxvcybmp Content-Type: application/octet-stream Content-Disposition: attachment; filename="drawterm-pthreadcursor.patch.suspect" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2tlcm4vZGV2bW91c2UuYyBiL2tlcm4vZGV2bW91c2UuYwppbmRleCA4 NTgyNWE5Li5kZmJhYmY4IDEwMDY0NAotLS0gYS9rZXJuL2Rldm1vdXNlLmMKKysrIGIva2Vy bi9kZXZtb3VzZS5jCkBAIC0xMSwxNCArMTEsMTQgQEAKIE1vdXNlaW5mbwltb3VzZTsKIEN1 cnNvcmluZm8JY3Vyc29yOwogQ3Vyc29yaW5mbyAgICAgIGFycm93ID0gewotCTAsCi0JeyAt MSwgLTEgfSwKLQl7IDB4RkYsIDB4RkYsIDB4ODAsIDB4MDEsIDB4ODAsIDB4MDIsIDB4ODAs IDB4MEMsCisJLmxrID0gMCwKKwkub2Zmc2V0ID0geyAtMSwgLTEgfSwKKwkuY2xyID0geyAw eEZGLCAweEZGLCAweDgwLCAweDAxLCAweDgwLCAweDAyLCAweDgwLCAweDBDLAogCSAgMHg4 MCwgMHgxMCwgMHg4MCwgMHgxMCwgMHg4MCwgMHgwOCwgMHg4MCwgMHgwNCwKIAkgIDB4ODAs IDB4MDIsIDB4ODAsIDB4MDEsIDB4ODAsIDB4MDIsIDB4OEMsIDB4MDQsCiAJICAweDkyLCAw eDA4LCAweDkxLCAweDEwLCAweEEwLCAweEEwLCAweEMwLCAweDQwLAogCX0sCi0JeyAweDAw LCAweDAwLCAweDdGLCAweEZFLCAweDdGLCAweEZDLCAweDdGLCAweEYwLAorCS5zZXQgPSB7 IDB4MDAsIDB4MDAsIDB4N0YsIDB4RkUsIDB4N0YsIDB4RkMsIDB4N0YsIDB4RjAsCiAJICAw eDdGLCAweEUwLCAweDdGLCAweEUwLCAweDdGLCAweEYwLCAweDdGLCAweEY4LAogCSAgMHg3 RiwgMHhGQywgMHg3RiwgMHhGRSwgMHg3RiwgMHhGQywgMHg3MywgMHhGOCwKIAkgIDB4NjEs IDB4RjAsIDB4NjAsIDB4RTAsIDB4NDAsIDB4NDAsIDB4MDAsIDB4MDAsCg== --upas-qnsnnlbntqzglaedqjwxvcybmp-- --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: multipart/mixed; boundary="upas-vrisitgbmikandtceyosdduqjq" Content-Disposition: inline This is a multi-part message in MIME format. --upas-vrisitgbmikandtceyosdduqjq Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit from postmaster@4ess: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Type: text/x-patch; charset=UTF-8; name="drawterm-termsleep.patch" Content-Disposition: attachment; filename="drawterm-termsleep.patch" Content-Transfer-Encoding: base64 --upas-vrisitgbmikandtceyosdduqjq Content-Type: application/octet-stream Content-Disposition: attachment; filename="drawterm-termsleep.patch.suspect" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2tlcm4vdGVybS5jIGIva2Vybi90ZXJtLmMKaW5kZXggYWZjMDEyYS4u MzlkYjcxYSAxMDA2NDQKLS0tIGEva2Vybi90ZXJtLmMKKysrIGIva2Vybi90ZXJtLmMKQEAg LTExNyw3ICsxMTcsNiBAQCByZXNpemVwcm9jKHZvaWQgKmFyZykKIAkJc2NyZWVud2luKCk7 CiAJCWRlbGV0ZXNjcmVlbmltYWdlKCk7CiAJCXJlc2V0c2NyZWVuaW1hZ2UoKTsKLQkJb3Nt c2xlZXAoMTAwMCk7CiAJfQogfQogCg== --upas-vrisitgbmikandtceyosdduqjq-- --------------MFqms1wVDkDd11PYafeEkA2X Content-Type: multipart/mixed; boundary="upas-ripjknenmiskqluweshdbnnxsy" Content-Disposition: inline This is a multi-part message in MIME format. --upas-ripjknenmiskqluweshdbnnxsy Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit from postmaster@4ess: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Type: text/x-patch; charset=UTF-8; name="drawterm-linuxmake.patch" Content-Disposition: attachment; filename="drawterm-linuxmake.patch" Content-Transfer-Encoding: base64 --upas-ripjknenmiskqluweshdbnnxsy Content-Type: application/octet-stream Content-Disposition: attachment; filename="drawterm-linuxmake.patch.suspect" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL01ha2UubGludXggYi9NYWtlLmxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmM5YWQyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlLmxp bnV4CkBAIC0wLDAgKzEsMjEgQEAKKyMgTGludXgKK1BUSFJFQUQ9LXB0aHJlYWQKK0FSPWFy CitBUz1hcworUkFOTElCPXJhbmxpYgorQ0M9Z2NjCitDRkxBR1M9LVdhbGwgLVduby1taXNz aW5nLWJyYWNlcyAtZ2dkYiAtSSQoUk9PVCkgLUkkKFJPT1QpL2luY2x1ZGUgLUkkKFJPT1Qp L2tlcm4gLWMgLURfVEhSRUFEX1NBRkUgLURQVEhSRUFEICQoUFRIUkVBRCkgLUkvdXNyL2lu Y2x1ZGUvcGlwZXdpcmUtMC4zIC1JL3Vzci9pbmNsdWRlL3NwYS0wLjIgLURfUkVFTlRSQU5U IC1PMgorTz1vCitPUz1wb3NpeAorR1VJPXdsCitMREFERD0tbHdheWxhbmQtY2xpZW50IC1s eGtiY29tbW9uIC1nZ2RiIC1sbSAtbHJ0IC1scGlwZXdpcmUtMC4zCitMREZMQUdTPSQoUFRI UkVBRCkKK1RBUkc9ZHJhd3Rlcm0KKyMgQVVESU89bm9uZQorQVVESU89cGlwZXdpcmUKKwor YWxsOiBkZWZhdWx0CisKK2xpYm1hY2hkZXAuYToKKwlhcmNoPWB1bmFtZSAtbXxzZWQgJ3Mv aS44Ni8zODYvO3MvUG93ZXIgTWFjaW50b3NoL3Bvd2VyLzsgcy94ODZfNjQvYW1kNjQvOyBz L2FybXZbNTY3XS4qL2FybS87IHMvYWFyY2g2NC9hcm02NC8nYDsgXAorCShjZCBwb3NpeC0k JGFyY2ggJiYgIG1ha2UpCg== --upas-ripjknenmiskqluweshdbnnxsy-- --------------MFqms1wVDkDd11PYafeEkA2X--