From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Re: Add function to rotate/transpose all windows Date: Sat, 9 Nov 2024 09:48:20 +0100 Message-ID: <8a2007d9-d501-404b-966d-57a7a51310ef@gmx.at> References: <87setpdv21.fsf@gmail.com> <87zfncuqhu.fsf@gmail.com> <86v7y00w68.fsf@mail.linkov.net> <87y12smubh.fsf@gmail.com> <96ea5140-9043-4c1b-97f3-4c534296355e@gmx.at> <87frotqx90.fsf@gmail.com> <87y12iyidd.fsf@gmail.com> <87iktld1bd.fsf@gmail.com> <87r085r2gl.fsf@gmail.com> <87zfms6z1a.fsf@gmail.com> <71571413-02ba-4e3c-ad43-35c110811fab@gmx.at> <875xpfns32.fsf@gmail.com> <0a2f09a0-4115-4421-a391-30d27e7d0821@gmx.at> <87ses9k9wo.fsf@gmail.com> <877c9ersei.fsf@gmail.com> <51068b75-e12d-4161-9a63-8c280e8b2668@gmx.at> <8734k1gnt9.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------LXvxmvYK1i8xpQsTuOSikUkL" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29130"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: Juri Linkov , Eli Zaretskii , emacs-devel@gnu.org To: Pranshu Sharma Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Nov 09 09:49:26 2024 Return-path: Envelope-to: ged-emacs-devel@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 1t9h9q-0007RV-0Z for ged-emacs-devel@m.gmane-mx.org; Sat, 09 Nov 2024 09:49:26 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t9h8z-0005Ol-0O; Sat, 09 Nov 2024 03:48:33 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t9h8w-0005OD-G1 for emacs-devel@gnu.org; Sat, 09 Nov 2024 03:48:30 -0500 Original-Received: from mout.gmx.net ([212.227.17.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t9h8r-0006FR-7K; Sat, 09 Nov 2024 03:48:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1731142101; x=1731746901; i=rudalics@gmx.at; bh=+ew8Yg6UTzu7wxCSUgYZY6AE4E9KOpRLqQPD9jLAZ6A=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version: Subject:To:Cc:References:From:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Z9yJ4g3VPjffowiPA55wEu3eg/jzat45h3TUsVsJ5t8iDbgOEsrCLN8TF6I1Lw3G yXCLabQbOVoQ7OzGBEFLKVHOloHtCszKWLGE2FqEOfzMgEUbGH2ZK/MXzguaEF5/6 nt0zjIpz0k3CIzey9zWtPhH7jKyQJZnoTd+Wg1HBxl4ClzY9hwyzbMq74S7e8w7S0 4igF06fqQOSvfN4bb46XMDspiDcBG9bEyzGP+rePs7fTgLMoF5cDU3FzRgmfu7VX/ dwrWBBl9K3VPvfL5UByf4+DZHnFnsImLmvXpSk7jIoZpi1/jNLaFxop6oDu8Q778W mvULIPK5NwbbWoOgbw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.31.113] ([213.142.97.51]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N17UQ-1tp7l83gHy-010fwm; Sat, 09 Nov 2024 09:48:21 +0100 Content-Language: en-US In-Reply-To: <8734k1gnt9.fsf@gmail.com> X-Provags-ID: V03:K1:p9FBF+Ej82sh0FHyEGk+FUZKR5dHWczUq11akTFafc/rlEi0MSE WpOO2O1ckQ8X29U63PqA72m4YaP6zgIg/LIJMlD10dCcpsplty/yf3ctDr9hfLXa0IqbIO2 0mJ6+RF6skt52GUabNvlrmhuqc7za3v0Ku4lroHSf3/7n+mRkDKeVHX4X8R73Jybc+6mlO6 NHKOOEa66zCAXAciTaxOQ== UI-OutboundReport: notjunk:1;M01:P0:USc6aIIQ0No=;Sx40/xnxbkzSo89oe3wrP3g143E coFWdCImnHe0t6s9jYfGx3Ct806YW9esxZs+NQcd0/H5l+GoC7KuXJ/FYyct4vX4GfEUAWnkl tXKKoNw9cfj42RWEluyPxAgEDF8Fj8yT3QD5LMI9nt20qjHAlRl28c5hY3MZLKYEOB6af3/PC 4EzKcBOxjDcuXgRoyz3zxxuP7UVN5yjNSfbKN1Q0iprBd6uIc/J3GwEOMFaRCdmnXZuaFIGpe 6ZdLj6kDsZMM4MSPaBCwMNYe5Sx+Cg1YrvjOikdZ9qEF2xWWPuA5oTg2UqvOq4yNVsIiJW2BH IsdexRbxUC8CHxqhl8pVpWDNkoBBd33vEGXvDjiQtM/IJSeMaMYHb8UqK80Q7AAvR+0kgFYKE qRfOTgc00S+UTsoorU6TYsWn9hqm+rlPBdj93koin300hWV8xMdjOBrKmPML6NCOxyUKTYhvt KrGHBrI5kfU0h3l054JnFoU5KmefgSxP+crdsSj7A2a6DJ4Hc1vHyo5aQUagHa21D9kODt2Wi MAYz+UlZbNeaZElQtakr+0YUjF3586Ze+WTp8+S0jhtcZvbQBuk/AM6ub1po8dWRQAa9Djrxr v40sPqAxAUF6DsEi1Bq0Wqcdil2/yK9FV1KNWyxr/i3zuAdNk8N1x4DxdnVpE8Z+tDKKSojCk gLtts08wmIUNP/0IvPhRAcFZL/06JPJBGDKQsrqoEJDJuX1LrdYR5H76wwxyQu0PrD9uy5ngC AOT8JblaqUs24t1S6GhJ9TgwmGGWAs6MjhOEEPkNPVGYV2rAgWZRNChkfCNh12uWVvqAb4JJ Received-SPF: pass client-ip=212.227.17.22; envelope-from=rudalics@gmx.at; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:325323 Archived-At: This is a multi-part message in MIME format. --------------LXvxmvYK1i8xpQsTuOSikUkL Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit >> It wasn't magic - so far I was not able to make it work here. In all >> approaches that work here, I have to pass a (window . parent) cons to >> 'split-window' as REFER argument. I do no exclude that one can make it >> work but it's not simple and very likely requires the normal window >> handling routines to keep an old parent for each window around. > > Ah, I see. This approach definetly seems better tho, cause there is no > hidden stuff going on. But the caller has to remember which parent was the old one and pass it as argument. > I attached the contents of foo, but with the simpler split of > C-x 3 C-x o C-x 3 which still has the same error I suspect you're testing an old version of window-rotate.el or the wrong patch for 'split-window'. I resend them both. > I'll see if you can tell anything by looking at foo, otherwise I will > have to do that. This is definitively an old version. The new version outputs something like ((# (buffer . #) (parent . #) (prev . #) (next) (width . 0.25) (height . 1.0)) (# (buffer . #) (parent . #) (prev . #) (next . #) (width . 0.25) (height . 1.0)) (# (buffer . #) (parent . #) (prev) (next . #) (width . 0.5) (height . 1.0)) (# (left . #) (top) (parent) (prev) (next . #) (first . #) (width . 1.0) (height . 1.0) (combination-limit) (no-rotate))) First # v # N # [nil|#] S 385 T v # N # [#|#] S 192 F to *foo* where the last lines explain the 'split-window' calls and are interpreted, from left to right - "v" represents a split below ("^" above "<" left and ">" right are the other indicators) - the window to split - "N" is followed by the live window to recreate, a next sibling (it could also be "F" for first descendant) - [|] specify the old and new parent of the window to split - "S" is followed by the new size in pixels of the window to split - a final "T" or "F" stand for the combination limit of the parent. With C-x 3 C-x 3 there must be at least one line terminated by an "F" which means a horizontal combination of at least three windows was made. You can see that also in the parent windows that were used: The first split resurrects window 14 as parent of 11 and 15. The second split reuses window 14 as new parent of windows 15 and 16. > Looking at the code, you have not set the size argument yet, meaning that it > sis splitting only half and half approach. > > When you do this you will see the flaw of splitting parent windows: When > you split a parent window, all the child of the window being split are > scaled equally. Emacs does not handle this properly, for example look > at the screenshot I attached, this is why I initally did not want to > split parent windows. Try again with the code I attached. martin --------------LXvxmvYK1i8xpQsTuOSikUkL Content-Type: text/plain; charset=UTF-8; name="window-rotate.txt" Content-Disposition: attachment; filename="window-rotate.txt" Content-Transfer-Encoding: base64 PiBUaGlzIGlzIHRoZSB0b3AtZG93biB3YXksIHdoZXJlIHNheSB5b3UgaGF2ZSB0aGUgdHJl ZQo+IChhIChiIChjIGQpIGUpKQo+IFlvdSBnbyBsaWtlCj4gKGEpIC0+IChhIChiKSkgLT4g KGEgKGIgYykpIC0+IChhIChiIChjIGQpKSkuLi4KPiB0aGUgd2F5IHRoaXMgb25lIHdvcmtz IGlzIGJvdHRvbSB1cCwga2luZCBvZiBsaWtlOgo+IChhKSAtPiAoYSAoYyBkKSkgLT4gKGEg KGIgKGMgZCkpKS4uLgoKSSBkb24ndCBzZWUgdGhhdCBoZXJlIC0gSSBhc3N1bWUgdGhhdCB5 b3UgbWFkZSB0aGUgY29uZmlndXJhdGlvbiB2aWEKc29tZXRoaW5nIGxpa2UKCkMteCAzIEMt eCBvIEMteCAyIEMteCAyIEMteCBvIEMteCAzCgpvciBpdHMgb3J0aG9nb25hbCB2YXJpYW50 LiAgV2l0aCB5b3VyIGFwcHJvYWNoIEkgZG8gbm90IHNlZSAoYSAoYyBkKSkKYWZ0ZXIgdGhl IHNlY29uZCBzcGxpdCBidXQgKGEgKGIgYykpIGp1c3QgbGlrZSB3aXRoIG1pbmUuICBBRkFJ Q1QgeW91cgphbGdvcml0aG0gcGVyZm9ybXMgZXhhY3RseSB0aGUgc2FtZSBzZXF1ZW5jZSBv ZiBzcGxpdHMgYXMgbWluZS4gIFlvdSBjYW4KdmVyaWZ5IG15IGNsYWltIGJ5IHB1dHRpbmcg YSAneS1vci1uLXAnIGFmdGVyIGVhY2ggJ3NwbGl0LXdpbmRvdycgY2FsbAooaW4gdGhlIHZl cnNpb24gSSBhdHRhY2hlZCB0aGV5IGFyZSBjb21tZW50ZWQgb3V0IGluIHRoZSBjb2RlKSwg bWFraW5nCnR3byBmcmFtZXMgb24geW91ciBzY3JlZW4gYW5kIHN0ZXBwaW5nIHRocm91Z2gg eW91ciB2ZXJzaW9uIGluIG9uZSBhbmQKbWluZSBpbiB0aGUgb3RoZXIgd2luZG93LiAgWW91 IHdpbGwgc2VlIHRoYXQgdGhleSBzcGxpdCB3aW5kb3dzIGluCmV4YWN0bHkgdGhlIHNhbWUg b3JkZXIuCgpJIGFsc28gbm90ZWQgdGhhdCB3aXRoCgpDLXggMyBDLXggbyBDLXggMiBDLXgg MyBDLXggbyBDLXggMgoKbXkgYW5kIHlvdXIgbGFzdCAnc3BsaXQtd2luZG93JyBjYWxsIHNw bGl0IGEgcGFyZW50IHdpbmRvdyAtIHNvbWV0aGluZwp5b3UgZWFybGllciB0b2xkIG1lIHRo YXQgeW91IGRpZG4ndCB3YW50IHRvIGRvLgoKVGhlIGZvbGxvd2luZyBpcyB0aGUgY2VudHJh bCBpZGVhIG9mIG15IGFwcHJvYWNoLiAgU3VwcG9zZSBGIGlzIGEgZmlyc3QKbGl2ZSB3aW5k b3cgKGluaXRpYWxseSB0aGUgJ2ZyYW1lLWZpcnN0LXdpbmRvdycpIC0gYSBsaXZlIHdpbmRv dyB3aGljaApoYXMgbm8gcHJldmlvdXMgc2libGluZyBpbiB0aGUgd2luZG93IHRyZWUuICBB bmQgc3VwcG9zZSBQIGlzIHRoZSBwYXJlbnQKb2YgRiBpbiB0aGUgd2luZG93IHRyZWUgdGhh dCBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQsIGFsbCByZWxhdGlvbnNoaXBzCmFyZSBmcm9t IHRoZSB0cmVlIGJlZm9yZSBpdCBoYXMgYmVlbiBkZWxldGVkLiAgJ2RlbGV0ZS1vdGhlci13 aW5kb3dzJwpub3cgZGVsZXRlcyBhbGwgd2luZG93cyBidXQgRi4KCiAgUAogLwpGICAgUDEg ICAgUDIgLi4uIFBuCiAgIC8gICAgIC8gICAgICAvCiAgLyAgICAgLyAgICAgIC8KIEYxICAg IEYyICAgICBGbgoKTm93IEkgdGFrZSB0aGUgbmV4dCBzaWJsaW5nIFAxIG9mIEYgLSBJIGFz c3VtZSBpdCdzIGEgcGFyZW50IHdpbmRvdwpiZWNhdXNlIHRoYXQncyB0aGUgaGFyZCBjYXNl LiAgSSBmaW5kIHRoZSBmaXJzdCBsaXZlIGRlc2NlbmRhbnQgb2YgUDEKd2hpY2ggaXMgRjEg KGFueSBwYXJlbnQgd2luZG93IGludmFyaWFibHkgaGFzIHN1Y2ggYSBkZXNjZW5kYW50KS4g IE15CmZpcnN0IHNwbGl0IGlzIG5vdwoKKHNwbGl0LXdpbmRvdyBGIC4uIChGMSAuIFApKQoK YmVjYXVzZSBJIHNlZSB0aGF0IEYgaGFzIG5vdCB5ZXQgaXRzIHZhbGlkIHBhcmVudCBQLiAg VGhpcyByZXN1cnJlY3RzIEYxCmFuZCBtYWtlcyBGIGFuZCBGMSB0aGUgY2hpbGRyZW4gb2Yg dGhlIHJlc3VycmVjdGVkIFAuICBJZiBGIGFscmVhZHkgaGFkCml0cyB2YWxpZCBwYXJlbnQg UCwgSSB3b3VsZCBoYXZlIGNhbGxlZAoKKHNwbGl0LXdpbmRvdyBGIC4uIEYxKQoKYW5kIFAg d291bGQgaGF2ZSBnb3QgdGhlIGFkZGl0aW9uYWwgY2hpbGQgRjEuICBOb3cgSSByZWN1cnNl IHdpdGggRjEKdGFraW5nIG92ZXIgdGhlIHBhcnQgb2YgRi4gIEFmdGVyIEknbSBkb25lIHdp dGggdGhlIGVudGlyZSBzdWJ0cmVlIG9mClAxLCBJIGRvCgooc3BsaXQtd2luZG93IFAxIC4u IEYyKQoKc28gUCBnZXRzIGEgbmV3IGNoaWxkIHdpbmRvdyBGMiBhbmQgY29udGludWUgd2l0 aCBGMiB0YWtpbmcgb3ZlciB0aGUKcGFydCBvZiBGMSBhbmQgRi4gIEFmdGVyIEknbSBkb25l IHdpdGggdGhlIHN1YnRyZWUgb2YgUG4sIEkgY29udGludWUKd2l0aCBQJ3MgbmV4dCBzaWJs aW5nIGFuZCBnbyB1cCB1bnRpbCBJIGFycml2ZSBhdCB0aGUgcm9vdCBvZiB0aGUgd2luZG93 CnRyZWUuCgpOb3RlIGhlcmU6IEluaXRpYWxseSBGJ3MgcGFyZW50IGlzIG5pbC4gIFdoZW4g SSBzcGxpdCBGIHRvIHJlc3VycmVjdCBGMQpib3RoIGdldCB0aGUgbmV3IHBhcmVudCBQLiAg UCBpcyBhbHJlYWR5IHRoZSBmaW5hbCBwYXJlbnQgb2YgRiBidXQgbm90Cm9mIEYxLiAgV2hl biBJIGxhdGVyIHNwbGl0IEYxIGl0IHdpbGwgZ2V0IGl0cyBmaW5hbCBwYXJlbnQgYXMgd2Vs bC4gIEluCm5laXRoZXIgb2YgdGhlc2Ugc3BsaXRzLCAnc3BsaXQtd2luZG93JyBoYXMgYW55 IGlkZWEgd2hpY2ggcGFyZW50IHdpbmRvdwp0byB1c2UuICBJdCBjb3VsZCB0cnkgdG8gZmlu ZCBvbmUgYW1vbmcgdGhlIGRlYWQgd2luZG93cyB0aGUgb25lIHdob3NlCmZpcnN0IGNoaWxk IGlzIEYgKG9yIEYxKSBidXQgSSBoYXZlbid0IGltcGxlbWVudGVkIHN1Y2ggYSBtZWNoYW5p c20gYW5kCkknbSBub3Qgc3VyZSB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIGhhc3NsZS4gIFRo YXQncyB3aHkgSSBoYXZlIHRoZQpyb3RhdGlvbiByb3V0aW5lIGluaXRpYWxseSByZW1lbWJl ciB0aGUgb2xkIHBhcmVudHMgb2YgYWxsIHdpbmRvd3MgYW5kCnBhc3MgdGhlbSB0byAnc3Bs aXQtd2luZG93JyBhcyBjZHIgb2YgdGhlIFJFRkVSIGFyZ3VtZW50LgoKTm90ZSBhbHNvIHRo YXQgSSBhbHdheXMgYXBwbHkgdGhlIG5ldyBzaXplIHRvIHRoZSB3aW5kb3cgSSBzcGxpdC4g IFRoaXMKbWVhbnMgdGhhdCB3aGVuIEkgc3BsaXQgRiB0aGVuIEYxIGluaXRpYWxseSBnZXRz IHRoZSBlbnRpcmUgcmVtYWluZGVyIG9mCnRoZSBzaXplIG9mIFAuICBJdCBhbHNvIG1lYW5z IHRoYXQgd2hlbiBJIGxhdGVyIHNwbGl0IFAxLCAnc3BsaXQtd2luZG93JwpoYXMgdG8gcmVj dXJzaXZlbHkgcmVzaXplIHRoZSBlbnRpcmUgdHJlZSByb290ZWQgYXQgUDEgYW5kIEYyIGdl dHMgdGhlCnJlc3Qgb2YgdGhlIHNpemUgb2YgUCAtIHRoYXQgb2YgUCBtaW51cyB0aGF0IG9m IEYgYW5kIFAxLgoKSXQgbWlnaHQgYmUgaW50ZXJlc3RpbmcgdG8gdHJ5IHRoZSBmb2xsb3dp bmcgdmFyaWFudDogSW5zdGVhZCBvZgpyZWN1cnNpbmcgaW1tZWRpYXRlbHkgaW50byBGMSwg Zmlyc3Qgc3BsaXQgYWxsIHNpYmxpbmdzIG9mIEYgc28gdGhhdCBvbmUKaGFzIGEgbGF5b3V0 IG9mCgpGICBGMSAgRjIgIC4uLiBGbgoKYW5kIG9ubHkgbm93IHJlY3Vyc2l2ZWx5IHByb2Nl c3MgRjEsIEYyIC4uLiBGbi4gIFRoaXMgd291bGQgaGF2ZSB0aGUKYWR2YW50YWdlIHRoYXQg d2hlbiBzcGxpdHRpbmcgRjEgdG8gZml0IGluIHRoZSBlbnRpcmUgc3VidHJlZSByb290ZWQg YXQKUDEsIGl0cyBzaXplIGlzIGFscmVhZHkgdGhlIGZpbmFsIHNpemUuICBBbmQgd2UgbWln aHQgbm90IGhhdmUgdG8gc3BsaXQKcGFyZW50IHdpbmRvd3MgZWl0aGVyLiAgQnV0IHN1Y2gg YSBzb2x1dGlvbiB3aWxsIGJlIGxlc3MgdHJpdmlhbC4KCkF0dGFjaGVkIGZpbmQgbXkgbGF0 ZXN0IGRpZmZzICh0aGUgZG9jdW1lbnRhdGlvbiBoYXMgbm90IGJlZW4gY29tcGxldGVkCnll dCkgYW5kIHdpbmRvdy1yb3RhdGUuZWwuCgptYXJ0aW4K --------------LXvxmvYK1i8xpQsTuOSikUkL Content-Type: text/x-patch; charset=UTF-8; name="split-window.diff" Content-Disposition: attachment; filename="split-window.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVmL3dp bmRvd3MudGV4aQppbmRleCAwYjhkN2QzYjc2ZC4uZTY3ZmMyNTZiM2QgMTAwNjQ0Ci0tLSBh L2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aQorKysgYi9kb2MvbGlzcHJlZi93aW5kb3dzLnRl eGkKQEAgLTIyLDYgKzIyLDcgQEAgV2luZG93cwogKiBEZWxldGluZyBXaW5kb3dzOjogICAg ICAgIFJlbW92aW5nIGEgd2luZG93IGZyb20gaXRzIGZyYW1lLgogKiBSZWNvbWJpbmluZyBX aW5kb3dzOjogICAgIFByZXNlcnZpbmcgdGhlIGZyYW1lIGxheW91dCB3aGVuIHNwbGl0dGlu ZyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0aW5nIHdpbmRvd3Mu CisqIFJlc3VycmVjdGluZyBkZWxldGVkIHdpbmRvd3M6OiBSZXN0b3JpbmcgaW5kaXZkdWFs IHdpbmRvd3MuCiAqIEN5Y2xpYyBXaW5kb3cgT3JkZXJpbmc6OiAgTW92aW5nIGFyb3VuZCB0 aGUgZXhpc3Rpbmcgd2luZG93cy4KICogQnVmZmVycyBhbmQgV2luZG93czo6ICAgICBFYWNo IHdpbmRvdyBkaXNwbGF5cyB0aGUgY29udGVudHMgb2YgYSBidWZmZXIuCiAqIFN3aXRjaGlu ZyBCdWZmZXJzOjogICAgICAgSGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBmb3Igc3dpdGNoaW5n IHRvIGEgYnVmZmVyLgpAQCAtMTM1NSw3ICsxMzU2LDcgQEAgU3BsaXR0aW5nIFdpbmRvd3MK IEV4YW1wbGVzIG9mIHN1Y2ggd2luZG93cyBhcmUgc2lkZSB3aW5kb3dzIChAcHhyZWZ7U2lk ZSBXaW5kb3dzfSkgYW5kCiBhdG9taWMgd2luZG93cyAoQHB4cmVme0F0b21pYyBXaW5kb3dz fSkuCiAKLUBkZWZ1biBzcGxpdC13aW5kb3cgJm9wdGlvbmFsIHdpbmRvdyBzaXplIHNpZGUg cGl4ZWx3aXNlCitAZGVmdW4gc3BsaXQtd2luZG93ICZvcHRpb25hbCB3aW5kb3cgc2l6ZSBz aWRlIHBpeGVsd2lzZSByZWZlcgogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGxpdmUg d2luZG93IG5leHQgdG8gdGhlIHdpbmRvdwogQHZhcnt3aW5kb3d9LiAgSWYgQHZhcnt3aW5k b3d9IGlzIG9taXR0ZWQgb3IgQGNvZGV7bmlsfSwgaXQgZGVmYXVsdHMKIHRvIHRoZSBzZWxl Y3RlZCB3aW5kb3cuICBUaGF0IHdpbmRvdyBpcyBzcGxpdCwgYW5kIHJlZHVjZWQgaW4KQEAg LTEzNjQsNyArMTM2NSw3IEBAIFNwbGl0dGluZyBXaW5kb3dzCiBUaGUgb3B0aW9uYWwgc2Vj b25kIGFyZ3VtZW50IEB2YXJ7c2l6ZX0gZGV0ZXJtaW5lcyB0aGUgc2l6ZXMgb2YKIEB2YXJ7 d2luZG93fSBhbmQvb3IgdGhlIG5ldyB3aW5kb3cuICBJZiBpdCBpcyBvbWl0dGVkIG9yIEBj b2Rle25pbH0sCiBib3RoIHdpbmRvd3MgYXJlIGdpdmVuIGVxdWFsIHNpemVzOyBpZiB0aGVy ZSBpcyBhbiBvZGQgbGluZSwgaXQgaXMKLWFsbG9jYXRlZCB0byB0aGUgbmV3IHdpbmRvdy4g IElmIEB2YXJ7c2l6ZX0gaXMgYSBwb3NpdGl2ZSBudW1iZXIsCithbGxvdHRlZCB0byB0aGUg bmV3IHdpbmRvdy4gIElmIEB2YXJ7c2l6ZX0gaXMgYSBwb3NpdGl2ZSBudW1iZXIsCiBAdmFy e3dpbmRvd30gaXMgZ2l2ZW4gQHZhcntzaXplfSBsaW5lcyAob3IgY29sdW1ucywgZGVwZW5k aW5nIG9uIHRoZQogdmFsdWUgb2YgQHZhcntzaWRlfSkuICBJZiBAdmFye3NpemV9IGlzIGEg bmVnYXRpdmUgbnVtYmVyLCB0aGUgbmV3CiB3aW5kb3cgaXMgZ2l2ZW4gQG1pbnVze31AdmFy e3NpemV9IGxpbmVzIChvciBjb2x1bW5zKS4KQEAgLTEzNzQsMTMgKzEzNzUsMTMgQEAgU3Bs aXR0aW5nIFdpbmRvd3MKIFNpemVzfSkuICBUaHVzLCBpdCBzaWduYWxzIGFuIGVycm9yIGlm IHNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gbWFraW5nCiBhIHdpbmRvdyBzbWFsbGVyIHRo YW4gdGhvc2UgdmFyaWFibGVzIHNwZWNpZnkuICBIb3dldmVyLCBhCiBub24tQGNvZGV7bmls fSB2YWx1ZSBmb3IgQHZhcntzaXplfSBjYXVzZXMgdGhvc2UgdmFyaWFibGVzIHRvIGJlCi1p Z25vcmVkOyBpbiB0aGF0IGNhc2UsIHRoZSBzbWFsbGVzdCBhbGxvd2FibGUgd2luZG93IGlz IGNvbnNpZGVyZWQgdG8gYmUKLW9uZSB0aGF0IGhhcyBzcGFjZSBmb3IgYSB0ZXh0IHRoYXQg aXMgb25lIGxpbmUgdGFsbCBhbmQvb3IgdHdvIGNvbHVtbnMKLXdpZGUuCitpZ25vcmVkOyBp biB0aGF0IGNhc2UsIHRoZSBzbWFsbGVzdCBhbGxvd2FibGUgc2l6ZXMgYXJlIGRldGVybWlu ZWQgYnkKK3RoZSB2YWx1ZXMgb2YgQGNvZGV7d2luZG93LXNhZmUtbWluLWhlaWdodH0gYW5k CitAY29kZXt3aW5kb3ctc2FmZS1taW4td2lkdGh9LgogCiBIZW5jZSwgaWYgQHZhcntzaXpl fSBpcyBzcGVjaWZpZWQsIGl0J3MgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCi1j aGVjayB3aGV0aGVyIHRoZSBlbWFuYXRpbmcgd2luZG93cyBhcmUgbGFyZ2UgZW5vdWdoIHRv IGVuY29tcGFzcyBhbGwgb2YKLXRoZWlyIGRlY29yYXRpb25zIGxpa2UgYSBtb2RlIGxpbmUg b3IgYSBzY3JvbGwgYmFyLiAgVGhlIGZ1bmN0aW9uCitjaGVjayB3aGV0aGVyIHRoZSBlbWFu YXRpbmcgd2luZG93cyBhcmUgbGFyZ2UgZW5vdWdoIHRvIGVuY29tcGFzcyBhbGwKK2FyZWFz IGxpa2UgYSBtb2RlIGxpbmUgb3IgYSBzY3JvbGwgYmFyLiAgVGhlIGZ1bmN0aW9uCiBAY29k ZXt3aW5kb3ctbWluLXNpemV9IChAcHhyZWZ7V2luZG93IFNpemVzfSkgY2FuIGJlIHVzZWQg dG8gZGV0ZXJtaW5lCiB0aGUgbWluaW11bSByZXF1aXJlbWVudHMgb2YgQHZhcnt3aW5kb3d9 IGluIHRoaXMgcmVnYXJkLiAgU2luY2UgdGhlIG5ldwogd2luZG93IHVzdWFsbHkgaW5oZXJp dHMgYXJlYXMgbGlrZSB0aGUgbW9kZSBsaW5lIG9yIHRoZSBzY3JvbGwgYmFyIGZyb20KQEAg LTEzOTksMTQgKzE0MDAsNjIgQEAgU3BsaXR0aW5nIFdpbmRvd3MKIHdpbmRvdyBpcyBwbGFj ZWQgb24gdGhlIGxlZnQgb2YgQHZhcnt3aW5kb3d9LiAgSW4gYm90aCB0aGVzZSBjYXNlcywK IEB2YXJ7c2l6ZX0gc3BlY2lmaWVzIGEgdG90YWwgd2luZG93IHdpZHRoLCBpbiBjb2x1bW5z LgogCitBcyBhIHJ1bGUsIGlmIEB2YXJ7d2luZG93fSBhbHJlYWR5IGZvcm1zIGEgY29tYmlu YXRpb24gKEBweHJlZntXaW5kb3dzCithbmQgRnJhbWVzfSkgdGhhdCBtYXRjaGVzIEB2YXJ7 c2lkZX0gKGEgaG9yaXpvbnRhbCBjb21iaW5hdGlvbiBtYXRjaGVzCitAdmFye3NpZGV9IGlm IGl0IGlzIEBjb2Rle2xlZnR9IG9yIEBjb2Rle3JpZ2h0fSwgYSB2ZXJ0aWNhbCBjb21iaW5h dGlvbgorbWF0Y2hlcyBAdmFye3NpZGV9IGlmIGl0IGlzIEBjb2Rle2Fib3ZlfSBvciBAY29k ZXtiZWxvd30pIGFuZAorQGNvZGV7d2luZG93LWNvbWJpbmF0aW9uLWxpbWl0fSAoQHB4cmVm e1JlY29tYmluaW5nIFdpbmRvd3N9KSBpcworQGNvZGV7bmlsfSwgdGhpcyBmdW5jdGlvbiBy ZXVzZXMgQHZhcnt3aW5kb3d9J3MgcGFyZW50IGluIHRoZSB3aW5kb3cKK3RyZWUgYXMgcGFy ZW50IG9mIHRoZSBuZXcgd2luZG93LgorCitIb3dldmVyLCBpZiBAdmFye3dpbmRvd30gaXMg aW4gYSBjb21iaW5hdGlvbiB0aGF0IGRvZXMgbm90IG1hdGNoCitAdmFye3NpZGV9IG9yIGlm IEBjb2Rle3dpbmRvdy1jb21iaW5hdGlvbi1saW1pdH0gaXMgbm9uLUBjb2Rle25pbH0sIHRo aXMKK2Z1bmN0aW9uIG1ha2VzIGEgbmV3IHBhcmVudCB3aW5kb3cgdGhhdCByZXBsYWNlcyBA dmFye3dpbmRvd30gaW4gdGhlCit3aW5kb3cgdHJlZSBhbmQgbWFrZXMgQHZhcnt3aW5kb3d9 IGFuZCB0aGUgbmV3IHdpbmRvdyBpdHMgc29sZSBjaGlsZAord2luZG93cy4gIFRoaXMgc3Rh bmRhcmQgYmVoYXZpb3IgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIHRoZSBAdmFye3JlZmVyfQor YXJndW1lbnQuCisKIFRoZSBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgQHZhcntwaXhlbHdp c2V9LCBpZiBub24tQGNvZGV7bmlsfSwgbWVhbnMKIHRvIGludGVycHJldCBAdmFye3NpemV9 IGluIHVuaXRzIG9mIHBpeGVscywgaW5zdGVhZCBvZiBsaW5lcyBhbmQKIGNvbHVtbnMuCiAK LUlmIEB2YXJ7d2luZG93fSBpcyBhIGxpdmUgd2luZG93LCB0aGUgbmV3IHdpbmRvdyBpbmhl cml0cyB2YXJpb3VzCi1wcm9wZXJ0aWVzIGZyb20gaXQsIGluY2x1ZGluZyBtYXJnaW5zIGFu ZCBzY3JvbGwgYmFycy4gIElmCi1AdmFye3dpbmRvd30gaXMgYW4gaW50ZXJuYWwgd2luZG93 LCB0aGUgbmV3IHdpbmRvdyBpbmhlcml0cyB0aGUKLXByb3BlcnRpZXMgb2YgdGhlIHdpbmRv dyBzZWxlY3RlZCB3aXRoaW4gQHZhcnt3aW5kb3d9J3MgZnJhbWUuCitJZiB0aGUgb3B0aW9u YWwgZmlmdGggYXJndW1lbnQgQHZhcntyZWZlcn0gaXMgbm9uLUBjb2Rle25pbH0sIGl0Citz cGVjaWZpZXMgYSByZWZlcmVuY2Ugd2luZG93IHVzZWQgZm9yIHNldHRpbmcgdXAgcHJvcGVy dGllcyBvZiB0aGUgbmV3Cit3aW5kb3cuICBJZiBub24tQGNvZGV7bmlsfSwgQHZhcntyZWZl cn0gY2FuIGJlIGVpdGhlciBhIHdpbmRvdyBvciBhIGNvbnMKK2NlbGwgb2YgdHdvIHdpbmRv d3MuCisKK0lmIEB2YXJ7cmVmZXJ9IGlzIGEgY29ucyBjZWxsLCBpdHMgQHNje2Nhcn0gaGFz IHRvIHNwZWNpZnkgYSBkZWxldGVkLAorZm9ybWVyIGxpdmUgd2luZG93IC0gYSB3aW5kb3cg dGhhdCBoYXMgc2hvd24gYSBidWZmZXIgYmVmb3JlIC0gb24gdGhlCitzYW1lIGZyYW1lIGFz IEB2YXJ7d2luZG93fS4gIFRoYXQgYnVmZmVyIG11c3QgYmUgc3RpbGwgbGl2ZS4gIFRoZQor QHNje2Nkcn0gaGFzIHRvIHNwZWNpZnkgYSBkZWxldGVkIHdpbmRvdyB0aGF0IHdhcywgYmVm b3JlIGl0cyBkZWxldGlvbiwKK2EgcGFyZW50IHdpbmRvdyBvbiB0aGUgc2FtZSBmcmFtZSBh cyBAdmFye3dpbmRvd30uICBJbiB0aGlzIGNhc2UsIHJhdGhlcgordGhlbiBtYWtpbmcgbmV3 IHdpbmRvd3MsIHRoaXMgZnVuY3Rpb24gcmVwbGFjZXMgQHZhcnt3aW5kb3d9IHdpdGggdGhl CitAc2N7Y2RyfSBvZiBAdmFye3JlZmVyfSBpbiB0aGUgd2luZG93IHRyZWUgYW5kIG1ha2Vz IEB2YXJ7d2luZG93fSBhbmQKK0B2YXJ7cmVmZXJ9J3MgQHNje2Nhcn0gaXRzIG5ldyBjaGls ZCB3aW5kb3dzLiAgQnVmZmVyLCBzdGFydCBhbmQgcG9pbnQKK3Bvc2l0aW9ucyBvZiBAdmFy e3JlZmVyfSdzIEBzY3tjYXJ9IGFyZSBzZXQgdG8gdGhlIHZhbHVlcyB0aGV5IGhhZAoraW1t ZWRpYXRlbHkgYmVmb3JlIEB2YXJ7cmVmZXJ9J3MgQHNje2Nhcn0gd2FzIGRlbGV0ZWQgdGhl IGxhc3QgdGltZS4KK0RlY29yYXRpb25zIGFuZCBwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVy ZWQgZnJvbSB0aGVpciB2YWx1ZXMgYmVmb3JlCitAdmFye3JlZmVyfSdzIEBzY3tjYXJ9IGFu ZCBAc2N7Y2RyfSB3ZXJlIGRlbGV0ZWQuCisKK0FsdGVybmF0aXZlbHksIEB2YXJ7cmVmZXJ9 IG1heSBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93IC0gYQord2luZG93 IHRoYXQgaGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFz CitAdmFye3dpbmRvd30uICBUaGF0IGJ1ZmZlciBtdXN0IGJlIHN0aWxsIGxpdmUuICBJbiB0 aGlzIGNhc2UsIHRoaXMKK2Z1bmN0aW9uIGRvIG5vdCBtYWtlIGEgbmV3IHdpbmRvdyBidXQg cmF0aGVyIG1ha2VzIEB2YXJ7cmVmZXJ9IGxpdmUKK2FnYWluIGFuZCBpbnNlcnRzIGl0IGlu dG8gdGhlIHdpbmRvdyB0cmVlIGF0IHRoZSBwb3NpdGlvbiBhbmQgd2l0aCB0aGUKK3NpemVz IHRoZSBuZXcgd2luZG93IHdvdWxkIGhhdmUgYmVlbiBnaXZlbi4gIEJ1ZmZlciwgc3RhcnQg YW5kIHBvaW50Citwb3NpdGlvbnMgb2YgQHZhcntyZWZlcn0gYXJlIHNldCB0byB0aGUgdmFs dWVzIHRoZXkgaGFkIGltbWVkaWF0ZWx5CitiZWZvcmUgQHZhcntyZWZlcn0gd2FzIGRlbGV0 ZWQgdGhlIGxhc3QgdGltZS4gIERlY29yYXRpb25zIGFuZAorcGFyYW1ldGVycyByZW1haW4g dW5hbHRlcmVkIGZyb20gdGhlaXIgdmFsdWVzIGJlZm9yZSBAdmFye3JlZmVyfSB3YXMKK2Rl bGV0ZWQuICBUaGUgcGFyZW50IG9mIEB2YXJ7cmVmZXJ9IGlzIHRoZW4gZGV0ZXJtaW5lZCBh cyBpZiBpdCB3ZXJlIGEKK3dpbmRvdyBjcmVhdGVkIGFuZXcuCisKK090aGVyd2lzZSwgQHZh cntyZWZlcn0gbXVzdCBzcGVjaWZ5IGEgbGl2ZSB3aW5kb3cuICBJbiB0aGlzIGNhc2UsIHRo ZQorbmV3IHdpbmRvdyB3aWxsIGluaGVyaXQgcHJvcGVydGllcyBsaWtlIGJ1ZmZlciwgc3Rh cnQgYW5kIHBvaW50Citwb3NpdGlvbnMgYW5kIHNvbWUgZGVjb3JhdGlvbnMgZnJvbSBAdmFy e3JlZmVyfS4gIElmIEB2YXJ7cmVmZXJ9IGlzCitAY29kZXtuaWx9IG9yIG9taXR0ZWQsIHRo ZW4gaWYgQHZhcnt3aW5kb3d9IGlzIGxpdmUsIGFueSBzdWNoIHByb3BlcnRpZXMKK2FyZSBp bmhlcml0ZWQgZnJvbSBAdmFye3dpbmRvd30uICBJZiwgaG93ZXZlciwgQHZhcnt3aW5kb3d9 IGlzIGFuCitpbnRlcm5hbCB3aW5kb3csIHRoZSBuZXcgd2luZG93IHdpbGwgaW5oZXJpdCB0 aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlCit3aW5kb3cgc2VsZWN0ZWQgb24gQHZhcnt3aW5k b3d9J3MgZnJhbWUuCiAKIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIG1heSBiZSBh bHRlcmVkIGJ5IHRoZSB3aW5kb3cgcGFyYW1ldGVycwogb2YgQHZhcnt3aW5kb3d9LCBzbyBs b25nIGFzIHRoZSB2YXJpYWJsZQpAQCAtMjA0OCw2ICsyMDk3LDE1NyBAQCBSZWNvbWJpbmlu ZyBXaW5kb3dzCiB3aW5kb3dzLgogCiAKK0Bub2RlIFJlc3VycmVjdGluZyBkZWxldGVkIHdp bmRvd3MKK0BzZWN0aW9uIFJlc3VycmVjdGluZyBkZWxldGVkIHdpbmRvd3MKK0BjaW5kZXgg cmVzdXJyZWN0aW5nIGRlbGV0ZWQgd2luZG93cworCitBZnRlciBhIHdpbmRvdyBoYXMgYmVl biBkZWxldGVkIChAcHhyZWZ7RGVsZXRpbmcgV2luZG93c30pIGl0IGNhbm5vdCBiZQordXNl ZCBhbnkgbW9yZSBieSBmdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgdmFsaWQgd2luZG93IGFz IHRoZWlyIGFyZ3VtZW50CitldmVuIGlmIHNvbWUgTGlzcCB2YXJpYWJsZSBzdGlsbCByZWZl cmVuY2VzIHRoYXQgd2luZG93LiAgV2hlbiB0aGUgbGFzdAorcmVmZXJlbmNlIHRvIGEgd2lu ZG93IGhhcyBjZWFzZWQgdG8gZXhpc3QsIHRoZSB3aW5kb3cncyBMaXNwIG9iamVjdCB3aWxs CitiZSBldmVudHVhbGx5IHJlY3ljbGVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKwor VGhlcmUgYXJlIHR3byB3YXlzIHRvIHJlc3VycmVjdCBhIGRlbGV0ZWQgd2luZG93IHdob3Nl IG9iamVjdCBoYXMgbm90CitiZWVuIHlldCByZWN5Y2xlZCBieSB0aGUgY29sbGVjdG9yOiBU aGUgZmlyc3QgaXMgdG8ga2VlcCBhIHJlZmVyZW5jZSB0bwordGhhdCB3aW5kb3cgaW4gYSBz YXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbiAoQHB4cmVme1dpbmRvdworQ29uZmlndXJhdGlv bnN9KSBhbmQgdGhlbiBjYWxsIEBjb2Rle3NldC13aW5kb3ctY29uZmlndXJhdGlvbn0gd2l0 aCB0aGF0Citjb25maWd1cmF0aW9uIGFzIGFyZ3VtZW50LiAgVGhlIHNlY29uZCBvbmUgaXMg dG8ga2VlcCBhIHJlZmVyZW5jZSB0bwordGhhdCB3aW5kb3cgaW4gYSB2YXJpYWJsZSBvciBs ZXQtYmluZCBpdCBhbmQgdGhlbiB1c2UgdGhhdCByZWZlcmVuY2UgYXMKK0B2YXJ7cmVmZXJ9 IGFyZ3VtZW50IGluIEBjb2Rle3NwbGl0LXdpbmRvd30gKEBweHJlZntTcGxpdHRpbmcgV2lu ZG93c30pLgorCitUaGUgbWFqb3IgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBpcyB0 aGF0CitAY29kZXtzZXQtd2luZG93LWNvbmZpZ3VyYXRpb259IHJlc3RvcmVzIHRoZSBmcmFt ZSBsYXlvdXQgdGhhdCBleGlzdGVkCitiZWZvcmUgZGVsZXRpbmcgdGhlIHdpbmRvdy4gIFRo ZSBAY29kZXtzcGxpdC13aW5kb3d9IGFwcHJvYWNoLCBvbiB0aGUKK290aGVyIGhhbmQsIGFs bG93cyBmb3IgYXJiaXRyYXJ5IHZhcmlhdGlvbnMgb2YgdGhlIGxheW91dC4KKworQ29uc2lk ZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHN0YXJ0aW5nIHdpdGggYSBmcmFtZSBjb250YWlu aW5nIGEgc2luZ2xlCit3aW5kb3cgc2hvd2luZyB0aGUgYnVmZmVyIEBmaWxleypzY3JhdGNo Kn06CisKK0BleGFtcGxlCitAZ3JvdXAKKyhsZXQqICgob2xkIChzZWxlY3RlZC13aW5kb3cp KQorICAgICAgIChuZXcgKHNwbGl0LXdpbmRvdyBvbGQgbmlsICdyaWdodCkpCisgICAgICAg b3ZlcmxheSkKKyAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIq TWVzc2FnZXMqIikKKyAgICAoc2V0LXdpbmRvdy1idWZmZXIgbmV3IChjdXJyZW50LWJ1ZmZl cikpCisgICAgKHNldHEgb3ZlcmxheSAobWFrZS1vdmVybGF5IChwb2ludC1taW4pIChwb2lu dC1tYXgpKSkKKyAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSAnaGlnaGxpZ2h0KQor ICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICd3aW5kb3cgbmV3KQorICAgIChtZXNzYWdlICJu ZXcgJXMgcGFyZW50ICVzIiBuZXcgKHdpbmRvdy1wYXJlbnQgbmV3KSkKKyAgICAoc2l0LWZv ciAzKSkKKyAgKGRlbGV0ZS13aW5kb3cgbmV3KQorICAoc2V0cSBuZXcgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdsZWZ0KSkKKyAgKHNldC13aW5kb3ctYnVmZmVyIG5ldyAoZ2V0LWJ1ZmZl ci1jcmVhdGUgIipNZXNzYWdlcyoiKSkKKyAgKGZvcm1hdCAibmV3ICVzIHBhcmVudCAlcyIg bmV3ICh3aW5kb3ctcGFyZW50IG5ldykpKQorQGVuZCBncm91cAorQGVuZCBleGFtcGxlCisK K1doZW4geW91IHJ1biB0aGF0IGNvZGUgaW4gQGZpbGV7KnNjcmF0Y2gqfSBpdCB3aWxsIGZp cnN0IHNwbGl0IHRoZQord2luZG93IHNob3dpbmcgQGZpbGV7KnNjcmF0Y2gqfSB0byBkaXNw bGF5IEBmaWxleypNZXNzYWdlcyp9IGluIGEgbmV3Cit3aW5kb3cgb24gdGhlIHJpZ2h0LiAg SXQgYWxzbyBzZXRzIHVwIGFuIG92ZXJsYXkgd2l0aCBhIHdpbmRvdyBwcm9wZXJ0eQordG8g aGlnaGxpZ2h0IHRoZSB0ZXh0IG9mIEBmaWxleypNZXNzYWdlcyp9IGluIHRoZSBuZXcgd2lu ZG93IGFuZAorZGlzcGxheXMgYSBtZXNzYWdlIHNob3dpbmcgdGhlIG5ldyB3aW5kb3cgYW5k IGl0cyBwYXJlbnQgaW4gdGhlIHdpbmRvdwordHJlZS4gIEl0IHRoZW4gZGVsZXRlcyB0aGUg bmV3IHdpbmRvdyBhbmQgcmVzdXJyZWN0cyBpdCBvbiB0aGUgbGVmdCBvZgordGhlIEBmaWxl eypzY3JhdGNoKn0gd2luZG93IGFnYWluIGRpc3BsYXlpbmcgYSBtZXNzYWdlIHNob3dpbmcg dGhlIG5ldword2luZG93IGFuZCBpdHMgcGFyZW50IGluIHRoZSB3aW5kb3cgdHJlZS4KKwor Tm90ZSB0aGF0IGJvdGgsIG5ldyB3aW5kb3cgYW5kIGl0cyBwYXJlbnQgaGF2ZSBjaGFuZ2Vk IGFmdGVyIG1vdmluZyB0aGUKK0BmaWxleypNZXNzYWdlcyp9IHdpbmRvdyB0byB0aGUgbGVm dC4gIEFsc28sIHRoZSBoaWdobGlnaHRpbmcgZGlzYXBwZWFycworYmVjYXVzZSBhbnkgcHJv cGVydGllcyBzZXQgdXAgZm9yIHRoZSBuZXcgd2luZG93IG9uIHRoZSByaWdodCBhcmUgbG9z dAord2hlbiB0aGUgbmV3IHdpbmRvdyBpcyByZS1jcmVhdGVkIG9uIHRoZSBsZWZ0LgorCitU aGUgZm9sbG93aW5nIGNvZGUgdXNlcyB0aGUgQHZhcntyZWZlcn0gYXJndW1lbnQgb2YgQGNv ZGV7c3BsaXQtd2luZG93fQoraW5zdGVhZC4KKworQGV4YW1wbGUKK0Bncm91cAorKGxldCog KChvbGQgKHNlbGVjdGVkLXdpbmRvdykpCisgICAgICAgKG5ldyAoc3BsaXQtd2luZG93IG9s ZCBuaWwgJ3JpZ2h0KSkKKyAgICAgICBvdmVybGF5KQorICAod2l0aC1jdXJyZW50LWJ1ZmZl ciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipNZXNzYWdlcyoiKQorICAgIChzZXQtd2luZG93LWJ1 ZmZlciBuZXcgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAoc2V0cSBvdmVybGF5IChtYWtlLW92 ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAgIChvdmVybGF5LXB1dCBvdmVy bGF5ICdmYWNlICdoaWdobGlnaHQpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpbmRv dyBuZXcpCisgICAgKG1lc3NhZ2UgIm5ldyAlcyBwYXJlbnQgJXMiIG5ldyAod2luZG93LXBh cmVudCBuZXcpKQorICAgIChzaXQtZm9yIDMpKQorICAoZGVsZXRlLXdpbmRvdyBuZXcpCisg IChzcGxpdC13aW5kb3cgb2xkIG5pbCAnbGVmdCBuaWwgbmV3KQorICAoZm9ybWF0ICJuZXcg JXMgcGFyZW50ICVzIiBuZXcgKHdpbmRvdy1wYXJlbnQgbmV3KSkpCitAZW5kIGdyb3VwCitA ZW5kIGV4YW1wbGUKKworTm90ZSB0aGF0IGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSByZXN1cnJl Y3RlZCB3aW5kb3cgbGlrZSBpdHMgZGVjb3JhdGlvbnMsCitwYXJhbWV0ZXJzIGFzIHdlbGwg YXMgYW55IG92ZXJsYXlzIHdpdGggYSB3aW5kb3cgcHJvcGVydHkgYXJlIHByZXNlcnZlZAor YXMgaWYgdGhhdCB3aW5kb3cgaGFkIG5ldmVyIGJlZW4gZGVsZXRlZC4gIFRoZSBvbmx5IHRo aW5ncyB0aGF0IGNoYW5nZWQKK2FyZSBpdHMgcG9zaXRpb24gaW4gdGhlIHdpbmRvdyB0cmVl IGFuZCBjb25zZXF1ZW50bHkgdGhlIHZhbHVlcyByZXR1cm5lZAorYnkgQGNvZGV7d2luZG93 LWxlZnQtY2hpbGR9IG9mIGl0cyBwYXJlbnQgd2luZG93IGFzIHdlbGwgYXMgdGhlIHZhbHVl cworcmV0dXJuZWQgYnkgQGNvZGV7d2luZG93LXByZXYtc2libGluZ30gYW5kIEBjb2Rle3dp bmRvdy1uZXh0LXNpYmxpbmd9IG9mCit0aGUgd2luZG93IGFuZCBpdHMgc2libGluZy4KKwor VGhlIGZvbGxvd2luZyBjb2RlIHBhc3NlcyBib3RoLCB0aGUgbmV3IHdpbmRvdyBvbiB0aGUg cmlnaHQgYW5kIGl0cworcGFyZW50LCB2aWEgdGhlIEB2YXJ7cmVmZXJ9IGFyZ3VtZW50IHRv IEBjb2Rle3NwbGl0LXdpbmRvd306IGluc3RlYWQuCisKK0BleGFtcGxlCitAZ3JvdXAKKyhs ZXQqICgob2xkIChzZWxlY3RlZC13aW5kb3cpKQorICAgICAgIChuZXcgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdyaWdodCkpCisgICAgICAgKHBhcmVudCAod2luZG93LXBhcmVudCBuZXcp KQorICAgICAgIG92ZXJsYXkpCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVy LWNyZWF0ZSAiKk1lc3NhZ2VzKiIpCisgICAgKHNldC13aW5kb3ctYnVmZmVyIG5ldyAoY3Vy cmVudC1idWZmZXIpKQorICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3ZlcmxheSAocG9pbnQt bWluKSAocG9pbnQtbWF4KSkpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgJ2hp Z2hsaWdodCkKKyAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnd2luZG93IG5ldykKKyAgICAo bWVzc2FnZSAibmV3ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50IG5ldykpCisg ICAgKHNpdC1mb3IgMykpCisgIChkZWxldGUtd2luZG93IG5ldykKKyAgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdsZWZ0IG5pbCAoY29ucyBuZXcgcGFyZW50KSkKKyAgKGZvcm1hdCAibmV3 ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50IG5ldykpKQorQGVuZCBncm91cAor QGVuZCBleGFtcGxlCisKK05vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBoYXMgYmVlbiBy ZXN1cnJlY3RlZCBhbG9uZyB3aXRoIHRoZSBuZXcKK3dpbmRvdy4KKworUmVzdXJyZWN0aW5n IGRlYWQgd2luZG93cyBpcyB1c2VmdWwgdG8gcHJlc2VydmUgdGhlIGlkZW50aXR5IG9mIHdp bmRvd3MKK2luIGFjdGlvbnMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gZG8gdGhhdCBsaWtlIG1v dmluZyB3aW5kb3dzIGFyb3VuZCBvbiBhCitmcmFtZSBvciBoaWRpbmcgdGhlbSB0ZW1wb3Jh cmlseS4gIEFueSBwcm9wZXJ0aWVzIG9mIHN1Y2ggYSB3aW5kb3cgbGlrZQoraXRzIGRlY29y YXRpb25zLCB0aGUgYnVmZmVyIGl0IGhhcyBzaG93biBwcmV2aW91c2x5LCB0aGF0IGJ1ZmZl cidzIHN0YXJ0CithbmQgcG9pbnQgcG9zaXRpb24gaW4gdGhlIHdpbmRvdywgdGhlIHdpbmRv dydzIGRlZGljYXRlZCBzdGF0dXMsIGl0cworY3Vyc29yIHR5cGUgYXJlIGxlZnQgdW50b3Vj aGVkIGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gcmVjcmVhdGUgdGhlbSBmcm9tCitzY3JhdGNo LiAgRm9yIGludGVybmFsIHdpbmRvd3MsIHRoZSB2YWx1ZSBvZiB0aGF0IHdpbmRvdydzIGNv bWJpbmF0aW9uCitsaW1pdCBpcyBwcmVlcnZlZCB3aGljaCBtZWFucyB0aGF0IHRoZSB3aW5k b3cgY2FuIGJlIHJlY29tYmluZWQKKyhAcHhyZWZ7UmVjb21iaW5pbmcgV2luZG93c30pIGFz IGJlZm9yZS4KKworRHVlIHRvIGNlcnRhaW4gbGltaXRhdGlvbnMgaW4gdGhlIHdheSB3aW5k b3dzIGNhbiBiZSBzcGxpdCwgbWFraW5nIGEKK3NlcXVlbmNlIG9mIGNoYW5nZXMgdG8gdGhl IHdpbmRvdyBzdHJ1Y3R1cmUgY2FuIGJlIG1vcmUgdHJpY2t5LiAgSXQncworc3RpbGwgZmFp cmx5IHNpbXBsZSB0byByb3RhdGUgdGhyZWUgd2luZG93cyBhcyBmb2xsb3dzOgorCitAZXhh bXBsZQorQGdyb3VwCisobGV0KiAoKG9sZCAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAgICAo bmV3LTEgKHNwbGl0LXdpbmRvdyBvbGQgbmlsICdyaWdodCkpCisgICAgICAgKHBhcmVudC0x ICh3aW5kb3ctcGFyZW50IG9sZCkpCisgICAgICAgKG5ldy0yIChzcGxpdC13aW5kb3cgbmV3 LTEgbmlsICdiZWxvdykpCisgICAgICAgKHBhcmVudC0yICh3aW5kb3ctcGFyZW50IG5ldy0y KSkKKyAgICAgICBuZXcpCisgIChtZXNzYWdlICJvbGQgJXMgKCVzKSAuLiBuZXctMSAlcyAo JXMpIC4uIG5ldy0yICVzICglcykiCisJICAgb2xkICh3aW5kb3ctcGFyZW50IG9sZCkKKwkg ICBuZXctMSAod2luZG93LXBhcmVudCBuZXctMSkKKwkgICBuZXctMiAod2luZG93LXBhcmVu dCBuZXctMikpCisgIChzaXQtZm9yIDMpCisgIChkZWxldGUtb3RoZXItd2luZG93cyBvbGQp CisgIChzZXRxIG5ldyAoc3BsaXQtd2luZG93IG9sZCBuaWwgJ2JlbG93IG5pbCAoY29ucyBu ZXctMSBwYXJlbnQtMSkpKQorICAoc3BsaXQtd2luZG93IG5ldyBuaWwgJ3JpZ2h0IG5pbCAo Y29ucyBuZXctMiBwYXJlbnQtMikpCisgIChmb3JtYXQgIm9sZCAlcyAoJXMpIC4uIG5ldy0x ICVzICglcykgLi4gbmV3LTIgJXMgKCVzKSIKKwkgIG9sZCAod2luZG93LXBhcmVudCBvbGQp CisJICBuZXctMSAod2luZG93LXBhcmVudCBuZXctMSkKKwkgIG5ldy0yICh3aW5kb3ctcGFy ZW50IG5ldy0yKSkpCitAZW5kIGdyb3VwCitAZW5kIGV4YW1wbGUKKworCiBAbm9kZSBDeWNs aWMgV2luZG93IE9yZGVyaW5nCiBAc2VjdGlvbiBDeWNsaWMgT3JkZXJpbmcgb2YgV2luZG93 cwogQGNpbmRleCBjeWNsaWMgb3JkZXJpbmcgb2Ygd2luZG93cwpAQCAtNzEyNiwxMyArNzMy NiwxNiBAQCBXaW5kb3cgSG9va3MKIHdpbmRvdy4KIAogQGRlZnVuIHdpbmRvdy1vbGQtYnVm ZmVyICZvcHRpb25hbCB3aW5kb3cKLVRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnVmZmVy IHNob3duIGluIEB2YXJ7d2luZG93fSBhdCB0aGUgbGFzdAotdGltZSB3aW5kb3cgY2hhbmdl IGZ1bmN0aW9ucyB3ZXJlIHJ1biBmb3IgQHZhcnt3aW5kb3d9J3MgZnJhbWUuICBJZiBpdAot cmV0dXJucyBAY29kZXtuaWx9LCBAdmFye3dpbmRvd30gaGFzIGJlZW4gY3JlYXRlZCBhZnRl ciB0aGF0LiAgSWYgaXQKLXJldHVybnMgQGNvZGV7dH0sIEB2YXJ7d2luZG93fSB3YXMgbm90 IHNob3duIGF0IHRoYXQgdGltZSBidXQgaGFzIGJlZW4KLXJlc3RvcmVkIGZyb20gYSBwcmV2 aW91c2x5IHNhdmVkIHdpbmRvdyBjb25maWd1cmF0aW9uIGFmdGVyd2FyZHMuCi1PdGhlcndp c2UsIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGJ1ZmZlciBzaG93biBieSBAdmFye3dpbmRv d30gYXQKLXRoYXQgdGltZS4KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnVmZmVyIHNo b3duIGluIEB2YXJ7d2luZG93fSBhdCB0aGUgbGFzdCB0aW1lCit3aW5kb3cgY2hhbmdlIGZ1 bmN0aW9ucyB3ZXJlIHJ1biBmb3IgQHZhcnt3aW5kb3d9J3MgZnJhbWUuICBJZiBpdAorcmV0 dXJucyBAY29kZXtuaWx9LCBAdmFye3dpbmRvd30gaXMgZWl0aGVyIGFuIGludGVybmFsIHdp bmRvdyBvciBoYXMKK2JlZW4gY3JlYXRlZCBhZnRlciB0aGF0LiAgSWYgaXQgcmV0dXJucyBA Y29kZXt0fSwgQHZhcnt3aW5kb3d9IHdhcyBub3QKK3Nob3duIGF0IHRoYXQgdGltZSBidXQg aGFzIGJlZW4gcmVzdG9yZWQgZnJvbSBhIHByZXZpb3VzbHkgc2F2ZWQgd2luZG93Citjb25m aWd1cmF0aW9uIGFmdGVyd2FyZHMuICBPdGhlcndpc2UsIHRoZSByZXR1cm4gdmFsdWUgaXMg dGhlIGJ1ZmZlcgorc2hvd24gYnkgQHZhcnt3aW5kb3d9IGF0IHRoYXQgdGltZS4gIEFzIGEg c3BlY2lhbCBjYXNlLCBpZiBAdmFye3dpbmRvd30KK2hhcyBiZWVuIGRlbGV0ZWQsIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgbGFzdCBidWZmZXIgQHZhcnt3aW5kb3d9IGhhZAorc2hv d24gYXQgdGhhdCB0aW1lLiAgQHZhcnt3aW5kb3d9IGNhbiBiZSBhbnkgd2luZG93IGFuZCBk ZWZhdWx0cyB0byB0aGUKK3NlbGVjdGVkIG9uZS4KIEBlbmQgZGVmdW4KIAogQGRlZnVuIHdp bmRvdy1vbGQtcGl4ZWwtd2lkdGggJm9wdGlvbmFsIHdpbmRvdwpkaWZmIC0tZ2l0IGEvbGlz cC93aW5kb3cuZWwgYi9saXNwL3dpbmRvdy5lbAppbmRleCBiNTA3NzBjYmQ3ZS4uMDYwNzE2 ZGY5MzYgMTAwNjQ0Ci0tLSBhL2xpc3Avd2luZG93LmVsCisrKyBiL2xpc3Avd2luZG93LmVs CkBAIC01NTExLDU0ICs1NTExLDk1IEBAIHdpbmRvdy0tY29tYmluYXRpb24tcmVzaXphYmxl CiAgICAgICAoc2V0cSBzaWJsaW5nICh3aW5kb3ctbmV4dC1zaWJsaW5nIHNpYmxpbmcpKSkK ICAgICAoLyBzaXplICgxKyBudW1iZXIpKSkpCiAKLShkZWZ1biBzcGxpdC13aW5kb3cgKCZv cHRpb25hbCB3aW5kb3cgc2l6ZSBzaWRlIHBpeGVsd2lzZSkKKyhkZWZ1biBzcGxpdC13aW5k b3cgKCZvcHRpb25hbCB3aW5kb3cgc2l6ZSBzaWRlIHBpeGVsd2lzZSByZWZlcikKICAgIk1h a2UgYSBuZXcgd2luZG93IGFkamFjZW50IHRvIFdJTkRPVy4KIFdJTkRPVyBtdXN0IGJlIGEg dmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogUmV0dXJu IHRoZSBuZXcgd2luZG93IHdoaWNoIGlzIGFsd2F5cyBhIGxpdmUgd2luZG93LgogCi1PcHRp b25hbCBhcmd1bWVudCBTSVpFIGEgcG9zaXRpdmUgbnVtYmVyIG1lYW5zIG1ha2UgV0lORE9X IFNJWkUKLWxpbmVzIG9yIGNvbHVtbnMgdGFsbC4gIElmIFNJWkUgaXMgbmVnYXRpdmUsIG1h a2UgdGhlIG5ldyB3aW5kb3cKLS1TSVpFIGxpbmVzIG9yIGNvbHVtbnMgdGFsbC4gIElmIGFu ZCBvbmx5IGlmIFNJWkUgaXMgbm9uLW5pbCwgaXRzCi1hYnNvbHV0ZSB2YWx1ZSBjYW4gYmUg bGVzcyB0aGFuIGB3aW5kb3ctbWluLWhlaWdodCcgb3IKLWB3aW5kb3ctbWluLXdpZHRoJzsg c28gdGhpcyBjb21tYW5kIGNhbiBtYWtlIGEgbmV3IHdpbmRvdyBhcwotc21hbGwgYXMgb25l IGxpbmUgb3IgdHdvIGNvbHVtbnMuICBTSVpFIGRlZmF1bHRzIHRvIGhhbGYgb2YKLVdJTkRP VydzIHNpemUuCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgU0laRSBpcyBhIHBvc2l0aXZl IG51bWJlciwgc2hyaW5rIFdJTkRPVwordG8gU0laRSBsaW5lcyBvciBjb2x1bW5zIGluIG9y ZGVyIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgd2luZG93LgorSWYgU0laRSBpcyBhIG5lZ2F0 aXZlIG51bWJlciwgbWFrZSB0aGUgbmV3IHdpbmRvdyAtU0laRSBsaW5lcyBvcgorY29sdW1u cyB0YWxsLiAgSW4gYm90aCBjYXNlcywgdGhlIGFic29sdXRlIHZhbHVlIG9mIFNJWkUgY2Fu IGJlCitsZXNzIHRoYW4gYHdpbmRvdy1taW4taGVpZ2h0JyBvciBgd2luZG93LW1pbi13aWR0 aCc7IHNvIHRoaXMKK2Z1bmN0aW9uIGNhbiBtYWtlIGEgbmV3IHdpbmRvdyBhcyBzbWFsbCBh cyBvbmUgbGluZSBvciB0d28KK2NvbHVtbnMuICBJZiBTSVpFIGlzIG5vdCBhIG51bWJlciwg bWFrZSB0aGUgbmV3IHdpbmRvdyBvY2N1cHkKK2hhbGYgb2YgV0lORE9XJ3Mgc2l6ZS4KIAog T3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgU0lERSBuaWwgKG9yIGBiZWxvdycpIHNwZWNpZmll cyB0aGF0IHRoZQotbmV3IHdpbmRvdyBzaGFsbCBiZSBsb2NhdGVkIGJlbG93IFdJTkRPVy4g IFNJREUgYGFib3ZlJyBtZWFucyB0aGUKLW5ldyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBh Ym92ZSBXSU5ET1cuICBJbiBib3RoIGNhc2VzIFNJWkUKK25ldyB3aW5kb3cgc2hhbGwgYmUg bWFkZSBiZWxvdyBXSU5ET1cuICBTSURFIGBhYm92ZScgbWVhbnMgdGhlCituZXcgd2luZG93 IHNoYWxsIGJlIG1hZGUgYWJvdmUgV0lORE9XLiAgSW4gYm90aCBjYXNlcyBTSVpFCiBzcGVj aWZpZXMgdGhlIG5ldyBudW1iZXIgb2YgbGluZXMgZm9yIFdJTkRPVyAob3IgdGhlIG5ldyB3 aW5kb3cKIGlmIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGluZyBzcGFjZSByZXNlcnZlZCBm b3IgdGhlIG1vZGUgYW5kL29yCi1oZWFkZXIgbGluZS4KK2hlYWRlciBsaW5lLCBzY3JvbGwg YmFycyBhbmQgd2luZG93IGRpdmlkZXJzLgogCi1TSURFIHQgKG9yIGByaWdodCcpIHNwZWNp ZmllcyB0aGF0IHRoZSBuZXcgd2luZG93IHNoYWxsIGJlCi1sb2NhdGVkIG9uIHRoZSByaWdo dCBzaWRlIG9mIFdJTkRPVy4gIFNJREUgYGxlZnQnIG1lYW5zIHRoZSBuZXcKLXdpbmRvdyBz aGFsbCBiZSBsb2NhdGVkIG9uIHRoZSBsZWZ0IG9mIFdJTkRPVy4gIEluIGJvdGggY2FzZXMK LVNJWkUgc3BlY2lmaWVzIHRoZSBuZXcgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIFdJTkRPVyAo b3IgdGhlIG5ldwotd2luZG93IHByb3ZpZGVkIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGlu ZyBzcGFjZSByZXNlcnZlZCBmb3IKLWZyaW5nZXMgYW5kIHRoZSBzY3JvbGxiYXIgb3IgYSBk aXZpZGVyIGNvbHVtbi4KK1NJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQgdGhl IG5ldyB3aW5kb3cgc2hhbGwgYmUgbWFkZQorb24gdGhlIHJpZ2h0IHNpZGUgb2YgV0lORE9X LiAgU0lERSBgbGVmdCcgbWVhbnMgdGhlIG5ldyB3aW5kb3cKK3NoYWxsIGJlIG1hZGUgb24g dGhlIGxlZnQgb2YgV0lORE9XLiAgSW4gYm90aCBjYXNlcywgU0laRQorc3BlY2lmaWVzIHRo ZSBuZXcgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIFdJTkRPVyAob3IgdGhlIG5ldyB3aW5kb3cK K3Byb3ZpZGVkIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGluZyBhbnkgc3BhY2UgcmVzZXJ2 ZWQgZm9yCitmcmluZ2VzLCBzY3JvbGwgYmFyIGFuZCB3aW5kb3cgZGl2aWRlcnMuCiAKIEZv ciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIFNJREUgYHVwJyBhbmQgYGRvd24nIGFyZSBpbnRl cnByZXRlZAogYXMgYGFib3ZlJyBhbmQgYGJlbG93Jy4gIEFueSBvdGhlciBub24tbmlsIHZh bHVlIGZvciBTSURFIGlzCiBjdXJyZW50bHkgaGFuZGxlZCBsaWtlIHQgKG9yIGByaWdodCcp LgogCitBcyBhIHJ1bGUsIGlmIFdJTkRPVyBhbHJlYWR5IGZvcm1zIGEgY29tYmluYXRpb24g dGhhdCBtYXRjaGVzIHRoZSBTSURFCitwYXJhbWV0ZXIgYW5kIGB3aW5kb3ctY29tYmluYXRp b24tbGltaXQnIGlzIG5pbCwgcmV1c2UgV0lORE9XJ3MgcGFyZW50CitpbiB0aGUgd2luZG93 IHRyZWUgYXMgcGFyZW50IG9mIHRoZSBuZXcgd2luZG93LiAgSWYgV0lORE9XIGlzIGluIGEK K2NvbWJpbmF0aW9uIHRoYXQgaXMgb3J0aG9nb25hbCB0byB0aGUgU0lERSBwYXJhbWV0ZXIg b3IgaWYKK2B3aW5kb3ctY29tYmluYXRpb24tbGltaXQnIGlzIG5vbi1uaWwsIG1ha2UgYSBu ZXcgcGFyZW50IHdpbmRvdyB0aGF0CityZXBsYWNlcyBXSU5ET1cgaW4gdGhlIHdpbmRvdyB0 cmVlIGFuZCBtYWtlIFdJTkRPVyBhbmQgdGhlIG5ldyB3aW5kb3cKK2l0cyBzb2xlIGNoaWxk IHdpbmRvd3MuICBUaGlzIHN0YW5kYXJkIGJlaGF2aW9yIGNhbiBiZSBvdmVycmlkZGVuIHZp YQordGhlIFJFRkVSIGFyZ3VtZW50LgorCiBQSVhFTFdJU0UsIGlmIG5vbi1uaWwsIG1lYW5z IHRvIGludGVycHJldCBTSVpFIHBpeGVsd2lzZS4KIAorSWYgdGhlIG9wdGlvbmFsIGZpZnRo IGFyZ3VtZW50IFJFRkVSIGlzIG5vbi1uaWwsIGl0IHNwZWNpZmllcyBhCityZWZlcmVuY2Ug d2luZG93IHVzZWQgZm9yIHNldHRpbmcgdXAgcHJvcGVydGllcyBvZiB0aGUgbmV3IHdpbmRv dy4KK1JFRkVSIGNhbiBiZSBlaXRoZXIgYSB3aW5kb3cgb3IgYSBjb25zIGNlbGwgb2YgdHdv IHdpbmRvd3MuCisKK0lmIFJFRkVSIGlzIGEgY29ucyBjZWxsLCBpdHMgY2FyIGhhcyB0byBz cGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUKK3dpbmRvdyAtIGEgd2luZG93IHRoYXQg aGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFzCitXSU5E T1cuICBUaGF0IGJ1ZmZlciBtdXN0IGJlIHN0aWxsIGxpdmUuICBUaGUgY2RyIGhhcyB0byBz cGVjaWZ5IGEKK2RlbGV0ZWQgd2luZG93IHRoYXQgd2FzIGEgcGFyZW50IHdpbmRvdyBvbiB0 aGUgc2FtZSBmcmFtZSBhcyBXSU5ET1cKK2JlZm9yZSBpdCB3YXMgZGVsZXRlZC4gIEluIHRo aXMgY2FzZSwgcmF0aGVyIHRoZW4gbWFraW5nIG5ldyB3aW5kb3dzLAorcmVwbGFjZSBXSU5E T1cgd2l0aCB0aGUgY2RyIG9mIFJFRkVSIGluIHRoZSB3aW5kb3cgdHJlZSBhbmQgbWFrZSBX SU5ET1cKK2FuZCBSRUZFUidzIGNhciBpdHMgbmV3IGNoaWxkIHdpbmRvd3MuICBCdWZmZXIs IHN0YXJ0IGFuZCBwb2ludAorcG9zaXRpb25zIG9mIFJFRkVSJ3MgY2FyIGFyZSBzZXQgdG8g dGhlIHZhbHVlcyB0aGV5IGhhZCBpbW1lZGlhdGVseQorYmVmb3JlIFJFRkVSJ3MgY2FyIHdh cyBkZWxldGVkIHRoZSBsYXN0IHRpbWUuICBEZWNvcmF0aW9ucyBhbmQKK3BhcmFtZXRlcnMg cmVtYWluIHVuYWx0ZXJlZCBmcm9tIHRoZWlyIHZhbHVlcyBiZWZvcmUgUkVGRVIncyBjYXIg YW5kIGNkcgord2VyZSBkZWxldGVkLgorCitBbHRlcm5hdGl2ZWx5IFJFRkVSIG1heSBzcGVj aWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93IC0gYSB3aW5kb3cKK3RoYXQgaGFz IHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFzIFdJTkRPVy4g IEluIHRoaXMKK2Nhc2UgZG8gbm90IG1ha2UgYSBuZXcgd2luZG93IGJ1dCByYXRoZXIgbWFr ZSBSRUZFUiBsaXZlIGFnYWluIGFuZAoraW5zZXJ0IGl0IGludG8gdGhlIHdpbmRvdyB0cmVl IGF0IHRoZSBwb3NpdGlvbiBhbmQgd2l0aCB0aGUgc2l6ZXMgdGhlCituZXcgd2luZG93IHdv dWxkIGhhdmUgYmVlbiBnaXZlbi4gIEJ1ZmZlciwgc3RhcnQgYW5kIHBvaW50IHBvc2l0aW9u cyBvZgorUkVGRVIgYXJlIHNldCB0byB0aGUgdmFsdWVzIHRoZXkgaGFkIGltbWVkaWF0ZWx5 IGJlZm9yZSBSRUZFUiB3YXMKK2RlbGV0ZWQgdGhlIGxhc3QgdGltZS4gIERlY29yYXRpb25z IGFuZCBwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVyZWQgZnJvbQordGhlaXIgdmFsdWVzIGJl Zm9yZSBSRUZFUiB3YXMgZGVsZXRlZC4gIFRocm93IGFuIGVycm9yIGlmIFJFRkVSJ3MgYnVm ZmVyCitoYXMgYmVlbiBkZWxldGVkIGFmdGVyIFJFRkVSIGl0c2VsZiB3YXMgZGVsZXRlZC4K KworT3RoZXJ3aXNlIFJFRkVSIG11c3Qgc3BlY2lmeSBhIGxpdmUgd2luZG93LiAgSW4gdGhp cyBjYXNlLCB0aGUgbmV3Cit3aW5kb3cgd2lsbCBpbmhlcml0IHByb3BlcnRpZXMgbGlrZSBi dWZmZXIsIHN0YXJ0IGFuZCBwb2ludCBwb3NpdGlvbiBhbmQKK3NvbWUgZGVjb3JhdGlvbnMg ZnJvbSBSRUZFUi4gIElmIFJFRkVSIGlzIG5pbCBvciBvbWl0dGVkLCB0aGVuIGlmIFdJTkRP VworaXMgbGl2ZSwgYW55IHN1Y2ggcHJvcGVydGllcyBhcmUgaW5oZXJpdGVkIGZyb20gV0lO RE9XLiAgSWYsIGhvd2V2ZXIsCitXSU5ET1cgaXMgYW4gaW50ZXJuYWwgd2luZG93LCB0aGUg bmV3IHdpbmRvdyB3aWxsIGluaGVyaXQgdGhlc2UKK3Byb3BlcnRpZXMgZnJvbSB0aGUgd2lu ZG93IHNlbGVjdGVkIG9uIFdJTkRPVydzIGZyYW1lLgorCiBJZiB0aGUgdmFyaWFibGUgYGln bm9yZS13aW5kb3ctcGFyYW1ldGVycycgaXMgbm9uLW5pbCBvciB0aGUKIGBzcGxpdC13aW5k b3cnIHBhcmFtZXRlciBvZiBXSU5ET1cgZXF1YWxzIHQsIGRvIG5vdCBwcm9jZXNzIGFueQot cGFyYW1ldGVycyBvZiBXSU5ET1cuICBPdGhlcndpc2UsIGlmIHRoZSBgc3BsaXQtd2luZG93 JyBwYXJhbWV0ZXIKLW9mIFdJTkRPVyBzcGVjaWZpZXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0 IGZ1bmN0aW9uIHdpdGggYWxsIHRocmVlCi1hcmd1bWVudHMgYW5kIHJldHVybiB0aGUgdmFs dWUgcmV0dXJuZWQgYnkgdGhhdCBmdW5jdGlvbi4KLQotT3RoZXJ3aXNlLCBpZiBXSU5ET1cg aXMgcGFydCBvZiBhbiBhdG9taWMgd2luZG93LCBcInNwbGl0XCIgdGhlCi1yb290IG9mIHRo YXQgYXRvbWljIHdpbmRvdy4gIFRoZSBuZXcgd2luZG93IGRvZXMgbm90IGJlY29tZSBhCi1t ZW1iZXIgb2YgdGhhdCBhdG9taWMgd2luZG93LgotCi1JZiBXSU5ET1cgaXMgbGl2ZSwgcHJv cGVydGllcyBvZiB0aGUgbmV3IHdpbmRvdyBsaWtlIG1hcmdpbnMgYW5kCi1zY3JvbGxiYXJz IGFyZSBpbmhlcml0ZWQgZnJvbSBXSU5ET1cuICBJZiBXSU5ET1cgaXMgYW4gaW50ZXJuYWwK LXdpbmRvdywgdGhlc2UgcHJvcGVydGllcyBhcyB3ZWxsIGFzIHRoZSBidWZmZXIgZGlzcGxh eWVkIGluIHRoZQotbmV3IHdpbmRvdyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIHdpbmRvdyBz ZWxlY3RlZCBvbiBXSU5ET1cncwotZnJhbWUuICBUaGUgc2VsZWN0ZWQgd2luZG93IGlzIG5v dCBjaGFuZ2VkIGJ5IHRoaXMgZnVuY3Rpb24uIgorcGFyYW1ldGVycyBvZiBXSU5ET1cuICBP dGhlcndpc2UsIGlmIHRoZSBgc3BsaXQtd2luZG93JyBwYXJhbWV0ZXIgb2YKK1dJTkRPVyBz cGVjaWZpZXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0IGZ1bmN0aW9uIHdpdGggdGhlIHRocmVl IGZpcnN0Cithcmd1bWVudHMgV0lORE9XLCBTSVpFIGFuZCBTSURFIGFuZCByZXR1cm4gdGhl IHZhbHVlIHJldHVybmVkIGJ5IHRoYXQKK2Z1bmN0aW9uLgorCitPdGhlcndpc2UsIGlmIFdJ TkRPVyBpcyBwYXJ0IG9mIGFuIGF0b21pYyB3aW5kb3csIFwic3BsaXRcIiB0aGUgcm9vdCBv ZgordGhhdCBhdG9taWMgd2luZG93LiAgVGhlIG5ldyB3aW5kb3cgZG9lcyBub3QgYmVjb21l IGEgbWVtYmVyIG9mIHRoYXQKK2F0b21pYyB3aW5kb3cuCisKK1RoZSBzZWxlY3RlZCB3aW5k b3cgYW5kIHRoZSBzZWxlY3RlZCB3aW5kb3cgb24gV0lORE9XJ3MgZnJhbWUgYXJlIG5vdAor Y2hhbmdlZCBieSB0aGlzIGZ1bmN0aW9uLiIKICAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9y bWFsaXplLXdpbmRvdyB3aW5kb3cpKQogICAobGV0KiAoKHNpZGUgKGNvbmQKIAkJKChub3Qg c2lkZSkgJ2JlbG93KQpAQCAtNTU5OCwxNCArNTYzOSwxNCBAQCBzcGxpdC13aW5kb3cKICAg ICAgICAoKGFuZCAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3dpbmRvdy1hdG9tKQogCSAg ICAgKHNldHEgYXRvbS1yb290ICh3aW5kb3ctYXRvbS1yb290IHdpbmRvdykpCiAJICAgICAo bm90IChlcSBhdG9tLXJvb3Qgd2luZG93KSkpCi0JKHRocm93ICdkb25lIChzcGxpdC13aW5k b3cgYXRvbS1yb290IHNpemUgc2lkZSBwaXhlbHdpc2UpKSkKKwkodGhyb3cgJ2RvbmUgKHNw bGl0LXdpbmRvdyBhdG9tLXJvb3Qgc2l6ZSBzaWRlIHBpeGVsd2lzZSByZWZlcikpKQogICAg ICAgIDs7IElmIFdJTkRPVydzIGZyYW1lIGhhcyBhIHNpZGUgd2luZG93IGFuZCBXSU5ET1cg c3BlY2lmaWVzIHRoZQogICAgICAgIDs7IGZyYW1lJ3Mgcm9vdCB3aW5kb3csIHNwbGl0IHRo ZSBmcmFtZSdzIG1haW4gd2luZG93IGluc3RlYWQKICAgICAgICA7OyAoQnVnIzczNjI3KS4K ICAgICAgICAoKGFuZCAoZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpCiAJ ICAgICAod2luZG93LXdpdGgtcGFyYW1ldGVyICd3aW5kb3ctc2lkZSBuaWwgZnJhbWUpKQog CSh0aHJvdyAnZG9uZSAoc3BsaXQtd2luZG93ICh3aW5kb3ctbWFpbi13aW5kb3cgZnJhbWUp Ci0JCQkJICAgc2l6ZSBzaWRlIHBpeGVsd2lzZSkpKQorCQkJCSAgIHNpemUgc2lkZSBwaXhl bHdpc2UgcmVmZXIpKSkKICAgICAgICA7OyBJZiBXSU5ET1cgaXMgYSBzaWRlIHdpbmRvdyBv ciBpdHMgZmlyc3Qgb3IgbGFzdCBjaGlsZCBpcyBhCiAgICAgICAgOzsgc2lkZSB3aW5kb3cs IHRocm93IGFuIGVycm9yIHVubGVzcyBgd2luZG93LWNvbWJpbmF0aW9uLXJlc2l6ZScKICAg ICAgICA7OyBlcXVhbHMgJ3NpZGUuCkBAIC01NjQ0LDggKzU2ODUsOCBAQCBzcGxpdC13aW5k b3cKIAkJICAgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdyBob3Jpem9udGFsKSkpCiAJICAg ICA7OyAnb2xkLXBpeGVsLXNpemUnIGlzIHRoZSBjdXJyZW50IHBpeGVsIHNpemUgb2YgV0lO RE9XLgogCSAgICAgKG9sZC1waXhlbC1zaXplICh3aW5kb3ctc2l6ZSB3aW5kb3cgaG9yaXpv bnRhbCB0KSkKLQkgICAgIDs7ICduZXctc2l6ZScgaXMgdGhlIHNwZWNpZmllZCBvciBjYWxj dWxhdGVkIHNpemUgb2YgdGhlCi0JICAgICA7OyBuZXcgd2luZG93LgorCSAgICAgOzsgJ25l dy1waXhlbC1zaXplJyBpcyB0aGUgc3BlY2lmaWVkIG9yIGNhbGN1bGF0ZWQgc2l6ZQorCSAg ICAgOzsgb2YgdGhlIG5ldyB3aW5kb3cuCiAJICAgICBuZXctcGl4ZWwtc2l6ZSBuZXctcGFy ZW50IG5ldy1ub3JtYWwpCiAJKGNvbmQKIAkgKChub3QgcGl4ZWwtc2l6ZSkKQEAgLTU3NjYs OCArNTgwNyw5IEBAIHNwbGl0LXdpbmRvdwogCSAgIHdpbmRvdyAoLSAoaWYgbmV3LXBhcmVu dCAxLjAgKHdpbmRvdy1ub3JtYWwtc2l6ZSB3aW5kb3cgaG9yaXpvbnRhbCkpCiAJCSAgICAg bmV3LW5vcm1hbCkpKQogCi0JKGxldCogKChuZXcgKHNwbGl0LXdpbmRvdy1pbnRlcm5hbCB3 aW5kb3cgbmV3LXBpeGVsLXNpemUgc2lkZSBuZXctbm9ybWFsKSkpCi0JICAod2luZG93LS1w aXhlbC10by10b3RhbCBmcmFtZSBob3Jpem9udGFsKQorCShsZXQgKChuZXcgKHNwbGl0LXdp bmRvdy1pbnRlcm5hbAorCQkgICAgd2luZG93IG5ldy1waXhlbC1zaXplIHNpZGUgbmV3LW5v cm1hbCByZWZlcikpKQorICAgICAgICAgICh3aW5kb3ctLXBpeGVsLXRvLXRvdGFsIGZyYW1l IGhvcml6b250YWwpCiAJICA7OyBBc3NpZ24gd2luZG93LXNpZGUgcGFyYW1ldGVycywgaWYg YW55LgogCSAgKGNvbmQKIAkgICAoKGVxIHdpbmRvdy1jb21iaW5hdGlvbi1yZXNpemUgJ3Np ZGUpCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggMzQ5 NjhhYzgyNGYuLjZjNzc0OWRkYWUxIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIv c3JjL3dpbmRvdy5jCkBAIC02NTIsMTUgKzY1MiwxNiBAQCBERUZVTiAoIndpbmRvdy1idWZm ZXIiLCBGd2luZG93X2J1ZmZlciwgU3dpbmRvd19idWZmZXIsIDAsIDEsIDAsCiAKIERFRlVO ICgid2luZG93LW9sZC1idWZmZXIiLCBGd2luZG93X29sZF9idWZmZXIsIFN3aW5kb3dfb2xk X2J1ZmZlciwgMCwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgb2xkIGJ1ZmZl ciBkaXNwbGF5ZWQgYnkgV0lORE9XLgotV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBh bmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KK1dJTkRPVyBjYW4gYmUgYW55IHdp bmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KIAogVGhlIHJldHVybiB2 YWx1ZSBpcyB0aGUgYnVmZmVyIHNob3duIGluIFdJTkRPVyBhdCB0aGUgbGFzdCB0aW1lIHdp bmRvdwotY2hhbmdlIGZ1bmN0aW9ucyB3ZXJlIHJ1bi4gIEl0IGlzIG5pbCBpZiBXSU5ET1cg d2FzIGNyZWF0ZWQgYWZ0ZXIKLXRoYXQuICBJdCBpcyB0IGlmIFdJTkRPVyBoYXMgYmVlbiBy ZXN0b3JlZCBmcm9tIGEgd2luZG93IGNvbmZpZ3VyYXRpb24KLWFmdGVyIHRoYXQuICAqLykK K2NoYW5nZSBmdW5jdGlvbnMgd2VyZSBydW4gb3IgV0lORE9XIGlzIGEgZm9ybWVyIGxpdmUg d2luZG93IHRoYXQgd2FzCitkZWxldGVkLiAgSXQgaXMgbmlsIGlmIFdJTkRPVyB3YXMgY3Jl YXRlZCBhZnRlciB0aGF0LiAgSXQgaXMgdCBpZiBXSU5ET1cKK2hhcyBiZWVuIHJlc3RvcmVk IGZyb20gYSB3aW5kb3cgY29uZmlndXJhdGlvbiBhZnRlciB0aGF0LiAgSXQgaXMgYWx3YXlz CituaWwgaWYgV0lORE9XIGlzIGFuIGludGVybmFsIHdpbmRvdy4gICovKQogICAoTGlzcF9P YmplY3Qgd2luZG93KQogewotICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2xpdmVfd2lu ZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cg KHdpbmRvdyk7CiAKICAgcmV0dXJuIChOSUxQICh3LT5vbGRfYnVmZmVyKQogCSAgLyogQSBu ZXcgd2luZG93LiAgKi8KQEAgLTY2OCw4ICs2NjksOCBAQCBERUZVTiAoIndpbmRvdy1vbGQt YnVmZmVyIiwgRndpbmRvd19vbGRfYnVmZmVyLCBTd2luZG93X29sZF9idWZmZXIsIDAsIDEs IDAsCiAJICA6ICh3LT5jaGFuZ2Vfc3RhbXAgIT0gV0lORE9XX1hGUkFNRSAodyktPmNoYW5n ZV9zdGFtcCkKIAkgIC8qIEEgd2luZG93IHJlc3RvcmVkIGZyb20gYSBjb25maWd1cmF0aW9u LiAgKi8KIAkgID8gUXQKLQkgIC8qIEEgd2luZG93IHRoYXQgd2FzIGxpdmUgdGhlIGxhc3Qg dGltZSBzZWVuIGJ5IHdpbmRvdwotCSAgICAgY2hhbmdlIGZ1bmN0aW9ucy4gICovCisJICAv KiBBIHdpbmRvdyB0aGF0IHdhcyBsaXZlIHRoZSBsYXN0IHRpbWUgc2VlbiBieSB3aW5kb3cg Y2hhbmdlCisJICAgICBmdW5jdGlvbnMgb3Igd2FzIGRlbGV0ZWQuICAqLwogCSAgOiB3LT5v bGRfYnVmZmVyKTsKIH0KIApAQCAtNDQ5MSw0NSArNDQ5Miw2IEBAIGFsbG9jYXRlX3dpbmRv dyAodm9pZCkKIAkJCQkgICAgICAgUFZFQ19XSU5ET1cpOwogfQogCi0vKiBNYWtlIG5ldyB3 aW5kb3csIGhhdmUgaXQgcmVwbGFjZSBXSU5ET1cgaW4gd2luZG93LXRyZWUsIGFuZCBtYWtl Ci0gICBXSU5ET1cgaXRzIG9ubHkgdmVydGljYWwgY2hpbGQgKEhPUkZMQUcgbWVhbnMgbWFr ZSBXSU5ET1cgaXRzIG9ubHkKLSAgIGhvcml6b250YWwgY2hpbGQpLiAgICovCi1zdGF0aWMg dm9pZAotbWFrZV9wYXJlbnRfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wgaG9y ZmxhZykKLXsKLSAgTGlzcF9PYmplY3QgcGFyZW50OwotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICpvLCAqcDsKLQotICBvID0gWFdJTkRPVyAod2luZG93KTsKLSAgcCA9IGFsbG9jYXRl X3dpbmRvdyAoKTsKLSAgbWVtY3B5ICgoY2hhciAqKSBwICsgc2l6ZW9mICh1bmlvbiB2ZWN0 b3JsaWtlX2hlYWRlciksCi0JICAoY2hhciAqKSBvICsgc2l6ZW9mICh1bmlvbiB2ZWN0b3Js aWtlX2hlYWRlciksCi0JICB3b3JkX3NpemUgKiBWRUNTSVpFIChzdHJ1Y3Qgd2luZG93KSk7 Ci0gIC8qIFAncyBidWZmZXIgc2xvdCBtYXkgY2hhbmdlIGZyb20gbmlsIHRvIGEgYnVmZmVy Li4uICAqLwotICBhZGp1c3Rfd2luZG93X2NvdW50IChwLCAxKTsKLSAgWFNFVFdJTkRPVyAo cGFyZW50LCBwKTsKLQotICBwLT5zZXF1ZW5jZV9udW1iZXIgPSArK3NlcXVlbmNlX251bWJl cjsKLQotICByZXBsYWNlX3dpbmRvdyAod2luZG93LCBwYXJlbnQsIHRydWUpOwotCi0gIHdz ZXRfbmV4dCAobywgUW5pbCk7Ci0gIHdzZXRfcHJldiAobywgUW5pbCk7Ci0gIHdzZXRfcGFy ZW50IChvLCBwYXJlbnQpOwotICAvKiAuLi5idXQgbm93IFAgYmVjb21lcyBhbiBpbnRlcm5h bCB3aW5kb3cuICAqLwotICB3c2V0X3N0YXJ0IChwLCBRbmlsKTsKLSAgd3NldF9wb2ludG0g KHAsIFFuaWwpOwotICB3c2V0X29sZF9wb2ludG0gKHAsIFFuaWwpOwotICB3c2V0X2J1ZmZl ciAocCwgUW5pbCk7Ci0gIHdzZXRfY29tYmluYXRpb24gKHAsIGhvcmZsYWcsIHdpbmRvdyk7 Ci0gIHdzZXRfY29tYmluYXRpb25fbGltaXQgKHAsIFFuaWwpOwotICAvKiBSZXNldCBhbnkg cHJldmlvdXMgYW5kIG5leHQgYnVmZmVycyBvZiBwIHdoaWNoIGhhdmUgYmVlbiBpbnN0YWxs ZWQKLSAgICAgYnkgdGhlIG1lbWNweSBhYm92ZS4gICovCi0gIHdzZXRfcHJldl9idWZmZXJz IChwLCBRbmlsKTsKLSAgd3NldF9uZXh0X2J1ZmZlcnMgKHAsIFFuaWwpOwotICB3c2V0X3dp bmRvd19wYXJhbWV0ZXJzIChwLCBRbmlsKTsKLX0KLQogLyogTWFrZSBuZXcgd2luZG93IGZy b20gc2NyYXRjaC4gICovCiBMaXNwX09iamVjdAogbWFrZV93aW5kb3cgKHZvaWQpCkBAIC01 MDczLDcgKzUwMzUsNyBAQCByZXNpemVfZnJhbWVfd2luZG93cyAoc3RydWN0IGZyYW1lICpm LCBpbnQgc2l6ZSwgYm9vbCBob3JmbGFnKQogfQogCiAKLURFRlVOICgic3BsaXQtd2luZG93 LWludGVybmFsIiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19pbnRl cm5hbCwgNCwgNCwgMCwKK0RFRlVOICgic3BsaXQtd2luZG93LWludGVybmFsIiwgRnNwbGl0 X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19pbnRlcm5hbCwgNCwgNSwgMCwKICAg ICAgICBkb2M6IC8qIFNwbGl0IHdpbmRvdyBPTEQuCiBTZWNvbmQgYXJndW1lbnQgUElYRUwt U0laRSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlCiBuZXcgd2luZG93 LiAgSXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuCkBAIC01MDg4LDMyICs1MDUwLDMz IEBAIERFRlVOICgic3BsaXQtd2luZG93LWludGVybmFsIiwgRnNwbGl0X3dpbmRvd19pbnRl cm5hbCwgU3NwbGl0X3dpbmRvd19pbnRlcm5hbCwKIHRoZSByaWdodCBzaWRlIG9mIFdJTkRP Vy4gIFNJREUgYGxlZnQnIG1lYW5zIHRoZSBuZXcgd2luZG93IHNoYWxsIGJlCiBsb2NhdGVk IG9uIHRoZSBsZWZ0IG9mIFdJTkRPVy4gIEluIGJvdGggY2FzZXMgUElYRUwtU0laRSBzcGVj aWZpZXMgdGhlCiB3aWR0aCBvZiB0aGUgbmV3IHdpbmRvdyBpbmNsdWRpbmcgc3BhY2UgcmVz ZXJ2ZWQgZm9yIGZyaW5nZXMgYW5kIHRoZQotc2Nyb2xsYmFyIG9yIGEgZGl2aWRlciBjb2x1 bW4uCitzY3JvbGwgYmFyIG9yIGEgZGl2aWRlciBjb2x1bW4uCiAKIEZvdXJ0aCBhcmd1bWVu dCBOT1JNQUwtU0laRSBzcGVjaWZpZXMgdGhlIG5vcm1hbCBzaXplIG9mIHRoZSBuZXcgd2lu ZG93Ci1hY2NvcmRpbmcgdG8gdGhlIFNJREUgYXJndW1lbnQuCithY2NvcmRpbmcgdG8gdGhl IFNJREUgYXJndW1lbnQuICBPcHRpb25hbCBmaWZ0aCBhcmd1bWVudCBSRUZFUiBpcyBhcyBm b3IKKydzcGxpdC13aW5kb3cnLgogCiBUaGUgbmV3IHBpeGVsIGFuZCBub3JtYWwgc2l6ZXMg b2YgYWxsIGludm9sdmVkIHdpbmRvd3MgbXVzdCBoYXZlIGJlZW4KIHNldCBjb3JyZWN0bHku ICBTZWUgdGhlIGNvZGUgb2YgYHNwbGl0LXdpbmRvdycgZm9yIGhvdyB0aGlzIGlzIGRvbmUu ICAqLykKLSAgKExpc3BfT2JqZWN0IG9sZCwgTGlzcF9PYmplY3QgcGl4ZWxfc2l6ZSwgTGlz cF9PYmplY3Qgc2lkZSwgTGlzcF9PYmplY3Qgbm9ybWFsX3NpemUpCi17Ci0gIC8qIE9MRCAo Km8pIGlzIHRoZSB3aW5kb3cgd2UgaGF2ZSB0byBzcGxpdC4gICgqcCkgaXMgZWl0aGVyIE9M RCdzCi0gICAgIHBhcmVudCB3aW5kb3cgb3IgYW4gaW50ZXJuYWwgd2luZG93IHdlIGhhdmUg dG8gaW5zdGFsbCBhcyBPTEQncyBuZXcKLSAgICAgcGFyZW50LiAgUkVGRVJFTkNFICgqcikg bXVzdCBkZW5vdGUgYSBsaXZlIHdpbmRvdywgb3IgaXMgc2V0IHRvIE9MRAotICAgICBwcm92 aWRlZCBPTEQgaXMgYSBsZWFmIHdpbmRvdywgb3IgdG8gdGhlIGZyYW1lJ3Mgc2VsZWN0ZWQg d2luZG93LgotICAgICBORVcgKCpuKSBpcyB0aGUgbmV3IHdpbmRvdyBjcmVhdGVkIHdpdGgg c29tZSBwYXJhbWV0ZXJzIHRha2VuIGZyb20KLSAgICAgUkVGRVJFTkNFICgqcikuICAqLwot ICBMaXNwX09iamVjdCBuZXcsIGZyYW1lLCByZWZlcmVuY2U7Ci0gIHN0cnVjdCB3aW5kb3cg Km8sICpwLCAqbiwgKnIsICpjOwotICBzdHJ1Y3QgZnJhbWUgKmY7CisgIChMaXNwX09iamVj dCBvbGQsIExpc3BfT2JqZWN0IHBpeGVsX3NpemUsIExpc3BfT2JqZWN0IHNpZGUsCisgICBM aXNwX09iamVjdCBub3JtYWxfc2l6ZSwgTGlzcF9PYmplY3QgcmVmZXIpCit7CisgIC8qIE9M RCAoKm8pIGlzIHRoZSB3aW5kb3cgdG8gc3BsaXQuICBSRUZFUiAoKnIpIGlzIGEgcmVmZXJl bmNlIHdpbmRvdywKKyAgICAgZWl0aGVyIGFuIGFyYml0cmFyeSBsaXZlIHdpbmRvdyBvciBh IGZvcm1lciBsaXZlLCBub3cgZGVsZXRlZAorICAgICB3aW5kb3cgb24gdGhlIHNhbWUgZnJh bWUgYXMgT0xELiAgTkVXICgqbikgaXMgdGhlIG5ldyB3aW5kb3cKKyAgICAgY3JlYXRlZCBh bmV3IG9yIHJlc3VycmVjdGVkIGZyb20gUkVGRVIgKCpyKSwgaWYgc3BlY2lmaWVkLiAgKnAK KyAgICAgcmVmZXJzIGVpdGhlciB0byBPTEQncyBwYXJlbnQgd2luZG93IHRoYXQgd2lsbCBi ZWNvbWUgTkVXJ3MgcGFyZW50CisgICAgIHdpbmRvdyB0b28gb3IgdG8gYSBuZXcgaW50ZXJu YWwgd2luZG93IHRoYXQgYmVjb21lcyBPTEQncyBhbmQgTkVXJ3MKKyAgICAgbmV3IHBhcmVu dC4gICovCisgIHN0cnVjdCB3aW5kb3cgKm8gPSBkZWNvZGVfdmFsaWRfd2luZG93IChvbGQp OworICBMaXNwX09iamVjdCBmcmFtZSA9IFdJTkRPV19GUkFNRSAobyk7CisgIHN0cnVjdCBm cmFtZSAqZiA9IFhGUkFNRSAoZnJhbWUpOworICBzdHJ1Y3Qgd2luZG93ICpwLCAqbiwgKnIs ICpjOwogICBib29sIGhvcmZsYWcKICAgICAvKiBIT1JGTEFHIGlzIHRydWUgd2hlbiB3ZSBz cGxpdCBzaWRlLWJ5LXNpZGUsIGZhbHNlIG90aGVyd2lzZS4gICovCiAgICAgPSBFUSAoc2lk ZSwgUXQpIHx8IEVRIChzaWRlLCBRbGVmdCkgfHwgRVEgKHNpZGUsIFFyaWdodCk7Ci0KLSAg Q0hFQ0tfV0lORE9XIChvbGQpOwotICBvID0gWFdJTkRPVyAob2xkKTsKLSAgZnJhbWUgPSBX SU5ET1dfRlJBTUUgKG8pOwotICBmID0gWEZSQU1FIChmcmFtZSk7CisgIExpc3BfT2JqZWN0 IG5ldywgcGFyZW50ID0gUW5pbDsKKyAgYm9vbCBkZWFkID0gZmFsc2U7CiAKICAgQ0hFQ0tf RklYTlVNIChwaXhlbF9zaXplKTsKICAgRU1BQ1NfSU5UIHRvdGFsX3NpemUKQEAgLTUxMzEs MTQgKzUwOTQsNzQgQEAgREVGVU4gKCJzcGxpdC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRf d2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFsLAogCSAgID8gV0lORE9X X1ZFUlRJQ0FMX0NPTUJJTkFUSU9OX1AgKFhXSU5ET1cgKG8tPnBhcmVudCkpCiAJICAgOiBX SU5ET1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QIChYV0lORE9XIChvLT5wYXJlbnQpKSkp OwogCi0gIC8qIFdlIG5lZWQgYSBsaXZlIHJlZmVyZW5jZSB3aW5kb3cgdG8gaW5pdGlhbGl6 ZSBzb21lIHBhcmFtZXRlcnMuICAqLwotICBpZiAoV0lORE9XX0xJVkVfUCAob2xkKSkKLSAg ICAvKiBPTEQgaXMgbGl2ZSwgdXNlIGl0IGFzIHJlZmVyZW5jZSB3aW5kb3cuICAqLwotICAg IHJlZmVyZW5jZSA9IG9sZDsKKyAgLyogU2V0IHVwIHJlZmVyZW5jZSB3aW5kb3cuICAqLwor ICBpZiAoTklMUCAocmVmZXIpKQorICAgIHsKKyAgICAgIGlmIChXSU5ET1dfTElWRV9QIChv bGQpKQorCS8qIE9MRCBpcyBsaXZlLCB1c2UgaXQgYXMgcmVmZXJlbmNlIHdpbmRvdy4gICov CisJcmVmZXIgPSBvbGQ7CisgICAgICBlbHNlCisJLyogVXNlIHRoZSBmcmFtZSdzIHNlbGVj dGVkIHdpbmRvdyBhcyByZWZlcmVuY2Ugd2luZG93LiAgKi8KKwlyZWZlciA9IEZSQU1FX1NF TEVDVEVEX1dJTkRPVyAoZik7CisKKyAgICAgIHIgPSBYV0lORE9XIChyZWZlcik7CisgICAg fQorICBlbHNlIGlmIChDT05TUCAocmVmZXIpKQorICAgIHsKKyAgICAgIC8qIElmIFJFRkVS IGlzIGEgY29ucywgdGhlbiBpdHMgY2FyIG11c3QgYmUgYSBkZWxldGVkLCBmb3JtZXIgbGl2 ZQorCSB3aW5kb3cgYW5kIGl0cyBjZHIgbXVzdCBiZSBhIGRlbGV0ZWQgZm9ybWVyIHBhcmVu dCB3aW5kb3cuICBTZXQKKwkgUEFSRU5UIHRvIHRoZSBjZHIgb2YgUkVGRVIgYW5kIFJFRkVS IHRvIGl0cyBjYXIuICBXSU5ET1cgYW5kCisJIFJFRkVSIGVuZCB1cCBhcyB0aGUgc29sZSBj aGlsZHJlbiBvZiBQQVJFTlQgd2hpY2ggcmVwbGFjZXMKKwkgV0lORE9XIGluIHRoZSB3aW5k b3cgdHJlZS4gIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiBSRUZFUidzIGNkcgorCSBpcyB0LCBy ZXVzZSBSRUZFUidzIGNhcidzIG9sZCBwYXJlbnQgYXMgbmV3IHBhcmVudCBwcm92aWRlZCBp dAorCSBpcyBhIGRlbGV0ZWQgZnJvbWVyIHBhcmVudCB3aW5kb3cuICAqLworICAgICAgcGFy ZW50ID0gRmNkciAocmVmZXIpOworICAgICAgcmVmZXIgPSBGY2FyIChyZWZlcik7CisgICAg ICByID0gZGVjb2RlX2FueV93aW5kb3cgKHJlZmVyKTsKKworICAgICAgaWYgKCFOSUxQIChy LT5jb250ZW50cykgfHwgIUJVRkZFUlAgKHItPm9sZF9idWZmZXIpKQorCWVycm9yICgiUkVG RVIncyBjYXIgbXVzdCBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93Iik7 CisgICAgICBlbHNlIGlmICghQlVGRkVSX0xJVkVfUCAoWEJVRkZFUiAoci0+b2xkX2J1ZmZl cikpKQorCWVycm9yICgiVGhlIGJ1ZmZlciBmb3JtZXJseSBzaG93biBieSBSRUZFUidzIGNh ciBoYXMgYmVlbiBraWxsZWQiKTsKKyAgICAgIGVsc2UgaWYgKCFFUSAoci0+ZnJhbWUsIGZy YW1lKSkKKwllcnJvciAoIlJFRkVSJ3MgY2FyIG11c3Qgc3BlY2lmeSBhIHdpbmRvdyBvbiBz YW1lIGZyYW1lIGFzIFdJTkRPVyIpOworCisgICAgICBpZiAoRVEgKHBhcmVudCwgUXQpKQor CS8qIElmIFJFRkVSJ3MgY2RyIGlzIHQsIHVzZSB0aGUgb2xkIHBhcmVudCBvZiBSRUZFUidz IGNhciBhcyBuZXcKKwkgICBwYXJlbnQuICAqLworCXBhcmVudCA9IHItPnBhcmVudDsKKwor ICAgICAgcCA9IGRlY29kZV9hbnlfd2luZG93IChwYXJlbnQpOworCisgICAgICBpZiAoIU5J TFAgKHAtPmNvbnRlbnRzKSB8fCBCVUZGRVJQIChwLT5vbGRfYnVmZmVyKSkKKwllcnJvciAo IlJFRkVSJ3MgY2RyIG11c3Qgc3BlY2lmeSBhIGRlbGV0ZWQsIGZvcm1lciBwYXJlbnQgd2lu ZG93Iik7CisgICAgICBlbHNlIGlmICghRVEgKHAtPmZyYW1lLCBmcmFtZSkpCisJZXJyb3Ig KCJSRUZFUidzIGNkciBtdXN0IHNwZWNpZnkgd2luZG93IG9uIHNhbWUgZnJhbWUgYXMgV0lO RE9XIik7CisKKyAgICAgIGRlYWQgPSB0cnVlOworICAgIH0KICAgZWxzZQotICAgIC8qIFVz ZSB0aGUgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3cgYXMgcmVmZXJlbmNlIHdpbmRvdy4gICov Ci0gICAgcmVmZXJlbmNlID0gRlJBTUVfU0VMRUNURURfV0lORE9XIChmKTsKLSAgciA9IFhX SU5ET1cgKHJlZmVyZW5jZSk7CisgICAgeworICAgICAgciA9IGRlY29kZV9hbnlfd2luZG93 IChyZWZlcik7CisKKyAgICAgIGlmIChOSUxQIChyLT5jb250ZW50cykpCisJLyogUHJlc3Vt YWJseSBhIGRlbGV0ZWQsIGZvcm1lciBsaXZlIHdpbmRvdy4gIENoZWNrIHdoZXRoZXIgaXRz CisJICAgY29udGVudHMgY2FuIGJlIHVzZWQuICAqLworCXsKKwkgIGlmICghQlVGRkVSUCAo ci0+b2xkX2J1ZmZlcikpCisJICAgIGVycm9yICgiUkVGRVIgbXVzdCBzcGVjaWZ5IGEgZm9y bWVyIGxpdmUgd2luZG93IChtdXN0IGhhdmUgc2hvd24gYSBidWZmZXIpIik7CisJICBlbHNl IGlmICghQlVGRkVSX0xJVkVfUCAoWEJVRkZFUiAoci0+b2xkX2J1ZmZlcikpKQorCSAgICBl cnJvciAoIlRoZSBidWZmZXIgZm9ybWVybHkgc2hvd24gYnkgUkVGRVIgaGFzIGJlZW4ga2ls bGVkIik7CisJICBlbHNlIGlmICghRVEgKHItPmZyYW1lLCBmcmFtZSkpCisJICAgIGVycm9y ICgiUkVGRVIgbXVzdCBzcGVjaWZ5IGEgd2luZG93IG9uIHNhbWUgZnJhbWUgYXMgV0lORE9X Iik7CisKKwkgIGRlYWQgPSB0cnVlOworCX0KKyAgICAgIGVsc2UgaWYgKCFOSUxQIChwYXJl bnQpKQorCWVycm9yICgiSWYgUkVGRVIgaXMgYSBjb25zLCBpdHMgY2FyIG11c3Qgbm90IHNw ZWNpZnkgYSBsaXZlIHdpbmRvdyIpOworICAgICAgZWxzZSBpZiAoIVdJTkRPV19MSVZFX1Ag KHJlZmVyKSkKKwllcnJvciAoIlJFRkVSIGlzIG5vdCBhIGxpdmUgd2luZG93IChkb2VzIG5v dCBzaG93IGEgYnVmZmVyKSIpOworICAgIH0KIAogICAvKiBUaGUgZm9sbG93aW5nIGJ1Z3Mg YXJlIGNhdWdodCBieSBgc3BsaXQtd2luZG93Jy4gICovCiAgIGlmIChNSU5JX1dJTkRPV19Q IChvKSkKQEAgLTUxNDksMTYgKzUxNzIsMTggQEAgREVGVU4gKCJzcGxpdC13aW5kb3ctaW50 ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFs LAogICAgIC8qIGB3aW5kb3ctY29tYmluYXRpb24tcmVzaXplJyBub24tbmlsIG1lYW5zIHRy eSB0byByZXNpemUgT0xEJ3Mgc2libGluZ3MKICAgICAgICBwcm9wb3J0aW9uYWxseS4gICov CiAgICAgewotICAgICAgcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7CisgICAgICBzdHJ1Y3Qg d2luZG93ICpvcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7CisKICAgICAgIC8qIFRlbXBvcmFy aWx5IHByZXRlbmQgd2Ugc3BsaXQgdGhlIHBhcmVudCB3aW5kb3cuICAqLwogICAgICAgd3Nl dF9uZXdfcGl4ZWwKLQkocCwgbWFrZV9maXhudW0gKChob3JmbGFnID8gcC0+cGl4ZWxfd2lk dGggOiBwLT5waXhlbF9oZWlnaHQpCisJKG9wLCBtYWtlX2ZpeG51bSAoKGhvcmZsYWcgPyBv cC0+cGl4ZWxfd2lkdGggOiBvcC0+cGl4ZWxfaGVpZ2h0KQogCQkJIC0gWEZJWE5VTSAocGl4 ZWxfc2l6ZSkpKTsKLSAgICAgIGlmICghd2luZG93X3Jlc2l6ZV9jaGVjayAocCwgaG9yZmxh ZykpCisgICAgICBpZiAoIXdpbmRvd19yZXNpemVfY2hlY2sgKG9wLCBob3JmbGFnKSkKIAll cnJvciAoIldpbmRvdyBzaXplcyBkb24ndCBmaXQiKTsKICAgICAgIGVsc2UKIAkvKiBVbmRv IHRoZSB0ZW1wb3JhcnkgcHJldGVuc2lvbi4gICovCi0Jd3NldF9uZXdfcGl4ZWwgKHAsIG1h a2VfZml4bnVtIChob3JmbGFnID8gcC0+cGl4ZWxfd2lkdGggOiBwLT5waXhlbF9oZWlnaHQp KTsKKwl3c2V0X25ld19waXhlbAorCSAgKG9wLCBtYWtlX2ZpeG51bSAoaG9yZmxhZyA/IG9w LT5waXhlbF93aWR0aCA6IG9wLT5waXhlbF9oZWlnaHQpKTsKICAgICB9CiAgIGVsc2UKICAg ICB7CkBAIC01MTc4LDggKzUyMDMsMjQgQEAgREVGVU4gKCJzcGxpdC13aW5kb3ctaW50ZXJu YWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFsLAog ICAgICAgTGlzcF9PYmplY3QgbmV3X25vcm1hbAogCT0gaG9yZmxhZyA/IG8tPm5vcm1hbF9j b2xzIDogby0+bm9ybWFsX2xpbmVzOwogCi0gICAgICBtYWtlX3BhcmVudF93aW5kb3cgKG9s ZCwgaG9yZmxhZyk7Ci0gICAgICBwID0gWFdJTkRPVyAoby0+cGFyZW50KTsKKyAgICAgIGlm IChOSUxQIChwYXJlbnQpKQorCS8qIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG9sZCBtYWtl X3BhcmVudF93aW5kb3cuICAqLworCXsKKwkgIHAgPSBhbGxvY2F0ZV93aW5kb3cgKCk7CisJ ICBYU0VUV0lORE9XIChwYXJlbnQsIHApOworCSAgcC0+c2VxdWVuY2VfbnVtYmVyID0gKytz ZXF1ZW5jZV9udW1iZXI7CisJICB3c2V0X2ZyYW1lIChwLCBmcmFtZSk7CisJfQorICAgICAg ZWxzZQorCS8qIFBhY2lmeSBHQ0MuICAqLworCXAgPSBYV0lORE9XIChwYXJlbnQpOworCisg ICAgICByZXBsYWNlX3dpbmRvdyAob2xkLCBwYXJlbnQsIHRydWUpOworICAgICAgd3NldF9u ZXh0IChvLCBRbmlsKTsKKyAgICAgIHdzZXRfcHJldiAobywgUW5pbCk7CisgICAgICB3c2V0 X3BhcmVudCAobywgcGFyZW50KTsKKyAgICAgIHdzZXRfY29tYmluYXRpb24gKHAsIGhvcmZs YWcsIG9sZCk7CisKICAgICAgIGlmIChFUSAoVndpbmRvd19jb21iaW5hdGlvbl9saW1pdCwg UXQpKQogCS8qIFN0b3JlIHQgaW4gdGhlIG5ldyBwYXJlbnQncyBjb21iaW5hdGlvbl9saW1p dCBzbG90IHRvIGF2b2lkCiAJICAgdGhhdCBpdHMgY2hpbGRyZW4gZ2V0IG1lcmdlZCBpbnRv IGFub3RoZXIgd2luZG93LiAgKi8KQEAgLTUxOTUsNyArNTIzNiwxMiBAQCBERUZVTiAoInNw bGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5kb3dfaW50ZXJuYWwsIFNzcGxpdF93 aW5kb3dfaW50ZXJuYWwsCiAgICAgcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7CiAKICAgZnNl dF9yZWRpc3BsYXkgKGYpOwotICBuZXcgPSBtYWtlX3dpbmRvdyAoKTsKKworICBpZiAoZGVh ZCkKKyAgICBuZXcgPSByZWZlcjsKKyAgZWxzZQorICAgIG5ldyA9IG1ha2Vfd2luZG93ICgp OworCiAgIG4gPSBYV0lORE9XIChuZXcpOwogICB3c2V0X2ZyYW1lIChuLCBmcmFtZSk7CiAg IHdzZXRfcGFyZW50IChuLCBvLT5wYXJlbnQpOwpAQCAtNTIyMiwxNiArNTI2OCwxOSBAQCBE RUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5kb3dfaW50ZXJuYWws IFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAgIG4tPndpbmRvd19lbmRfdmFsaWQgPSBmYWxz ZTsKICAgbi0+bGFzdF9jdXJzb3JfdnBvcyA9IDA7CiAKLSAgLyogR2V0IHNwZWNpYWwgZ2Vv bWV0cnkgc2V0dGluZ3MgZnJvbSByZWZlcmVuY2Ugd2luZG93LiAgKi8KLSAgbi0+bGVmdF9t YXJnaW5fY29scyA9IHItPmxlZnRfbWFyZ2luX2NvbHM7Ci0gIG4tPnJpZ2h0X21hcmdpbl9j b2xzID0gci0+cmlnaHRfbWFyZ2luX2NvbHM7Ci0gIG4tPmxlZnRfZnJpbmdlX3dpZHRoID0g ci0+bGVmdF9mcmluZ2Vfd2lkdGg7Ci0gIG4tPnJpZ2h0X2ZyaW5nZV93aWR0aCA9IHItPnJp Z2h0X2ZyaW5nZV93aWR0aDsKLSAgbi0+ZnJpbmdlc19vdXRzaWRlX21hcmdpbnMgPSByLT5m cmluZ2VzX291dHNpZGVfbWFyZ2luczsKLSAgbi0+c2Nyb2xsX2Jhcl93aWR0aCA9IHItPnNj cm9sbF9iYXJfd2lkdGg7Ci0gIG4tPnNjcm9sbF9iYXJfaGVpZ2h0ID0gci0+c2Nyb2xsX2Jh cl9oZWlnaHQ7Ci0gIHdzZXRfdmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlIChuLCByLT52ZXJ0 aWNhbF9zY3JvbGxfYmFyX3R5cGUpOwotICB3c2V0X2hvcml6b250YWxfc2Nyb2xsX2Jhcl90 eXBlIChuLCByLT5ob3Jpem9udGFsX3Njcm9sbF9iYXJfdHlwZSk7CisgIGlmICghZGVhZCkK KyAgICB7CisgICAgICAvKiBHZXQgc3BlY2lhbCBnZW9tZXRyeSBzZXR0aW5ncyBmcm9tIHJl ZmVyZW5jZSB3aW5kb3cuICAqLworICAgICAgbi0+bGVmdF9tYXJnaW5fY29scyA9IHItPmxl ZnRfbWFyZ2luX2NvbHM7CisgICAgICBuLT5yaWdodF9tYXJnaW5fY29scyA9IHItPnJpZ2h0 X21hcmdpbl9jb2xzOworICAgICAgbi0+bGVmdF9mcmluZ2Vfd2lkdGggPSByLT5sZWZ0X2Zy aW5nZV93aWR0aDsKKyAgICAgIG4tPnJpZ2h0X2ZyaW5nZV93aWR0aCA9IHItPnJpZ2h0X2Zy aW5nZV93aWR0aDsKKyAgICAgIG4tPmZyaW5nZXNfb3V0c2lkZV9tYXJnaW5zID0gci0+ZnJp bmdlc19vdXRzaWRlX21hcmdpbnM7CisgICAgICBuLT5zY3JvbGxfYmFyX3dpZHRoID0gci0+ c2Nyb2xsX2Jhcl93aWR0aDsKKyAgICAgIG4tPnNjcm9sbF9iYXJfaGVpZ2h0ID0gci0+c2Ny b2xsX2Jhcl9oZWlnaHQ7CisgICAgICB3c2V0X3ZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZSAo biwgci0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlKTsKKyAgICAgIHdzZXRfaG9yaXpvbnRh bF9zY3JvbGxfYmFyX3R5cGUgKG4sIHItPmhvcml6b250YWxfc2Nyb2xsX2Jhcl90eXBlKTsK KyAgICB9CiAKICAgLyogRGlyZWN0bHkgYXNzaWduIG9ydGhvZ29uYWwgY29vcmRpbmF0ZXMg YW5kIHNpemVzLiAgKi8KICAgaWYgKGhvcmZsYWcpCkBAIC01MjYwLDYgKzUzMDksNyBAQCBE RUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5kb3dfaW50ZXJuYWws IFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAJc3VtID0gc3VtICsgWEZJWE5VTSAoYy0+bmV3 X3RvdGFsKTsKICAgICAgIGMgPSBOSUxQIChjLT5uZXh0KSA/IDAgOiBYV0lORE9XIChjLT5u ZXh0KTsKICAgICB9CisKICAgd3NldF9uZXdfdG90YWwgKG4sIG1ha2VfZml4bnVtICgoaG9y ZmxhZwogCQkJCSAgID8gcC0+dG90YWxfY29scwogCQkJCSAgIDogcC0+dG90YWxfbGluZXMp CkBAIC01MjY3LDEwICs1MzE3LDMwIEBAIERFRlVOICgic3BsaXQtd2luZG93LWludGVybmFs IiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19pbnRlcm5hbCwKICAg d3NldF9uZXdfbm9ybWFsIChuLCBub3JtYWxfc2l6ZSk7CiAKICAgYmxvY2tfaW5wdXQgKCk7 CisKKyAgaWYgKGRlYWQpCisgICAgeworICAgICAgLyogR2V0IGRlYWQgd2luZG93IGJhY2sg aXRzIG9sZCBidWZmZXIgYW5kIG1hcmtlcnMuICAqLworICAgICAgd3NldF9idWZmZXIgKG4s IG4tPm9sZF9idWZmZXIpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmljdGVkCisJKG4tPnN0 YXJ0LCBtYWtlX2ZpeG51bSAoWE1BUktFUiAobi0+c3RhcnQpLT5jaGFycG9zKSwgbi0+Y29u dGVudHMpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmljdGVkCisJKG4tPnBvaW50bSwgbWFr ZV9maXhudW0gKFhNQVJLRVIgKG4tPnBvaW50bSktPmNoYXJwb3MpLCBuLT5jb250ZW50cyk7 CisgICAgICBzZXRfbWFya2VyX3Jlc3RyaWN0ZWQKKwkobi0+b2xkX3BvaW50bSwgbWFrZV9m aXhudW0gKFhNQVJLRVIgKG4tPm9sZF9wb2ludG0pLT5jaGFycG9zKSwKKwkgbi0+Y29udGVu dHMpOworCisgICAgICBWd2luZG93X2xpc3QgPSBRbmlsOworICAgICAgLyogUmVtb3ZlIHdp bmRvdyBmcm9tIHRoZSB0YWJsZSBvZiBkZWFkIHdpbmRvd3MuICAqLworICAgICAgRnJlbWhh c2ggKG1ha2VfZml4bnVtIChuLT5zZXF1ZW5jZV9udW1iZXIpLAorCQl3aW5kb3dfZGVhZF93 aW5kb3dzX3RhYmxlKTsKKyAgICB9CisKICAgd2luZG93X3Jlc2l6ZV9hcHBseSAocCwgaG9y ZmxhZyk7CiAgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwotICAvKiBTZXQgYnVmZmVyIG9m IE5FVyB0byBidWZmZXIgb2YgcmVmZXJlbmNlIHdpbmRvdy4gICovCisKICAgc2V0X3dpbmRv d19idWZmZXIgKG5ldywgci0+Y29udGVudHMsIHRydWUsIHRydWUpOworCiAgIEZSQU1FX1dJ TkRPV19DSEFOR0UgKGYpID0gdHJ1ZTsKICAgdW5ibG9ja19pbnB1dCAoKTsKIApAQCAtNTM2 OCw2ICs1NDM4LDggQEAgREVGVU4gKCJkZWxldGUtd2luZG93LWludGVybmFsIiwgRmRlbGV0 ZV93aW5kb3dfaW50ZXJuYWwsIFNkZWxldGVfd2luZG93X2ludGVybmEKIAl9CiAgICAgICBl bHNlCiAJeworCSAgLyogU3RvcmUgV0lORE9XJ3MgYnVmZmVyIGluIG9sZF9idWZmZXIuICAq LworCSAgd3NldF9vbGRfYnVmZmVyICh3LCB3LT5jb250ZW50cyk7CiAJICB1bnNob3dfYnVm ZmVyICh3KTsKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5wb2ludG0pKTsKIAkg IHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5vbGRfcG9pbnRtKSk7CkBAIC03NzEyLDYg Kzc3ODQsOCBAQCBkZWxldGVfYWxsX2NoaWxkX3dpbmRvd3MgKExpc3BfT2JqZWN0IHdpbmRv dykKICAgICB9CiAgIGVsc2UgaWYgKEJVRkZFUlAgKHctPmNvbnRlbnRzKSkKICAgICB7Cisg ICAgICAvKiBTdG9yZSBXSU5ET1cncyBidWZmZXIgaW4gb2xkX2J1ZmZlci4gICovCisgICAg ICB3c2V0X29sZF9idWZmZXIgKHcsIHctPmNvbnRlbnRzKTsKICAgICAgIHVuc2hvd19idWZm ZXIgKHcpOwogICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIgKHctPnBvaW50bSkpOwog ICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIgKHctPm9sZF9wb2ludG0pKTsKQEAgLTkw NjQsMTIgKzkxMzgsOSBAQCBzeW1zX29mX3dpbmRvdyAodm9pZCkKICAgICBkb2M6IC8qIEhh c2ggdGFibGUgb2YgZGVhZCB3aW5kb3dzLgogRWFjaCBlbnRyeSBpbiB0aGlzIHRhYmxlIG1h cHMgYSB3aW5kb3cgbnVtYmVyIHRvIGEgd2luZG93IG9iamVjdC4KIEVudHJpZXMgYXJlIGFk ZGVkIGJ5IGBkZWxldGUtd2luZG93LWludGVybmFsJyBhbmQgYXJlIHJlbW92ZWQgYnkgdGhl Ci1nYXJiYWdlIGNvbGxlY3Rvci4KLQotVGhpcyB0YWJsZSBpcyBtYWludGFpbmVkIGJ5IGNv ZGUgaW4gd2luZG93LmMgYW5kIGlzIG1hZGUgdmlzaWJsZSBpbgotRWxpc3AgZm9yIHRlc3Rp bmcgcHVycG9zZXMgb25seS4gICovKTsKK2dhcmJhZ2UgY29sbGVjdG9yLiAgKi8pOwogICB3 aW5kb3dfZGVhZF93aW5kb3dzX3RhYmxlCi0gICAgPSBDQUxMTiAoRm1ha2VfaGFzaF90YWJs ZSwgUUN3ZWFrbmVzcywgUXQpOworICAgID0gQ0FMTE4gKEZtYWtlX2hhc2hfdGFibGUsIFFD d2Vha25lc3MsIFF2YWx1ZSk7CiAKICAgZGVmc3ViciAoJlNzZWxlY3RlZF93aW5kb3cpOwog ICBkZWZzdWJyICgmU29sZF9zZWxlY3RlZF93aW5kb3cpOwo= --------------LXvxmvYK1i8xpQsTuOSikUkL--