From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Marco Maggi" Newsgroups: gmane.lisp.guile.devel Subject: [patch] subordinate SMOBs with GOOPS superclasses Date: Tue, 27 Nov 2007 07:57:02 +0100 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_=__=_XaM3_.1196146622.2A.961425.42.17524.52.42.007.22579" X-Trace: ger.gmane.org 1196146644 28945 80.91.229.12 (27 Nov 2007 06:57:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 27 Nov 2007 06:57:24 +0000 (UTC) To: "guile-devel" Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Tue Nov 27 07:57:32 2007 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IwuNq-0006R5-Rj for guile-devel@m.gmane.org; Tue, 27 Nov 2007 07:57:28 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IwuNa-0002LR-Rf for guile-devel@m.gmane.org; Tue, 27 Nov 2007 01:57:10 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IwuNY-0002LM-Bl for guile-devel@gnu.org; Tue, 27 Nov 2007 01:57:08 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IwuNW-0002LA-MS for guile-devel@gnu.org; Tue, 27 Nov 2007 01:57:08 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IwuNW-0002L7-Gb for guile-devel@gnu.org; Tue, 27 Nov 2007 01:57:06 -0500 Original-Received: from relay-pt1.poste.it ([62.241.4.164]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IwuNV-0001p8-Go for guile-devel@gnu.org; Tue, 27 Nov 2007 01:57:06 -0500 Original-Received: from poste.it (192.168.144.185) by relay-pt1.poste.it (7.3.122) (authenticated as marco.maggi-ipsu@poste.it) id 474B6C6500001278 for guile-devel@gnu.org; Tue, 27 Nov 2007 07:57:03 +0100 X-Sensitivity: 3 X-XaM3-API-Version: 4.3 (R1) (B3pl19) X-SenderIP: 83.190.104.68 X-detected-kernel: by monty-python.gnu.org: Solaris 9 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:6896 Archived-At: --_=__=_XaM3_.1196146622.2A.961425.42.17524.52.42.007.22579 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable The attached patch documents the creation of a GOOPS class whenever a new SMOB type is defined and GOOPS has been already loaded. Additionally it adds a special SMOB type that dispatches function invocations to a user defined subordinate SMOB. This allows to overcome the hard coded limit on SMOB number at the cost of some functions call. The subordinate SMOB allows to select a list of superclasses, so that the sub-SMOB's class appears to be derived from already existent classes. A standalone test is included. If the thing is accepted I can sign and send the licence piece of paper. --_=__=_XaM3_.1196146622.2A.961425.42.17524.52.42.007.22579 Content-Type: application/octet-stream; name="=?iso-8859-1?Q?patch-subsmob?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?iso-8859-1?Q?patch-subsmob?=" ZGlmZiAtTmF1ciBndWlsZS0xLjguMy1vcmlnaW5hbC9kb2MvcmVmL2FwaS1zbW9icy50ZXhp IGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvZG9jL3JlZi9hcGktc21vYnMudGV4aQotLS0g Z3VpbGUtMS44LjMtb3JpZ2luYWwvZG9jL3JlZi9hcGktc21vYnMudGV4aQkyMDA3LTA1LTA5 IDIyOjIyOjAzLjAwMDAwMDAwMCArMDIwMAorKysgZ3VpbGUtMS44LjMtcGF0Y2gtc3Vic21v Yi9kb2MvcmVmL2FwaS1zbW9icy50ZXhpCTIwMDctMTEtMjYgMTk6NDM6MjEuMDAwMDAwMDAw ICswMTAwCkBAIC04LDYgKzgsMTIgQEAKIEBub2RlIFNtb2JzCiBAc2VjdGlvbiBTbW9icwog CisKK0BtZW51CisqIFN1YnNtb2JzOjogICAgICAgICAgICAgICAgICAgIFN1Ym9yZGluYXRl IHNtb2JzLgorQGVuZCBtZW51CisKKwogVGhpcyBjaGFwdGVyIGNvbnRhaW5zIHJlZmVyZW5j ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGRlZmluaW5nIGFuZAogd29ya2luZyB3aXRoIHNt b2JzLiAgU2VlIEByZWZ7RGVmaW5pbmcgTmV3IFR5cGVzIChTbW9icyl9IGZvciBhCiB0dXRv cmlhbC1saWtlIGludHJvZHVjdGlvbiB0byBzbW9icy4KQEAgLTMxLDYgKzM3LDExIEBACiBp bW1lZGlhdGVseSBmb2xsb3dlZCBieSBjYWxscyB0byBvbmUgb3Igc2V2ZXJhbCBvZgogQGNv ZGV7c2NtX3NldF9zbW9iX21hcmt9LCBAY29kZXtzY21fc2V0X3Ntb2JfZnJlZX0sCiBAY29k ZXtzY21fc2V0X3Ntb2JfcHJpbnR9LCBhbmQvb3IgQGNvZGV7c2NtX3NldF9zbW9iX2VxdWFs cH0uCisKK0lmIEdPT1BTIGlzIGxvYWRlZCB3aGVuIEBjb2Rle3NjbV9tYWtlX3Ntb2JfdHlw ZX0gaXMgaW52b2tlZDogYSBuZXcKK0dPT1BTIGNsYXNzIGlzIGNyZWF0ZWQsIHdpdGggQGNv ZGV7dG9wfSBhcyBzdXBlcmNsYXNzLCB0byByZXByZXNlbnQgdGhlCitzbW9iIHR5cGUuIFRo aXMgYWxsb3dzIEdPT1BTIHRvIGRpc3BhdGNoIG1ldGhvZHMgYmFzZWQgb24gdGhlIHR5cGUg b2YKK3RoZSBzbW9iLgogQGVuZCBkZWZ0eXBlZnVuCiAKIEBkZWZ0eXBlZm4ge0MgRnVuY3Rp b259IHZvaWQgc2NtX3NldF9zbW9iX21hcmsgKHNjbV90X2JpdHMgdGMsIFNDTSAoKm1hcmsp IChTQ00gb2JqKSkKQEAgLTE5Myw2ICsyMDQsMTc5IEBACiBvdGhlciBvYmplY3RzLiAgVGhp cyBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyBAdmFye3h9J3MgZmlyc3QgZGF0YSB3b3JkLgog QGVuZCBkZWZ0eXBlZnVuCiAKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAbm9kZSBTdWJzbW9icworQHN1YnNl Y3Rpb24gU3Vib3JkaW5hdGUgc21vYnMKKworCitBIHNwZWNpYWwgc21vYiB0eXBlIGlzIGlt cGxlbWVudGVkIHRvIG92ZXJjb21lIHRoZSAyNTUgbGltaXQgb24gdGhlCitudW1iZXIgb2Yg c21vYiB0eXBlcy4gSXRzIHByb2NlZHVyZXMgZGlzcGF0Y2ggdGhlIGNhbGwgdG8gcHJvY2Vk dXJlcworcmVmZXJlbmNlZCBieSBhIHN1YnNtb2IgZGVzY3JpcHRvci4KKworSWYgR09PUFMg aXMgbG9hZGVkIHdoZW4gQGNvZGV7c2NtX21ha2Vfc3ViX3Ntb2JfdHlwZX0gaXMgaW52b2tl ZCB0bworZGVjbGFyZSB0aGUgbmV3IHN1YnNtb2IgdHlwZTogYSBuZXcgR09PUFMgY2xhc3Mg aXMgY3JlYXRlZCwgb3B0aW9uYWxseQord2l0aCBhIGxpc3Qgb2Ygc3VwZXJjbGFzc2VzLCB0 byByZXByZXNlbnQgdGhlIHNtb2IgdHlwZS4gVGhpcyBhbGxvd3MKK0dPT1BTIHRvIGRpc3Bh dGNoIG1ldGhvZHMgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIHNtb2IuCisKKworQGRlZnRw IHtTdHJ1Y3QgVHlwZWRlZn0gc2NtX3N1Yl9zbW9iX2Rlc2NyaXB0b3IKK1RoZSB0eXBlIG9m IHN1YnNtb2IgZGVzY3JpcHRvciBzdHJ1Y3R1cmUuIFB1YmxpYyBmaWVsZHM6CisKK0B0YWJs ZSBAY29kZQorQGl0ZW0gY29uc3QgY2hhciAqIG5hbWUKK2Egc3RhdGljYWxseS0tYWxsb2Nh dGVkIHplcm8tLXRlcm1pbmF0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3Vic21vYgor aWRlbnRpZmllcjsgaXQgaXMgdXNlZCBieSB0aGUgcHJpbnQgZnVuY3Rpb24gYW5kIHRvIGNy ZWF0ZSB0aGUgR09PUFMKK2NsYXNzIHN5bWJvbDogaWYgdGhlIHZhbHVlIGlzIEBjb2Rle21p bmV9LCB0aGUgY2xhc3MnIHN5bWJvbCBpcworQGNvZGV7PG1pbmU+fTsKKworQGl0ZW0gc2l6 ZV90IGNsaWVudF9kYXRhX3NpemU7CithbmFsb2dvdXMgdG8gdGhlIEB2YXJ7c2l6ZX0gYXJn dW1lbnQgdG8gQGNvZGV7c2NtX21ha2Vfc21vYl90eXBlfTsKKworQGl0ZW0gc2l6ZV90ICgq IGZyZWUpIChTQ00gc21vYikKK3BvaW50ZXIgdG8gYSBmcmVlIGZ1bmN0aW9uIHRoYXQgd29y a3MgbGlrZSB0aGUgb25lIG9mIGEgbm9ybWFsIHNtb2I7IGNhbgorYmUgQGNvZGV7TlVMTH0s IGluIHdoaWNoIGNhc2U6IGlmIEBjb2Rle2NsaWVudF9kYXRhX3NpemV9IGlzIG5vdCB6ZXJv CitAY29kZXtzY21fZ2NfZnJlZX0gaXMgdXNlZCB0byBmcmVlIHRoZSBjbGllbnQgZGF0YSBz dHJ1Y3R1cmUgd2hlbiB0aGUKK3Ntb2IgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQ7IHRoZSBzdHJp bmcgcmVmZXJlbmNlZCBieSBAY29kZXtuYW1lfSBpcyB1c2VkCithcyBAdmFye3doYXR9IGFy Z3VtZW50IHRvIEBjb2Rle3NjbV9nY19mcmVlfTsKKworQGl0ZW0gU0NNICgqIGVxdWFscCkg KFNDTSBzbW9iX2EsIFNDTSBzbW9iX2IpCitwb2ludGVyIHRvIGEgY29tcGFyaXNvbiBmdW5j dGlvbiB0aGF0IHdvcmtzIGxpa2UgdGhlIG9uZSBvZiBhIG5vcm1hbAorc21vYjsgaWYgaXQg aXMgQGNvZGV7TlVMTH06IEBjb2Rle3NjbV9lcV9wfSBpcyB1c2VkIHRvIGNvbXBhcmUgdGhl CitzbW9iczsKKworQGl0ZW0gU0NNICgqIG1hcmspIChTQ00gc21vYikKK3BvaW50ZXIgdG8g YSBtYXJrIGZ1bmN0aW9uIHRoYXQgd29ya3MgbGlrZSB0aGUgb25lIG9mIGEgbm9ybWFsCitz bW9iOyBjYW4gYmUgQGNvZGV7TlVMTH07CisKK0BpdGVtIGludCAoKiBwcmludCkgKFNDTSBz bW9iLCBTQ00gc19wb3J0LCBzY21fcHJpbnRfc3RhdGUgKiBwc3RhdGUpCitwb2ludGVyIHRv IGEgcHJpbnQgZnVuY3Rpb24gdGhhdCB3b3JrcyBsaWtlIHRoZSBvbmUgb2YgYSBub3JtYWwg c21vYjsKK2NhbiBiZSBAY29kZXtOVUxMfTsKKworQGl0ZW0gU0NNIGNsYXNzCit0aGlzIGZp ZWxkIG11c3QgYmUgaW5pdGlhbGlzZWQgdG8gQGNvZGV7U0NNX0JPT0xfRn07IEd1aWxlIHdp bGwgc2V0IGl0Cit0byBhIEdPT1BTIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgc3Vic21vYiB0 eXBlLCBhbmQgd2lsbCBtYXJrIGl0IGFzCitwZXJtYW5lbnQgb2JqZWN0OworCitAaXRlbSBT Q00gbGlzdF9vZl9zdXBlcnMKK2EgbGlzdCBvZiBHT09QUyBjbGFzc2VzIHRvIGJlIHVzZWQg YXMgYmFzZSBjbGFzc2VzIGZvciB0aGUgc3Vic21vYgorY2xhc3M7IHRoaXMgZmllbGQgbXVz dCBiZSBpbml0aWFsaXNlZCB0byBAY29kZXtTQ01fRU9MfSB3aGVuIGRlZmluaW5nCit0aGUg c3RydWN0dXJlIGFuZCwgaWYgbmVlZGVkLCByZXNldCB0byB0aGUgbGlzdCBvZiBjbGFzc2Vz IGluIGFuCitpbml0aWFsaXNhdGlvbiBmdW5jdGlvbjsgaWYgaXQgaXMgbGVmdCB0byBAY29k ZXtTQ01fRU9MfTogdGhlIGJhc2UgY2xhc3MKK29mIHRoZSBzdWJzbW9iIHR5cGUgd2lsbCBi ZSBAY29kZXs8dG9wPn07IGl0IGlzIG91ciByZXNwb25zaWJpbGl0eSB0bworbWFyayB0aGUg bGlzdCBhcyBhIHBlcm1hbmVudCBvYmplY3QgKHVzaW5nIEBjb2Rle3NjbV9wZXJtYW5lbnRf b2JqZWN0fSkuCitAZW5kIHRhYmxlCitAZW5kIGRlZnRwCisKKworQGRlZnR5cGVmdW4gdm9p ZCBzY21fbWFrZV9zdWJfc21vYl90eXBlIChzY21fc3ViX3Ntb2JfZGVzY3JpcHRvciAqIGRl c2NyaXB0b3IpCitEZWNsYXJlIGEgbmV3IHN1YnNtb2IgdHlwZSBhY2NvcmRpbmcgdG8gdGhl IHRoZSBzdHJ1Y3R1cmUgcmVmZXJlbmNlZCBieQorQHZhcntkZXNjcmlwdG9yfS4KK0BlbmQg ZGVmdHlwZWZ1bgorCisKK0BkZWZ0eXBlZm4ge0MgTWFjcm99IGludCBTQ01fU1VCX1NNT0Jf UFJFRElDQVRFIChTQ00gb2JqKQorRXZhbHVhdGUgdG8gdHJ1ZSBpZiBAdmFye29ian0gaXMg YSBzdWJzbW9iLgorQGVuZCBkZWZ0eXBlZm4KKworCitAZGVmdHlwZWZuIHtDIE1hY3JvfSB7 c2NtX3N1Yl9zbW9iX2Rlc2NyaXB0b3IgKn0gU0NNX1NVQl9TTU9CX0RFU0NSSVBUT1IgKFND TSBvYmopCitSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzdWJzbW9iIHR5cGUgZGVzY3JpcHRv ciBvZiBAdmFye29ian0uIEB2YXJ7b2JqfQorbXVzdCBiZSBhIHN1YnNtb2IuCitAZW5kIGRl ZnR5cGVmbgorCisKK0BkZWZ0eXBlZm4ge0MgTWFjcm99IHZvaWQgU0NNX05FV1NVQlNNT0Ig KFNDTSB2YWx1ZSwgc2NtX3N1Yl9zbW9iX2Rlc2NyaXB0b3IgKiB0eXBlLCB2b2lkICogZGF0 YSkKK01ha2UgQHZhcnt2YWx1ZX0gY29udGFpbiBhIHN1YnNtb2IgaW5zdGFuY2Ugb2YgdGhl IHR5cGUgd2l0aCBkZXNjcmlwdG9yCitAdmFye3R5cGV9IGFuZCBzbW9iIGRhdGEgQHZhcntk YXRhfS4KK0BlbmQgZGVmdHlwZWZuCisKKworQGRlZnR5cGVmbiB7QyBNYWNyb30gU0NNIFND TV9SRVRVUk5fTkVXU1VCU01PQiAoc2NtX3N1Yl9zbW9iX2Rlc2NyaXB0b3IgKiB0eXBlLCB2 b2lkICogZGF0YSkKK1RoaXMgbWFjcm8gZXhwYW5kcyB0byBhIGJsb2NrIG9mIGNvZGUgdGhh dCBjcmVhdGVzIGEgc21vYiBpbnN0YW5jZSBvZgordGhlIHR5cGUgZGVzY3JpcHRvciBAdmFy e3R5cGV9IGFuZCBzbW9iIGRhdGEgQHZhcntkYXRhfSwgYXMgd2l0aAorQGNvZGV7U0NNX05F V1NVQlNNT0J9LCBldGMuLCBhbmQgY2F1c2VzIHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiB0 bworcmV0dXJuIHRoYXQgQGNvZGV7U0NNfSB2YWx1ZS4gIEl0IHNob3VsZCBiZSB0aGUgbGFz dCBwaWVjZSBvZiBjb2RlIGluIGEKK2Jsb2NrLgorQGVuZCBkZWZ0eXBlZm4KKworCitAc3Vi c3Vic2VjdGlvbiBFeGFtcGxlczogYSB3cmFwcGVyIGZvciBAY29kZXtpbnR9CisKKworQG5v aW5kZW50CitMZXQncyBzYXkgdGhhdCB3ZSB3YW50IHRvIGRlZmluZSBhIG5ldyBzdWJvcmRp bmF0ZSBzbW9iIHRoYXQgd3JhcHMgYW4KK2ludGVnZXIgYW5kIGhhcyBAY29kZXs8bnVtYmVy Pn0gYXMgYmFzZSBjbGFzcy4gV2UgY2FuIHdyaXRlIHRoZSBkcml2ZXIKK2xpa2UgdGhpczoK KworQGV4YW1wbGUKK3R5cGVkZWYgc3RydWN0IGNsaWVudF9kYXRhX3QgQHsKKyAgaW50ICAg bjsKK0B9IGNsaWVudF9kYXRhX3Q7CisKKyNkZWZpbmUgTVlfSU5URUdFUl9EQVRBKFNNT0Ip ICgoY2xpZW50X2RhdGFfdCAqKVNDTV9TTU9CX0RBVEEoU01PQikpCisKK3N0YXRpYyBTQ00g bXlfaW50ZWdlcl9lcXVhbHAoU0NNIHNtb2JfYSwgU0NNIHNtb2JfYik7CitzdGF0aWMgaW50 IG15X2ludGVnZXJfcHJpbnQgKFNDTSBzbW9iLCBTQ00gc19wb3J0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY21fcHJpbnRfc3RhdGUgKiBwc3RhdGUgU0NNX1VOVVNFRCk7 CisKK3N0YXRpYyBzY21fdF9zdWJfc21vYl9kZXNjcmlwdG9yIG15X2ludGVnZXJfZHJpdmVy ID0gQHsKKyAgLm5hbWUgICAgICAgICAgICAgICAgID0gIm15LWludGVnZXIiLAorICAuY2xp ZW50X2RhdGFfc2l6ZSAgICAgPSBzaXplb2YoY2xpZW50X2RhdGFfdCksCisgIC5mcmVlICAg ICAgICAgICAgICAgICA9IE5VTEwsCisgIC5lcXVhbHAgICAgICAgICAgICAgICA9IG15X2lu dGVnZXJfZXF1YWxwLAorICAubWFyayAgICAgICAgICAgICAgICAgPSBOVUxMLAorICAucHJp bnQgICAgICAgICAgICAgICAgPSBteV9pbnRlZ2VyX3ByaW50LAorICAuY2xhc3MgICAgICAg ICAgICAgICAgPSBTQ01fQk9PTF9GLAorICAubGlzdF9vZl9zdXBlcnMgICAgICAgPSBTQ01f RU9MCitAfTsKKworU0NNCitteV9pbnRlZ2VyX2VxdWFscCAoU0NNIHNtb2JfYSwgU0NNIHNt b2JfYikKK0B7CisgIGludCAgIGEgPSBNWV9JTlRFR0VSX0RBVEEoc21vYl9hKS0+bjsKKyAg aW50ICAgYiA9IE1ZX0lOVEVHRVJfREFUQShzbW9iX2IpLT5uOworCisgIHJldHVybiBzY21f ZnJvbV9ib29sKGEgPT0gYik7CitAfQoraW50CitteV9pbnRlZ2VyX3ByaW50IChTQ00gc21v YiwgU0NNIHNfcG9ydCwKKyAgICAgICAgICAgICAgICAgIHNjbV9wcmludF9zdGF0ZSAqIHBz dGF0ZSBTQ01fVU5VU0VEKQorQHsKKyAgc2NtX3B1dHMoIiM8Iiwgc19wb3J0KTsKKyAgc2Nt X3B1dHMobXlfaW50ZWdlcl9kcml2ZXIubmFtZSwgc19wb3J0KTsKKyAgc2NtX3B1dHMoIiAt ICIsIHNfcG9ydCk7CisgIHNjbV9kaXNwbGF5KHNjbV9mcm9tX2ludChNWV9JTlRFR0VSX0RB VEEoc21vYiktPm4pLCBzX3BvcnQpOworICBzY21fcHV0YygnPicsIHNfcG9ydCk7CisgIHJl dHVybiAxOworQH0KK0BlbmQgZXhhbXBsZQorCitAbm9pbmRlbnQKK3dlIG5lZWQgYW4gaW5p dGlhbGl6YXRpb24gZnVuY3Rpb24gaW4gd2hpY2ggd2UgcHV0OgorCitAZXhhbXBsZQorU0NN ICAgc19udW1iZXJfY2xhc3MsIHNfbGlzdF9vZl9zdXBlcnM7CisKK3NfbnVtYmVyX2NsYXNz ICAgPSBzY21fdmFyaWFibGVfcmVmKHNjbV9jX2xvb2t1cCgiPG51bWJlcj4iKSk7CitzX2xp c3Rfb2Zfc3VwZXJzID0gc2NtX2xpc3RfMShzX251bWJlcl9jbGFzcyk7CitzX2xpc3Rfb2Zf c3VwZXJzID0gc2NtX3Blcm1hbmVudF9vYmplY3Qoc19saXN0X29mX3N1cGVycyk7CisKK215 X2ludGVnZXJfZHJpdmVyLmxpc3Rfb2Zfc3VwZXJzID0gc19saXN0X29mX3N1cGVyczsKK3Nj bV9tYWtlX3N1Yl9zbW9iX3R5cGUoJm15X2ludGVnZXJfZHJpdmVyKTsKK3NjbV9jX2RlZmlu ZShteV9pbnRlZ2VyX2RyaXZlci5uYW1lLCBteV9pbnRlZ2VyX2RyaXZlci5jbGFzcyk7CitA ZW5kIGV4YW1wbGUKKworVGhlIGxpYnJhcnkgbXVzdCBiZSBsb2FkZWQgaW4gYSBtb2R1bGUg QHN0cm9uZ3thZnRlcn0gbG9hZGluZyBHT09QUyBpbgordGhlIHNhbWUgbW9kdWxlLiAgVGhl biB3ZSBjYW4gZGVmaW5lIG1ldGhvZHM6CisKK0BleGFtcGxlCisoZGVmaW5lLW1ldGhvZCAo ZG8tc29tZXRoaW5nIChvIDxteS1pbnRlZ2VyPikpCisgIC4uLikKK0BlbmQgZXhhbXBsZQor CisKKwogQGMgTG9jYWwgVmFyaWFibGVzOgogQGMgVGVYLW1hc3RlcjogImd1aWxlLnRleGki CiBAYyBFbmQ6CmRpZmYgLU5hdXIgZ3VpbGUtMS44LjMtb3JpZ2luYWwvbGliZ3VpbGUvZ29v cHMuYyBndWlsZS0xLjguMy1wYXRjaC1zdWJzbW9iL2xpYmd1aWxlL2dvb3BzLmMKLS0tIGd1 aWxlLTEuOC4zLW9yaWdpbmFsL2xpYmd1aWxlL2dvb3BzLmMJMjAwNy0wNy0xMSAwMDoyNzoz Ni4wMDAwMDAwMDAgKzAyMDAKKysrIGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvbGliZ3Vp bGUvZ29vcHMuYwkyMDA3LTExLTI2IDE5OjE0OjIwLjAwMDAwMDAwMCArMDEwMApAQCAtMjMw LDYgKzIzMCwxMyBAQAogCiAJY2FzZSBzY21fdGM3X3Ntb2I6CiAJICB7CisJICAgIGlmIChT Q01fU01PQl9QUkVESUNBVEUoc2NtX211bHRpX3Ntb2JfZHJpdmVyLCB4KSkKKwkgICAgICB7 CisJCVNDTSBjbGFzcyA9IChTQ01fU1VCX1NNT0JfREVTQ1JJUFRPUih4KSktPmNsYXNzOwor CisJCWlmIChzY21faXNfdHJ1ZShjbGFzcykpCisJCSAgcmV0dXJuIGNsYXNzOworCSAgICAg IH0KIAkgICAgc2NtX3RfYml0cyB0eXBlID0gU0NNX1RZUDE2ICh4KTsKIAkgICAgaWYgKHR5 cGUgIT0gc2NtX3RjMTZfcG9ydF93aXRoX3BzKQogCSAgICAgIHJldHVybiBzY21fc21vYl9j bGFzc1tTQ01fVEMyU01PQk5VTSAodHlwZSldOwpAQCAtMjQ0LDcgKzI1MSw5IEBACiAJCQkJ IDogU0NNX0lOX1BDTEFTU19JTkRFWCB8IFNDTV9QVE9CTlVNICh4KSldOwogCWNhc2Ugc2Nt X3Rjc19zdHJ1Y3Q6CiAJICBpZiAoU0NNX09CSl9DTEFTU19GTEFHUyAoeCkgJiBTQ01fQ0xB U1NGX0dPT1BTX1ZBTElEKQotCSAgICByZXR1cm4gU0NNX0NMQVNTX09GICh4KTsKKwkgICAg eworCSAgICAgIHJldHVybiBTQ01fQ0xBU1NfT0YgKHgpOworCSAgICB9CiAJICBlbHNlIGlm IChTQ01fT0JKX0NMQVNTX0ZMQUdTICh4KSAmIFNDTV9DTEFTU0ZfR09PUFMpCiAJICAgIHsK IAkgICAgICAvKiBHb29wcyBvYmplY3QgKi8KQEAgLTI1Miw2ICsyNjEsNyBAQAogCQlzY21f Y2hhbmdlX29iamVjdF9jbGFzcyAoeCwKIAkJCQkJIFNDTV9DTEFTU19PRiAoeCksICAgICAg ICAgLyogb2xkICovCiAJCQkJCSBTQ01fT0JKX0NMQVNTX1JFREVGICh4KSk7IC8qIG5ldyAq LworCiAJICAgICAgcmV0dXJuIFNDTV9DTEFTU19PRiAoeCk7CiAJICAgIH0KIAkgIGVsc2UK QEAgLTI2MzEsNiArMjY0MSwxNyBAQAogCQkJCQkgICAgICAgOiBzY21fY2xhc3NfdG9wKSwK IAkJCQkgICBhcHBsaWNhYmxlcCk7CiB9CitTQ00KK3NjbV9tYWtlX2V4dGVuZGVkX2NsYXNz X3dpdGhfc3VwZXJzIChjaGFyIGNvbnN0ICp0eXBlX25hbWUsIFNDTSBsaXN0X29mX3N1cGVy cykKK3sKKyAgcmV0dXJuIG1ha2VfY2xhc3NfZnJvbV90ZW1wbGF0ZSAoIjwlcz4iLAorCQkJ CSAgIHR5cGVfbmFtZSwKKwkJCQkgICAoKFNDTV9VTlNQRUNJRklFRCAhPSBsaXN0X29mX3N1 cGVycykgJiYKKwkJCQkgICAgKFNDTV9FT0wgICAgICAgICAhPSBsaXN0X29mX3N1cGVycykp CisJCQkJICAgPyBsaXN0X29mX3N1cGVycworCQkJCSAgIDogc2NtX2xpc3RfMShzY21fY2xh c3NfdG9wKSwKKwkJCQkgICAwKTsKK30KIAogdm9pZAogc2NtX2lfaW5oZXJpdF9hcHBsaWNh YmxlIChTQ00gYykKZGlmZiAtTmF1ciBndWlsZS0xLjguMy1vcmlnaW5hbC9saWJndWlsZS9v YmplY3RzLmggZ3VpbGUtMS44LjMtcGF0Y2gtc3Vic21vYi9saWJndWlsZS9vYmplY3RzLmgK LS0tIGd1aWxlLTEuOC4zLW9yaWdpbmFsL2xpYmd1aWxlL29iamVjdHMuaAkyMDA3LTA1LTA5 IDIyOjIyOjAzLjAwMDAwMDAwMCArMDIwMAorKysgZ3VpbGUtMS44LjMtcGF0Y2gtc3Vic21v Yi9saWJndWlsZS9vYmplY3RzLmgJMjAwNy0xMS0xNCAxODoxMDozMS4wMDAwMDAwMDAgKzAx MDAKQEAgLTE4MSw2ICsxODEsNyBAQAogCiAvKiBHb29wcyBmdW5jdGlvbnMuICovCiBTQ01f QVBJIFNDTSBzY21fbWFrZV9leHRlbmRlZF9jbGFzcyAoY2hhciBjb25zdCAqdHlwZV9uYW1l LCBpbnQgYXBwbGljYWJsZXApOworU0NNX0FQSSBTQ00gc2NtX21ha2VfZXh0ZW5kZWRfY2xh c3Nfd2l0aF9zdXBlcnMgKGNoYXIgY29uc3QgKnR5cGVfbmFtZSwgU0NNIGxpc3Rfb2Zfc3Vw ZXJzKTsKIFNDTV9BUEkgdm9pZCBzY21faV9pbmhlcml0X2FwcGxpY2FibGUgKFNDTSBjKTsK IFNDTV9BUEkgdm9pZCBzY21fbWFrZV9wb3J0X2NsYXNzZXMgKGxvbmcgcHRvYm51bSwgY2hh ciAqdHlwZV9uYW1lKTsKIFNDTV9BUEkgdm9pZCBzY21fY2hhbmdlX29iamVjdF9jbGFzcyAo U0NNLCBTQ00sIFNDTSk7CmRpZmYgLU5hdXIgZ3VpbGUtMS44LjMtb3JpZ2luYWwvbGliZ3Vp bGUvc21vYi5jIGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvbGliZ3VpbGUvc21vYi5jCi0t LSBndWlsZS0xLjguMy1vcmlnaW5hbC9saWJndWlsZS9zbW9iLmMJMjAwNy0wNS0wOSAyMjoy MjowMy4wMDAwMDAwMDAgKzAyMDAKKysrIGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvbGli Z3VpbGUvc21vYi5jCTIwMDctMTEtMjYgMTY6NDk6MjIuMDAwMDAwMDAwICswMTAwCkBAIC0z MCw2ICszMCw3IEBACiAjaW5jbHVkZSAibGliZ3VpbGUvb2JqZWN0cy5oIgogI2luY2x1ZGUg ImxpYmd1aWxlL2dvb3BzLmgiCiAjaW5jbHVkZSAibGliZ3VpbGUvcG9ydHMuaCIKKyNpbmNs dWRlICJsaWJndWlsZS9lcS5oIgogCiAjaWZkZWYgSEFWRV9NQUxMT0NfSAogI2luY2x1ZGUg PG1hbGxvYy5oPgpAQCAtNDksNiArNTAsOCBAQAogbG9uZyBzY21fbnVtc21vYjsKIHNjbV9z bW9iX2Rlc2NyaXB0b3Igc2NtX3Ntb2JzW01BWF9TTU9CX0NPVU5UXTsKIAorc2NtX3RfYml0 cyBzY21fbXVsdGlfc21vYl9kcml2ZXI7CisKIC8qIExvd2VyIDE2IGJpdCBvZiBkYXRhIG11 c3QgYmUgemVyby4gCiAqLwogdm9pZApAQCAtMzE1LDYgKzMxOCwxNiBAQAogfQogI3VuZGVm IEZVTkNfTkFNRQogCit2b2lkCitzY21fbWFrZV9zdWJfc21vYl90eXBlIChzY21fdF9zdWJf c21vYl9kZXNjcmlwdG9yICogZGVzY3JpcHRvcikKKyNkZWZpbmUgRlVOQ19OQU1FICJzY21f bWFrZV9zdWJfc21vYl90eXBlIgoreworICAvKiBNYWtlIGEgY2xhc3Mgb2JqZWN0IGlmIEdv b3BzIGlzIHByZXNlbnQuICovCisgIGlmIChzY21fc21vYl9jbGFzcykKKyAgICBkZXNjcmlw dG9yLT5jbGFzcyA9CisgICAgICBzY21fcGVybWFuZW50X29iamVjdChzY21fbWFrZV9leHRl bmRlZF9jbGFzc193aXRoX3N1cGVycyhkZXNjcmlwdG9yLT5uYW1lLCBkZXNjcmlwdG9yLT5s aXN0X29mX3N1cGVycykpOworfQorI3VuZGVmIEZVTkNfTkFNRQogCiB2b2lkCiBzY21fc2V0 X3Ntb2JfbWFyayAoc2NtX3RfYml0cyB0YywgU0NNICgqbWFyaykgKFNDTSkpCkBAIC00ODUs NiArNDk4LDYyIEBACiAgIHJldHVybiAxOwogfQogCisMCisvKiBNdWx0aS1TTU9CIGZ1bmN0 aW9ucyAqLworCitzdGF0aWMgc2l6ZV90CittdWx0aV9zbW9iX2ZyZWUgKFNDTSBzbW9iKQor eworICBzY21fdF9zdWJfc21vYl9kZXNjcmlwdG9yICoJZHJpdmVyID0gU0NNX1NVQl9TTU9C X0RFU0NSSVBUT1Ioc21vYik7CisKKyAgaWYgKGRyaXZlci0+ZnJlZSkKKyAgICByZXR1cm4g ZHJpdmVyLT5mcmVlKHNtb2IpOworICBlbHNlIGlmIChkcml2ZXItPmNsaWVudF9kYXRhX3Np emUpIHsKKyAgICB2b2lkICoJZGF0YSA9ICh2b2lkICopU0NNX1NNT0JfREFUQShzbW9iKTsK KyAgICBzY21fZ2NfZnJlZShkYXRhLCBkcml2ZXItPmNsaWVudF9kYXRhX3NpemUsIGRyaXZl ci0+bmFtZSk7CisgIH0KKyAgcmV0dXJuIDA7Cit9CitzdGF0aWMgU0NNCittdWx0aV9zbW9i X2VxdWFscCAoU0NNIHNtb2JfYSwgU0NNIHNtb2JfYikKK3sKKyAgc2NtX3Rfc3ViX3Ntb2Jf ZGVzY3JpcHRvciAqCWRyaXZlcl9hID0gU0NNX1NVQl9TTU9CX0RFU0NSSVBUT1Ioc21vYl9h KTsKKyAgc2NtX3Rfc3ViX3Ntb2JfZGVzY3JpcHRvciAqCWRyaXZlcl9iID0gU0NNX1NVQl9T TU9CX0RFU0NSSVBUT1Ioc21vYl9iKTsKKworICBpZiAoZHJpdmVyX2EgPT0gZHJpdmVyX2Ip CisgICAgcmV0dXJuIChkcml2ZXJfYS0+ZXF1YWxwKT8gZHJpdmVyX2EtPmVxdWFscChzbW9i X2EsIHNtb2JfYikgOiBzY21fZXFfcChzbW9iX2EsIHNtb2JfYik7CisgIGVsc2UKKyAgICBy ZXR1cm4gU0NNX0JPT0xfRjsKK30KK3N0YXRpYyBTQ00KK211bHRpX3Ntb2JfbWFyayAoU0NN IHNtb2IpCit7CisgIHNjbV90X3N1Yl9zbW9iX2Rlc2NyaXB0b3IgKglkcml2ZXIgPSBTQ01f U1VCX1NNT0JfREVTQ1JJUFRPUihzbW9iKTsKKworICByZXR1cm4gKGRyaXZlci0+bWFyayk/ IGRyaXZlci0+bWFyayhzbW9iKSA6IFNDTV9CT09MX0Y7Cit9CitzdGF0aWMgaW50CittdWx0 aV9zbW9iX3ByaW50IChTQ00gc21vYiwgU0NNIHNfcG9ydCwgc2NtX3ByaW50X3N0YXRlICog cHN0YXRlKQoreworICBzY21fdF9zdWJfc21vYl9kZXNjcmlwdG9yICoJZHJpdmVyID0gU0NN X1NVQl9TTU9CX0RFU0NSSVBUT1Ioc21vYik7CisKKyAgaWYgKGRyaXZlci0+cHJpbnQpCisg ICAgcmV0dXJuIGRyaXZlci0+cHJpbnQoc21vYiwgc19wb3J0LCBwc3RhdGUpOworICBlbHNl CisgICAgeworICAgICAgc2NtX3B1dHMoIiM8Iiwgc19wb3J0KTsKKyAgICAgIHNjbV9wdXRz KGRyaXZlci0+bmFtZSwgc19wb3J0KTsKKyAgICAgIHNjbV9wdXRzKCIgLSAiLCBzX3BvcnQp OworICAgICAgc2NtX2Rpc3BsYXkoc2NtX2Zyb21fbG9uZyhTQ01fU01PQk5VTShzbW9iKSks IHNfcG9ydCk7CisgICAgICBzY21fcHV0cygiICIsIHNfcG9ydCk7CisgICAgICBzY21fZGlz cGxheShzY21fZnJvbV91bG9uZygodW5zaWduZWQgbG9uZylzbW9iKSwgc19wb3J0KTsKKyAg ICAgIHNjbV9wdXRjKCc+Jywgc19wb3J0KTsKKyAgICAgIHJldHVybiAxOworICAgIH0KK30K KworDAorCiB2b2lkCiBzY21fc21vYl9wcmVoaXN0b3J5ICgpCiB7CkBAIC01MTEsOCArNTgw LDE1IEBACiAgIC8qIFdBUk5JTkc6IFRoaXMgc2NtX21ha2Vfc21vYl90eXBlIGNhbGwgbXVz dCBiZSBkb25lIGZpcnN0LiAgKi8KICAgdGMgPSBzY21fbWFrZV9zbW9iX3R5cGUgKCJmcmVl IiwgMCk7CiAgIHNjbV9zZXRfc21vYl9wcmludCAodGMsIGZyZWVfcHJpbnQpOworCisgIHNj bV9tdWx0aV9zbW9iX2RyaXZlciA9IHNjbV9tYWtlX3Ntb2JfdHlwZSgiTXVsdGlTTU9CIiwg MCk7CisgIHNjbV9zZXRfc21vYl9mcmVlCShzY21fbXVsdGlfc21vYl9kcml2ZXIsIG11bHRp X3Ntb2JfZnJlZSk7CisgIHNjbV9zZXRfc21vYl9lcXVhbHAJKHNjbV9tdWx0aV9zbW9iX2Ry aXZlciwgbXVsdGlfc21vYl9lcXVhbHApOworICBzY21fc2V0X3Ntb2JfbWFyawkoc2NtX211 bHRpX3Ntb2JfZHJpdmVyLCBtdWx0aV9zbW9iX21hcmspOworICBzY21fc2V0X3Ntb2JfcHJp bnQJKHNjbV9tdWx0aV9zbW9iX2RyaXZlciwgbXVsdGlfc21vYl9wcmludCk7CiB9CiAKKwog LyoKICAgTG9jYWwgVmFyaWFibGVzOgogICBjLWZpbGUtc3R5bGU6ICJnbnUiCmRpZmYgLU5h dXIgZ3VpbGUtMS44LjMtb3JpZ2luYWwvbGliZ3VpbGUvc21vYi5oIGd1aWxlLTEuOC4zLXBh dGNoLXN1YnNtb2IvbGliZ3VpbGUvc21vYi5oCi0tLSBndWlsZS0xLjguMy1vcmlnaW5hbC9s aWJndWlsZS9zbW9iLmgJMjAwNy0wNS0wOSAyMjoyMjowMy4wMDAwMDAwMDAgKzAyMDAKKysr IGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvbGliZ3VpbGUvc21vYi5oCTIwMDctMTEtMTUg MTc6NTE6MjMuMDAwMDAwMDAwICswMTAwCkBAIC0xMTksNiArMTE5LDM1IEBACiAKIAwKIAor dHlwZWRlZiBzdHJ1Y3Qgc2NtX3Rfc3ViX3Ntb2JfZGVzY3JpcHRvciB7CisgIGNvbnN0IGNo YXIgKgluYW1lOworICBzaXplX3QJY2xpZW50X2RhdGFfc2l6ZTsKKyAgc2l6ZV90CSgqIGZy ZWUpIChTQ00gb2JqKTsKKyAgU0NNCQkoKiBlcXVhbHApIChTQ00gb2JqX2EsIFNDTSBvYmpf Yik7CisgIFNDTQkJKCogbWFyaykgKFNDTSBvYmopOworICBpbnQJCSgqIHByaW50KSAoU0NN IHNtb2IsIFNDTSBzX3BvcnQsIHNjbV9wcmludF9zdGF0ZSAqIHBzdGF0ZSk7CisgIFNDTQkJ Y2xhc3M7CisgIFNDTQkJbGlzdF9vZl9zdXBlcnM7Cit9IHNjbV90X3N1Yl9zbW9iX2Rlc2Ny aXB0b3I7CisKKyNkZWZpbmUgU0NNX1NVQl9TTU9CX0RFU0NSSVBUT1IoU01PQikJKChzY21f dF9zdWJfc21vYl9kZXNjcmlwdG9yICopU0NNX1NNT0JfREFUQV8yKFNNT0IpKQorCitTQ01f QVBJIHNjbV90X2JpdHMgc2NtX211bHRpX3Ntb2JfZHJpdmVyOworCisjZGVmaW5lIFNDTV9T VUJfU01PQl9QUkVESUNBVEUoU01PQikJCVwKKwkJU0NNX1NNT0JfUFJFRElDQVRFKHNjbV9t dWx0aV9zbW9iX2RyaXZlciwgU01PQikKKworI2RlZmluZSBTQ01fTkVXU1VCU01PQihTTU9C LERFU0NSSVBUT1IsREFUQSkJXAorCQlTQ01fTkVXU01PQjIoKFNNT0IpLCBzY21fbXVsdGlf c21vYl9kcml2ZXIsIChEQVRBKSwgKERFU0NSSVBUT1IpKTsKKworI2RlZmluZSBTQ01fUkVU VVJOX05FV1NVQlNNT0IoREVTQ1JJUFRPUixEQVRBKSBcCisgIGRvIHsgU0NNIF9fU0NNX3Nt b2JfYW5zd2VyOyBcCisgICAgICAgU0NNX05FV1NVQlNNT0IgKF9fU0NNX3Ntb2JfYW5zd2Vy LCAoREVTQ1JJUFRPUiksIChEQVRBKSk7IFwKKyAgICAgICByZXR1cm4gX19TQ01fc21vYl9h bnN3ZXI7IFwKKyAgfSB3aGlsZSAoMCkKKworDAorCiBTQ01fQVBJIFNDTSBzY21fbWFyazAg KFNDTSBwdHIpOwogU0NNX0FQSSBTQ00gc2NtX21hcmtjZHIgKFNDTSBwdHIpOwogU0NNX0FQ SSBzaXplX3Qgc2NtX2ZyZWUwIChTQ00gcHRyKTsKQEAgLTEzNCw2ICsxNjMsNyBAQAogICov CiAKIFNDTV9BUEkgc2NtX3RfYml0cyBzY21fbWFrZV9zbW9iX3R5cGUgKGNoYXIgY29uc3Qg Km5hbWUsIHNpemVfdCBzaXplKTsKK1NDTV9BUEkgdm9pZCBzY21fbWFrZV9zdWJfc21vYl90 eXBlIChzY21fdF9zdWJfc21vYl9kZXNjcmlwdG9yICogZGVzY3JpcHRvcik7CiAKIFNDTV9B UEkgdm9pZCBzY21fc2V0X3Ntb2JfbWFyayAoc2NtX3RfYml0cyB0YywgU0NNICgqbWFyaykg KFNDTSkpOwogU0NNX0FQSSB2b2lkIHNjbV9zZXRfc21vYl9mcmVlIChzY21fdF9iaXRzIHRj LCBzaXplX3QgKCpmcmVlKSAoU0NNKSk7CmRpZmYgLU5hdXIgZ3VpbGUtMS44LjMtb3JpZ2lu YWwvdGVzdC1zdWl0ZS9zdGFuZGFsb25lL01ha2VmaWxlLmFtIGd1aWxlLTEuOC4zLXBhdGNo LXN1YnNtb2IvdGVzdC1zdWl0ZS9zdGFuZGFsb25lL01ha2VmaWxlLmFtCi0tLSBndWlsZS0x LjguMy1vcmlnaW5hbC90ZXN0LXN1aXRlL3N0YW5kYWxvbmUvTWFrZWZpbGUuYW0JMjAwNy0x MC0xMCAyMjoxNzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrIGd1aWxlLTEuOC4zLXBhdGNoLXN1 YnNtb2IvdGVzdC1zdWl0ZS9zdGFuZGFsb25lL01ha2VmaWxlLmFtCTIwMDctMTEtMjYgMTY6 MDM6NDguMDAwMDAwMDAwICswMTAwCkBAIC0xMDcsNiArMTA3LDE2IEBACiBjaGVja19TQ1JJ UFRTICs9IHRlc3QtdXNlLXNyZmkKIFRFU1RTICs9IHRlc3QtdXNlLXNyZmkKIAorIyB0ZXN0 LXN1YnNtb2IKK25vaW5zdF9MVExJQlJBUklFUyArPSBsaWJ0ZXN0LXN1YnNtb2IubGEKK2xp YnRlc3Rfc3Vic21vYl9sYV9TT1VSQ0VTID0gdGVzdC1zdWJzbW9iLWxpYi5jIHRlc3Qtc3Vi c21vYi1saWIueAorbGlidGVzdF9zdWJzbW9iX2xhX0NGTEFHUyA9ICR7dGVzdF9jZmxhZ3N9 CitsaWJ0ZXN0X3N1YnNtb2JfbGFfTERGTEFHUyA9IC1uby11bmRlZmluZWQgLXJwYXRoIGBw d2RgICMgc28gbGlidG9vbCB3aWxsIHJlYWxseSBidWlsZCBhbiAuc28KK2xpYnRlc3Rfc3Vi c21vYl9sYV9MSUJBREQgPSAke3RvcF9idWlsZGRpcn0vbGliZ3VpbGUvbGliZ3VpbGUubGEK K0JVSUxUX1NPVVJDRVMgKz0gdGVzdC1zdWJzbW9iLWxpYi54CitjaGVja19TQ1JJUFRTICs9 IHRlc3Qtc3Vic21vYgorVEVTVFMgKz0gdGVzdC1zdWJzbW9iCisKIGFsbC1sb2NhbDoKIAlj ZCAke3NyY2Rpcn0gJiYgY2htb2QgdSt4ICR7Y2hlY2tfU0NSSVBUU30KIApkaWZmIC1OYXVy IGd1aWxlLTEuOC4zLW9yaWdpbmFsL3Rlc3Qtc3VpdGUvc3RhbmRhbG9uZS90ZXN0LXN1YnNt b2IgZ3VpbGUtMS44LjMtcGF0Y2gtc3Vic21vYi90ZXN0LXN1aXRlL3N0YW5kYWxvbmUvdGVz dC1zdWJzbW9iCi0tLSBndWlsZS0xLjguMy1vcmlnaW5hbC90ZXN0LXN1aXRlL3N0YW5kYWxv bmUvdGVzdC1zdWJzbW9iCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisr KyBndWlsZS0xLjguMy1wYXRjaC1zdWJzbW9iL3Rlc3Qtc3VpdGUvc3RhbmRhbG9uZS90ZXN0 LXN1YnNtb2IJMjAwNy0xMS0yNiAxOTo0MDowOS4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCAr MSwxNjAgQEAKKyMhL2Jpbi9zaAorZXhlYyBndWlsZSAtcyAiJDAiICIkQCIKKyEjCisKKzs7 VG8gcnVuIG9ubHkgdGhpcyB0ZXN0OiBmcm9tIHRoZSB0b3Agc291cmNlIGRpcmVjdG9yeSBv ZiBHdWlsZToKKzs7Cis7OwkkIG1ha2UgOyAoY2QgdGVzdC1zdWl0ZS9zdGFuZGFsb25lIDsg bWFrZSBjaGVjaykKKzs7CisKKyh1c2UtbW9kdWxlcyAob29wIGdvb3BzKQorCSAgICAgKGlj ZS05IHJlZ2V4KQorCSAgICAgKGljZS05IHByZXR0eS1wcmludCkpCisKKyhsb2FkLWV4dGVu c2lvbiAibGlidGVzdC1zdWJzbW9iIiAibGlidGVzdF9zdWJzbW9iX2luaXQiKQorCis7OyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworKGRlZmluZS1tZXRob2QgKHVwb24tbnVtYmVyIChvIDx0b3A+KSkKKyAgI2Yp CisKKyhkZWZpbmUtbWV0aG9kICh1cG9uLW51bWJlciAobyA8bnVtYmVyPikpCisgICN0KQor CisoZGVmaW5lLW1ldGhvZCAodXBvbi1pbnRlZ2VyIChvIDx0b3A+KSkKKyAgI2YpCisKKyhk ZWZpbmUtbWV0aG9kICh1cG9uLWRvdWJsZSAobyA8dG9wPikpCisgICNmKQorCisoZGVmaW5l LW1ldGhvZCAodXBvbi13cmFwcGVyIChvIDx0b3A+KSkKKyAgI2YpCisKKzs7IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Cis7IChwcmV0dHktcHJpbnQgPG15LWludGVnZXI+KQorOyAocHJldHR5LXByaW50IChjbGFz cy1wcmVjZWRlbmNlLWxpc3QgPG15LWludGVnZXI+KSkKKworKGRlZmluZS1tZXRob2QgKHVw b24taW50ZWdlciAobyA8bXktaW50ZWdlcj4pKQorICAjdCkKKworKGxldCAoKGEJKG1ha2Ut bXktaW50ZWdlciAxMjMpKQorICAgICAgKGIJKG1ha2UtbXktaW50ZWdlciAxMjMpKQorICAg ICAgKGMJKG1ha2UtbXktaW50ZWdlciA0NTYpKSkKKworICA7O0ZvcmNpbmcgR0MgY2F1c2Vz IHRoZSBtYXJrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQuCisgIChnYykKKworICAoaWYgKG5v dCAoZXF1YWw/IGEgYikpCisgICAgICAoZXJyb3IgJ3Nob3VsZC1iZS1lcXVhbCAiZXJyb3Ig aW4gZXF1YWxwIikpCisgIChpZiAoZXF1YWw/IGEgYykKKyAgICAgIChlcnJvciAnc2hvdWxk LWJlLW5vdC1lcXVhbCAiZXJyb3IgaW4gZXF1YWxwIikpCisKKyAgKGlmIChub3QgKHN0cmlu Zz0gIiM8bXktaW50ZWdlciAtIDEyMz4iIChvYmplY3QtPnN0cmluZyBhIGRpc3BsYXkpKSkK KyAgICAgIChlcnJvciAnYmFkLXN0cmluZy1yZXAgImVycm9yIGluIG15LWludGVnZXIgcHJp bnQgZnVuY3Rpb24iKSkKKworICAoaWYgKG5vdCAoZXE/IChjbGFzcy1vZiBhKSA8bXktaW50 ZWdlcj4pKQorICAgICAgKGVycm9yICdiYWQtc21vYi1jbGFzcyAiZXJyb3IgaW4gbXktaW50 ZWdlciBjbGFzcy1vZiIpKQorCisgIChpZiAobm90IChpcy1hPyBhIDxteS1pbnRlZ2VyPikp CisgICAgICAoZXJyb3IgJ2JhZC1zbW9iLWNsYXNzICJlcnJvciBpbiBteS1pbnRlZ2VyIGNs YXNzIikpCisKKyAgKGlmIChub3QgKGlzLWE/IGEgPG51bWJlcj4pKQorICAgICAgKGVycm9y ICdiYWQtc21vYi1jbGFzcyAiZXJyb3IgaW4gbXktaW50ZWdlciBzdXBlcnMiKSkKKworICAo aWYgKG5vdCAodXBvbi1udW1iZXIgYSkpCisgICAgICAoZXJyb3IgJ2JhZC1tZXRob2QtZGlz cGF0Y2ggImVycm9yIGluIGRpc3BhdGNoaW5nIGZvciA8bnVtYmVyPiIpKQorCisgIChpZiAo bm90ICh1cG9uLWludGVnZXIgYSkpCisgICAgICAoZXJyb3IgJ2JhZC1tZXRob2QtZGlzcGF0 Y2ggImVycm9yIGluIGRpc3BhdGNoaW5nIGZvciA8bXktaW50ZWdlcj4iKSkpCisKKzs7Rm9y Y2luZyBHQyBjYXVzZXMgdGhlIGZyZWUgZnVuY3Rpb24gdG8gYmUgaW52b2tlZC4KKyhnYykK KyhnYykKKworOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKKzsgKHByZXR0eS1wcmludCA8bXktZG91YmxlPikKKzsg KHByZXR0eS1wcmludCAoY2xhc3MtcHJlY2VkZW5jZS1saXN0IDxteS1kb3VibGU+KSkKKwor KGRlZmluZS1tZXRob2QgKHVwb24tZG91YmxlIChvIDxteS1kb3VibGU+KSkKKyAgI3QpCisK KyhsZXQgKChhCShtYWtlLW15LWRvdWJsZSAxMjMpKQorICAgICAgKGIJKG1ha2UtbXktZG91 YmxlIDEyMykpCisgICAgICAoYwkobWFrZS1teS1kb3VibGUgNDU2KSkpCisKKyAgOztGb3Jj aW5nIEdDIGNhdXNlcyB0aGUgbWFyayBmdW5jdGlvbiB0byBiZSBpbnZva2VkLgorICAoZ2Mp CisKKyAgKGlmIChlcXVhbD8gYSBiKQorICAgICAgKGVycm9yICdzaG91bGQtYmUtbm90LWVx dWFsICJlcnJvciBpbiBlcXVhbHAiKSkKKyAgKGlmIChub3QgKGVxdWFsPyBhIGEpKQorICAg ICAgKGVycm9yICdzaG91bGQtYmUtZXF1YWwgImVycm9yIGluIGVxdWFscCIpKQorCisgIChp ZiAobm90IChzdHJpbmctbWF0Y2ggIiM8bXktZG91YmxlIC0gWzAtOWEtZl0rIFswLTlhLWZd Kz4iIChvYmplY3QtPnN0cmluZyBhIGRpc3BsYXkpKSkKKyAgICAgIChlcnJvciAnYmFkLXN0 cmluZy1yZXAgImVycm9yIGluIG15LWRvdWJsZSBwcmludCBmdW5jdGlvbiIpKQorCisgIChp ZiAobm90IChlcT8gKGNsYXNzLW9mIGEpIDxteS1kb3VibGU+KSkKKyAgICAgIChlcnJvciAn YmFkLXNtb2ItY2xhc3MgImVycm9yIGluIG15LWRvdWJsZSBjbGFzcy1vZiIpKQorCisgIChp ZiAobm90IChpcy1hPyBhIDxteS1kb3VibGU+KSkKKyAgICAgIChlcnJvciAnYmFkLXNtb2It Y2xhc3MgImVycm9yIGluIG15LWRvdWJsZSBjbGFzcyIpKQorCisgIChpZiAobm90IChpcy1h PyBhIDxudW1iZXI+KSkKKyAgICAgIChlcnJvciAnYmFkLXNtb2ItY2xhc3MgImVycm9yIGlu IG15LWRvdWJsZSBzdXBlcnMiKSkKKworICAoaWYgKG5vdCAodXBvbi1udW1iZXIgYSkpCisg ICAgICAoZXJyb3IgJ2JhZC1tZXRob2QtZGlzcGF0Y2ggImVycm9yIGluIGRpc3BhdGNoaW5n IGZvciA8bnVtYmVyPiIpKQorCisgIChpZiAobm90ICh1cG9uLWRvdWJsZSBhKSkKKyAgICAg IChlcnJvciAnYmFkLW1ldGhvZC1kaXNwYXRjaCAiZXJyb3IgaW4gZGlzcGF0Y2hpbmcgZm9y IDxteS1kb3VibGU+IikpKQorCis7O0ZvcmNpbmcgR0MgY2F1c2VzIHRoZSBmcmVlIGZ1bmN0 aW9uIHRvIGJlIGludm9rZWQuCisoZ2MpCisoZ2MpCisKKzs7IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis7IChwcmV0 dHktcHJpbnQgPG15LXdyYXBwZXI+KQorOyAocHJldHR5LXByaW50IChjbGFzcy1wcmVjZWRl bmNlLWxpc3QgPG15LXdyYXBwZXI+KSkKKworKGRlZmluZS1tZXRob2QgKHVwb24td3JhcHBl ciAobyA8bXktd3JhcHBlcj4pKQorICAjdCkKKworKGxldCAoKGEJKG1ha2UtbXktd3JhcHBl ciAxMjMpKQorICAgICAgKGIJKG1ha2UtbXktd3JhcHBlciAxMjMpKQorICAgICAgKGMJKG1h a2UtbXktd3JhcHBlciA0NTYpKSkKKworICA7O0ZvcmNpbmcgR0MgY2F1c2VzIHRoZSBtYXJr IGZ1bmN0aW9uIHRvIGJlIGludm9rZWQuCisgIChnYykKKworICAoaWYgKG5vdCAoZXF1YWw/ IGEgYikpCisgICAgICAoZXJyb3IgJ3Nob3VsZC1iZS1lcXVhbCAiZXJyb3IgaW4gZXF1YWxw IikpCisgIChpZiAoZXF1YWw/IGEgYykKKyAgICAgIChlcnJvciAnc2hvdWxkLWJlLW5vdC1l cXVhbCAiZXJyb3IgaW4gZXF1YWxwIikpCisKKyAgKGlmIChub3QgKHN0cmluZz0gIiM8bXkt d3JhcHBlciAtIDEyMz4iIChvYmplY3QtPnN0cmluZyBhIGRpc3BsYXkpKSkKKyAgICAgIChl cnJvciAnYmFkLXN0cmluZy1yZXAgImVycm9yIGluIG15LXdyYXBwZXIgcHJpbnQgZnVuY3Rp b24iKSkKKworICAoaWYgKG5vdCAoZXE/IChjbGFzcy1vZiBhKSA8bXktd3JhcHBlcj4pKQor ICAgICAgKGVycm9yICdiYWQtc21vYi1jbGFzcyAiZXJyb3IgaW4gbXktd3JhcHBlciBjbGFz cy1vZiIpKQorCisgIChpZiAobm90IChpcy1hPyBhIDxteS13cmFwcGVyPikpCisgICAgICAo ZXJyb3IgJ2JhZC1zbW9iLWNsYXNzICJlcnJvciBpbiBteS13cmFwcGVyIGNsYXNzIikpCisK KyAgKGlmIChpcy1hPyBhIDxudW1iZXI+KQorICAgICAgKGVycm9yICdiYWQtc21vYi1jbGFz cyAiZXJyb3IgaW4gbXktd3JhcHBlciBzdXBlcnMiKSkKKworICAoaWYgKG5vdCAodXBvbi13 cmFwcGVyIGEpKQorICAgICAgKGVycm9yICdiYWQtbWV0aG9kLWRpc3BhdGNoICJlcnJvciBp biBkaXNwYXRjaGluZyBmb3IgPG15LXdyYXBwZXI+IikpKQorCis7O0ZvcmNpbmcgR0MgY2F1 c2VzIHRoZSBmcmVlIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQuCisoZ2MpCisoZ2MpCisKKwor Cis7OyBMb2NhbCBWYXJpYWJsZXM6Cis7OyBtb2RlOiBzY2hlbWUKKzs7IEVuZDoKZGlmZiAt TmF1ciBndWlsZS0xLjguMy1vcmlnaW5hbC90ZXN0LXN1aXRlL3N0YW5kYWxvbmUvdGVzdC1z dWJzbW9iLWxpYi5jIGd1aWxlLTEuOC4zLXBhdGNoLXN1YnNtb2IvdGVzdC1zdWl0ZS9zdGFu ZGFsb25lL3Rlc3Qtc3Vic21vYi1saWIuYwotLS0gZ3VpbGUtMS44LjMtb3JpZ2luYWwvdGVz dC1zdWl0ZS9zdGFuZGFsb25lL3Rlc3Qtc3Vic21vYi1saWIuYwkxOTcwLTAxLTAxIDAxOjAw OjAwLjAwMDAwMDAwMCArMDEwMAorKysgZ3VpbGUtMS44LjMtcGF0Y2gtc3Vic21vYi90ZXN0 LXN1aXRlL3N0YW5kYWxvbmUvdGVzdC1zdWJzbW9iLWxpYi5jCTIwMDctMTEtMjYgMTk6NDE6 MzAuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMjQ4IEBACisvKiBDb3B5cmlnaHQgKEMp IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKgorICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworDAorLyoqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoqIEhlYWRlcnMuCisgKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpbmNsdWRlICJsaWJndWlsZS5o IgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3ZvaWQgbGlidGVzdF9zdWJzbW9iX2luaXQgKHZv aWQpOworCitTQ00gc3Vic21vYl9tYWtlX215X2ludGVnZXIgKFNDTSBzX2ludGVnZXIpOwor U0NNIHN1YnNtb2JfbWFrZV9teV9kb3VibGUgIChTQ00gc19kb3VibGUpOworU0NNIHN1YnNt b2JfbWFrZV9teV93cmFwcGVyIChTQ00gc21vYik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVm aW5lIE1ZX0lOVEVHRVJfREFUQShTTU9CKQkoKG15X2ludGVnZXJfY2xpZW50X2RhdGFfdCAq KVNDTV9TTU9CX0RBVEEoU01PQikpCisjZGVmaW5lIE1ZX0RPVUJMRV9EQVRBKFNNT0IpCSgo bXlfZG91YmxlX2NsaWVudF9kYXRhX3QgICopU0NNX1NNT0JfREFUQShTTU9CKSkKKyNkZWZp bmUgTVlfV1JBUFBFUl9EQVRBKFNNT0IpCSgobXlfd3JhcHBlcl9jbGllbnRfZGF0YV90ICop U0NNX1NNT0JfREFUQShTTU9CKSkKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwwKKy8qKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqKiBTTU9CIGRyaXZlcjogbXkgaW50ZWdlci4KKyAqKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwordHlwZWRlZiBz dHJ1Y3QgbXlfaW50ZWdlcl9jbGllbnRfZGF0YV90IHsKKyAgaW50CW47Cit9IG15X2ludGVn ZXJfY2xpZW50X2RhdGFfdDsKKworc3RhdGljIHNpemVfdAlteV9pbnRlZ2VyX2ZyZWUJCShT Q00gc21vYik7CitzdGF0aWMgU0NNCW15X2ludGVnZXJfZXF1YWxwCShTQ00gc21vYl9hLCBT Q00gc21vYl9iKTsKK3N0YXRpYyBpbnQJbXlfaW50ZWdlcl9wcmludAkoU0NNIHNtb2IsIFND TSBzX3BvcnQsIHNjbV9wcmludF9zdGF0ZSAqIHBzdGF0ZSBTQ01fVU5VU0VEKTsKKworLyog SGVyZSB3ZSB1c2UgYWxsIHRoZSBjdXN0b20gZnVuY3Rpb25zIGJ1dCBtYXJrLiAqLworc3Rh dGljIHNjbV90X3N1Yl9zbW9iX2Rlc2NyaXB0b3IgbXlfaW50ZWdlcl9kcml2ZXIgPSB7Cisg IC5uYW1lCQkJPSAibXktaW50ZWdlciIsCisgIC5jbGllbnRfZGF0YV9zaXplCT0gMCwKKyAg LmZyZWUJCQk9IG15X2ludGVnZXJfZnJlZSwKKyAgLmVxdWFscAkJPSBteV9pbnRlZ2VyX2Vx dWFscCwKKyAgLm1hcmsJCQk9IE5VTEwsCisgIC5wcmludAkJPSBteV9pbnRlZ2VyX3ByaW50 LAorICAuY2xhc3MJCT0gU0NNX0JPT0xfRiwKKyAgLmxpc3Rfb2Zfc3VwZXJzCT0gU0NNX0VP TAorfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3NpemVfdAorbXlfaW50ZWdlcl9mcmVlIChTQ00g c21vYikKK3sKKyAgbXlfaW50ZWdlcl9jbGllbnRfZGF0YV90ICoJZGF0YSA9IE1ZX0lOVEVH RVJfREFUQShzbW9iKTsKKworICBzY21fZ2NfZnJlZShkYXRhLCBzaXplb2YobXlfaW50ZWdl cl9jbGllbnRfZGF0YV90KSwgbXlfaW50ZWdlcl9kcml2ZXIubmFtZSk7CisgIHJldHVybiAw OworfQorU0NNCitteV9pbnRlZ2VyX2VxdWFscCAoU0NNIHNtb2JfYSwgU0NNIHNtb2JfYikK K3sKKyAgaW50CWEgPSBNWV9JTlRFR0VSX0RBVEEoc21vYl9hKS0+bjsKKyAgaW50CWIgPSBN WV9JTlRFR0VSX0RBVEEoc21vYl9iKS0+bjsKKworICByZXR1cm4gc2NtX2Zyb21fYm9vbChh ID09IGIpOworfQorc3RhdGljIGludAorbXlfaW50ZWdlcl9wcmludCAoU0NNIHNtb2IsIFND TSBzX3BvcnQsIHNjbV9wcmludF9zdGF0ZSAqIHBzdGF0ZSBTQ01fVU5VU0VEKQoreworICBz Y21fcHV0cygiIzwiLCBzX3BvcnQpOworICBzY21fcHV0cyhteV9pbnRlZ2VyX2RyaXZlci5u YW1lLCBzX3BvcnQpOworICBzY21fcHV0cygiIC0gIiwgc19wb3J0KTsKKyAgc2NtX2Rpc3Bs YXkoc2NtX2Zyb21faW50KE1ZX0lOVEVHRVJfREFUQShzbW9iKS0+biksIHNfcG9ydCk7Cisg IHNjbV9wdXRjKCc+Jywgc19wb3J0KTsKKyAgcmV0dXJuIDE7Cit9CisKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq LworCisMCisvKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKiogU01PQiBkcml2ZXI6IG15IGRvdWJsZS4KKyAqKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KKwordHlwZWRlZiBzdHJ1Y3QgbXlfZG91YmxlX2NsaWVudF9kYXRhX3QgeworICBk b3VibGUJbjsKK30gbXlfZG91YmxlX2NsaWVudF9kYXRhX3Q7CisKKy8qIEhlcmUgd2UgdXNl IGFsbCB0aGUgZGVmYXVsdCBmdW5jdGlvbnMuICovCitzdGF0aWMgc2NtX3Rfc3ViX3Ntb2Jf ZGVzY3JpcHRvciBteV9kb3VibGVfZHJpdmVyID0geworICAubmFtZQkJCT0gIm15LWRvdWJs ZSIsCisgIC5jbGllbnRfZGF0YV9zaXplCT0gc2l6ZW9mKG15X2RvdWJsZV9jbGllbnRfZGF0 YV90KSwKKyAgLmZyZWUJCQk9IE5VTEwsCisgIC5lcXVhbHAJCT0gTlVMTCwKKyAgLm1hcmsJ CQk9IE5VTEwsCisgIC5wcmludAkJPSBOVUxMLAorICAuY2xhc3MJCT0gU0NNX0JPT0xfRiwK KyAgLmxpc3Rfb2Zfc3VwZXJzCT0gU0NNX0VPTAorfTsKKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwwK Ky8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqKiBTTU9CIGRyaXZlcjogd3JhcHBlci4KKyAqKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwor dHlwZWRlZiBzdHJ1Y3QgbXlfd3JhcHBlcl9jbGllbnRfZGF0YV90IHsKKyAgU0NNCXdyYXBw ZWQ7Cit9IG15X3dyYXBwZXJfY2xpZW50X2RhdGFfdDsKKworc3RhdGljIHNpemVfdAlteV93 cmFwcGVyX2ZyZWUJCShTQ00gc21vYik7CitzdGF0aWMgU0NNCW15X3dyYXBwZXJfZXF1YWxw CShTQ00gc21vYl9hLCBTQ00gc21vYl9iKTsKK3N0YXRpYyBTQ00JbXlfd3JhcHBlcl9tYXJr CQkoU0NNIHNtb2IpOworc3RhdGljIGludAlteV93cmFwcGVyX3ByaW50CShTQ00gc21vYiwg U0NNIHNfcG9ydCwgc2NtX3ByaW50X3N0YXRlICogcHN0YXRlIFNDTV9VTlVTRUQpOworCisv KiBIZXJlIHdlIHVzZSBtYXJrIGZ1bmN0aW9uLCB0b28uICovCitzdGF0aWMgc2NtX3Rfc3Vi X3Ntb2JfZGVzY3JpcHRvciBteV93cmFwcGVyX2RyaXZlciA9IHsKKyAgLm5hbWUJCQk9ICJt eS13cmFwcGVyIiwKKyAgLmNsaWVudF9kYXRhX3NpemUJPSAwLAorICAuZnJlZQkJCT0gbXlf d3JhcHBlcl9mcmVlLAorICAuZXF1YWxwCQk9IG15X3dyYXBwZXJfZXF1YWxwLAorICAubWFy awkJCT0gbXlfd3JhcHBlcl9tYXJrLAorICAucHJpbnQJCT0gbXlfd3JhcHBlcl9wcmludCwK KyAgLmNsYXNzCQk9IFNDTV9CT09MX0YsCisgIC5saXN0X29mX3N1cGVycwk9IFNDTV9FT0wK K307CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLworCitzaXplX3QKK215X3dyYXBwZXJfZnJlZSAoU0NNIHNt b2IpCit7CisgIG15X3dyYXBwZXJfY2xpZW50X2RhdGFfdCAqCWRhdGEgPSBNWV9XUkFQUEVS X0RBVEEoc21vYik7CisKKyAgc2NtX2djX2ZyZWUoZGF0YSwgc2l6ZW9mKG15X3dyYXBwZXJf Y2xpZW50X2RhdGFfdCksIG15X3dyYXBwZXJfZHJpdmVyLm5hbWUpOworICByZXR1cm4gMDsK K30KK1NDTQorbXlfd3JhcHBlcl9lcXVhbHAgKFNDTSBzbW9iX2EsIFNDTSBzbW9iX2IpCit7 CisgIFNDTQlhID0gTVlfV1JBUFBFUl9EQVRBKHNtb2JfYSktPndyYXBwZWQ7CisgIFNDTQli ID0gTVlfV1JBUFBFUl9EQVRBKHNtb2JfYiktPndyYXBwZWQ7CisKKyAgcmV0dXJuIHNjbV9l cV9wKGEsIGIpOworfQorU0NNCitteV93cmFwcGVyX21hcmsgKFNDTSBzbW9iKQoreworICBT Q00JeCA9IE1ZX1dSQVBQRVJfREFUQShzbW9iKS0+d3JhcHBlZDsKKworICBzY21fZ2NfbWFy ayh4KTsKKyAgcmV0dXJuIFNDTV9CT09MX1Q7Cit9CitpbnQKK215X3dyYXBwZXJfcHJpbnQg KFNDTSBzbW9iLCBTQ00gc19wb3J0LCBzY21fcHJpbnRfc3RhdGUgKiBwc3RhdGUgU0NNX1VO VVNFRCkKK3sKKyAgc2NtX3B1dHMoIiM8Iiwgc19wb3J0KTsKKyAgc2NtX3B1dHMobXlfd3Jh cHBlcl9kcml2ZXIubmFtZSwgc19wb3J0KTsKKyAgc2NtX3B1dHMoIiAtICIsIHNfcG9ydCk7 CisgIHNjbV9kaXNwbGF5KE1ZX1dSQVBQRVJfREFUQShzbW9iKS0+d3JhcHBlZCwgc19wb3J0 KTsKKyAgc2NtX3B1dGMoJz4nLCBzX3BvcnQpOworICByZXR1cm4gMTsKK30KKworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCisKKwwKKy8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqKiBTTU9CIG1ha2Vycy4KKyAqKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K KworU0NNX0RFRklORShzdWJzbW9iX21ha2VfbXlfaW50ZWdlciwgIm1ha2UtbXktaW50ZWdl ciIsCisJICAgMSwgMCwgMCwgKFNDTSBzX2ludGVnZXIpLCAiIikKK3sKKyAgbXlfaW50ZWdl cl9jbGllbnRfZGF0YV90ICoJZGF0YTsKKworICBkYXRhID0gc2NtX2djX21hbGxvYyhzaXpl b2YobXlfaW50ZWdlcl9jbGllbnRfZGF0YV90KSwgbXlfaW50ZWdlcl9kcml2ZXIubmFtZSk7 CisgIGRhdGEtPm4gPSBzY21fdG9faW50KHNfaW50ZWdlcik7CisgIFNDTV9SRVRVUk5fTkVX U1VCU01PQigmbXlfaW50ZWdlcl9kcml2ZXIsIGRhdGEpOworfQorU0NNX0RFRklORShzdWJz bW9iX21ha2VfbXlfZG91YmxlLCAibWFrZS1teS1kb3VibGUiLAorCSAgIDEsIDAsIDAsIChT Q00gc19kb3VibGUpLCAiIikKK3sKKyAgbXlfZG91YmxlX2NsaWVudF9kYXRhX3QgKglkYXRh OworCisgIGRhdGEgPSBzY21fZ2NfbWFsbG9jKHNpemVvZihteV9kb3VibGVfY2xpZW50X2Rh dGFfdCksIG15X2RvdWJsZV9kcml2ZXIubmFtZSk7CisgIGRhdGEtPm4gPSBzY21fdG9fZG91 YmxlKHNfZG91YmxlKTsKKyAgU0NNX1JFVFVSTl9ORVdTVUJTTU9CKCZteV9kb3VibGVfZHJp dmVyLCBkYXRhKTsKK30KK1NDTV9ERUZJTkUoc3Vic21vYl9tYWtlX215X3dyYXBwZXIsICJt YWtlLW15LXdyYXBwZXIiLAorCSAgIDEsIDAsIDAsIChTQ00gc21vYiksICIiKQoreworICBt eV93cmFwcGVyX2NsaWVudF9kYXRhX3QgKglkYXRhOworCisgIGRhdGEgPSBzY21fZ2NfbWFs bG9jKHNpemVvZihteV93cmFwcGVyX2NsaWVudF9kYXRhX3QpLCBteV93cmFwcGVyX2RyaXZl ci5uYW1lKTsKKyAgZGF0YS0+d3JhcHBlZCA9IHNtb2I7CisgIFNDTV9SRVRVUk5fTkVXU1VC U01PQigmbXlfd3JhcHBlcl9kcml2ZXIsIGRhdGEpOworfQorCisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwor DAorLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoqIExpYnJhcnkgaW5pdGlhbGlzYXRpb24uCisgKiogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov CisKK3ZvaWQKK2xpYnRlc3Rfc3Vic21vYl9pbml0ICh2b2lkKQoreworICBTQ00Jc19udW1i ZXJfY2xhc3M7CisKKworICBzX251bWJlcl9jbGFzcyA9IHNjbV92YXJpYWJsZV9yZWYoc2Nt X2NfbG9va3VwKCI8bnVtYmVyPiIpKTsKKyAgbXlfaW50ZWdlcl9kcml2ZXIubGlzdF9vZl9z dXBlcnMgPSBzY21fcGVybWFuZW50X29iamVjdChzY21fbGlzdF8xKHNfbnVtYmVyX2NsYXNz KSk7CisgIG15X2RvdWJsZV9kcml2ZXIubGlzdF9vZl9zdXBlcnMgID0gc2NtX3Blcm1hbmVu dF9vYmplY3Qoc2NtX2xpc3RfMShzX251bWJlcl9jbGFzcykpOworICAvKiBUaGUgd3JhcHBl ciBzbW9iIGhhcyBubyBzdXBlcnMuICovCisKKyAgc2NtX21ha2Vfc3ViX3Ntb2JfdHlwZSgm bXlfaW50ZWdlcl9kcml2ZXIpOworICBzY21fbWFrZV9zdWJfc21vYl90eXBlKCZteV9kb3Vi bGVfZHJpdmVyKTsKKyAgc2NtX21ha2Vfc3ViX3Ntb2JfdHlwZSgmbXlfd3JhcHBlcl9kcml2 ZXIpOworICAKKyAgc2NtX2NfZGVmaW5lKG15X2ludGVnZXJfZHJpdmVyLm5hbWUsIG15X2lu dGVnZXJfZHJpdmVyLmNsYXNzKTsKKyAgc2NtX2NfZGVmaW5lKG15X2RvdWJsZV9kcml2ZXIu bmFtZSwgIG15X2RvdWJsZV9kcml2ZXIuY2xhc3MpOworICBzY21fY19kZWZpbmUobXlfd3Jh cHBlcl9kcml2ZXIubmFtZSwgbXlfd3JhcHBlcl9kcml2ZXIuY2xhc3MpOworCisjaWZuZGVm IFNDTV9NQUdJQ19TTkFSRkVSCisjIGluY2x1ZGUgInRlc3Qtc3Vic21vYi1saWIueCIKKyNl bmRpZgorfQorCisvKiBlbmQgb2YgZmlsZSAqLwo= --_=__=_XaM3_.1196146622.2A.961425.42.17524.52.42.007.22579 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel --_=__=_XaM3_.1196146622.2A.961425.42.17524.52.42.007.22579--