From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Malcolm Newsgroups: gmane.emacs.bugs Subject: bug#25987: 25.2; support gcc fixit notes Date: Tue, 20 Oct 2020 10:52:05 -0400 Message-ID: <8666386379d22239075d9237f00f40469c5be454.camel@redhat.com> References: <87lgsj1jle.fsf@tromey.com> <1521218887.2913.237.camel@redhat.com> <83muz7pyde.fsf@gnu.org> <83o8lf9p68.fsf@gnu.org> <26f277bb345f10efe6340ac4074960905064fc97.camel@redhat.com> <83362i2nul.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-4h98EPL4w39tKOwjGwZm" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30759"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Evolution 3.36.5 (3.36.5-1.fc32) Cc: 25987@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Oct 20 16:54:52 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kUt2K-0007qQ-0e for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 20 Oct 2020 16:54:52 +0200 Original-Received: from localhost ([::1]:51768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUt2J-0005Qn-2m for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 20 Oct 2020 10:54:51 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUt0Y-0003s4-GP for bug-gnu-emacs@gnu.org; Tue, 20 Oct 2020 10:53:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34782) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kUt0Y-0003lU-5W for bug-gnu-emacs@gnu.org; Tue, 20 Oct 2020 10:53:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kUt0Y-0001jQ-2Z for bug-gnu-emacs@gnu.org; Tue, 20 Oct 2020 10:53:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: David Malcolm Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Oct 2020 14:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25987 X-GNU-PR-Package: emacs Original-Received: via spool by 25987-submit@debbugs.gnu.org id=B25987.16032055416604 (code B ref 25987); Tue, 20 Oct 2020 14:53:02 +0000 Original-Received: (at 25987) by debbugs.gnu.org; 20 Oct 2020 14:52:21 +0000 Original-Received: from localhost ([127.0.0.1]:46328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kUszp-0001iO-Iz for submit@debbugs.gnu.org; Tue, 20 Oct 2020 10:52:21 -0400 Original-Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:38535) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kUszl-0001iE-EE for 25987@debbugs.gnu.org; Tue, 20 Oct 2020 10:52:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603205533; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=UucMi9sLcjj/0VxJsNzJiYLKciIRiAJ9co28cY4JaSU=; b=E/Hi/IAHny6g7Wdu0hH+1N26vAzlCaHOO19Z7hFd5G1+Qap0GlAbgfYvd4e11lKzNaSaIX JgIS5GxpfI7XuaPxv0UPgrPryXtcD4INvGu5+zY1KvRKZeL6Yqnj2C9EA+LwIXzmK6vvS5 7vBa/f5MWWuvv+jN01xYGxATesEHNDI= Original-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-414-Z7YtNQd5OF-hl1qrWKUCyQ-1; Tue, 20 Oct 2020 10:52:08 -0400 X-MC-Unique: Z7YtNQd5OF-hl1qrWKUCyQ-1 Original-Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 045AC57052; Tue, 20 Oct 2020 14:52:07 +0000 (UTC) Original-Received: from ovpn-112-135.phx2.redhat.com (ovpn-112-135.phx2.redhat.com [10.3.112.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id 617AA10013C1; Tue, 20 Oct 2020 14:52:06 +0000 (UTC) In-Reply-To: <83362i2nul.fsf@gnu.org> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dmalcolm@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:191099 Archived-At: --=-4h98EPL4w39tKOwjGwZm Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit On Tue, 2020-10-13 at 17:37 +0300, Eli Zaretskii wrote: > > From: David Malcolm > > Cc: 25987@debbugs.gnu.org > > Date: Mon, 12 Oct 2020 18:27:29 -0400 > > > > I like how -fdiagnostics-parseable-fixits adds extra lines of > > output, > > with a prefix that's ought to be easy to detect. > > Yes, I think that's preferable, indeed. > > > BTW, does Emacs set anything in the environment that GCC could > > detect? > > Yes, Emacs sets INSIDE_EMACS when it runs a sub-process. > > > Does Emacs have an automated test suite that could test this > > feature? > > Yes, see the tests in the test/ subdirectory of the Emacs tree. > > > Another complication to consider: the locations in a fix-it hint > > refer > > to the original source file, before any changes are made. If the > > user > > interface supports the user e.g. clicking on fix-it hints and > > selectively apply them one by one, then after each fix-it hint is > > applied, all locations after that point potentially need to be > > "fixed > > up" somehow, to reflect the changes to the buffer. > > That could be handled automatically by defining a marker at each > hint's location, then they will move as text is edited. Thanks Eli and Andrea. I've implemented a proof-of-concept of this. I'm attaching the patch for discussion/review purposes (it probably doesn't quite apply cleanly to gcc master as I had some other diagnostic stuff in that working copy; it also hasn't yet been subjected to the usual testing for a gcc patch). I'm also attaching the stderr with GCC_EXTRA_DIAGNOSTIC_OUTPUT=fixits-v2 in the env when using the patched gcc to compile the demo.c file from message #82. Hopefully the output looks consumable by Emacs. One possible issue: in the final diagnostic, there's a fix-it hint with non-ASCII replacement text, replacing "two_pi" with "two_π" (where the final char in the latter is GREEK SMALL LETTER PI, U+03C0) This replacement currently expressed as encoded bytes i.e: fix-it:"demo.c":{51:10-51:16}:"two_\317\200" where \317\200 is the octal-escaped representation of the two bytes of the UTF-8 encoding of the character. Is this going to work for Emacs? Dave --=-4h98EPL4w39tKOwjGwZm Content-Disposition: attachment; filename="demo.out" Content-Type: text/plain; name="demo.out"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGVtby5jOiBJbiBmdW5jdGlvbiDigJh0ZXN0XzHigJk6CmRlbW8uYzoxNDoxMDogd2FybmluZzog aW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24g4oCYbWFsbG9j4oCZIFstV2ltcGxpY2l0 LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQogICAxNCB8ICAgcmV0dXJuIG1hbGxvYyAoNDA5Nik7CiAg ICAgIHwgICAgICAgICAgXn5+fn5+CmRlbW8uYzozOjE6IG5vdGU6IGluY2x1ZGUg4oCYPHN0ZGxp Yi5oPuKAmSBvciBwcm92aWRlIGEgZGVjbGFyYXRpb24gb2Yg4oCYbWFsbG9j4oCZCiAgICAyIHwg I2luY2x1ZGUgPHN0ZGlvLmg+CiAgKysrIHwrI2luY2x1ZGUgPHN0ZGxpYi5oPgogICAgMyB8IApm aXgtaXQ6ImRlbW8uYyI6ezM6MS0zOjF9OiIjaW5jbHVkZSA8c3RkbGliLmg+XG4iCmRlbW8uYzox NDoxMDogd2FybmluZzogaW5jb21wYXRpYmxlIGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGJ1aWx0 LWluIGZ1bmN0aW9uIOKAmG1hbGxvY+KAmSBbLVdidWlsdGluLWRlY2xhcmF0aW9uLW1pc21hdGNo XQogICAxNCB8ICAgcmV0dXJuIG1hbGxvYyAoNDA5Nik7CiAgICAgIHwgICAgICAgICAgXn5+fn5+ CmRlbW8uYzoxNDoxMDogbm90ZTogaW5jbHVkZSDigJg8c3RkbGliLmg+4oCZIG9yIHByb3ZpZGUg YSBkZWNsYXJhdGlvbiBvZiDigJhtYWxsb2PigJkKZGVtby5jOiBJbiBmdW5jdGlvbiDigJh0ZXN0 XzJh4oCZOgpkZW1vLmM6MjA6MjE6IGVycm9yOiDigJhzdHJ1Y3QgdmVydOKAmSBoYXMgbm8gbWVt YmVyIG5hbWVkIOKAmGNvbG91cuKAmTsgZGlkIHlvdSBtZWFuIOKAmGNvbG9y4oCZPwogICAyMCB8 ICAgLyog8J+ZgiDwn5mCIPCfmYIgKi8gdi0+Y29sb3VyID0gMDsKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgIF5+fn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICAgY29sb3IKZml4LWl0 OiJkZW1vLmMiOnsyMDoyMS0yMDoyN306ImNvbG9yIgpkZW1vLmM6IEluIGZ1bmN0aW9uIOKAmHRl c3RfMmLigJk6CmRlbW8uYzoyNjoxODogZXJyb3I6IOKAmHN0cnVjdCB2ZXJ04oCZIGhhcyBubyBt ZW1iZXIgbmFtZWQg4oCYY29sb3Vy4oCZOyBkaWQgeW91IG1lYW4g4oCYY29sb3LigJk/CiAgIDI2 IHwgICAvKiDPgCDPgCDPgCAqLyB2LT5jb2xvdXIgPSAwOwogICAgICB8ICAgICAgICAgICAgICAg ICAgXn5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICBjb2xvcgpmaXgtaXQ6ImRlbW8uYyI6 ezI2OjE4LTI2OjI0fToiY29sb3IiCmRlbW8uYzogSW4gZnVuY3Rpb24g4oCYdGVzdF8yY+KAmToK ZGVtby5jOjMyOjIxOiBlcnJvcjog4oCYc3RydWN0IHZlcnTigJkgaGFzIG5vIG1lbWJlciBuYW1l ZCDigJhjb2xvdXLigJk7IGRpZCB5b3UgbWVhbiDigJhjb2xvcuKAmT8KICAgMzIgfCAgIC8qIOaW h+Wtl+WMluOBkSAqLyB2LT5jb2xvdXIgPSAwOwogICAgICB8ICAgICAgICAgICAgICAgICAgICAg Xn5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICBjb2xvcgpmaXgtaXQ6ImRlbW8uYyI6 ezMyOjIxLTMyOjI3fToiY29sb3IiCmRlbW8uYzogSW4gZnVuY3Rpb24g4oCYdGVzdF8z4oCZOgpk ZW1vLmM6Mzg6MTQ6IGVycm9yOiDigJhzdHJ1Y3QgdmVydOKAmSBoYXMgbm8gbWVtYmVyIG5hbWVk IOKAmGNvbG91cuKAmTsgZGlkIHlvdSBtZWFuIOKAmGNvbG9y4oCZPwogICAzOCB8ICAgICAgICAg ICB2LT5jb2xvdXIgPSAwOwogICAgICB8ICAgICAgICAgICAgICBefn5+fn4KICAgICAgfCAgICAg ICAgICAgICAgY29sb3IKZml4LWl0OiJkZW1vLmMiOnszODoxNC0zODoyMH06ImNvbG9yIgpkZW1v LmM6IEluIGZ1bmN0aW9uIOKAmHRlc3RfNOKAmToKZGVtby5jOjQ0OjEwOiBlcnJvcjog4oCYc3Ry dWN0IHZlcnTigJkgaGFzIG5vIG1lbWJlciBuYW1lZCDigJhjb2xvdXLigJk7IGRpZCB5b3UgbWVh biDigJhjb2xvcuKAmT8KICAgNDQgfCAgIGlmICh2LT5jb2xvdXIpIHYtPmNvbG91ciArPSAyOwog ICAgICB8ICAgICAgICAgIF5+fn5+fgogICAgICB8ICAgICAgICAgIGNvbG9yCmZpeC1pdDoiZGVt by5jIjp7NDQ6MTAtNDQ6MTZ9OiJjb2xvciIKZGVtby5jOjQ0OjIxOiBlcnJvcjog4oCYc3RydWN0 IHZlcnTigJkgaGFzIG5vIG1lbWJlciBuYW1lZCDigJhjb2xvdXLigJk7IGRpZCB5b3UgbWVhbiDi gJhjb2xvcuKAmT8KICAgNDQgfCAgIGlmICh2LT5jb2xvdXIpIHYtPmNvbG91ciArPSAyOwogICAg ICB8ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAg ICBjb2xvcgpmaXgtaXQ6ImRlbW8uYyI6ezQ0OjIxLTQ0OjI3fToiY29sb3IiCmRlbW8uYzogSW4g ZnVuY3Rpb24g4oCYdGVzdF814oCZOgpkZW1vLmM6NTE6MTA6IGVycm9yOiDigJh0d29fcGnigJkg dW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4g4oCY dHdvX8+A4oCZPwogICA1MSB8ICAgcmV0dXJuIHR3b19waTsKICAgICAgfCAgICAgICAgICBefn5+ fn4KICAgICAgfCAgICAgICAgICB0d29fz4AKZml4LWl0OiJkZW1vLmMiOns1MToxMC01MToxNn06 InR3b19cMzE3XDIwMCIKZGVtby5jOjUxOjEwOiBub3RlOiBlYWNoIHVuZGVjbGFyZWQgaWRlbnRp ZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBp bgo= --=-4h98EPL4w39tKOwjGwZm Content-Disposition: attachment; filename*0=0001-Add-GCC_EXTRA_DIAGNOSTIC_OUTPUT-environment-variable.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Add-GCC_EXTRA_DIAGNOSTIC_OUTPUT-environment-variable.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyZTFlZDZlYTdlYTFlNTI0ZjJmNWI1MDM1MzI3ZWQyODBmZmY0NzVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBNYWxjb2xtIDxkbWFsY29sbUByZWRoYXQuY29tPgpE YXRlOiBNb24sIDE5IE9jdCAyMDIwIDIwOjE5OjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IEdDQ19FWFRSQV9ESUFHTk9TVElDX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IKIGZp eC1pdCBoaW50cwoKR0NDIGhhcyBoYWQgdGhlIGFiaWxpdHkgdG8gZW1pdCBmaXgtaXQgaGludHMg aW4gbWFjaGluZS1yZWFkYWJsZSBmb3JtCnNpbmNlIEdDQyA3IHZpYSAtZmRpYWdub3N0aWNzLXBh cnNlYWJsZS1maXhpdHMgYW5kCi1mZGlhZ25vc3RpY3MtZ2VuZXJhdGUtcGF0Y2guCgpUaGUgZm9y bWVyIGVtaXRzIGFkZGl0aW9uYWwgc3BlY2lhbGx5LWZvcm1hdHRlZCBsaW5lcyB0byBzdGRlcnI7 IHRoZQpvcHRpb24gYW5kIGl0cyBmb3JtYXQgd2VyZSBkaXJlY3RseSB0YWtlbiBmcm9tIGEgcHJl LWV4aXN0aW5nIG9wdGlvbgppbiBjbGFuZy4KCklkZWFsbHkgdGhpcyBjb3VsZCBiZSB1c2VkIGJ5 IElERXMgc28gdGhhdCB0aGUgdXNlciBjYW4gc2VsZWN0IHNwZWNpZmljCmZpeC1pdCBoaW50cyBh bmQgaGF2ZSB0aGUgSURFIGFwcGx5IHRoZW0gdG8gdGhlIHVzZXIncyBzb3VyY2UgY29kZQoocGVy aGFwcyB0dXJuaW5nIHRoZW0gaW50byBjbGlja2FibGUgZWxlbWVudHMsIHBlcmhhcHMgd2l0aCBh bgoiQXBwbHkgQWxsIiBvcHRpb24sIGV0YykuICBFY2xpcHNlIENEVCBoYXMgc3VwcG9ydGVkIHRo aXMgb3B0aW9uIGluCnRoaXMgd2F5IGZvciBhIGZldyB5ZWFyczoKICBodHRwczovL2J1Z3MuZWNs aXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NDk3NjcwCgpBcyBhIHVzZXIgb2YgRW1hY3Mg SSB3b3VsZCBsaWtlIEVtYWNzIHRvIHN1cHBvcnQgc3VjaCBhIGZlYXR1cmUuCmh0dHBzOi8vZGVi YnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz0yNTk4NyB0cmFja3Mgc3VwcG9ydGlu ZwpHQ0MgZml4LWl0IG91dHB1dCBpbiBFbWFjcy4gIFRoZSBkaXNjdXNzaW9uIHRoZXJlIGlkZW50 aWZpZXMgdHdvIGlzc3Vlcwp3aXRoIHRoZSBleGlzdGluZyBvcHRpb246CgooYSkgY29sdW1ucyBp biB0aGUgb3V0cHV0IGFyZSBzcGVjaWZpZWQgYXMgYnl0ZS1vZmZzZXRzIHdpdGhpbiB0aGUKbGlu ZSAoZm9yIGV4YWN0IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb3B0aW9uIGluIGNsYW5nKSwgd2hl cmVhcyBlbWFjcwp3b3VsZCBwcmVmZXIgdG8gY29uc3VtZSB0aGVtIGFzIHdoYXQgR0NDIDExIGNh bGxzICJkaXNwbGF5IGNvbHVtbnMiLgpodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2Nj L0RpYWdub3N0aWMtTWVzc2FnZS1Gb3JtYXR0aW5nLU9wdGlvbnMuaHRtbCNpbmRleC1mZGlhZ25v c3RpY3MtY29sdW1uLXVuaXQKCihiKSBpbmplY3RpbmcgYSBjb21tYW5kLWxpbmUgb3B0aW9uIGlu dG8gdGhlIGJ1aWxkIGlzIGEgZmlkZGx5IG1hbnVhbApzdGVwLCB2YXJ5aW5nIGJldHdlZW4gYnVp bGQgc3lzdGVtcy4gIEl0J3MgZmFyIGVhc2llciBmb3IgdGhlCnVzZXIgaWYgRW1hY3Mgc2ltcGx5 IHNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb21waWxpbmcsCkdDQyB1c2VzIHRo aXMgdG8gZW5hYmxlIHRoZSBvcHRpb24gaWYgaXQgcmVjb2duaXplcyB0aGUgdmFsdWUsIGFuZAp0 aGUgZW1hY3MgY29tcGlsYXRpb24gYnVmZmVyIGRlY29kZXMgdGhlIGFkZGl0aW9uYWwgbGluZXMg b2Ygb3V0cHV0CmFuZCBhZGRzIGFwcHJvcHJpYXRlIHdpZGdldHMuICBJbiBzb21lIHdheXMgaXQg aXMgYSB3b3JrYXJvdW5kIGZvcgpub3QgaGF2aW5nIGEgbGFuZ3VhZ2Ugc2VydmVyLiAgRG9pbmcg aXQgdGhpcyB3YXkgbWVhbnMgdGhhdCBmb3IgdGhlCnZhcmlvdXMgY29tYmluYXRpb25zIG9mIG9s ZGVyIGFuZCBuZXdlciBHQ0MgYW5kIG9sZGVyIGFuZCBuZXdlciBFbWFjcwp0aGF0IGEgc3VmZmlj aWVudGx5IG1vZGVybiBjb21iaW5hdGlvbiBvZiBib3RoIGNhbiBhdXRvbWF0aWNhbGx5CnN1cHBv cnQgdGhlIHJpY2ggZml4LWl0IFVJLCB3aGVyZWFzIG90aGVyIGNvbWJpbmF0aW9ucyB3aWxsIGVp dGhlcgpub3QgcHJvdmlkZSB0aGUgZW52dmFyLCBvciBzaWxlbnRseSBpZ25vcmUgaXQsIGdyYWNl ZnVsbHkgZG9pbmcKbm90aGluZyBleHRyYS4KCkhlbmNlIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBH Q0NfRVhUUkFfRElBR05PU1RJQ19PVVRQVVQgZW52aXJvbm1lbnQKdmFyaWFibGUgdG8gR0NDIHdo aWNoIGVuYWJsZXMgb3V0cHV0IG9mIG1hY2hpbmUtcGFyc2VhYmxlIGZpeC1pdCBoaW50cy4KCkdD Q19FWFRSQV9ESUFHTk9TVElDX09VVFBVVD1maXhpdHMtdjEgaXMgZXF1aXZhbGVudCB0byB0aGUg ZXhpc3RpbmcKLWZkaWFnbm9zdGljcy1wYXJzZWFibGUtZml4aXRzIG9wdGlvbi4KCkdDQ19FWFRS QV9ESUFHTk9TVElDX09VVFBVVD1maXhpdHMtdjIgaXMgdGhlIHNhbWUsIGJ1dCBjaGFuZ2VzIHRo ZQpjb2x1bW4gb3V0cHV0IG1vZGUgdG8gImRpc3BsYXkgY29sdW1ucyIgcmF0aGVyIHRoYW4gYnl0 ZXMsIGFzCnJlcXVpcmVkIGJ5IEVtYWNzLgoKZ2NjL0NoYW5nZUxvZzoKCSogZGlhZ25vc3RpYy5j IChkaWFnbm9zdGljX2luaXRpYWxpemUpOiBFbGltaW5hdGUKCXBhcnNlYWJsZV9maXhpdHNfcCBp biBmYXZvciBvZiBpbml0aWFsaXppbmcgZXh0cmFfb3V0cHV0X2tpbmQgZnJvbQoJR0NDX0VYVFJB X0RJQUdOT1NUSUNfT1VUUFVULgoJKGNvbnZlcnRfY29sdW1uX3VuaXQpOiBOZXcgZnVuY3Rpb24s IHNwbGl0IG91dCBmcm9tLi4uCgkoZGlhZ25vc3RpY19jb252ZXJ0ZWRfY29sdW1uKTogLi4udGhp cy4KCShwcmludF9wYXJzZWFibGVfZml4aXRzKTogQWRkICJjb2x1bW5fdW5pdCIgYW5kICJ0YWJz dG9wIiBwYXJhbXMuCglVc2UgdGhlbSB0byBjYWxsIGNvbnZlcnRfY29sdW1uX3VuaXQgb24gdGhl IGNvbHVtbiB2YWx1ZXMuCgkoZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYyk6IEVsaW1pbmF0 ZSBjb25kaXRpb25hbCBvbgoJcGFyc2VhYmxlX2ZpeGl0c19wIGluIGZhdm9yIG9mIGEgc3dpdGNo IHN0YXRlbWVudCBvbgoJZXh0cmFfb3V0cHV0X2tpbmQsIHBhc3NpbmcgdGhlIGFwcHJvcHJpYXRl IHZhbHVlcyB0byB0aGUgbmV3CglwYXJhbXMgb2YgcHJpbnRfcGFyc2VhYmxlX2ZpeGl0cy4KCShz ZWxmdGVzdDo6dGVzdF9wcmludF9wYXJzZWFibGVfZml4aXRzX25vbmUpOiBVcGRhdGUgZm9yIG5l dwoJcGFyYW1zIG9mIHByaW50X3BhcnNlYWJsZV9maXhpdHMuCgkoc2VsZnRlc3Q6OnRlc3RfcHJp bnRfcGFyc2VhYmxlX2ZpeGl0c19pbnNlcnQpOiBMaWtld2lzZS4KCShzZWxmdGVzdDo6dGVzdF9w cmludF9wYXJzZWFibGVfZml4aXRzX3JlbW92ZSk6IExpa2V3aXNlLgoJKHNlbGZ0ZXN0Ojp0ZXN0 X3ByaW50X3BhcnNlYWJsZV9maXhpdHNfcmVwbGFjZSk6IExpa2V3aXNlLgoJKHNlbGZ0ZXN0Ojp0 ZXN0X3ByaW50X3BhcnNlYWJsZV9maXhpdHNfYnl0ZXNfdnNfZGlzcGxheV9jb2x1bW5zKToKCU5l dy4KCShzZWxmdGVzdDo6ZGlhZ25vc3RpY19jX3Rlc3RzKTogQ2FsbCBpdC4KCSogZGlhZ25vc3Rp Yy5oIChlbnVtIGRpYWdub3N0aWNzX2V4dHJhX291dHB1dF9raW5kKTogTmV3LgoJKGRpYWdub3N0 aWNfY29udGV4dDo6cGFyc2VhYmxlX2ZpeGl0c19wKTogRGVsZXRlIGZpZWxkIGluIGZhdm9yCglv Zi4uLgoJKGRpYWdub3N0aWNfY29udGV4dDo6ZXh0cmFfb3V0cHV0X2tpbmQpOiAuLi50aGlzIG5l dyBmaWVsZC4KCSogZG9jL2ludm9rZS50ZXhpIChFbnZpcm9ubWVudCBWYXJpYWJsZXMpOiBBZGQK CUdDQ19FWFRSQV9ESUFHTk9TVElDX09VVFBVVC4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29w dGlvbik6IFVwZGF0ZSBoYW5kbGluZyBvZgoJT1BUX2ZkaWFnbm9zdGljc19wYXJzZWFibGVfZml4 aXRzIGZvciBjaGFuZ2UgdG8gZGlhZ25vc3RpY19jb250ZXh0CglmaWVsZHMuCi0tLQogZ2NjL2Rp YWdub3N0aWMuYyAgICB8IDEzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLQogZ2NjL2RpYWdub3N0aWMuaCAgICB8ICAyMyArKysrKysrLQogZ2NjL2RvYy9pbnZv a2UudGV4aSB8ICAxOSArKysrKysKIGdjYy9vcHRzLmMgICAgICAgICAgfCAgIDQgKy0KIDQgZmls ZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2djYy9kaWFnbm9zdGljLmMgYi9nY2MvZGlhZ25vc3RpYy5jCmluZGV4IDFiNmM5ODQ1ODky Li43NzI0ZjBlMDUwYiAxMDA2NDQKLS0tIGEvZ2NjL2RpYWdub3N0aWMuYworKysgYi9nY2MvZGlh Z25vc3RpYy5jCkBAIC0yMTksNyArMjE5LDE0IEBAIGRpYWdub3N0aWNfaW5pdGlhbGl6ZSAoZGlh Z25vc3RpY19jb250ZXh0ICpjb250ZXh0LCBpbnQgbl9vcHRzKQogICBjb250ZXh0LT5zaG93X2xp bmVfbnVtYmVyc19wID0gZmFsc2U7CiAgIGNvbnRleHQtPm1pbl9tYXJnaW5fd2lkdGggPSAwOwog ICBjb250ZXh0LT5zaG93X3J1bGVyX3AgPSBmYWxzZTsKLSAgY29udGV4dC0+cGFyc2VhYmxlX2Zp eGl0c19wID0gZmFsc2U7CisgIGlmIChjb25zdCBjaGFyICp2YXIgPSBnZXRlbnYgKCJHQ0NfRVhU UkFfRElBR05PU1RJQ19PVVRQVVQiKSkKKyAgICB7CisgICAgICBpZiAoIXN0cmNtcCAodmFyLCAi Zml4aXRzLXYxIikpCisJY29udGV4dC0+ZXh0cmFfb3V0cHV0X2tpbmQgPSBFWFRSQV9ESUFHTk9T VElDX09VVFBVVF9maXhpdHNfdjE7CisgICAgICBlbHNlIGlmICghc3RyY21wICh2YXIsICJmaXhp dHMtdjIiKSkKKwljb250ZXh0LT5leHRyYV9vdXRwdXRfa2luZCA9IEVYVFJBX0RJQUdOT1NUSUNf T1VUUFVUX2ZpeGl0c192MjsKKyAgICAgIC8qIFNpbGVudGx5IGlnbm9yZSB1bnJlY29nbml6ZWQg dmFsdWVzLiAgKi8KKyAgICB9CiAgIGNvbnRleHQtPmNvbHVtbl91bml0ID0gRElBR05PU1RJQ1Nf Q09MVU1OX1VOSVRfRElTUExBWTsKICAgY29udGV4dC0+Y29sdW1uX29yaWdpbiA9IDE7CiAgIGNv bnRleHQtPnRhYnN0b3AgPSA4OwpAQCAtMzU4LDI5ICszNjUsNDAgQEAgZGlhZ25vc3RpY19nZXRf Y29sb3JfZm9yX2tpbmQgKGRpYWdub3N0aWNfdCBraW5kKQogfQogCiAvKiBHaXZlbiBhbiBleHBh bmRlZF9sb2NhdGlvbiwgY29udmVydCB0aGUgY29sdW1uICh3aGljaCBpcyBpbiAxLWJhc2VkIGJ5 dGVzKQotICAgdG8gdGhlIHJlcXVlc3RlZCB1bml0cyBhbmQgb3JpZ2luLiAgUmV0dXJuIC0xIGlm IHRoZSBjb2x1bW4gaXMKLSAgIGludmFsaWQgKDw9IDApLiAgKi8KLWludAotZGlhZ25vc3RpY19j b252ZXJ0ZWRfY29sdW1uIChkaWFnbm9zdGljX2NvbnRleHQgKmNvbnRleHQsIGV4cGFuZGVkX2xv Y2F0aW9uIHMpCisgICB0byB0aGUgcmVxdWVzdGVkIHVuaXRzLCB3aXRob3V0IGNvbnZlcnRpbmcg dGhlIG9yaWdpbi4KKyAgIFJldHVybiAtMSBpZiB0aGUgY29sdW1uIGlzIGludmFsaWQgKDw9IDAp LiAgKi8KKworc3RhdGljIGludAorY29udmVydF9jb2x1bW5fdW5pdCAoZW51bSBkaWFnbm9zdGlj c19jb2x1bW5fdW5pdCBjb2x1bW5fdW5pdCwKKwkJICAgICBpbnQgdGFic3RvcCwKKwkJICAgICBl eHBhbmRlZF9sb2NhdGlvbiBzKQogewogICBpZiAocy5jb2x1bW4gPD0gMCkKICAgICByZXR1cm4g LTE7CiAKLSAgaW50IG9uZV9iYXNlZF9jb2w7Ci0gIHN3aXRjaCAoY29udGV4dC0+Y29sdW1uX3Vu aXQpCisgIHN3aXRjaCAoY29sdW1uX3VuaXQpCiAgICAgeworICAgIGRlZmF1bHQ6CisgICAgICBn Y2NfdW5yZWFjaGFibGUgKCk7CisKICAgICBjYXNlIERJQUdOT1NUSUNTX0NPTFVNTl9VTklUX0RJ U1BMQVk6Ci0gICAgICBvbmVfYmFzZWRfY29sID0gbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2Nv bHVtbiAocywgY29udGV4dC0+dGFic3RvcCk7Ci0gICAgICBicmVhazsKKyAgICAgIHJldHVybiBs b2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChzLCB0YWJzdG9wKTsKIAogICAgIGNhc2Ug RElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURToKLSAgICAgIG9uZV9iYXNlZF9jb2wgPSBzLmNv bHVtbjsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGdjY191bnJlYWNoYWJs ZSAoKTsKKyAgICAgIHJldHVybiBzLmNvbHVtbjsKICAgICB9Cit9CiAKKy8qIEdpdmVuIGFuIGV4 cGFuZGVkX2xvY2F0aW9uLCBjb252ZXJ0IHRoZSBjb2x1bW4gKHdoaWNoIGlzIGluIDEtYmFzZWQg Ynl0ZXMpCisgICB0byB0aGUgcmVxdWVzdGVkIHVuaXRzIGFuZCBvcmlnaW4uICBSZXR1cm4gLTEg aWYgdGhlIGNvbHVtbiBpcworICAgaW52YWxpZCAoPD0gMCkuICAqLworaW50CitkaWFnbm9zdGlj X2NvbnZlcnRlZF9jb2x1bW4gKGRpYWdub3N0aWNfY29udGV4dCAqY29udGV4dCwgZXhwYW5kZWRf bG9jYXRpb24gcykKK3sKKyAgaW50IG9uZV9iYXNlZF9jb2wKKyAgICA9IGNvbnZlcnRfY29sdW1u X3VuaXQgKGNvbnRleHQtPmNvbHVtbl91bml0LCBjb250ZXh0LT50YWJzdG9wLCBzKTsKKyAgaWYg KG9uZV9iYXNlZF9jb2wgPD0gMCkKKyAgICByZXR1cm4gLTE7CiAgIHJldHVybiBvbmVfYmFzZWRf Y29sICsgKGNvbnRleHQtPmNvbHVtbl9vcmlnaW4gLSAxKTsKIH0KIApAQCAtOTIwLDExICs5Mzgs MTYgQEAgcHJpbnRfZXNjYXBlZF9zdHJpbmcgKHByZXR0eV9wcmludGVyICpwcCwgY29uc3QgY2hh ciAqdGV4dCkKICAgcHBfY2hhcmFjdGVyIChwcCwgJyInKTsKIH0KIAotLyogSW1wbGVtZW50YXRp b24gb2YgLWZkaWFnbm9zdGljcy1wYXJzZWFibGUtZml4aXRzLiAgUHJpbnQgYQotICAgbWFjaGlu ZS1wYXJzZWFibGUgdmVyc2lvbiBvZiBhbGwgZml4aXRzIGluIFJJQ0hMT0MgdG8gUFAuICAqLwor LyogSW1wbGVtZW50YXRpb24gb2YgLWZkaWFnbm9zdGljcy1wYXJzZWFibGUtZml4aXRzIGFuZAor ICAgR0NDX0VYVFJBX0RJQUdOT1NUSUNfT1VUUFVULgorICAgUHJpbnQgYSBtYWNoaW5lLXBhcnNl YWJsZSB2ZXJzaW9uIG9mIGFsbCBmaXhpdHMgaW4gUklDSExPQyB0byBQUCwKKyAgIHVzaW5nIENP TFVNTl9VTklUIHRvIGV4cHJlc3MgY29sdW1ucy4KKyAgIFVzZSBUQUJTVE9QIHdoZW4gaGFuZGxp bmcgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfRElTUExBWS4gICovCiAKIHN0YXRpYyB2b2lkCi1w cmludF9wYXJzZWFibGVfZml4aXRzIChwcmV0dHlfcHJpbnRlciAqcHAsIHJpY2hfbG9jYXRpb24g KnJpY2hsb2MpCitwcmludF9wYXJzZWFibGVfZml4aXRzIChwcmV0dHlfcHJpbnRlciAqcHAsIHJp Y2hfbG9jYXRpb24gKnJpY2hsb2MsCisJCQllbnVtIGRpYWdub3N0aWNzX2NvbHVtbl91bml0IGNv bHVtbl91bml0LAorCQkJaW50IHRhYnN0b3ApCiB7CiAgIGdjY19hc3NlcnQgKHBwKTsKICAgZ2Nj X2Fzc2VydCAocmljaGxvYyk7CkBAIC05NDIsOSArOTY1LDEzIEBAIHByaW50X3BhcnNlYWJsZV9m aXhpdHMgKHByZXR0eV9wcmludGVyICpwcCwgcmljaF9sb2NhdGlvbiAqcmljaGxvYykKICAgICAg IC8qIEZvciBjb21wYXRpYmlsaXR5IHdpdGggY2xhbmcsIHByaW50IGFzIGEgaGFsZi1vcGVuIHJh bmdlLiAgKi8KICAgICAgIGxvY2F0aW9uX3QgbmV4dF9sb2MgPSBoaW50LT5nZXRfbmV4dF9sb2Mg KCk7CiAgICAgICBleHBhbmRlZF9sb2NhdGlvbiBuZXh0X2V4cGxvYyA9IGV4cGFuZF9sb2NhdGlv biAobmV4dF9sb2MpOworICAgICAgaW50IHN0YXJ0X2NvbAorCT0gY29udmVydF9jb2x1bW5fdW5p dCAoY29sdW1uX3VuaXQsIHRhYnN0b3AsIHN0YXJ0X2V4cGxvYyk7CisgICAgICBpbnQgbmV4dF9j b2wKKwk9IGNvbnZlcnRfY29sdW1uX3VuaXQgKGNvbHVtbl91bml0LCB0YWJzdG9wLCBuZXh0X2V4 cGxvYyk7CiAgICAgICBwcF9wcmludGYgKHBwLCAiOnslaTolaS0laTolaX06IiwKLQkJIHN0YXJ0 X2V4cGxvYy5saW5lLCBzdGFydF9leHBsb2MuY29sdW1uLAotCQkgbmV4dF9leHBsb2MubGluZSwg bmV4dF9leHBsb2MuY29sdW1uKTsKKwkJIHN0YXJ0X2V4cGxvYy5saW5lLCBzdGFydF9jb2wsCisJ CSBuZXh0X2V4cGxvYy5saW5lLCBuZXh0X2NvbCk7CiAgICAgICBwcmludF9lc2NhcGVkX3N0cmlu ZyAocHAsIGhpbnQtPmdldF9zdHJpbmcgKCkpOwogICAgICAgcHBfbmV3bGluZSAocHApOwogICAg IH0KQEAgLTEyMTAsMTAgKzEyMzcsMjIgQEAgZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYyAo ZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LAogICBpZiAoY29udGV4dC0+c2hvd19vcHRpb25f cmVxdWVzdGVkKQogICAgIHByaW50X29wdGlvbl9pbmZvcm1hdGlvbiAoY29udGV4dCwgZGlhZ25v c3RpYywgb3JpZ19kaWFnX2tpbmQpOwogICAoKmRpYWdub3N0aWNfZmluYWxpemVyIChjb250ZXh0 KSkgKGNvbnRleHQsIGRpYWdub3N0aWMsIG9yaWdfZGlhZ19raW5kKTsKLSAgaWYgKGNvbnRleHQt PnBhcnNlYWJsZV9maXhpdHNfcCkKKyAgc3dpdGNoIChjb250ZXh0LT5leHRyYV9vdXRwdXRfa2lu ZCkKICAgICB7Ci0gICAgICBwcmludF9wYXJzZWFibGVfZml4aXRzIChjb250ZXh0LT5wcmludGVy LCBkaWFnbm9zdGljLT5yaWNobG9jKTsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgICAg Y2FzZSBFWFRSQV9ESUFHTk9TVElDX09VVFBVVF9maXhpdHNfdjE6CisgICAgICBwcmludF9wYXJz ZWFibGVfZml4aXRzIChjb250ZXh0LT5wcmludGVyLCBkaWFnbm9zdGljLT5yaWNobG9jLAorCQkJ ICAgICAgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURSwKKwkJCSAgICAgIGNvbnRleHQtPnRh YnN0b3ApOworICAgICAgcHBfZmx1c2ggKGNvbnRleHQtPnByaW50ZXIpOworICAgICAgYnJlYWs7 CisgICAgY2FzZSBFWFRSQV9ESUFHTk9TVElDX09VVFBVVF9maXhpdHNfdjI6CisgICAgICBwcmlu dF9wYXJzZWFibGVfZml4aXRzIChjb250ZXh0LT5wcmludGVyLCBkaWFnbm9zdGljLT5yaWNobG9j LAorCQkJICAgICAgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfRElTUExBWSwKKwkJCSAgICAgIGNv bnRleHQtPnRhYnN0b3ApOwogICAgICAgcHBfZmx1c2ggKGNvbnRleHQtPnByaW50ZXIpOworICAg ICAgYnJlYWs7CiAgICAgfQogICBkaWFnbm9zdGljX2FjdGlvbl9hZnRlcl9vdXRwdXQgKGNvbnRl eHQsIGRpYWdub3N0aWMtPmtpbmQpOwogICBkaWFnbm9zdGljLT54X2RhdGEgPSBOVUxMOwpAQCAt MjAxMiw3ICsyMDUxLDcgQEAgdGVzdF9wcmludF9wYXJzZWFibGVfZml4aXRzX25vbmUgKCkKICAg cHJldHR5X3ByaW50ZXIgcHA7CiAgIHJpY2hfbG9jYXRpb24gcmljaGxvYyAobGluZV90YWJsZSwg VU5LTk9XTl9MT0NBVElPTik7CiAKLSAgcHJpbnRfcGFyc2VhYmxlX2ZpeGl0cyAoJnBwLCAmcmlj aGxvYyk7CisgIHByaW50X3BhcnNlYWJsZV9maXhpdHMgKCZwcCwgJnJpY2hsb2MsIERJQUdOT1NU SUNTX0NPTFVNTl9VTklUX0JZVEUsIDgpOwogICBBU1NFUlRfU1RSRVEgKCIiLCBwcF9mb3JtYXR0 ZWRfdGV4dCAoJnBwKSk7CiB9CiAKQEAgLTIwMzEsNyArMjA3MCw3IEBAIHRlc3RfcHJpbnRfcGFy c2VhYmxlX2ZpeGl0c19pbnNlcnQgKCkKICAgbG9jYXRpb25fdCB3aGVyZSA9IGxpbmVtYXBfcG9z aXRpb25fZm9yX2NvbHVtbiAobGluZV90YWJsZSwgMTApOwogICByaWNobG9jLmFkZF9maXhpdF9p bnNlcnRfYmVmb3JlICh3aGVyZSwgImFkZGVkIGNvbnRlbnQiKTsKIAotICBwcmludF9wYXJzZWFi bGVfZml4aXRzICgmcHAsICZyaWNobG9jKTsKKyAgcHJpbnRfcGFyc2VhYmxlX2ZpeGl0cyAoJnBw LCAmcmljaGxvYywgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURSwgOCk7CiAgIEFTU0VSVF9T VFJFUSAoImZpeC1pdDpcInRlc3QuY1wiOns1OjEwLTU6MTB9OlwiYWRkZWQgY29udGVudFwiXG4i LAogCQlwcF9mb3JtYXR0ZWRfdGV4dCAoJnBwKSk7CiB9CkBAIC0yMDUzLDcgKzIwOTIsNyBAQCB0 ZXN0X3ByaW50X3BhcnNlYWJsZV9maXhpdHNfcmVtb3ZlICgpCiAgIHdoZXJlLm1fZmluaXNoID0g bGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChsaW5lX3RhYmxlLCAyMCk7CiAgIHJpY2hsb2Mu YWRkX2ZpeGl0X3JlbW92ZSAod2hlcmUpOwogCi0gIHByaW50X3BhcnNlYWJsZV9maXhpdHMgKCZw cCwgJnJpY2hsb2MpOworICBwcmludF9wYXJzZWFibGVfZml4aXRzICgmcHAsICZyaWNobG9jLCBE SUFHTk9TVElDU19DT0xVTU5fVU5JVF9CWVRFLCA4KTsKICAgQVNTRVJUX1NUUkVRICgiZml4LWl0 OlwidGVzdC5jXCI6ezU6MTAtNToyMX06XCJcIlxuIiwKIAkJcHBfZm9ybWF0dGVkX3RleHQgKCZw cCkpOwogfQpAQCAtMjA3NSwxMSArMjExNCw1OSBAQCB0ZXN0X3ByaW50X3BhcnNlYWJsZV9maXhp dHNfcmVwbGFjZSAoKQogICB3aGVyZS5tX2ZpbmlzaCA9IGxpbmVtYXBfcG9zaXRpb25fZm9yX2Nv bHVtbiAobGluZV90YWJsZSwgMjApOwogICByaWNobG9jLmFkZF9maXhpdF9yZXBsYWNlICh3aGVy ZSwgInJlcGxhY2VtZW50Iik7CiAKLSAgcHJpbnRfcGFyc2VhYmxlX2ZpeGl0cyAoJnBwLCAmcmlj aGxvYyk7CisgIHByaW50X3BhcnNlYWJsZV9maXhpdHMgKCZwcCwgJnJpY2hsb2MsIERJQUdOT1NU SUNTX0NPTFVNTl9VTklUX0JZVEUsIDgpOwogICBBU1NFUlRfU1RSRVEgKCJmaXgtaXQ6XCJ0ZXN0 LmNcIjp7NToxMC01OjIxfTpcInJlcGxhY2VtZW50XCJcbiIsCiAJCXBwX2Zvcm1hdHRlZF90ZXh0 ICgmcHApKTsKIH0KIAorLyogVmVyaWZ5IHRoYXQgcHJpbnRfcGFyc2VhYmxlX2ZpeGl0cyBjb3Jy ZWN0bHkgaGFuZGxlcworICAgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURSB2cyBESUFHTk9T VElDU19DT0xVTU5fVU5JVF9DT0xVTU4uICAqLworCitzdGF0aWMgdm9pZAordGVzdF9wcmludF9w YXJzZWFibGVfZml4aXRzX2J5dGVzX3ZzX2Rpc3BsYXlfY29sdW1ucyAoKQoreworICBsaW5lX3Rh YmxlX3Rlc3QgbHR0OworICByaWNoX2xvY2F0aW9uIHJpY2hsb2MgKGxpbmVfdGFibGUsIFVOS05P V05fTE9DQVRJT04pOworCisgIC8qIDEtYmFzZWQgYnl0ZSBvZmZzZXRzOiAgICAgMTIzNDU2Nzc3 Nzg4ODg5OTk5MDAwMDEyMzQ1NjcuICAqLworICBjb25zdCBjaGFyICpjb25zdCBjb250ZW50ID0g InNtaWxlIFx4ZjBceDlmXHg5OFx4ODIgY29sb3VyXG4iOworICAvKiAxLWJhc2VkIGRpc3BsYXkg Y29sczogICAgIDEyMzQ1NlsuLi4uLi43LTguLi4uLl05MDEyMzQ1LiAgKi8KKyAgY29uc3QgaW50 IHRhYnN0b3AgPSA4OworCisgIHRlbXBfc291cmNlX2ZpbGUgdG1wIChTRUxGVEVTVF9MT0NBVElP TiwgIi5jIiwgY29udGVudCk7CisgIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lID0gdG1wLmdldF9m aWxlbmFtZSAoKTsKKworICBsaW5lbWFwX2FkZCAobGluZV90YWJsZSwgTENfRU5URVIsIGZhbHNl LCBmbmFtZSwgMCk7CisgIGxpbmVtYXBfbGluZV9zdGFydCAobGluZV90YWJsZSwgMSwgMTAwKTsK KyAgbGluZW1hcF9hZGQgKGxpbmVfdGFibGUsIExDX0xFQVZFLCBmYWxzZSwgTlVMTCwgMCk7Cisg IHNvdXJjZV9yYW5nZSB3aGVyZTsKKyAgd2hlcmUubV9zdGFydCA9IGxpbmVtYXBfcG9zaXRpb25f Zm9yX2NvbHVtbiAobGluZV90YWJsZSwgMTIpOworICB3aGVyZS5tX2ZpbmlzaCA9IGxpbmVtYXBf cG9zaXRpb25fZm9yX2NvbHVtbiAobGluZV90YWJsZSwgMTcpOworICByaWNobG9jLmFkZF9maXhp dF9yZXBsYWNlICh3aGVyZSwgImNvbG9yIik7CisKKyAgY29uc3QgaW50IGJ1Zl9sZW4gPSBzdHJs ZW4gKGZuYW1lKSArIDEwMDsKKyAgY2hhciAqY29uc3QgZXhwZWN0ZWQgPSBYTkVXVkVDIChjaGFy LCBidWZfbGVuKTsKKworICB7CisgICAgcHJldHR5X3ByaW50ZXIgcHA7CisgICAgcHJpbnRfcGFy c2VhYmxlX2ZpeGl0cyAoJnBwLCAmcmljaGxvYywgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllU RSwKKwkJCSAgICB0YWJzdG9wKTsKKyAgICBzbnByaW50ZiAoZXhwZWN0ZWQsIGJ1Zl9sZW4sCisJ ICAgICAgImZpeC1pdDpcIiVzXCI6ezE6MTItMToxOH06XCJjb2xvclwiXG4iLCBmbmFtZSk7Cisg ICAgQVNTRVJUX1NUUkVRIChleHBlY3RlZCwgcHBfZm9ybWF0dGVkX3RleHQgKCZwcCkpOworICB9 CisgIHsKKyAgICBwcmV0dHlfcHJpbnRlciBwcDsKKyAgICBwcmludF9wYXJzZWFibGVfZml4aXRz ICgmcHAsICZyaWNobG9jLCBESUFHTk9TVElDU19DT0xVTU5fVU5JVF9ESVNQTEFZLAorCQkJICAg IHRhYnN0b3ApOworICAgIHNucHJpbnRmIChleHBlY3RlZCwgYnVmX2xlbiwKKwkgICAgICAiZml4 LWl0OlwiJXNcIjp7MToxMC0xOjE2fTpcImNvbG9yXCJcbiIsIGZuYW1lKTsKKyAgICBBU1NFUlRf U1RSRVEgKGV4cGVjdGVkLCBwcF9mb3JtYXR0ZWRfdGV4dCAoJnBwKSk7CisgIH0KKworICBYREVM RVRFVkVDIChleHBlY3RlZCk7Cit9CisKIC8qIFZlcmlmeSB0aGF0CiAgICAgIGRpYWdub3N0aWNf Z2V0X2xvY2F0aW9uX3RleHQgKC4uLiwgU0hPV19DT0xVTU4pCiAgICBnZW5lcmF0ZXMgRVhQRUNU RURfTE9DX1RFWFQsIGdpdmVuIEZJTEVOQU1FLCBMSU5FLCBDT0xVTU4sIHdpdGgKQEAgLTIyMDIs NiArMjI4OSw3IEBAIGRpYWdub3N0aWNfY190ZXN0cyAoKQogICB0ZXN0X3ByaW50X3BhcnNlYWJs ZV9maXhpdHNfaW5zZXJ0ICgpOwogICB0ZXN0X3ByaW50X3BhcnNlYWJsZV9maXhpdHNfcmVtb3Zl ICgpOwogICB0ZXN0X3ByaW50X3BhcnNlYWJsZV9maXhpdHNfcmVwbGFjZSAoKTsKKyAgdGVzdF9w cmludF9wYXJzZWFibGVfZml4aXRzX2J5dGVzX3ZzX2Rpc3BsYXlfY29sdW1ucyAoKTsKICAgdGVz dF9kaWFnbm9zdGljX2dldF9sb2NhdGlvbl90ZXh0ICgpOwogICB0ZXN0X251bV9kaWdpdHMgKCk7 CiAKZGlmZiAtLWdpdCBhL2djYy9kaWFnbm9zdGljLmggYi9nY2MvZGlhZ25vc3RpYy5oCmluZGV4 IDFkMmZhMTE5NjQzLi5lODhkNjNjMjEyOCAxMDA2NDQKLS0tIGEvZ2NjL2RpYWdub3N0aWMuaAor KysgYi9nY2MvZGlhZ25vc3RpYy5oCkBAIC02OSw2ICs2OSwyMiBAQCBlbnVtIGRpYWdub3N0aWNf cGF0aF9mb3JtYXQKICAgRFBGX0hUTUwKIH07CiAKKy8qIEFuIGVudW0gZm9yIGNhcHR1cmluZyB2 YWx1ZXMgb2YgR0NDX0VYVFJBX0RJQUdOT1NUSUNfT1VUUFVULAorICAgYW5kIGZvciAtZmRpYWdu b3N0aWNzLXBhcnNlYWJsZS1maXhpdHMuICAqLworCitlbnVtIGRpYWdub3N0aWNzX2V4dHJhX291 dHB1dF9raW5kCit7CisgIC8qIE5vIGV4dHJhIG91dHB1dCwgb3IgYW4gdW5yZWNvZ25pemVkIHZh bHVlLiAgKi8KKyAgRVhUUkFfRElBR05PU1RJQ19PVVRQVVRfbm9uZSwKKworICAvKiBFbWl0IGZp eC1pdCBoaW50cyB1c2luZyB0aGUgImZpeGl0cy12MSIgZm9ybWF0LCBlcXVpdmFsZW50IHRvCisg ICAgIC1mZGlhZ25vc3RpY3MtcGFyc2VhYmxlLWZpeGl0cy4gICovCisgIEVYVFJBX0RJQUdOT1NU SUNfT1VUUFVUX2ZpeGl0c192MSwKKworICAvKiBFbWl0IGZpeC1pdCBoaW50cyB1c2luZyB0aGUg ImZpeGl0cy12MiIgZm9ybWF0LiAgKi8KKyAgRVhUUkFfRElBR05PU1RJQ19PVVRQVVRfZml4aXRz X3YyCit9OworCiAvKiBBIGRpYWdub3N0aWMgaXMgZGVzY3JpYmVkIGJ5IHRoZSBNRVNTQUdFIHRv IHNlbmQsIHRoZSBGSUxFIGFuZCBMSU5FIG9mCiAgICBpdHMgY29udGV4dCBhbmQgaXRzIEtJTkQg KGljZSwgZXJyb3IsIHdhcm5pbmcsIG5vdGUsIC4uLikgIFNlZSBjb21wbGV0ZQogICAgbGlzdCBp biBkaWFnbm9zdGljLmRlZi4gICovCkBAIC0yOTYsOSArMzEyLDEwIEBAIHN0cnVjdCBkaWFnbm9z dGljX2NvbnRleHQKICAgICAgc291cmNlIG91dHB1dC4gICovCiAgIGJvb2wgc2hvd19ydWxlcl9w OwogCi0gIC8qIElmIHRydWUsIHByaW50IGZpeGl0cyBpbiBtYWNoaW5lLXBhcnNlYWJsZSBmb3Jt IGFmdGVyIHRoZQotICAgICByZXN0IG9mIHRoZSBkaWFnbm9zdGljLiAgKi8KLSAgYm9vbCBwYXJz ZWFibGVfZml4aXRzX3A7CisgIC8qIFVzZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGRpYWdub3N0 aWMgb3V0cHV0IHRvIGJlIGVtaXR0ZWQgYWZ0ZXIgdGhlCisgICAgIHJlc3Qgb2YgdGhlIGRpYWdu b3N0aWMuICBUaGlzIGlzIGZvciBpbXBsZW1lbnRpbmcKKyAgICAgLWZkaWFnbm9zdGljcy1wYXJz ZWFibGUtZml4aXRzIGFuZCBHQ0NfRVhUUkFfRElBR05PU1RJQ19PVVRQVVQuICAqLworICBlbnVt IGRpYWdub3N0aWNzX2V4dHJhX291dHB1dF9raW5kIGV4dHJhX291dHB1dF9raW5kOwogCiAgIC8q IFdoYXQgdW5pdHMgdG8gdXNlIHdoZW4gb3V0cHV0dGluZyB0aGUgY29sdW1uIG51bWJlci4gICov CiAgIGVudW0gZGlhZ25vc3RpY3NfY29sdW1uX3VuaXQgY29sdW1uX3VuaXQ7CmRpZmYgLS1naXQg YS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCA1NWY3YTk4 NTRhYS4uZjgzZmU4ZjczNWMgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrIGIv Z2NjL2RvYy9pbnZva2UudGV4aQpAQCAtMzE5OTgsNiArMzE5OTgsMjUgQEAgUmVjb2duaXplIEVV Q0pQIGNoYXJhY3RlcnMuCiBJZiBAZW52e0xBTkd9IGlzIG5vdCBkZWZpbmVkLCBvciBpZiBpdCBo YXMgc29tZSBvdGhlciB2YWx1ZSwgdGhlbiB0aGUKIGNvbXBpbGVyIHVzZXMgQGNvZGV7bWJsZW59 IGFuZCBAY29kZXttYnRvd2N9IGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgbG9jYWxlIHRvCiBy ZWNvZ25pemUgYW5kIHRyYW5zbGF0ZSBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KKworQGl0ZW0gR0ND X0VYVFJBX0RJQUdOT1NUSUNfT1VUUFVUCitJZiBAZW52e0dDQ19FWFRSQV9ESUFHTk9TVElDX09V VFBVVH0gaXMgc2V0IHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcywKK3RoZW4gYWRkaXRp b25hbCB0ZXh0IHdpbGwgYmUgZW1pdHRlZCB0byBzdGRlcnIgd2hlbiBmaXgtaXQgaGludHMgYXJl CitlbWl0dGVkLiAgQG9wdGlvbnstZmRpYWdub3N0aWNzLXBhcnNlYWJsZS1maXhpdHN9IGFuZAor QG9wdGlvbnstZm5vLWRpYWdub3N0aWNzLXBhcnNlYWJsZS1maXhpdHN9IHRha2UgcHJlY2VkZW5j ZSBvdmVyIHRoaXMKK2Vudmlyb25tZW50IHZhcmlhYmxlLgorCitAdGFibGUgQHNhbXAKK0BpdGVt IGZpeGl0cy12MQorRW1pdCBwYXJzZWFibGUgZml4LWl0IGhpbnRzLCBlcXVpdmFsZW50IHRvCitA b3B0aW9uey1mZGlhZ25vc3RpY3MtcGFyc2VhYmxlLWZpeGl0c30uICBJbiBwYXJ0aWN1bGFyLCBj b2x1bW5zIGFyZQorZXhwcmVzc2VkIGFzIGEgY291bnQgb2YgYnl0ZXMsIHN0YXJ0aW5nIGF0IGJ5 dGUgMSBmb3IgdGhlIGluaXRpYWwgY29sdW1uLgorCitAaXRlbSBmaXhpdHMtdjIKK0FzIEBjb2Rl e2ZpeGl0cy12MX0sIGJ1dCBjb2x1bW5zIGFyZSBleHByZXNzZWQgYXMgZGlzcGxheSBjb2x1bW5z LAorYXMgcGVyIEBvcHRpb257LWZkaWFnbm9zdGljcy1jb2x1bW4tdW5pdD1kaXNwbGF5fS4KK0Bl bmQgdGFibGUKKwogQGVuZCB0YWJsZQogCiBAbm9pbmRlbnQKZGlmZiAtLWdpdCBhL2djYy9vcHRz LmMgYi9nY2Mvb3B0cy5jCmluZGV4IGRhNTAzYzMyZGQwLi5iNzc2ZjNiMzFlMSAxMDA2NDQKLS0t IGEvZ2NjL29wdHMuYworKysgYi9nY2Mvb3B0cy5jCkBAIC0yNDIyLDcgKzI0MjIsOSBAQCBjb21t b25faGFuZGxlX29wdGlvbiAoc3RydWN0IGdjY19vcHRpb25zICpvcHRzLAogICAgICAgYnJlYWs7 CiAKICAgICBjYXNlIE9QVF9mZGlhZ25vc3RpY3NfcGFyc2VhYmxlX2ZpeGl0czoKLSAgICAgIGRj LT5wYXJzZWFibGVfZml4aXRzX3AgPSB2YWx1ZTsKKyAgICAgIGRjLT5leHRyYV9vdXRwdXRfa2lu ZCA9ICh2YWx1ZQorCQkJICAgICAgID8gRVhUUkFfRElBR05PU1RJQ19PVVRQVVRfZml4aXRzX3Yx CisJCQkgICAgICAgOiBFWFRSQV9ESUFHTk9TVElDX09VVFBVVF9ub25lKTsKICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSBPUFRfZmRpYWdub3N0aWNzX2NvbHVtbl91bml0XzoKLS0gCjIuMjYuMgoK --=-4h98EPL4w39tKOwjGwZm--