From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mark Laws Newsgroups: gmane.emacs.bugs Subject: bug#19688: [patch] add support for emacs daemon on Windows Date: Mon, 26 Jan 2015 04:18:34 +0900 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8f83941f5fa8ff050d7ee322 X-Trace: ger.gmane.org 1422215955 22576 80.91.229.3 (25 Jan 2015 19:59:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 25 Jan 2015 19:59:15 +0000 (UTC) To: 19688@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jan 25 20:59:14 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YFTKz-0004zC-Tb for geb-bug-gnu-emacs@m.gmane.org; Sun, 25 Jan 2015 20:59:14 +0100 Original-Received: from localhost ([::1]:38717 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFTKz-0003uB-7u for geb-bug-gnu-emacs@m.gmane.org; Sun, 25 Jan 2015 14:59:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFTKu-0003o0-Je for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:59:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YFTKp-0004pt-K8 for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:59:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:37551) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFTKp-0004pg-H7 for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:59:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YFTKo-0007Cb-Le for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:59:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Mark Laws Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Jan 2015 19:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19688 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.142221589427576 (code B ref -1); Sun, 25 Jan 2015 19:59:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Jan 2015 19:58:14 +0000 Original-Received: from localhost ([127.0.0.1]:56243 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YFTK1-0007Af-9V for submit@debbugs.gnu.org; Sun, 25 Jan 2015 14:58:14 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:52842) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YFShs-0005R7-OF for submit@debbugs.gnu.org; Sun, 25 Jan 2015 14:18:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YFShm-0000id-9d for submit@debbugs.gnu.org; Sun, 25 Jan 2015 14:18:43 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:36883) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFShm-0000iZ-6O for submit@debbugs.gnu.org; Sun, 25 Jan 2015 14:18:42 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFShl-000079-5I for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:18:42 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YFShg-0000hC-1G for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:18:41 -0500 Original-Received: from mail-ie0-f181.google.com ([209.85.223.181]:48510) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFShf-0000h6-QV for bug-gnu-emacs@gnu.org; Sun, 25 Jan 2015 14:18:35 -0500 Original-Received: by mail-ie0-f181.google.com with SMTP id rp18so5341926iec.12 for ; Sun, 25 Jan 2015 11:18:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=p4+fYcMstuqf1V1UGudv0j9XbSWhjwdex9e30T8WlpY=; b=aQhawU2agnhzROU/KNwzVSpOQ5dhMAndAT/N/ohDIXWiyIY9NZlX5pu2Cj0iCNwEo1 84pcY7F0hdCVPVXnxVMxTZCw1HUc6GNFvovOq8VCDKhcwW7oeVDuu6FXGD6TKW7be9Yh A5mxNDw2/1HLgIOZIe2spXLIDj2gqOSG6pyvfuuPX1eeYqqarKdKf8ad3m4Wm7t+gIZX elUzPX3foWyIXsFfq5tNpzG/RbOlUZ8JtFtNqmCVoVIud1MZ+fF18v9i2yYOhzGFAmyh wxvm0rZiJB350sBbGWFlsog/R2pC2ZpvRxCQ2gVsBhHzrBQtVdQ8g6uYB49h4307NoKh N5vQ== X-Gm-Message-State: ALoCoQl7jIzYFWEXn7+TCqJJ4Xw2UZsgD/zHWF8YrqsDrpNBz1W/4LJx2JAqZRAgHPQuEUDx9YAE X-Received: by 10.50.30.3 with SMTP id o3mr12808887igh.44.1422213515256; Sun, 25 Jan 2015 11:18:35 -0800 (PST) Original-Received: by 10.64.155.4 with HTTP; Sun, 25 Jan 2015 11:18:34 -0800 (PST) X-Originating-IP: [119.245.8.208] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Mailman-Approved-At: Sun, 25 Jan 2015 14:58:10 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:98725 Archived-At: --e89a8f83941f5fa8ff050d7ee322 Content-Type: text/plain; charset=ISO-8859-1 Hi, I am not on this list so please CC me in any replies. Attached is a patch which should apply cleanly on top of master (a3689d3c661fe36df971c875760f8d500b5ae994 as of this email). It allows Emacs to run as a daemon on Windows. Without daemon mode, emacsclient -a "" does not work, which makes it impossible to pass elisp to Emacs via emacsclient unless Emacs is already running. In other words, this will now work correctly: emacsclient -a "" -e "(ediff-merge-files-with-ancestor ...)" Previously, -a "" produced an error message on Windows. There was no workaround, because: emacs -a emacs -e "(ediff-merge-files-with-ancestor ...)" would start a new Emacs with a buffer called "(ediff-merge-files-with-ancestor ...)". The functionality is identical to the UNIX implementation with one difference: I didn't allow for running multiple/named daemons. The reason I didn't was because the code for that in emacsclient.c took the daemon name from the socket name if one was provided, and because filesystem sockets are not supported on Windows, I couldn't think of a way to provide identical behavior across UNIX and Windows. This patch has been heavily tested against emacs-24 without any issues; it seems to work well against master as well. Thanks to Eli Zaretskii for help with debugging. Cheers, Mark Laws -- |v\ /\ |\ |< |_ /\ \^| // --e89a8f83941f5fa8ff050d7ee322 Content-Type: application/octet-stream; name="emacs-windows-daemon.patch" Content-Disposition: attachment; filename="emacs-windows-daemon.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i5ct3k4h0 ZGlmZiAtLWdpdCBhL2xpYi1zcmMvTWFrZWZpbGUuaW4gYi9saWItc3JjL01ha2VmaWxlLmluCmlu ZGV4IGQyNzA1ZTcuLmIzNGRhYTQgMTAwNjQ0Ci0tLSBhL2xpYi1zcmMvTWFrZWZpbGUuaW4KKysr IGIvbGliLXNyYy9NYWtlZmlsZS5pbgpAQCAtMzg5LDEyICszODksMTYgQEAgbW92ZW1haWwke0VY RUVYVH06ICR7c3JjZGlyfS9tb3ZlbWFpbC5jIHBvcC5vICQoTlRMSUIpICQoY29uZmlnX2gpCiBw b3AubzogJHtzcmNkaXJ9L3BvcC5jICR7c3JjZGlyfS9wb3AuaCAke3NyY2Rpcn0vLi4vbGliL21p bi1tYXguaCAkKGNvbmZpZ19oKQogCSQoQU1fVl9DQykkKENDKSAtYyAke0NQUF9DRkxBR1N9ICR7 TU9WRV9GTEFHU30gJDwKIAotZW1hY3NjbGllbnQke0VYRUVYVH06ICR7c3JjZGlyfS9lbWFjc2Ns aWVudC5jICQoTlRMSUIpICQoY29uZmlnX2gpCitzZXJ2ZXItZ3VpZF9oID0gLi4vc3JjL3NlcnZl ci1ndWlkLmgKKworZW1hY3NjbGllbnQke0VYRUVYVH06ICR7c3JjZGlyfS9lbWFjc2NsaWVudC5j ICQoTlRMSUIpICQoY29uZmlnX2gpIFwKKwkJCSQoc2VydmVyLWd1aWRfaCkKIAkkKEFNX1ZfQ0NM RCkkKENDKSAke0FMTF9DRkxBR1N9ICQ8IFwKIAkgICAtRFZFUlNJT049IlwiJHt2ZXJzaW9ufVwi IiAkKE5UTElCKSAkKExPQURMSUJFUykgJChMSUJfRkRBVEFTWU5DKSBcCiAJICAgJChMSUJfV1NP Q0szMikgJChMSUJTX0VDTElFTlQpIC1vICRACiAKLWVtYWNzY2xpZW50dyR7RVhFRVhUfTogJHtz cmNkaXJ9L2VtYWNzY2xpZW50LmMgJChOVExJQikgJChDTElFTlRSRVMpICQoY29uZmlnX2gpCitl bWFjc2NsaWVudHcke0VYRUVYVH06ICR7c3JjZGlyfS9lbWFjc2NsaWVudC5jICQoTlRMSUIpICQo Q0xJRU5UUkVTKSBcCisJCQkkKGNvbmZpZ19oKSAkKHNlcnZlci1ndWlkX2gpCiAJJChBTV9WX0ND TEQpJChDQykgJHtBTExfQ0ZMQUdTfSAkKENMSUVOVFJFUykgLW13aW5kb3dzICQ8IFwKIAkgICAt RFZFUlNJT049IlwiJHt2ZXJzaW9ufVwiIiAkKExPQURMSUJFUykgJChMSUJfRkRBVEFTWU5DKSBc CiAJICAgJChMSUJfV1NPQ0szMikgJChMSUJTX0VDTElFTlQpIC1vICRACmRpZmYgLS1naXQgYS9s aWItc3JjL2VtYWNzY2xpZW50LmMgYi9saWItc3JjL2VtYWNzY2xpZW50LmMKaW5kZXggYTA0ZGRh Ni4uOWQ0ZjNjZSAxMDA2NDQKLS0tIGEvbGliLXNyYy9lbWFjc2NsaWVudC5jCisrKyBiL2xpYi1z cmMvZW1hY3NjbGllbnQuYwpAQCAtMzMsNiArMzMsOCBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAjIGluY2x1 ZGUgPGlvLmg+CiAjIGluY2x1ZGUgPHdpbnNvY2syLmg+CiAKKyMgaW5jbHVkZSAic2VydmVyLWd1 aWQuaCIKKwogIyBkZWZpbmUgTk9fU09DS0VUU19JTl9GSUxFX1NZU1RFTQogCiAjIGRlZmluZSBI U09DS0VUIFNPQ0tFVApAQCAtNTk1LDEzICs1OTcsNiBAQCBkZWNvZGVfb3B0aW9ucyAoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogICAgICAgZGlzcGxheSA9IE5VTEw7CiAgICAgICB0dHkgPSAxOwog ICAgIH0KLQotICBpZiAoYWx0ZXJuYXRlX2VkaXRvciAmJiBhbHRlcm5hdGVfZWRpdG9yWzBdID09 ICdcMCcpCi0gICAgewotICAgICAgbWVzc2FnZSAodHJ1ZSwgIi0tYWx0ZXJuYXRlLWVkaXRvciBh cmd1bWVudCBvciBBTFRFUk5BVEVfRURJVE9SIHZhcmlhYmxlIGNhbm5vdCBiZVxuXAotYW4gZW1w dHkgc3RyaW5nIik7Ci0gICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwotICAgIH0KICNlbmRpZiAv KiBXSU5ET1dTTlQgKi8KIH0KIApAQCAtNjQyLDEwICs2MzcsOCBAQCBUaGUgZm9sbG93aW5nIE9Q VElPTlMgYXJlIGFjY2VwdGVkOlxuXAogCQkJU2V0IGZpbGVuYW1lIG9mIHRoZSBUQ1AgYXV0aGVu dGljYXRpb24gZmlsZVxuXAogLWEgRURJVE9SLCAtLWFsdGVybmF0ZS1lZGl0b3I9RURJVE9SXG5c CiAJCQlFZGl0b3IgdG8gZmFsbGJhY2sgdG8gaWYgdGhlIHNlcnZlciBpcyBub3QgcnVubmluZ1xu IgotI2lmbmRlZiBXSU5ET1dTTlQKICIJCQlJZiBFRElUT1IgaXMgdGhlIGVtcHR5IHN0cmluZywg c3RhcnQgRW1hY3MgaW4gZGFlbW9uXG5cCiAJCQltb2RlIGFuZCB0cnkgY29ubmVjdGluZyBhZ2Fp blxuIgotI2VuZGlmIC8qIG5vdCBXSU5ET1dTTlQgKi8KICJcblwKIFJlcG9ydCBidWdzIHdpdGgg TS14IHJlcG9ydC1lbWFjcy1idWcuXG4iKTsKICAgZXhpdCAoRVhJVF9TVUNDRVNTKTsKQEAgLTE0 NTksOSArMTQ1Miw1NyBAQCB3MzJfZ2l2ZV9mb2N1cyAodm9pZCkKIC8qIFN0YXJ0IHRoZSBlbWFj cyBkYWVtb24gYW5kIHRyeSB0byBjb25uZWN0IHRvIGl0LiAgKi8KIAogc3RhdGljIHZvaWQKK2Nv bm5lY3RfdG9fZW1hY3Nfc29ja2V0ICh2b2lkKQoreworI2lmZGVmIFdJTkRPV1NOVAorICAvKiBJ dCdzIGp1c3QgYSBwcm9ncmVzcyBtZXNzYWdlLCBzbyBkb24ndCBwb3AgYSBkaWFsb2cgaWYgdGhp cyBpcworICAgICBlbWFjc2NsaWVudHcuICAqLworICBpZiAoIXczMl93aW5kb3dfYXBwICgpKQor I2VuZGlmCisgIG1lc3NhZ2UgKHRydWUsICJFbWFjcyBkYWVtb24gc2hvdWxkIGhhdmUgc3RhcnRl ZCwgdHJ5aW5nIHRvIGNvbm5lY3QgYWdhaW5cbiIpOworICBpZiAoKGVtYWNzX3NvY2tldCA9IHNl dF9zb2NrZXQgKDEpKSA9PSBJTlZBTElEX1NPQ0tFVCkKKyAgICB7CisgICAgICBtZXNzYWdlICh0 cnVlLCAiRXJyb3I6IENhbm5vdCBjb25uZWN0IGV2ZW4gYWZ0ZXIgc3RhcnRpbmcgdGhlIEVtYWNz IGRhZW1vblxuIik7CisgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOworICAgIH0KK30KKworc3Rh dGljIHZvaWQKIHN0YXJ0X2RhZW1vbl9hbmRfcmV0cnlfc2V0X3NvY2tldCAodm9pZCkKIHsKLSNp Zm5kZWYgV0lORE9XU05UCisjaWZkZWYgV0lORE9XU05UCisgIERXT1JEIHdhaXRfcmVzdWx0Owor ICBIQU5ETEUgdzMyX2RhZW1vbl9ldmVudDsKKyAgU1RBUlRVUElORk8gc2k7CisgIFBST0NFU1Nf SU5GT1JNQVRJT04gcGk7CisKKyAgWmVyb01lbW9yeSAoJnNpLCBzaXplb2Ygc2kpOworICBzaS5j YiA9IHNpemVvZiBzaTsKKyAgWmVyb01lbW9yeSAoJnBpLCBzaXplb2YgcGkpOworCisgIGlmICgh Q3JlYXRlUHJvY2VzcyAoTlVMTCwgImVtYWNzIC0tZGFlbW9uIiwgTlVMTCwgTlVMTCwgRkFMU0Us CisgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX05PX1dJTkRPVywgTlVMTCwgTlVMTCwgJnNp LCAmcGkpKQorICAgIHsKKyAgICAgIG1lc3NhZ2UgKHRydWUsICIlczogZXJyb3Igc3RhcnRpbmcg ZW1hY3MgZGFlbW9uXG4iLCBwcm9nbmFtZSk7CisgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwor ICAgIH0KKworICB3MzJfZGFlbW9uX2V2ZW50ID0gQ3JlYXRlRXZlbnQgKE5VTEwsIFRSVUUsIEZB TFNFLCBXMzJfRU1BQ1NfU0VSVkVSX0dVSUQpOworICBpZiAodzMyX2RhZW1vbl9ldmVudCA9PSBO VUxMKQorICAgIHsKKyAgICAgIG1lc3NhZ2UgKHRydWUsICJDb3VsZG4ndCBjcmVhdGUgV2luZG93 cyBkYWVtb24gZXZlbnQiKTsKKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisgICAgfQorICBp ZiAoV2FpdEZvclNpbmdsZU9iamVjdCAodzMyX2RhZW1vbl9ldmVudCwgSU5GSU5JVEUpICE9IFdB SVRfT0JKRUNUXzApCisgICAgeworICAgICAgbWVzc2FnZSAodHJ1ZSwgIkVycm9yIHdoaWxlIHdh aXRpbmcgZm9yIFdpbmRvd3MgZGFlbW9uIGV2ZW50Iik7CisgICAgICBleGl0IChFWElUX0ZBSUxV UkUpOworICAgIH0KKyAgQ2xvc2VIYW5kbGUgKHczMl9kYWVtb25fZXZlbnQpOworCisgIC8qIFRy eSBjb25uZWN0aW5nLCB0aGUgZGFlbW9uIHNob3VsZCBoYXZlIHN0YXJ0ZWQgYnkgbm93LiAgKi8K KyAgY29ubmVjdF90b19lbWFjc19zb2NrZXQgKCk7CisjZWxpZiAhZGVmaW5lZChXSU5ET1dTTlQp CiAgIHBpZF90IGRwaWQ7CiAgIGludCBzdGF0dXM7CiAKQEAgLTE0NzksMTIgKzE1MjAsNyBAQCBz dGFydF9kYWVtb25fYW5kX3JldHJ5X3NldF9zb2NrZXQgKHZvaWQpCiAJfQogCiAgICAgICAvKiBU cnkgY29ubmVjdGluZywgdGhlIGRhZW1vbiBzaG91bGQgaGF2ZSBzdGFydGVkIGJ5IG5vdy4gICov Ci0gICAgICBtZXNzYWdlICh0cnVlLCAiRW1hY3MgZGFlbW9uIHNob3VsZCBoYXZlIHN0YXJ0ZWQs IHRyeWluZyB0byBjb25uZWN0IGFnYWluXG4iKTsKLSAgICAgIGlmICgoZW1hY3Nfc29ja2V0ID0g c2V0X3NvY2tldCAoMSkpID09IElOVkFMSURfU09DS0VUKQotCXsKLQkgIG1lc3NhZ2UgKHRydWUs ICJFcnJvcjogQ2Fubm90IGNvbm5lY3QgZXZlbiBhZnRlciBzdGFydGluZyB0aGUgRW1hY3MgZGFl bW9uXG4iKTsKLQkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0JfQorICAgICAgY29ubmVjdF90b19l bWFjc19zb2NrZXQgKCk7CiAgICAgfQogICBlbHNlIGlmIChkcGlkIDwgMCkKICAgICB7CkBAIC0x NTExLDcgKzE1NDcsNyBAQCBzdGFydF9kYWVtb25fYW5kX3JldHJ5X3NldF9zb2NrZXQgKHZvaWQp CiAgICAgICBleGVjdnAgKCJlbWFjcyIsIGRfYXJndik7CiAgICAgICBtZXNzYWdlICh0cnVlLCAi JXM6IGVycm9yIHN0YXJ0aW5nIGVtYWNzIGRhZW1vblxuIiwgcHJvZ25hbWUpOwogICAgIH0KLSNl bmRpZiAvKiBXSU5ET1dTTlQgKi8KKyNlbmRpZiAvKiAhV0lORE9XU05UICovCiB9CiAKIGludApk aWZmIC0tZ2l0IGEvbGlzcC9mcmFtZS5lbCBiL2xpc3AvZnJhbWUuZWwKaW5kZXggMWQ1YmJmMi4u MjNiYmMwZCAxMDA2NDQKLS0tIGEvbGlzcC9mcmFtZS5lbAorKysgYi9saXNwL2ZyYW1lLmVsCkBA IC01MzYsNyArNTM2LDggQEAgaXMgbm90IGNvbnNpZGVyZWQgKHNlZSBgbmV4dC1mcmFtZScpLiIK IFJldHVybiBuaWwgaWYgd2UgZG9uJ3Qga25vdyBob3cgdG8gaW50ZXJwcmV0IERJU1BMQVkuIgog ICA7OyBNUy1XaW5kb3dzIGRvZXNuJ3Qga25vdyBob3cgdG8gY3JlYXRlIGEgR1VJIGZyYW1lIGlu IGEgLW53IHNlc3Npb24uCiAgIChpZiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkK LQkgICAobnVsbCAod2luZG93LXN5c3RlbSkpKQorCSAgIChudWxsICh3aW5kb3ctc3lzdGVtKSkK KwkgICAobm90IChkYWVtb25wKSkpCiAgICAgICBuaWwKICAgICAoY2wtbG9vcCBmb3IgZGVzY3Jp cHRvciBpbiBkaXNwbGF5LWZvcm1hdC1hbGlzdAogCSAgICAgZm9yIHBhdHRlcm4gPSAoY2FyIGRl c2NyaXB0b3IpCmRpZmYgLS1naXQgYS9saXNwL2ZyYW1lc2V0LmVsIGIvbGlzcC9mcmFtZXNldC5l bAppbmRleCA0YTA2Mzc0Li4xN2ZlMzliIDEwMDY0NAotLS0gYS9saXNwL2ZyYW1lc2V0LmVsCisr KyBiL2xpc3AvZnJhbWVzZXQuZWwKQEAgLTEwMjIsOCArMTAyMiw4IEBAIEludGVybmFsIHVzZSBv bmx5LiIKIChkZWZ1biBmcmFtZXNldC1rZWVwLW9yaWdpbmFsLWRpc3BsYXktcCAoZm9yY2UtZGlz cGxheSkKICAgIlRydWUgaWYgc2F2ZWQgZnJhbWVzJyBkaXNwbGF5cyBzaG91bGQgYmUgaG9ub3Jl ZC4KIEZvciB0aGUgbWVhbmluZyBvZiBGT1JDRS1ESVNQTEFZLCBzZWUgYGZyYW1lc2V0LXJlc3Rv cmUnLiIKLSAgKGNvbmQgKChkYWVtb25wKSB0KQotCSgoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3Mt bnQpIG5pbCkgOzsgRG9lcyBucyBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgZGlzcGxheT8KKyAgKGNv bmQgKChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkgbmlsKSA7OyBEb2VzIG5zIHN1cHBvcnQg bW9yZSB0aGFuIG9uZSBkaXNwbGF5PworCSgoZGFlbW9ucCkgdCkKIAkodCAobm90IGZvcmNlLWRp c3BsYXkpKSkpCiAKIChkZWZ1biBmcmFtZXNldC1taW5pYnVmZmVybGVzcy1maXJzdC1wIChmcmFt ZTEgX2ZyYW1lMikKZGlmZiAtLWdpdCBhL2xpc3Avc2VydmVyLmVsIGIvbGlzcC9zZXJ2ZXIuZWwK aW5kZXggMTY2Y2Q0NC4uOTU4NWIxNyAxMDA2NDQKLS0tIGEvbGlzcC9zZXJ2ZXIuZWwKKysrIGIv bGlzcC9zZXJ2ZXIuZWwKQEAgLTExMzksOSArMTEzOSwxMiBAQCBUaGUgZm9sbG93aW5nIGNvbW1h bmRzIGFyZSBhY2NlcHRlZCBieSB0aGUgY2xpZW50OgogICAgICAgICAgICAgICAgICA7OyBmcmFt ZS4gIElmIHJ1bm5pbmcgYSBHVUkgc2VydmVyLCBmb3JjZSB0aGUgZnJhbWUKICAgICAgICAgICAg ICAgICAgOzsgdHlwZSB0byBHVUkuICAoQ3lnd2luIGlzIHBlcmZlY3RseSBoYXBweSB3aXRoCiAg ICAgICAgICAgICAgICAgIDs7IG11bHRpLXR0eSBzdXBwb3J0LCBzbyBkb24ndCBvdmVycmlkZSB0 aGUgdXNlcidzCi0gICAgICAgICAgICAgICAgIDs7IGNob2ljZSB0aGVyZS4pCisgICAgICAgICAg ICAgICAgIDs7IGNob2ljZSB0aGVyZS4pICBJbiBkYWVtb24gbW9kZSBvbiBXaW5kb3dzLCB3ZSBj YW4ndAorICAgICAgICAgICAgICAgICA7OyBtYWtlIHR0eSBmcmFtZXMsIHNvIGZvcmNlIHRoZSBm cmFtZSB0eXBlIHRvIEdVSQorICAgICAgICAgICAgICAgICA7OyB0aGVyZSB0b28uCiAgICAgICAg ICAgICAgICAgICh3aGVuIChhbmQgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcSB3aW5kb3ctc3lzdGVtICd3MzIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvciAoZGFlbW9ucCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxIHdpbmRvdy1zeXN0ZW0gJ3czMikpKQogICAgICAgICAgICAgICAgICAgIChw dXNoICItd2luZG93LXN5c3RlbSIgYXJncy1sZWZ0KSkpCiAKICAgICAgICAgICAgICAgICA7OyAt cG9zaXRpb24gTElORVs6Q09MVU1OXTogIFNldCBwb2ludCB0byB0aGUgZ2l2ZW4KQEAgLTEyMTUs NyArMTIxOCwxMCBAQCBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBhY2NlcHRlZCBieSB0aGUg Y2xpZW50OgogCQkJCQkgICB0ZXJtaW5hbC1mcmFtZSkpKSkpCiAJCSAgICAoc2V0cSB0dHktbmFt ZSBuaWwgdHR5LXR5cGUgbmlsKQogCQkgICAgKGlmIGRpc3BsYXkgKHNlcnZlci1zZWxlY3QtZGlz cGxheSBkaXNwbGF5KSkpCi0JCSAgICgoZXEgdHR5LW5hbWUgJ3dpbmRvdy1zeXN0ZW0pCisJCSAg ICgob3IgKGFuZCAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCisJCQkgICAgIChkYWVtb25w KQorCQkJICAgICAoc2V0cSBkaXNwbGF5ICJ3MzIiKSkKKwkJICAgICAgICAoZXEgdHR5LW5hbWUg J3dpbmRvdy1zeXN0ZW0pKQogCQkgICAgKHNlcnZlci1jcmVhdGUtd2luZG93LXN5c3RlbS1mcmFt ZSBkaXNwbGF5IG5vd2FpdCBwcm9jCiAJCQkJCQkgICAgICAgcGFyZW50LWlkCiAJCQkJCQkgICAg ICAgZnJhbWUtcGFyYW1ldGVycykpCmRpZmYgLS1naXQgYS9zcmMvZGlzcG5ldy5jIGIvc3JjL2Rp c3BuZXcuYwppbmRleCAzYzgxMTdlLi5lODZmYmI4IDEwMDY0NAotLS0gYS9zcmMvZGlzcG5ldy5j CisrKyBiL3NyYy9kaXNwbmV3LmMKQEAgLTU5NzQsOSArNTk3NCwxMiBAQCBpbml0X2Rpc3BsYXkg KHZvaWQpCiAgICAgfQogI2VuZGlmIC8qIFNJR1dJTkNIICovCiAKLSAgLyogSWYgcnVubmluZyBh cyBhIGRhZW1vbiwgbm8gbmVlZCB0byBpbml0aWFsaXplIGFueSBmcmFtZXMvdGVybWluYWwuICov CisgIC8qIElmIHJ1bm5pbmcgYXMgYSBkYWVtb24sIG5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbnkg ZnJhbWVzL3Rlcm1pbmFsLAorICAgICBleGNlcHQgb24gV2luZG93cywgd2hlcmUgd2UgYXQgbGVh c3Qgd2FudCB0byBpbml0aWFsaXplIGl0LiAgKi8KKyNpZm5kZWYgV0lORE9XU05UCiAgIGlmIChJ U19EQUVNT04pCiAgICAgICByZXR1cm47CisjZW5kaWYKIAogICAvKiBJZiB0aGUgdXNlciB3YW50 cyB0byB1c2UgYSB3aW5kb3cgc3lzdGVtLCB3ZSBzaG91bGRuJ3QgYm90aGVyCiAgICAgIGluaXRp YWxpemluZyB0aGUgdGVybWluYWwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHdoZW4g dGhlCmRpZmYgLS1naXQgYS9zcmMvZW1hY3MuYyBiL3NyYy9lbWFjcy5jCmluZGV4IDM0NWZlM2Uu LjgyMjdlYjAgMTAwNjQ0Ci0tLSBhL3NyYy9lbWFjcy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC0z OSw2ICszOSw3IEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlIDxtYnN0cmluZy5oPgogI2luY2x1 ZGUgInczMi5oIgogI2luY2x1ZGUgInczMmhlYXAuaCIKKyNpbmNsdWRlICJzZXJ2ZXItZ3VpZC5o IgogI2VuZGlmCiAKICNpZiBkZWZpbmVkIFdJTkRPV1NOVCB8fCBkZWZpbmVkIEhBVkVfTlRHVUkK QEAgLTE5NSw5ICsxOTYsMTUgQEAgYm9vbCBub19zaXRlX2xpc3A7CiAvKiBOYW1lIGZvciB0aGUg c2VydmVyIHN0YXJ0ZWQgYnkgdGhlIGRhZW1vbi4qLwogc3RhdGljIGNoYXIgKmRhZW1vbl9uYW1l OwogCisjaWZuZGVmIFdJTkRPV1NOVAogLyogUGlwZSB1c2VkIHRvIHNlbmQgZXhpdCBub3RpZmlj YXRpb24gdG8gdGhlIGRhZW1vbiBwYXJlbnQgYXQKICAgIHN0YXJ0dXAuICAqLwogaW50IGRhZW1v bl9waXBlWzJdOworI2Vsc2UKK2Jvb2wgdzMyX2lzX2RhZW1vbjsKK2Jvb2wgdzMyX2RhZW1vbl9p c19pbml0aWFsaXplZDsKK3N0YXRpYyBIQU5ETEUgdzMyX2RhZW1vbl9ldmVudDsKKyNlbmRpZgog CiAvKiBTYXZlIGFyZ3YgYW5kIGFyZ2MuICAqLwogY2hhciAqKmluaXRpYWxfYXJndjsKQEAgLTk4 MCw4ICs5ODcsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgZXhpdCAo MCk7CiAgICAgfQogCisjaWZuZGVmIFdJTkRPV1NOVAogICAvKiBNYWtlIHN1cmUgSVNfREFFTU9O IHN0YXJ0cyB1cCBhcyBmYWxzZS4gICovCiAgIGRhZW1vbl9waXBlWzFdID0gMDsKKyNlbmRpZgog CiAgIGlmIChhcmdtYXRjaCAoYXJndiwgYXJnYywgIi1kYWVtb24iLCAiLS1kYWVtb24iLCA1LCBO VUxMLCAmc2tpcF9hcmdzKQogICAgICAgfHwgYXJnbWF0Y2ggKGFyZ3YsIGFyZ2MsICItZGFlbW9u IiwgIi0tZGFlbW9uIiwgNSwgJmRuYW1lX2FyZywgJnNraXBfYXJncykpCkBAIC0xMTExLDEwICsx MTIwLDEyIEBAIFVzaW5nIGFuIEVtYWNzIGNvbmZpZ3VyZWQgd2l0aCAtLXdpdGgteC10b29sa2l0 PWx1Y2lkIGRvZXMgbm90IGhhdmUgdGhpcyBwcm9ibGVtCiAgICAgICBlbWFjc19jbG9zZSAoZGFl bW9uX3BpcGVbMF0pOwogCiAgICAgICBzZXRzaWQgKCk7Ci0jZWxzZSAvKiBET1NfTlQgKi8KKyNl bGlmIGRlZmluZWQoV0lORE9XU05UKQorICAgICAgdzMyX2lzX2RhZW1vbiA9IDE7CisjZWxzZSAv KiBNU0RPUyAqLwogICAgICAgZnByaW50ZiAoc3RkZXJyLCAiVGhpcyBwbGF0Zm9ybSBkb2VzIG5v dCBzdXBwb3J0IHRoZSAtZGFlbW9uIGZsYWcuXG4iKTsKICAgICAgIGV4aXQgKDEpOwotI2VuZGlm IC8qIERPU19OVCAqLworI2VuZGlmIC8qIE1TRE9TICovCiAgICAgfQogCiAjaWYgZGVmaW5lZCBI QVZFX1BUSFJFQUQgJiYgIWRlZmluZWQgU1lTVEVNX01BTExPQyBcCkBAIC0yMzEwLDIzICsyMzIx LDQ1IEBAIElmIHRoZSBkYWVtb24gd2FzIGdpdmVuIGEgbmFtZSBhcmd1bWVudCwgcmV0dXJuIHRo YXQgbmFtZS4gKi8pCiAgICAgcmV0dXJuIFFuaWw7CiB9CiAKK3N0YXRpYyB2b2lkCitkYWVtb25f Y2hlY2tfcHJlY29uZGl0aW9ucyAodm9pZCkKK3sKKyAgaWYgKCFJU19EQUVNT04pCisgICAgZXJy b3IgKCJUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBlbWFjcyBpcyBydW4gYXMg YSBkYWVtb24iKTsKKworI2lmZGVmIFdJTkRPV1NOVAorICBpZiAodzMyX2RhZW1vbl9pc19pbml0 aWFsaXplZCkKKyNlbHNlCisgIGlmIChkYWVtb25fcGlwZVsxXSA8IDAgKQorI2VuZGlmCisgICAg ZXJyb3IgKCJUaGUgZGFlbW9uIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQiKTsKKworICBp ZiAoTklMUCAoVmFmdGVyX2luaXRfdGltZSkpCisgICAgZXJyb3IgKCJUaGlzIGZ1bmN0aW9uIGNh biBvbmx5IGJlIGNhbGxlZCBhZnRlciBsb2FkaW5nIHRoZSBpbml0IGZpbGVzIik7Cit9CisKIERF RlVOICgiZGFlbW9uLWluaXRpYWxpemVkIiwgRmRhZW1vbl9pbml0aWFsaXplZCwgU2RhZW1vbl9p bml0aWFsaXplZCwgMCwgMCwgMCwKICAgICAgICBkb2M6IC8qIE1hcmsgdGhlIEVtYWNzIGRhZW1v biBhcyBiZWluZyBpbml0aWFsaXplZC4KIFRoaXMgZmluaXNoZXMgdGhlIGRhZW1vbml6YXRpb24g cHJvY2VzcyBieSBkb2luZyB0aGUgb3RoZXIgaGFsZiBvZiBkZXRhY2hpbmcKIGZyb20gdGhlIHBh cmVudCBwcm9jZXNzIGFuZCBpdHMgdHR5IGZpbGUgZGVzY3JpcHRvcnMuICAqLykKICAgKHZvaWQp CiB7CisjaWZkZWYgV0lORE9XU05UCisgIGRhZW1vbl9jaGVja19wcmVjb25kaXRpb25zICgpOwor CisgIHczMl9kYWVtb25fZXZlbnQgPSBDcmVhdGVFdmVudCAoTlVMTCwgVFJVRSwgRkFMU0UsIFcz Ml9FTUFDU19TRVJWRVJfR1VJRCk7CisgIGlmICh3MzJfZGFlbW9uX2V2ZW50ID09IE5VTEwpCisg ICAgZXJyb3IgKCJDb3VsZG4ndCBjcmVhdGUgZXZlbnQgZm9yIFdpbmRvd3MgZGFlbW9uIik7Cisg IGlmIChHZXRMYXN0RXJyb3IgKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFMpCisgICAgLyogU2ln bmFsIHRoZSB3YWl0aW5nIGVtYWNzY2xpZW50IHByb2Nlc3MuICAqLworICAgIFNldEV2ZW50ICh3 MzJfZGFlbW9uX2V2ZW50KTsKKyAgQ2xvc2VIYW5kbGUgKHczMl9kYWVtb25fZXZlbnQpOworICB3 MzJfZGFlbW9uX2lzX2luaXRpYWxpemVkID0gdHJ1ZTsKKyNlbHNlCiAgIGludCBuZmQ7CiAgIGJv b2wgZXJyID0gMDsKIAotICBpZiAoIUlTX0RBRU1PTikKLSAgICBlcnJvciAoIlRoaXMgZnVuY3Rp b24gY2FuIG9ubHkgYmUgY2FsbGVkIGlmIGVtYWNzIGlzIHJ1biBhcyBhIGRhZW1vbiIpOwotCi0g IGlmIChkYWVtb25fcGlwZVsxXSA8IDApCi0gICAgZXJyb3IgKCJUaGUgZGFlbW9uIGhhcyBhbHJl YWR5IGJlZW4gaW5pdGlhbGl6ZWQiKTsKLQotICBpZiAoTklMUCAoVmFmdGVyX2luaXRfdGltZSkp Ci0gICAgZXJyb3IgKCJUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBhZnRlciBsb2Fk aW5nIHRoZSBpbml0IGZpbGVzIik7CisgIGRhZW1vbl9jaGVja19wcmVjb25kaXRpb25zICgpOwog CiAgIC8qIEdldCByaWQgb2Ygc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyLiAgKi8KICAgbmZkID0g ZW1hY3Nfb3BlbiAoIi9kZXYvbnVsbCIsIE9fUkRXUiwgMCk7CkBAIC0yMzUwLDYgKzIzODMsNyBA QCBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyBhbmQgaXRzIHR0eSBmaWxlIGRlc2NyaXB0b3JzLiAg Ki8pCiAKICAgaWYgKGVycikKICAgICBlcnJvciAoIkkvTyBlcnJvciBkdXJpbmcgZGFlbW9uIGlu aXRpYWxpemF0aW9uIik7CisjZW5kaWYKICAgcmV0dXJuIFF0OwogfQogCmRpZmYgLS1naXQgYS9z cmMva2V5Ym9hcmQuYyBiL3NyYy9rZXlib2FyZC5jCmluZGV4IDM4M2MxMDkuLmZhYzk2MTUgMTAw NjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC0zODI5LDcg KzM4MjksMTEgQEAga2JkX2J1ZmZlcl9nZXRfZXZlbnQgKEtCT0FSRCAqKmticCwKICAgaWYgKG5v bmludGVyYWN0aXZlCiAgICAgICAvKiBJbiBjYXNlIHdlIGFyZSBydW5uaW5nIGFzIGEgZGFlbW9u LCBvbmx5IGRvIHRoaXMgYmVmb3JlCiAJIGRldGFjaGluZyBmcm9tIHRoZSB0ZXJtaW5hbC4gICov CisjaWZkZWYgV0lORE9XU05UCisgICAgICB8fCAoSVNfREFFTU9OICYmICF3MzJfZGFlbW9uX2lz X2luaXRpYWxpemVkKSkKKyNlbHNlCiAgICAgICB8fCAoSVNfREFFTU9OICYmIGRhZW1vbl9waXBl WzFdID49IDApKQorI2VuZGlmCiAgICAgewogICAgICAgaW50IGMgPSBnZXRjaGFyICgpOwogICAg ICAgWFNFVElOVCAob2JqLCBjKTsKZGlmZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlzcC5o CmluZGV4IGY1MjQyYWIuLmY5ZTVkYzQgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysrIGIvc3Jj L2xpc3AuaApAQCAtNDIxNSw5ICs0MjE1LDE1IEBAIGV4dGVybiBib29sIG5vbmludGVyYWN0aXZl OwogZXh0ZXJuIGJvb2wgbm9fc2l0ZV9saXNwOwogCiAvKiBQaXBlIHVzZWQgdG8gc2VuZCBleGl0 IG5vdGlmaWNhdGlvbiB0byB0aGUgZGFlbW9uIHBhcmVudCBhdAotICAgc3RhcnR1cC4gICovCisg ICBzdGFydHVwLiAgT24gV2luZG93cywgd2UgdXNlIGEga2VybmVsIGV2ZW50IGluc3RlYWQuICAq LworI2lmbmRlZiBXSU5ET1dTTlQKIGV4dGVybiBpbnQgZGFlbW9uX3BpcGVbMl07CiAjZGVmaW5l IElTX0RBRU1PTiAoZGFlbW9uX3BpcGVbMV0gIT0gMCkKKyNlbGlmIGRlZmluZWQoV0lORE9XU05U KQorZXh0ZXJuIGJvb2wgdzMyX2lzX2RhZW1vbjsKK2V4dGVybiBib29sIHczMl9kYWVtb25faXNf aW5pdGlhbGl6ZWQ7CisjZGVmaW5lIElTX0RBRU1PTiAodzMyX2lzX2RhZW1vbiAhPSAwKQorI2Vu ZGlmCiAKIC8qIFRydWUgaWYgaGFuZGxpbmcgYSBmYXRhbCBlcnJvciBhbHJlYWR5LiAgKi8KIGV4 dGVybiBib29sIGZhdGFsX2Vycm9yX2luX3Byb2dyZXNzOwpkaWZmIC0tZ2l0IGEvc3JjL21pbmli dWYuYyBiL3NyYy9taW5pYnVmLmMKaW5kZXggMzQwOGJiOS4uM2RjZWIyNyAxMDA2NDQKLS0tIGEv c3JjL21pbmlidWYuYworKysgYi9zcmMvbWluaWJ1Zi5jCkBAIC00NTksNyArNDU5LDExIEBAIHJl YWRfbWluaWJ1ZiAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBpbml0aWFsLCBMaXNwX09i amVjdCBwcm9tcHQsCiAgIGlmICgobm9uaW50ZXJhY3RpdmUKICAgICAgICAvKiBJbiBjYXNlIHdl IGFyZSBydW5uaW5nIGFzIGEgZGFlbW9uLCBvbmx5IGRvIHRoaXMgYmVmb3JlCiAJICBkZXRhY2hp bmcgZnJvbSB0aGUgdGVybWluYWwuICAqLworI2lmZGVmIFdJTkRPV1NOVAorICAgICAgIHx8IChJ U19EQUVNT04gJiYgIXczMl9kYWVtb25faXNfaW5pdGlhbGl6ZWQpKQorI2Vsc2UKICAgICAgICB8 fCAoSVNfREFFTU9OICYmIChkYWVtb25fcGlwZVsxXSA+PSAwKSkpCisjZW5kaWYKICAgICAgICYm IE5JTFAgKFZleGVjdXRpbmdfa2JkX21hY3JvKSkKICAgICB7CiAgICAgICB2YWwgPSByZWFkX21p bmlidWZfbm9uaW50ZXJhY3RpdmUgKG1hcCwgaW5pdGlhbCwgcHJvbXB0LApkaWZmIC0tZ2l0IGEv c3JjL3NlcnZlci1ndWlkLmggYi9zcmMvc2VydmVyLWd1aWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hNThlYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NlcnZlci1n dWlkLmgKQEAgLTAsMCArMSwyNSBAQAorLyogRXZlbnQgR1VJRCBmb3Igd2hlbiBlbWFjc2NsaWVu dCBzdGFydHMgdGhlIEVtYWNzIGRhZW1vbiBvbiBXaW5kb3dzLgorCitDb3B5cmlnaHQgKEMpIDE5 ODYtMTk4NywgMTk5NCwgMTk5OS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CitUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKK0dOVSBFbWFjcyBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK0dOVSBF bWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgU0VSVkVSX0dVSURfSAorI2Rl ZmluZSBTRVJWRVJfR1VJRF9ICisKKyNkZWZpbmUgVzMyX0VNQUNTX1NFUlZFUl9HVUlEICJ7MEI4 RTVEQ0ItRDdDRi00NDIzLUE5RjEtMkY2OTI3RjBEMzE4fSIKKworI2VuZGlmCg== --e89a8f83941f5fa8ff050d7ee322--