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: [PATCH] Fix display-buffer-use-some-window to honor reusable-frames Date: Sun, 12 Feb 2023 10:33:11 +0100 Message-ID: References: <30c3d810-ed96-a9bd-c622-1761a138515c@gmx.at> <115a6020-2b86-2653-844e-d19eb03cf62c@gmx.at> <94366f16-89d2-68dc-06cd-0989b9dd2698@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------Ij3BHXadAgNUItjb03BJLzmd" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23117"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , emacs-devel@gnu.org, larsi@gnus.org To: Tom Gillespie Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Feb 12 10:33:57 2023 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 1pR8k8-0005a7-Gc for ged-emacs-devel@m.gmane-mx.org; Sun, 12 Feb 2023 10:33:56 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pR8je-00085M-N5; Sun, 12 Feb 2023 04:33:26 -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 1pR8jc-00085A-RL for emacs-devel@gnu.org; Sun, 12 Feb 2023 04:33:24 -0500 Original-Received: from mout.gmx.net ([212.227.15.19]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pR8jZ-0005YT-8u; Sun, 12 Feb 2023 04:33:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1676194394; bh=E/TFJ3gCPSccX43/GOgicei6SHBtYtwfCkdxAf7kikQ=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=ICX/VxHOPezTrxvqcbjjIUXLu1fvjtxlEJe1sIGo69I8kNUzviEnsOvQQiV7IrXXp Ei7fGURNHugu4J5cVNojuTHKaPBuZyg25KZ0bhsHXdvznocBF7VSFqUheGmbZeJsTg sS18WMXz2NlVe3S3/s+VKuh8DiYCf9t48QY9pztTRw4+arAV5nn9oqAi/MepfVd9uE /cQBW4Vywh4VFbY3xsGdC7AfixtpHCB2VFfO3i4IdYb9XuGIGSp2vulxuRMv5UxhuE KDIorZ66p81B2bKRITEQt3lQ8xQzHGKcfjL3qBXIY+jVv/1ViMEWtXvLpxKsGWmBBz aERbRxezoh+ZA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.1.100] ([46.125.249.97]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MVN6j-1p2hhd1ni3-00SKDj; Sun, 12 Feb 2023 10:33:14 +0100 Content-Language: en-US In-Reply-To: X-Provags-ID: V03:K1:s9VxMSenk4ZlERqVkotGs2rfr0IyeHYsLZIm1YOQ7QcnhoJtNxt jheg/7TzAFvVFntmlmdr3Fq2as72tR4bQGFrszpVQbAKUQZMoW2h2Dttnh+b7Vj6ehbhW71 UjlxWhKyrgHWy8OyajIyQRz1KjN6ER2+XHeOJZcesj8fYlM8JR+Vj4NDszdaIPPn4XwwCTJ Igaf0Rdfzw1tgFWbJ5HMA== UI-OutboundReport: notjunk:1;M01:P0:0xLtF4yyOsk=;DkaxclyDkWhJw78Pgg1lW0Bf1o4 xfWmF3Wz0G8JS9KC8xAGC8EIlPlppgNdLKBMgJRnMLJRRfl4gp1mfhIywIQt+akI7JufdlDxv KNViBWc5lN+TetoYSkjyGPWsNSk9nCbEq63C8lM6e2mg6Zt3JmiuNPSA1KKtQg+AjWyMi7hQa 58W/iTcNgUphN3ucdqug87xBtELtVprNiFhyT+FRmZV5FR4NCbMQ4UUGaaadvEiwjgMTlhhhC JU6xOkB0sSTTo68Qs+psjcOBiP9Xwkltz7hSKKaoHIYlCAqgPrapE1ZeYTkuVZtQVaCd0hYDF 1Jq7suoKBRUFWysl59JAOKNOIKnKGO4ya5dsXJ90Q61R7B7im9TLNiEMHoIYPEpyx/jwz3frx kyswPdKfJffl/tDZNi1zYt83p50W8l4GHvQtuh+NnrR5aMw741r9K9q7wpwWEok67NnKEN5tn fMHuOKHqB2r3s9iRQU45yHbOKMN0LVx/BFZfTMh39ppK3lg+hD1uFuFkdjZjDuUfr8eG8Un27 nLoSqEj4X+LEGrMvJTGc53LXNOHGbdBFuPP40Xme0y95Upc4UksGobBwvTr4pigdAE1+fdh/K 7w/CSELBuZaJJvSp4CSK6UQIrti3/ZAzZLrqS8ceslGpGeg6Dt/T9ST6oWrPc9EOUoBGU9VXx SBUnaSPfHw1KKSXy+0NkkPaXselNsWjjkTvCxcYvJFkWniXUUfTrcB7NAm5ZbGeM3zyj/b73m STFDTjmTqMMXITppNsxyZWF8ALAoY95LIpgylWzQlTSf0fP1//f2ly1qta5/UVVZZEJkIZJH Received-SPF: pass client-ip=212.227.15.19; 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_MSPIKE_H2=-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:303165 Archived-At: This is a multi-part message in MIME format. --------------Ij3BHXadAgNUItjb03BJLzmd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > Apologies for the delay. The updated patch works as expected. > There is still some strangeness if '((display-buffer-use-least-recent-window)) > is used by itself as compared to using > '((display-buffer-reuse-window display-buffer-use-least-recent-window)) > > Specifically, when exiting an org-src-edit buffer, display-buffer-reuse-window > must be present to prevent display-buffer-use-least-recent-window from > persisting > the pop-up window and/or changing a reused window to the buffer for > the org file. > > I don't think this is a blocker however, because it is not entirely > clear where the > issue lies, whether it is with how org-edit-special sets up for > restoring buffers, > or whether there is something that is off in the most recent implementation of > display-buffer-use-least-recent-window. > > I think we are ok to proceed with the latest patch. I now tried to document everything I wrote so far. The attached patch also differs from the preceding ones in the following regards: - 'display-buffer-reuse-window' calls 'display-buffer--lru-window' with suitable arguments. This has the benefit that it honors the new minimum size entries as well which makes the documentation simpler. It has the disadvantage that if I didn't guess those arguments correctly, the default behavior of 'display-buffer-use-some-window' might change wrt previous versions. - 'window-bump-use-time' was rewritten taking into account some of the issues I mentioned in my last posting. - A 'bump-use-time' action alist entry has been added. I'm not sure whether these changes should be made on the release branch. IMO a suitable minimal change for the release branch would be to remove all references to 'display-buffer-avoid-small-windows' and leave 'display-buffer-use-least-recent-window' and 'window-bump-use-time' untouched. The latter are here since Emacs 28, so there's a good excuse for leaving them alone. In either case note that I don't synch with Savannah so someone else would have to apply these changes. martin --------------Ij3BHXadAgNUItjb03BJLzmd Content-Type: text/x-patch; charset=UTF-8; name="Gillespie.diff" Content-Disposition: attachment; filename="Gillespie.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVmL3dp bmRvd3MudGV4aQppbmRleCA1YjUwZDVmMjk2Li5kMTc3ODIwYmJjIDEwMDY0NAotLS0gYS9k b2MvbGlzcHJlZi93aW5kb3dzLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvd2luZG93cy50ZXhp CkBAIC02MjksNiArNjI5LDEyIEBAIFNlbGVjdGluZyBXaW5kb3dzCiBAY29kZXtuaWx9LiAg SGVuY2UsIHRoaXMgbWFjcm8gaXMgdGhlIHByZWZlcnJlZCB3YXkgdG8gdGVtcG9yYXJpbHkg d29yawogd2l0aCBAdmFye3dpbmRvd30gYXMgdGhlIHNlbGVjdGVkIHdpbmRvdyB3aXRob3V0 IG5lZWRsZXNzbHkgcnVubmluZwogQGNvZGV7YnVmZmVyLWxpc3QtdXBkYXRlLWhvb2t9Lgor CitOb3RlIHRoYXQgdGhpcyBtYWNybyB0ZW1wb3JhcmlseSBwdXRzIHRoZSB3aW5kb3cgbWFu YWdlbWVudCBjb2RlIGluIGEKK3Vuc3RhYmxlIHN0YXRlLiAgSW4gcGFydGljdWxhciwgdGhl IG1vc3QgcmVjZW50bHkgd2luZG93IChzZWUgYmVsb3cpCit3aWxsIG5vdCBuZWNlc3Nhcmls eSBtYXRjaCB0aGUgc2VsZWN0ZWQgb25lLiAgSGVuY2UsIGZ1bmN0aW9ucyBsaWtlCitAY29k ZXtnZXQtbHJ1LXdpbmRvd30gYW5kIEBjb2Rle2dldC1tcnUtd2luZG93fSBtYXkgcmV0dXJu IHVuZXhwZWN0ZWQKK3Jlc3VsdHMgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIHNjb3Bl IG9mIHRoaXMgbWFjcm8uCiBAZW5kIGRlZm1hYwogCiBAZGVmbWFjIHdpdGgtc2VsZWN0ZWQt ZnJhbWUgZnJhbWUgZm9ybXNAZG90c3t9CkBAIC02NTAsMTUgKzY1NiwxNiBAQCBTZWxlY3Rp bmcgV2luZG93cwogaW50ZWdlciB0aGF0IGRvZXMgaW5jcmVhc2UgbW9ub3RvbmljYWxseSB3 aXRoIGVhY2ggY2FsbCBvZgogQGNvZGV7c2VsZWN0LXdpbmRvd30gd2l0aCBhIEBjb2Rle25p bH0gQHZhcntub3JlY29yZH0gYXJndW1lbnQuICBUaGUKIHdpbmRvdyB3aXRoIHRoZSBsb3dl c3QgdXNlIHRpbWUgaXMgdXN1YWxseSBjYWxsZWQgdGhlIGxlYXN0IHJlY2VudGx5Ci11c2Vk IHdpbmRvdyB3aGlsZSB0aGUgd2luZG93IHdpdGggdGhlIGhpZ2hlc3QgdXNlIHRpbWUgaXMg Y2FsbGVkIHRoZQotbW9zdCByZWNlbnRseSB1c2VkIG9uZSAoQHB4cmVme0N5Y2xpYyBXaW5k b3cgT3JkZXJpbmd9KS4KK3VzZWQgd2luZG93LiAgVGhlIHdpbmRvdyB3aXRoIHRoZSBoaWdo ZXN0IHVzZSB0aW1lIGlzIGNhbGxlZCB0aGUgbW9zdAorcmVjZW50bHkgdXNlZCBvbmUgKEBw eHJlZntDeWNsaWMgV2luZG93IE9yZGVyaW5nfSkgYW5kIGlzIHVzdWFsbHkgdGhlCitzZWxl Y3RlZCB3aW5kb3cgdW5sZXNzIEBjb2Rle3dpdGgtc2VsZWN0ZWQtd2luZG93fSBoYXMgYmVl biB1c2VkLgogQGVuZCBkZWZ1bgogCiBAZGVmdW4gd2luZG93LWJ1bXAtdXNlLXRpbWUgJm9w dGlvbmFsIHdpbmRvdwotVGhpcyBmdW5jdGlvbiBtYXJrcyBAdmFye3dpbmRvd30gYXMgYmVp bmcgdGhlIG1vc3QgcmVjZW50bHkgdXNlZAotb25lLiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdo ZW4gd3JpdGluZyBjZXJ0YWluIEBjb2Rle3BvcC10by1idWZmZXJ9Ci1zY2VuYXJpb3MgKEBw eHJlZntTd2l0Y2hpbmcgQnVmZmVyc30pLiAgQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZl Ci13aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCitUaGlzIGZ1bmN0 aW9uIG1hcmtzIEB2YXJ7d2luZG93fSBhcyBiZWluZyB0aGUgc2Vjb25kIG1vc3QgcmVjZW50 bHkgdXNlZAorb25lLiAgSXQgZG9lcyBub3RoaW5nIGlmIEB2YXJ7d2luZG93fSBpcyB0aGUg c2VsZWN0ZWQgd2luZG93IG9yIHRoZQorc2VsZWN0ZWQgd2luZG93IGRvZXMgbm90IGhhdmUg dGhlIGhpZ2hlc3QgdXNlIHRpbWUgYW1vbmcgYWxsIHdpbmRvd3MKK3doaWNoIG1heSBoYXBw ZW4gd2l0aGluIHRoZSBzY29wZSBvZiBAY29kZXt3aXRoLXNlbGVjdGVkLXdpbmRvd30uCiBA ZW5kIGRlZnVuCiAKIEBhbmNob3J7V2luZG93IEdyb3VwfVNvbWV0aW1lcyBzZXZlcmFsIHdp bmRvd3MgY29sbGVjdGl2ZWx5IGFuZApAQCAtMjc1NSwxNCArMjc2Miw0MCBAQCBCdWZmZXIg RGlzcGxheSBBY3Rpb24gRnVuY3Rpb25zCiAKIEBkZWZ1biBkaXNwbGF5LWJ1ZmZlci11c2Ut c29tZS13aW5kb3cgYnVmZmVyIGFsaXN0CiBUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIGRpc3Bs YXkgQHZhcntidWZmZXJ9IGJ5IGNob29zaW5nIGFuIGV4aXN0aW5nCi13aW5kb3cgYW5kIGRp c3BsYXlpbmcgdGhlIGJ1ZmZlciBpbiB0aGF0IHdpbmRvdy4gIEl0IGNhbiBmYWlsIGlmIGFs bAotd2luZG93cyBhcmUgZGVkaWNhdGVkIHRvIG90aGVyIGJ1ZmZlcnMgKEBweHJlZntEZWRp Y2F0ZWQgV2luZG93c30pLgord2luZG93IGFuZCBkaXNwbGF5aW5nIHRoZSBidWZmZXIgaW4g dGhhdCB3aW5kb3cuICBJdCBmaXJzdCB0cmllcyB0byBmaW5kCithIHdpbmRvdyB0aGF0IGhh cyBub3QgYmVlbiB1c2VkIHJlY2VudGx5IChAcHhyZWZ7Q3ljbGljIFdpbmRvdworT3JkZXJp bmd9KSBvbiBhbnkgZnJhbWUgc3BlY2lmaWVkIGJ5IGEgQGNvZGV7bHJ1LWZyYW1lc30gQHZh cnthbGlzdH0KK2VudHJ5LCBmYWxsaW5nIGJhY2sgdG8gdGhlIHNlbGVjdGVkIGZyYW1lIGlm IG5vIHN1Y2ggZW50cnkgZXhpc3RzLiAgSXQKK2Fsc28gcHJlZmVycyB3aW5kb3dzIHRoYXQg c2F0aXNmeSB0aGUgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5CitAY29kZXt3aW5kb3ctbWlu LXdpZHRofSBhbmQgQGNvZGV7d2luZG93LW1pbi1oZWlnaHR9IEB2YXJ7YWxpc3R9CitlbnRy aWVzOyBwcmVmZXJyaW5nIGZ1bGwtd2lkdGggd2luZG93cyBpZiBubyBAY29kZXt3aW5kb3ct bWluLXdpZHRofQorZW50cnkgaXMgZm91bmQuICBGaW5hbGx5LCBpdCB3aWxsIG5vdCByZXR1 cm4gYSB3aW5kb3cgd2hvc2UgdXNlIHRpbWUgaXMKK2hpZ2hlciB0aGFuIHRoYXQgc3BlY2lm aWVkIGJ5IGFueSBAY29kZXtscnUtdGltZX0gZW50cnkgcHJvdmlkZWQgYnkKK0B2YXJ7YWxp c3R9LgorCitJZiBubyBsZXNzIHJlY2VudGx5IHVzZWQgd2luZG93IGlzIGZvdW5kLCB0aGlz IGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIHVzZQorc29tZSBvdGhlciB3aW5kb3csIHByZWZlcmFi bHkgYSBsYXJnZSB3aW5kb3cgb24gc29tZSB2aXNpYmxlIGZyYW1lLiAgSXQKK2NhbiBmYWls IGlmIGFsbCB3aW5kb3dzIGFyZSBkZWRpY2F0ZWQgdG8gb3RoZXIgYnVmZmVycyAoQHB4cmVm e0RlZGljYXRlZAorV2luZG93c30pLgogQGVuZCBkZWZ1bgogCiBAZGVmdW4gZGlzcGxheS1i dWZmZXItdXNlLWxlYXN0LXJlY2VudC13aW5kb3cgYnVmZmVyIGFsaXN0Ci1UaGlzIGZ1bmN0 aW9uIGlzIGxpa2UgQGNvZGV7ZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93fSwgYnV0 IHdpbGwKLW5vdCByZXVzZSB0aGUgY3VycmVudCB3aW5kb3csIGFuZCB3aWxsIHVzZSB0aGUg bGVhc3QgcmVjZW50bHkKLXN3aXRjaGVkLXRvIHdpbmRvdy4KK1RoaXMgZnVuY3Rpb24gaXMg c2ltaWxhciB0byBAY29kZXtkaXNwbGF5LWJ1ZmZlci11c2Utc29tZS13aW5kb3d9LCBidXQK K3dpbGwgdHJ5IGhhcmRlciB0byBub3QgdXNlIHRoZSBhIHJlY2VudGx5IHVzZWQgd2luZG93 LiAgSW4gcGFydGljdWxhciwKK2l0IGRvZXMgbm90IHVzZSB0aGUgc2VsZWN0ZWQgd2luZG93 LiAgSW4gYWRkaXRpb24sIGl0IHdpbGwgZmlyc3QgdHJ5IHRvCityZXVzZSBhIHdpbmRvdyB0 aGF0IHNob3dzIEB2YXJ7YnVmZmVyfSBhbHJlYWR5LCBiYXNlIHRoZSBkZWNpc2lvbgord2hl dGhlciBpdCBzaG91bGQgdXNlIGEgd2luZG93IHNob3dpbmcgYW5vdGhlciBidWZmZXIgb24g dGhhdCB3aW5kb3cncwordXNlIHRpbWUgYWxvbmUgYW5kIHBvcCB1cCBhIG5ldyB3aW5kb3cg aWYgbm8gdXNhYmxlIHdpbmRvdyBpcyBmb3VuZC4KKworRmluYWxseSwgdGhpcyBmdW5jdGlv biB3aWxsIGJ1bXAgdGhlIHVzZSB0aW1lIChAcHhyZWZ7U2VsZWN0aW5nCitXaW5kb3dzfSkg b2YgYW55IHdpbmRvdyBpdCByZXR1cm5zIGluIG9yZGVyIHRvIGF2b2lkIHRoYXQgZnVydGhl cgoraW52b2NhdGlvbnMgd2lsbCB1c2UgdGhhdCB3aW5kb3cgZm9yIHNob3dpbmcgYW5vdGhl ciBidWZmZXIuICBBbgorYXBwbGljYXRpb24gdGhhdCB3YW50cyB0byBkaXNwbGF5IHNldmVy YWwgYnVmZmVycyBpbiBhIHJvdyBjYW4gaGVscCB0aGlzCitmdW5jdGlvbiBieSBwcm92aWRp bmcgYSBAY29kZXtscnUtdGltZX0gQHZhcnthbGlzdH0gZW50cnkgaXQgaGFzCitpbml0aWFs bHkgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgd2luZG93J3MgdXNlIHRpbWUu ICBFYWNoCitpbnZvY2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCB0aGVuIGJ1bXAgdGhl IHVzZSB0aW1lIG9mIHRoZSB3aW5kb3cKK3JldHVybmVkIHRvIGEgdmFsdWUgaGlnaGVyIHRo YW4gdGhhdCBhbmQgYSBzdWJzZXF1ZW50IGludm9jYXRpb24gd2lsbAoraW5oaWJpdCB0aGlz IGZ1bmN0aW9uIHRvIHVzZSBhIHdpbmRvdyBpdCByZXR1cm5lZCBlYXJsaWVyLgogQGVuZCBk ZWZ1bgogCiBAZGVmdW4gZGlzcGxheS1idWZmZXItaW4tZGlyZWN0aW9uIGJ1ZmZlciBhbGlz dApAQCAtMzAzMiwxMiArMzA2NSwzOSBAQCBCdWZmZXIgRGlzcGxheSBBY3Rpb24gQWxpc3Rz CiB3aW5kb3cuICBBbGwgYWN0aW9uIGZ1bmN0aW9ucyB0aGF0IGNob29zZSBhIHdpbmRvdyBz aG91bGQgcHJvY2VzcyB0aGlzCiBlbnRyeS4KIAorQHZpbmRleCB3aW5kb3ctbWluLXdpZHRo QHJ7LCBhIGJ1ZmZlciBkaXNwbGF5IGFjdGlvbiBhbGlzdCBlbnRyeX0KK0BpdGVtIHdpbmRv dy1taW4td2lkdGgKK1RoZSB2YWx1ZSBzcGVjaWZpZXMgYSBtaW5pbXVtIHdpZHRoIG9mIHRo ZSB3aW5kb3cgdXNlZCwgaW4gY2Fub25pY2FsCitmcmFtZSBjb2x1bW5zLiAgVGhlIHNwZWNp YWwgdmFsdWUgQGNvZGV7ZnVsbC13aWR0aH0gbWVhbnMgdGhlIHdpbmRvdworY2hvc2VuIHNo b3VsZCBiZSBvbmUgaGFzIG5vIG90aGVyIHdpbmRvd3Mgb24gdGhlIGxlZnQgb3IgcmlnaHQg aXQgaW4gaXRzCitmcmFtZS4KKworVGhpcyBlbnRyeSBpcyBjdXJyZW50bHkgaG9ub3JlZCBi eSBAY29kZXtkaXNwbGF5LWJ1ZmZlci11c2Utc29tZS13aW5kb3d9CithbmQgQGNvZGV7ZGlz cGxheS1idWZmZXItdXNlLWxlYXN0LXJlY2VudC13aW5kb3d9IHdobyB0cnkgaGFyZCB0byBh dm9pZAorcmV0dXJuaW5nIGEgbGVzcyByZWNlbnRseSB1c2VkIHdpbmRvdyB0aGF0IGRvZXMg bm90IHNhdGlzZnkgaXQuCisKK05vdGUgdGhhdCBwcm92aWRpbmcgc3VjaCBhbiBlbnRyeSBh bG9uZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtYWtlIHRoZQord2luZG93IGFzIHdpZGUgYXMg c3BlY2lmaWVkIGJ5IGl0cyB2YWx1ZS4gIFRvIGFjdHVhbGx5IHJlc2l6ZSBhbgorZXhpc3Rp bmcgd2luZG93IG9yIG1ha2UgYSBuZXcgd2luZG93IGFzIHdpZGUgYXMgc3BlY2lmaWVkIGJ5 IHRoYXQgdmFsdWUsCithIEBjb2Rle3dpbmRvdy13aWR0aH0gZW50cnkgc3BlY2lmeWluZyB0 aGF0IHZhbHVlIHNob3VsZCBiZSBwcm92aWRlZCBhcword2VsbC4gIFN1Y2ggYSBAY29kZXt3 aW5kb3ctd2lkdGh9IGVudHJ5IGNhbiwgaG93ZXZlciwgc3BlY2lmeSBhCitjb21wbGV0ZWx5 IGRpZmZlcmVudCB2YWx1ZSBvciBhc2sgdGhlIHdpbmRvdyB3aWR0aCB0byBiZSBmaXQgdG8g dGhhdCBvZgoraXRzIGJ1ZmZlciBpbiB3aGljaCBjYXNlIHRoZSBAY29kZXt3aW5kb3ctbWlu LXdpZHRofSBlbnRyeSBwcm92aWRlcyB0aGUKK2d1YXJhbnRlZWQgbWluaW11bSB3aWR0aCBv ZiB0aGUgd2luZG93IHVzZWQuCisKIEB2aW5kZXggd2luZG93LW1pbi1oZWlnaHRAcnssIGEg YnVmZmVyIGRpc3BsYXkgYWN0aW9uIGFsaXN0IGVudHJ5fQogQGl0ZW0gd2luZG93LW1pbi1o ZWlnaHQKLVRoZSB2YWx1ZSBzcGVjaWZpZXMgYSBtaW5pbXVtIGhlaWdodCBvZiB0aGUgd2lu ZG93IHVzZWQsIGluIGxpbmVzLiAgSWYKLWEgd2luZG93IGlzIG5vdCBvciBjYW5ub3QgYmUg bWFkZSBhcyBoaWdoIGFzIHNwZWNpZmllZCBieSB0aGlzIGVudHJ5LAotdGhlIHdpbmRvdyBp cyBub3QgY29uc2lkZXJlZCBmb3IgdXNlLiAgVGhlIG9ubHkgY2xpZW50IG9mIHRoaXMgZW50 cnkKLWlzIHByZXNlbnRseSBAY29kZXtkaXNwbGF5LWJ1ZmZlci1iZWxvdy1zZWxlY3RlZH0u CitUaGUgdmFsdWUgc3BlY2lmaWVzIGEgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdyB1 c2VkLCBpbiBjYW5vbmljYWwKK2ZyYW1lIGxpbmVzLiAgVGhlIHNwZWNpYWwgdmFsdWUgQGNv ZGV7ZnVsbC1oZWlnaHR9IG1lYW5zIHRoZSB3aW5kb3cKK2Nob3NlbiBzaG91bGQgYmUgYSBm dWxsLWhlaWdodCB3aW5kb3csIG9uZSBoYXMgbm8gb3RoZXIgd2luZG93cyBhYm92ZSBvcgor YmVsb3cgaXQgaW4gaXRzIGZyYW1lLgorCitUaGlzIGVudHJ5IGlzIGN1cnJlbnRseSBob25v cmVkIGJ5IEBjb2Rle2Rpc3BsYXktYnVmZmVyLWJlbG93LXNlbGVjdGVkfQord2hpY2ggZG9l cyBub3QgdXNlIGEgd2luZG93IHRoYXQgaXMgbm90IGFzIGhpZ2ggYXMgc3BlY2lmaWVkIGJ5 IHRoaXMKK2VudHJ5LiAgSXQncyBhbHNvIGhvbm9yZWQgYnkgQGNvZGV7ZGlzcGxheS1idWZm ZXItdXNlLXNvbWUtd2luZG93fSBhbmQKK0Bjb2Rle2Rpc3BsYXktYnVmZmVyLXVzZS1sZWFz dC1yZWNlbnQtd2luZG93fSB3aGljaCB0cnkgaGFyZCB0byBhdm9pZAorcmV0dXJuaW5nIGEg bGVzcyByZWNlbnRseSB1c2VkIHdpbmRvdyBpZiBpdCBkb2VzIG5vdCBzYXRpc2Z5IHRoaXMK K2NvbnN0cmFpbnQuCiAKIE5vdGUgdGhhdCBwcm92aWRpbmcgc3VjaCBhbiBlbnRyeSBhbG9u ZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtYWtlIHRoZQogd2luZG93IGFzIHRhbGwgYXMgc3Bl Y2lmaWVkIGJ5IGl0cyB2YWx1ZS4gIFRvIGFjdHVhbGx5IHJlc2l6ZSBhbgpAQCAtMzE2Niw2 ICszMjI2LDQwIEBAIEJ1ZmZlciBEaXNwbGF5IEFjdGlvbiBBbGlzdHMKIHByb2Nlc3NlZCBv bmx5IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB3aGljaCBhcmUgc3BlY2lmaWVkIHJpZ2h0 CiBhZnRlciB0aGlzIGxpc3QuCiAKK0B2aW5kZXggbHJ1LWZyYW1lc0ByeywgYSBidWZmZXIg ZGlzcGxheSBhY3Rpb24gYWxpc3QgZW50cnl9CitAaXRlbSBscnUtZnJhbWVzCitUaGUgdmFs dWUgc3BlY2lmaWVzIHRoZSBzZXQgb2YgZnJhbWVzIHRvIHNlYXJjaCBmb3Igd2luZG93IHRo YXQgY2FuIGJlCit1c2VkIHRvIGRpc3BsYXkgdGhlIGJ1ZmZlci4gIEl0IGlzIGhvbm9yZWQg YnkKK0Bjb2Rle2Rpc3BsYXktYnVmZmVyLXVzZS1zb21lLXdpbmRvd30gYW5kCitAY29kZXtk aXNwbGF5LWJ1ZmZlci11c2UtbGVhc3QtcmVjZW50LXdpbmRvd30gd2hlbiB0cnlpbmcgdG8g ZmluZCBhIGxlc3MKK3JlY2VudGx5IHVzZWQgd2luZG93IHNob3dpbmcgc29tZSBvdGhlciBi dWZmZXIuICBJdHMgdmFsdWVzIGFyZSB0aGUgc2FtZQorYXMgZm9yIHRoZSBAY29kZXtyZXVz YWJsZS1mcmFtZXN9IGVudHJ5IGRlc2NyaWJlZCBhYm92ZS4KKworQHZpbmRleCBscnUtdGlt ZUByeywgYSBidWZmZXIgZGlzcGxheSBhY3Rpb24gYWxpc3QgZW50cnl9CitAaXRlbSBscnUt dGltZQorVGhlIHZhbHVlIGlzIHN1cHBvc2VkIHRvIHNwZWNpZnkgYSB1c2UgdGltZSAoQHB4 cmVme1NlbGVjdGluZyBXaW5kb3dzfSkuCitUaGlzIGVudHJ5IGlzIGhvbm9yZWQgYnkgQGNv ZGV7ZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93fSBhbmQKK0Bjb2Rle2Rpc3BsYXkt YnVmZmVyLXVzZS1sZWFzdC1yZWNlbnQtd2luZG93fSB3aGVuIHRyeWluZyB0byBmaW5kIGEg bGVzcworcmVjZW50bHkgdXNlZCB3aW5kb3cgc2hvd2luZyBzb21lIG90aGVyIGJ1ZmZlci4g IElmIGEgd2luZG93J3MgdXNlIHRpbWUKK2lzIGhpZ2hlciB0aGFuIHRoZSB2YWx1ZSBzcGVj aWZpZWQgYnkgdGhpcyBvcHRpb24sIHRoZXNlIGFjdGlvbgorZnVuY3Rpb25zIHdpbGwgbm90 IGNvbnNpZGVyIHN1Y2ggYSB3aW5kb3cgZm9yIGRpc3BsYXlpbmcgdGhlIGJ1ZmZlci4KKwor QHZpbmRleCBidW1wLXVzZS10aW1lQHJ7LCBhIGJ1ZmZlciBkaXNwbGF5IGFjdGlvbiBhbGlz dCBlbnRyeX0KK0BpdGVtIGJ1bXAtdXNlLXRpbWUKK0lmIG5vbi1AY29kZXtuaWx9LCBzdWNo IGFuIGVudHJ5IHdpbGwgY2F1c2UgQGNvZGV7ZGlzcGxheS1idWZmZXJ9IHRvCitidW1wIHRo ZSB1c2UgdGltZSAoQHB4cmVme1NlbGVjdGluZyBXaW5kb3dzfSkgb2YgdGhlIHdpbmRvdyBp dCB1c2VzLgorVGhpcyBzaG91bGQgYXZvaWQgdGhhdCB0aGlzIHdpbmRvdyBpcyBsYXRlciB1 c2VkIGJ5IGFjdGlvbiBmdW5jdGlvbnMKK2xpa2UgQGNvZGV7ZGlzcGxheS1idWZmZXItdXNl LXNvbWUtd2luZG93fSBhbmQKK0Bjb2Rle2Rpc3BsYXktYnVmZmVyLXVzZS1sZWFzdC1yZWNl bnQtd2luZG93fSBmb3Igc2hvd2luZyBhbm90aGVyCitidWZmZXIuCisKK1RoZXJlIGlzIGEg ZmluZSBkaWZmZXJlbmNlIGJldHdlZW4gdXNpbmcgdGhpcyBlbnRyeSBhbmQgdXNpbmcgdGhl IGFjdGlvbgorZnVuY3Rpb24gQGNvZGV7ZGlzcGxheS1idWZmZXItdXNlLWxlYXN0LXJlY2Vu dC13aW5kb3d9LiAgQ2FsbGluZyB0aGUKK2xhdHRlciBtZWFucyB0byBvbmx5IGJ1bXAgdGhl IHVzZSB0aW1lcyBvZiB3aW5kb3dzIHRoYXQgZnVuY3Rpb24gdXNlcworZm9yIGRpc3BsYXlp bmcgdGhlIGJ1ZmZlci4gIFRoZSBlbnRyeSBkZXNjcmliZWQgaGVyZSB3aWxsIGNhdXNlCitA Y29kZXtkaXNwbGF5LWJ1ZmZlcn0gdG8gYnVtcCB0aGUgdXNlIHRpbWUgb2YgQGVtcGh7YW55 fSB3aW5kb3cgdXNlZCBmb3IKK2Rpc3BsYXlpbmcgYSBidWZmZXIuCisKIEB2aW5kZXggcG9w LXVwLWZyYW1lLXBhcmFtZXRlcnNAcnssIGEgYnVmZmVyIGRpc3BsYXkgYWN0aW9uIGFsaXN0 IGVudHJ5fQogQGl0ZW0gcG9wLXVwLWZyYW1lLXBhcmFtZXRlcnMKIFRoZSB2YWx1ZSBzcGVj aWZpZXMgYW4gYWxpc3Qgb2YgZnJhbWUgcGFyYW1ldGVycyB0byBnaXZlIGEgbmV3IGZyYW1l LApAQCAtMzMyMSwxMyArMzQxNSw2IEBAIENob29zaW5nIFdpbmRvdyBPcHRpb25zCiB0aGF0 IG1lYW5zIG5vdCB0byBzcGxpdCB0aGlzIHdheS4KIEBlbmQgZGVmb3B0CiAKLUBkZWZvcHQg ZGlzcGxheS1idWZmZXItYXZvaWQtc21hbGwtd2luZG93cwotSWYgbm9uLUBjb2Rle25pbH0s IHRoaXMgc2hvdWxkIGJlIGEgbnVtYmVyLiAgV2luZG93cyB0aGF0IGhhdmUgZmV3ZXIKLWxp bmVzIHRoYW4gdGhhdCB3aWxsIGJlIGF2b2lkZWQgd2hlbiBjaG9vc2luZyBhbiBleGlzdGlu ZyB3aW5kb3cuICBUaGUKLXZhbHVlIGlzIGludGVycHJldGVkIGluIHVuaXRzIG9mIHRoZSBm cmFtZSdzIGNhbm9uaWNhbCBsaW5lIGhlaWdodCwKLWxpa2UgQGNvZGV7d2luZG93LXRvdGFs LWhlaWdodH0gZG9lcyAoQHB4cmVme1dpbmRvdyBTaXplc30pLgotQGVuZCBkZWZvcHQKLQog QGRlZm9wdCBldmVuLXdpbmRvdy1zaXplcwogVGhpcyB2YXJpYWJsZSwgaWYgbm9uLUBjb2Rl e25pbH0sIGNhdXNlcyBAY29kZXtkaXNwbGF5LWJ1ZmZlcn0gdG8gZXZlbgogd2luZG93IHNp emVzIHdoZW5ldmVyIGl0IHJldXNlcyBhbiBleGlzdGluZyB3aW5kb3csIGFuZCB0aGF0IHdp bmRvdyBpcwpAQCAtMzk5Miw1MyArNDA3OSw3NSBAQCBUaGUgWmVuIG9mIEJ1ZmZlciBEaXNw bGF5CiBAY29kZXtkaXNwbGF5LWJ1ZmZlci1iZWxvdy1zZWxlY3RlZH0gbWlnaHQgYmUgcHJl ZmVyYWJsZSBiZWNhdXNlIHRoZQogc2VsZWN0ZWQgd2luZG93IHVzdWFsbHkgYWxyZWFkeSBo YXMgdGhlIHVzZXIncyBhdHRlbnRpb24uCiAKLUBpdGVtIEhhbmRsZSBzdWJzZXF1ZW50IGlu dm9jYXRpb25zIG9mIEBjb2Rle2Rpc3BsYXktYnVmZmVyfQotQGNvZGV7ZGlzcGxheS1idWZm ZXJ9IGlzIG5vdCBvdmVybHkgd2VsbCBzdWl0ZWQgZm9yIGRpc3BsYXlpbmcgc2V2ZXJhbAot YnVmZmVycyBpbiBzZXF1ZW5jZSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhbGwgdGhlc2UgYnVm ZmVycyBhcmUgc2hvd24KLW9yZGVybHkgaW4gdGhlIHJlc3VsdGluZyB3aW5kb3cgY29uZmln dXJhdGlvbi4gIEFnYWluLCB0aGUgc3RhbmRhcmQKLWFjdGlvbiBmdW5jdGlvbnMgQGNvZGV7 ZGlzcGxheS1idWZmZXItcG9wLXVwLXdpbmRvd30gYW5kCi1AY29kZXtkaXNwbGF5LWJ1ZmZl ci11c2Utc29tZS13aW5kb3d9IGFyZSBub3QgdmVyeSBzdWl0ZWQgZm9yIHRoaXMKLXB1cnBv c2UgZHVlIHRvIHRoZWlyIHNvbWV3aGF0IGNoYW90aWMgbmF0dXJlIGluIG1vcmUgY29tcGxl eAotY29uZmlndXJhdGlvbnMuCitAaXRlbSBUYWtlIGNhcmUgYWJvdXQgd2hpY2ggd2luZG93 IGlzIHNlbGVjdGVkCitNYW55IGFwcGxpY2F0aW9ucyBjYWxsIEBjb2Rle2Rpc3BsYXktYnVm ZmVyfSBmcm9tIHdpdGhpbiB3aW5kb3cKK2V4Y3Vyc2lvbnMgcHJvZHVjZWQgYnkgQGNvZGV7 d2l0aC1zZWxlY3RlZC13aW5kb3d9IG9yCitAY29kZXtzZWxlY3Qtd2luZG93fSBjYWxscyB3 aXRoIGEgbm9uLUBjb2Rle25pbH0gQHZhcntub3JlY29yZH0KK2FyZ3VtZW50LiAgVGhpcyBp cyBhbG1vc3QgYWx3YXlzIGEgYmFkIGlkZWEgYmVjYXVzZSB0aGUgd2luZG93IHNlbGVjdGVk Cit3aXRoaW4gc3VjaCBhbiBleGN1cnNpb24gaXMgdXN1YWxseSBub3QgdGhlIHdpbmRvdyBz ZWxlY3RlZCBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gcHJlc2VudGVkIHRvIHRoZSB1c2VyLgor CitJZiwgZm9yIGV4YW1wbGUsIGEgdXNlciBoYWQgYWRkZWQgYW4gQGNvZGV7aW5oaWJpdC1z YW1lLXdpbmRvd30gYWxpc3QKK2VudHJ5LCB0aGF0IGVudHJ5IHdvdWxkIGhhdmUgYXZvaWRl ZCB0aGUgd2luZG93IHNlbGVjdGVkIHdpdGhpbiB0aGUKK3Njb3BlIG9mIHRoZSBleGN1cnNp b24gYW5kIG5vdCB0aGUgd2luZG93IHNlbGVjdGVkIGluIHRoZSByZXN1bHRpbmcKK2NvbmZp Z3VyYXRpb24uICBFdmVuIGlmIG5vIHN1Y2ggZW50cnkgaGFzIGJlZW4gYWRkZWQsIHRoZSBy ZXN1bHRpbmcKK2JlaGF2aW9yIG1pZ2h0IGJlIHN0cmFuZ2UuICBXaGlsZSBpbiBhIGZyYW1l IGNvbnRhaW5pbmcgb25lIGxpdmUKK3dpbmRvdywgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5n IGZvcm0KIAotICAgVG8gcHJvZHVjZSBhIHdpbmRvdyBjb25maWd1cmF0aW9uIGRpc3BsYXlp bmcgbXVsdGlwbGUgYnVmZmVycyAob3IKLWRpZmZlcmVudCB2aWV3cyBvZiBvbmUgYW5kIHRo ZSBzYW1lIGJ1ZmZlcikgaW4gb25lIGFuZCB0aGUgc2FtZQotZGlzcGxheSBjeWNsZSwgTGlz cCBwcm9ncmFtbWVycyB3aWxsIHVuYXZvaWRhYmx5IGhhdmUgdG8gd3JpdGUKLXRoZWlyIG93 biBhY3Rpb24gZnVuY3Rpb25zLiAgQSBmZXcgdHJpY2tzIGxpc3RlZCBiZWxvdyBtaWdodCBo ZWxwIGluCi10aGlzIHJlZ2FyZC4KK0BleGFtcGxlCitAZ3JvdXAKKyhwcm9nbgorICAoc3Bs aXQtd2luZG93KQorICAoZGlzcGxheS1idWZmZXIgIipNZXNzYWdlcyoiKSkKK0BlbmQgZ3Jv dXAKK0BlbmQgZXhhbXBsZQogCi1AaXRlbWl6ZSBAYnVsbGV0Ci1AaXRlbQotTWFraW5nIHdp bmRvd3MgYXRvbWljIChAcHhyZWZ7QXRvbWljIFdpbmRvd3N9KSBhdm9pZHMgYnJlYWtpbmcg YW4KLWV4aXN0aW5nIHdpbmRvdyBjb21wb3NpdGlvbiB3aGVuIHBvcHBpbmcgdXAgYSBuZXcg d2luZG93LgotVGhlIG5ldyB3aW5kb3cgd2lsbCBwb3AgdXAgb3V0c2lkZSB0aGUgY29tcG9z aXRpb24gaW5zdGVhZC4KK3dpbGwgZGlzcGxheSBhIHdpbmRvdyBzaG93aW5nIHRoZSBAZmls ZXsqTWVzc2FnZXMqfSBidWZmZXIgYXQgdGhlIGJvdHRvbQorYW5kIGxlYXZlIHRoZSBvdGhl ciB3aW5kb3cgc2VsZWN0ZWQuICBFdmFsdWF0aW5nIHRoZSBuZXh0IGZvcm0KIAotQGl0ZW0K LVRlbXBvcmFyaWx5IGRlZGljYXRpbmcgd2luZG93cyB0byB0aGVpciBidWZmZXJzIChAcHhy ZWZ7RGVkaWNhdGVkCi1XaW5kb3dzfSkgYXZvaWRzIHVzaW5nIGEgd2luZG93IGZvciBkaXNw bGF5aW5nIGEgZGlmZmVyZW50Ci1idWZmZXIuICBBIG5vbi1kZWRpY2F0ZWQgd2luZG93IHdp bGwgYmUgdXNlZCBpbnN0ZWFkLgorQGV4YW1wbGUKK0Bncm91cAorKHdpdGgtc2VsZWN0ZWQt d2luZG93IChzcGxpdC13aW5kb3cpCisgIChkaXNwbGF5LWJ1ZmZlciAiKk1lc3NhZ2VzKiIp KQorQGVuZCBncm91cAorQGVuZCBleGFtcGxlCiAKLUBpdGVtCi1DYWxsaW5nIEBjb2Rle3dp bmRvdy1wcmVzZXJ2ZS1zaXplfSAoQHB4cmVme1ByZXNlcnZpbmcgV2luZG93IFNpemVzfSkK LXdpbGwgdHJ5IHRvIGtlZXAgdGhlIHNpemUgb2YgdGhlIGFyZ3VtZW50IHdpbmRvdyB1bmNo YW5nZWQgd2hlbgotcG9wcGluZyB1cCBhIG5ldyB3aW5kb3cuICBZb3UgaGF2ZSB0byBtYWtl IHN1cmUgdGhhdCBhbm90aGVyIHdpbmRvdyBpbgotdGhlIHNhbWUgY29tYmluYXRpb24gY2Fu IGJlIHNocnVuayBpbnN0ZWFkLCB0aG91Z2guCit3aWxsIGRpc3BsYXkgQGZpbGV7Kk1lc3Nh Z2VzKn0gaW4gYSB3aW5kb3cgb24gdGhlIHRvcCBhbmQgc2VsZWN0IGl0Cit3aGljaCBpcyB1 c3VhbGx5IG5vdCB3aGF0IEBjb2Rle2Rpc3BsYXktYnVmZmVyfSBpcyBzdXBwb3NlZCB0byBk by4KIAotQGl0ZW0KLVNpZGUgd2luZG93cyAoQHB4cmVme1NpZGUgV2luZG93c30pIGNhbiBi ZSB1c2VkIGZvciBkaXNwbGF5aW5nCi1zcGVjaWZpYyBidWZmZXJzIGFsd2F5cyBpbiBhIHdp bmRvdyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBvZiBhIGZyYW1lLgotVGhpcyBwZXJtaXRzIGdy b3VwaW5nIGJ1ZmZlcnMgdGhhdCBkbyBub3QgY29tcGV0ZSBmb3IgYmVpbmcgc2hvd24gYXQK LXRoZSBzYW1lIHRpbWUgb24gYSBmcmFtZSBhbmQgc2hvd2luZyBhbnkgc3VjaCBidWZmZXIg aW4gdGhlIHNhbWUgd2luZG93Ci13aXRob3V0IGRpc3J1cHRpbmcgdGhlIGRpc3BsYXkgb2Yg b3RoZXIgYnVmZmVycy4KK09uIHRoZSBvdGhlciBoYW5kLCB3aGlsZSBldmFsdWF0aW5nIHRo ZSBmb2xsb3dpbmcgZm9ybQogCi1AaXRlbQotQ2hpbGQgZnJhbWVzIChAcHhyZWZ7Q2hpbGQg RnJhbWVzfSkgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBhIGJ1ZmZlcgotd2l0aGluIHRoZSBz Y3JlZW4gZXN0YXRlIG9mIHRoZSBzZWxlY3RlZCBmcmFtZSB3aXRob3V0IGRpc3J1cHRpbmcg dGhhdAotZnJhbWUncyB3aW5kb3cgY29uZmlndXJhdGlvbiBhbmQgd2l0aG91dCB0aGUgb3Zl cmhlYWQgYXNzb2NpYXRlZCB3aXRoCi1mdWxsLWZsZWRnZWQgZnJhbWVzIGFzIGluZmxpY3Rl ZCBieSBAY29kZXtkaXNwbGF5LWJ1ZmZlci1wb3AtdXAtZnJhbWV9LgotQGVuZCBpdGVtaXpl Ci1AZW5kIHRhYmxlCitAZXhhbXBsZQorQGdyb3VwCisocHJvZ24KKyAgKHNwbGl0LXdpbmRv dykKKyAgKHBvcC10by1idWZmZXIgIipNZXNzYWdlcyoiKSkKK0BlbmQgZ3JvdXAKK0BlbmQg ZXhhbXBsZQorCit3aWxsIGNvcnJlY3RseSBzZWxlY3QgdGhlIEBmaWxleypNZXNzYWdlcyp9 IGJ1ZmZlciwgdGhlIG5leHQgZm9ybQorCitAZXhhbXBsZQorQGdyb3VwCisocHJvZ24KKyAg KHNwbGl0LXdpbmRvdykKKyAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IChzZWxlY3RlZC13aW5k b3cpCisgICAgKHBvcC10by1idWZmZXIgIipNZXNzYWdlcyoiKSkpCitAZW5kIGdyb3VwCitA ZW5kIGV4YW1wbGUKKword2lsbCBub3QuCiAKK0Fsc28sIGludm9jYXRpb25zIG9mIGFjdGlv biBmdW5jdGlvbnMgbGlrZQorQGNvZGV7ZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93 fSBhbmQKK0Bjb2Rle2Rpc3BsYXktYnVmZmVyLXVzZS1sZWFzdC1yZWNlbnQtd2luZG93fSB0 aGF0IGV4cGVjdCB0aGUgc2VsZWN0ZWQKK3dpbmRvdyB0byBoYXZlIHRoZSBoaWdoZXN0IHVz ZSB0aW1lIGFtb25nIGFsbCB3aW5kb3dzLCBtYXkgZmFpbCB0bworcHJvZHVjZSBhIHdpbmRv dyBhY2NvcmRpbmcgdG8gdGhlaXIgc3BlY2lmaWNhdGlvbnMuCisKK0hlbmNlLCBhbiBhcHBs aWNhdGlvbiB0aGF0IHJlbGllcyBvbiB1c2luZyBhIHdpbmRvdyBleGN1cnNpb24gc2hvdWxk IHRyeQordG8gcG9zdHBvbmUgdGhlIEBjb2Rle2Rpc3BsYXktYnVmZmVyfSBjYWxsIHVudGls IGFmdGVyIHRoZSBleGN1cnNpb24gaGFzCit0ZXJtaW5hdGVkLgorQGVuZCB0YWJsZQogCiBA bm9kZSBXaW5kb3cgSGlzdG9yeQogQHNlY3Rpb24gV2luZG93IEhpc3RvcnkKZGlmZiAtLWdp dCBhL2xpc3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggN2Q4ZWU0ODYzNS4u ZjE0OWQxNzZhOSAxMDA2NDQKLS0tIGEvbGlzcC93aW5kb3cuZWwKKysrIGIvbGlzcC93aW5k b3cuZWwKQEAgLTI0ODcsMTQgKzI0ODcsNiBAQCBnZXQtd2luZG93LXdpdGgtcHJlZGljYXRl CiAKIChkZWZhbGlhcyAnc29tZS13aW5kb3cgJ2dldC13aW5kb3ctd2l0aC1wcmVkaWNhdGUp CiAKLShkZWZjdXN0b20gZGlzcGxheS1idWZmZXItYXZvaWQtc21hbGwtd2luZG93cyBuaWwK LSAgIklmIG5vbi1uaWwsIHdpbmRvd3MgdGhhdCBoYXZlIGZld2VyIGxpbmVzIHRoYW4gdGhp cyBhcmUgYXZvaWRlZC4KLVRoaXMgaXMgdXNlZCBieSBgZ2V0LWxydS13aW5kb3cnLiAgVGhl IHZhbHVlIGlzIGludGVycHJldGVkIGluIHVuaXRzCi1vZiB0aGUgZnJhbWUncyBjYW5vbmlj YWwgbGluZSBoZWlnaHQsIGxpa2UgYHdpbmRvdy10b3RhbC1oZWlnaHQnIGRvZXMuIgotICA6 dHlwZSAnKGNob2ljZSAoY29uc3QgbmlsKSBudW1iZXIpCi0gIDp2ZXJzaW9uICIyOS4xIgot ICA6Z3JvdXAgJ3dpbmRvd3MpCi0KIChkZWZ1biBnZXQtbHJ1LXdpbmRvdyAoJm9wdGlvbmFs IGFsbC1mcmFtZXMgZGVkaWNhdGVkIG5vdC1zZWxlY3RlZCBuby1vdGhlcikKICAgIlJldHVy biB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCB3aW5kb3cgb24gZnJhbWVzIHNwZWNpZmllZCBi eSBBTEwtRlJBTUVTLgogUmV0dXJuIGEgZnVsbC13aWR0aCB3aW5kb3cgaWYgcG9zc2libGUu ICBBIG1pbmlidWZmZXIgd2luZG93IGlzCkBAIC0yNTIwLDExICsyNTEyLDcgQEAgZ2V0LWxy dS13aW5kb3cKIC0gQSBmcmFtZSBtZWFucyBjb25zaWRlciBhbGwgd2luZG93cyBvbiB0aGF0 IGZyYW1lIG9ubHkuCiAKIEFueSBvdGhlciB2YWx1ZSBvZiBBTEwtRlJBTUVTIG1lYW5zIGNv bnNpZGVyIGFsbCB3aW5kb3dzIG9uIHRoZQotc2VsZWN0ZWQgZnJhbWUgYW5kIG5vIG90aGVy cy4KLQotYGRpc3BsYXktYnVmZmVyLWF2b2lkLXNtYWxsLXdpbmRvd3MnLCBpZiBub24tbmls LCBpcyBhbHNvIHRha2VuIGludG8KLWNvbnNpZGVyYXRpb24uICBXaW5kb3dzIHdob3NlIGhl aWdodCBpcyBzbWFsbGVyIHRoYXQgdGhlIHZhbHVlIG9mIHRoYXQKLXZhcmlhYmxlIHdpbGwg YmUgYXZvaWRlZCBpZiBsYXJnZXIgd2luZG93cyBhcmUgYXZhaWxhYmxlLiIKK3NlbGVjdGVk IGZyYW1lIGFuZCBubyBvdGhlcnMuIgogICAobGV0ICgod2luZG93cyAod2luZG93LWxpc3Qt MSBuaWwgJ25vbWluaSBhbGwtZnJhbWVzKSkKICAgICAgICAgYmVzdC13aW5kb3cgYmVzdC10 aW1lIHNlY29uZC1iZXN0LXdpbmRvdyBzZWNvbmQtYmVzdC10aW1lIHRpbWUpCiAgICAgKGRv bGlzdCAod2luZG93IHdpbmRvd3MpCkBAIC0yNTM0LDkgKzI1MjIsNiBAQCBnZXQtbHJ1LXdp bmRvdwogICAgICAgICAgICAgICAgICAgICAgKG5vdCAod2luZG93LXBhcmFtZXRlciB3aW5k b3cgJ25vLW90aGVyLXdpbmRvdykpKSkKIAkoc2V0cSB0aW1lICh3aW5kb3ctdXNlLXRpbWUg d2luZG93KSkKIAkoaWYgKG9yIChlcSB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCi0gICAg ICAgICAgICAgICAgKGFuZCBkaXNwbGF5LWJ1ZmZlci1hdm9pZC1zbWFsbC13aW5kb3dzCi0g ICAgICAgICAgICAgICAgICAgICAoPCAod2luZG93LWhlaWdodCB3aW5kb3cpCi0gICAgICAg ICAgICAgICAgICAgICAgICBkaXNwbGF5LWJ1ZmZlci1hdm9pZC1zbWFsbC13aW5kb3dzKSkK IAkJKG5vdCAod2luZG93LWZ1bGwtd2lkdGgtcCB3aW5kb3cpKSkKIAkgICAgKHdoZW4gKG9y IChub3Qgc2Vjb25kLWJlc3QtdGltZSkgKDwgdGltZSBzZWNvbmQtYmVzdC10aW1lKSkKIAkg ICAgICAoc2V0cSBzZWNvbmQtYmVzdC10aW1lIHRpbWUpCkBAIC03MjY5LDYgKzcyNTQsMTEg QEAgd2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogZGVkaWNhdGVkIGZsYWcgdG8gdGhhdCB2YWx1 ZS4gIEluIGFueSBvdGhlciBjYXNlLCByZXNldCBXSU5ET1cncwogZGVkaWNhdGVkIGZsYWcg dG8gbmlsLgogCitJZiBBTElTVCBjb250YWlucyBhIG5vbi1uaWwgYGJ1bXAtdXNlLXRpbWUn IGVudHJ5LCBidW1wIHVzZSB0aW1lCitvZiBXSU5ET1cgc28gZnVydGhlciBjYWxscyBvZiBg ZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93JworYW5kIGBkaXNwbGF5LWJ1ZmZlci11 c2UtbGVhc3QtcmVjZW50LXdpbmRvdycgd2lsbCB0cnkgdG8gYXZvaWQKK2l0LgorCiBSZXR1 cm4gV0lORE9XIGlmIEJVRkZFUiBhbmQgV0lORE9XIGFyZSBsaXZlLiIKICAgKHdoZW4gKGFu ZCAoYnVmZmVyLWxpdmUtcCBidWZmZXIpICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykpCiAgICAg KGRpc3BsYXktYnVmZmVyLXJlY29yZC13aW5kb3cgdHlwZSB3aW5kb3cgYnVmZmVyKQpAQCAt NzI3Niw2ICs3MjY2LDEwIEBAIHdpbmRvdy0tZGlzcGxheS1idWZmZXIKICAgICAgIDs7IFVu bGVzcyBXSU5ET1cgYWxyZWFkeSBzaG93cyBCVUZGRVIgcmVzZXQgaXRzIGRlZGljYXRlZCBm bGFnLgogICAgICAgKHNldC13aW5kb3ctZGVkaWNhdGVkLXAgd2luZG93IG5pbCkKICAgICAg IChzZXQtd2luZG93LWJ1ZmZlciB3aW5kb3cgYnVmZmVyKSkKKyAgICAod2hlbiAoY2RyIChh c3NxICdidW1wLXVzZS10aW1lIGFsaXN0KSkKKyAgICAgIDs7IEJ1bXAgV0lORE9XJ3MgdXNl IHRpbWUgc28gJ2Rpc3BsYXktYnVmZmVyLS1scnUtd2luZG93JyB3aWxsIHRyeQorICAgICAg OzsgdG8gYXZvaWQgaXQuCisgICAgICAod2luZG93LWJ1bXAtdXNlLXRpbWUgd2luZG93KSkK ICAgICAobGV0ICgoYWxpc3QtZGVkaWNhdGVkIChhc3NxICdkZWRpY2F0ZWQgYWxpc3QpKSkK ICAgICAgIDs7IE1heWJlIGRlZGljYXRlIFdJTkRPVyB0byBCVUZGRVIgaWYgYXNrZWQgZm9y LgogICAgICAgKGNvbmQKQEAgLTg0OTcsMTUgKzg0OTEsNjQgQEAgZGlzcGxheS1idWZmZXIt aW4tcHJldmlvdXMtd2luZG93CiAgICAgKHdoZW4gKHNldHEgd2luZG93IChvciBiZXN0LXdp bmRvdyBzZWNvbmQtYmVzdC13aW5kb3cpKQogICAgICAgKHdpbmRvdy0tZGlzcGxheS1idWZm ZXIgYnVmZmVyIHdpbmRvdyAncmV1c2UgYWxpc3QpKSkpCiAKLShkZWZ1biBkaXNwbGF5LWJ1 ZmZlci11c2UtbGVhc3QtcmVjZW50LXdpbmRvdyAoYnVmZmVyIGFsaXN0KQotICAiRGlzcGxh eSBCVUZGRVIgaW4gYW4gZXhpc3Rpbmcgd2luZG93LCBidXQgdGhhdCBoYXNuJ3QgYmVlbiB1 c2VkIGxhdGVseS4KLVRoaXMgYGRpc3BsYXktYnVmZmVyJyBhY3Rpb24gZnVuY3Rpb24gaXMg bGlrZQotYGRpc3BsYXktYnVmZmVyLXVzZS1zb21lLXdpbmRvdycsIGJ1dCB3aWxsIGN5Y2xl IHRocm91Z2ggd2luZG93cwotd2hlbiBkaXNwbGF5aW5nIGJ1ZmZlcnMgcmVwZWF0ZWRseSwg YW5kIGlmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZQotd2luZG93LCBpdCB3aWxsIHNwbGl0IHRo ZSB3aW5kb3cuIgotICAod2hlbi1sZXQgKCh3aW5kb3cgKGRpc3BsYXktYnVmZmVyLXVzZS1z b21lLXdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciAoY29ucyAoY29ucyAn aW5oaWJpdC1zYW1lLXdpbmRvdyB0KSBhbGlzdCkpKSkKLSAgICAod2luZG93LWJ1bXAtdXNl LXRpbWUgd2luZG93KSkpCisoZGVmdW4gZGlzcGxheS1idWZmZXItLWxydS13aW5kb3cgKGFs aXN0KQorICAiUmV0dXJuIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIHdpbmRvdyBhY2NvcmRp bmcgdG8gQUxJU1QuCitEbyBub3QgcmV0dXJuIGEgbWluaWJ1ZmZlciB3aW5kb3cgb3IgYSB3 aW5kb3cgZGVkaWNhdGVkIHRvIGl0cworYnVmZmVyLiAgQUxJU1QgaXMgYSBidWZmZXIgZGlz cGxheSBhY3Rpb24gYWxpc3QgYXMgY29tcGlsZWQgYnkKK2BkaXNwbGF5LWJ1ZmZlcicuICBU aGUgZm9sbG93aW5nIEFMSVNUIGVudHJpZXMgYXJlIGhvbm9yZWQ6CisKKy0gYGxydS1mcmFt ZXMnIHNwZWNpZmllcyB0aGUgZnJhbWVzIHRvIGludmVzdGlnYXRlIGFuZCBoYXMgdGhlCisg IHNhbWUgbWVhbmluZyBhcyB0aGUgQUxMLUZSQU1FUyBhcmd1bWVudCBvZiBgZ2V0LWxydS13 aW5kb3cnLgorCistIGBscnUtdGltZScgc3BlY2lmaWVzIGEgdXNlIHRpbWUuICBEbyBub3Qg cmV0dXJuIGEgd2luZG93IHdob3NlCisgIHVzZSB0aW1lIGlzIGhpZ2hlciB0aGFuIHRoaXMu CisKKy0gYHdpbmRvdy1taW4td2lkdGgnIHNwZWNpZmllcyBhIHByZWZlcnJlZCBtaW5pbXVt IHdpZHRoIGluCisgIGNhbm9uaWNhbCBmcmFtZSBjb2x1bW5zLiAgSWYgaXQgaXMgdGhlIGNv bnN0YW50IGBmdWxsLXdpZHRoJywKKyAgcHJlZmVyIGEgZnVsbC13aWR0aCB3aW5kb3cuCisK Ky0gYHdpbmRvdy1taW4taGVpZ2h0JyBzcGVjaWZpZXMgYSBwcmVmZXJyZWQgbWluaW11bSBo ZWlnaHQgaW4KKyAgY2Fub25pY2FsIGZyYW1lIGxpbmVzLiAgSWYgaXQgaXMgdGhlIGNvbnN0 YW50IGBmdWxsLWhlaWdodCcsCisgIHByZWZlciBhIGZ1bGwtaGVpZ2h0IHdpbmRvdy4KKwor SWYgQUxJU1QgY29udGFpbnMgYSBub24tbmlsIGBpbmhpYml0LXNhbWUtLXdpbmRvdycgZW50 cnksIGRvIG5vdAorcmV0dXJuIHRoZSBzZWxlY3RlZCB3aW5kb3cuIgorICAobGV0ICgod2lu ZG93cworICAgICAgICAgKHdpbmRvdy1saXN0LTEgbmlsICdub21pbmkgKGNkciAoYXNzcSAn bHJ1LWZyYW1lcyBhbGlzdCkpKSkKKyAgICAgICAgKGxydS10aW1lIChjZHIgKGFzc3EgJ2xy dS10aW1lIGFsaXN0KSkpCisgICAgICAgIChtaW4td2lkdGggKGNkciAoYXNzcSAnd2luZG93 LW1pbi13aWR0aCBhbGlzdCkpKQorICAgICAgICAobWluLWhlaWdodCAoY2RyIChhc3NxICd3 aW5kb3ctbWluLWhlaWdodCBhbGlzdCkpKQorICAgICAgICAobm90LXRoaXMtd2luZG93IChj ZHIgKGFzc3EgJ2luaGliaXQtc2FtZS13aW5kb3cgYWxpc3QpKSkKKyAgICAgICAgYmVzdC13 aW5kb3cgYmVzdC10aW1lIHNlY29uZC1iZXN0LXdpbmRvdyBzZWNvbmQtYmVzdC10aW1lIHRp bWUpCisgICAgKGRvbGlzdCAod2luZG93IHdpbmRvd3MpCisgICAgICAod2hlbiAoYW5kIChu b3QgKHdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cpKQorCQkgKG9yIChub3Qgbm90LXRoaXMt d2luZG93KQorICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgd2luZG93IChzZWxlY3Rl ZC13aW5kb3cpKSkpKQorCShzZXRxIHRpbWUgKHdpbmRvdy11c2UtdGltZSB3aW5kb3cpKQor ICAgICAgICAodW5sZXNzIChhbmQgKG51bWJlcnAgbHJ1LXRpbWUpICg+IHRpbWUgbHJ1LXRp bWUpKQorCSAgKGlmIChvciAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQorICAgICAg ICAgICAgICAgICAgKGFuZCBtaW4td2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgKG9y IChhbmQgKG51bWJlcnAgbWluLXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoPCAod2luZG93LXdpZHRoIHdpbmRvdykgbWluLXdpZHRoKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKGVxIG1pbi13aWR0aCAnZnVsbC13aWR0aCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAod2luZG93LWZ1bGwtd2lkdGgtcCB3 aW5kb3cpKSkpKQorICAgICAgICAgICAgICAgICAgKGFuZCBtaW4taGVpZ2h0CisgICAgICAg ICAgICAgICAgICAgICAgIChvciAoYW5kIChudW1iZXJwIG1pbi1oZWlnaHQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICg8ICh3aW5kb3ctaGVpZ2h0IHdpbmRvdykgbWlu LWhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcSBtaW4taGVp Z2h0ICdmdWxsLWhlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCAod2luZG93LWZ1bGwtaGVpZ2h0LXAgd2luZG93KSkpKSkpCisgICAgICAgICAgICAgIDs7 IFRoaXMgd2luZG93IGlzIGVpdGhlciBzZWxlY3RlZCBvciBkb2VzIG5vdCBtZWV0IHRoZSBz aXplCisgICAgICAgICAgICAgIDs7IHJlc3RyaWN0aW9ucyAtIHNvIGl0J3Mgb25seSBhIHNl Y29uZCBiZXN0IGNob2ljZS4gIFRyeSB0bworICAgICAgICAgICAgICA7OyBmaW5kIGEgbW9y ZSByZWNlbnRseSB1c2VkIG9uZSB0aGF0IGZpdHMuCisJICAgICAgKHdoZW4gKG9yIChub3Qg c2Vjb25kLWJlc3QtdGltZSkgKDwgdGltZSBzZWNvbmQtYmVzdC10aW1lKSkKKwkgICAgICAg IChzZXRxIHNlY29uZC1iZXN0LXRpbWUgdGltZSkKKwkgICAgICAgIChzZXRxIHNlY29uZC1i ZXN0LXdpbmRvdyB3aW5kb3cpKQorICAgICAgICAgICAgOzsgVGhpcyB3aW5kb3cgaXMgbm90 IHNlbGVjdGVkIGFuZCBkb2VzIG1lZXQgdGhlIHNpemUKKyAgICAgICAgICAgIDs7IHJlc3Ry aWN0aW9ucy4gIEl0J3MgdGhlIGJlc3QgY2hvaWNlIHNvIGZhci4KKwkgICAgKHdoZW4gKG9y IChub3QgYmVzdC10aW1lKSAoPCB0aW1lIGJlc3QtdGltZSkpCisJICAgICAgKHNldHEgYmVz dC10aW1lIHRpbWUpCisJICAgICAgKHNldHEgYmVzdC13aW5kb3cgd2luZG93KSkpKSkpCisg ICAgKG9yIGJlc3Qtd2luZG93IHNlY29uZC1iZXN0LXdpbmRvdykpKQogCiAoZGVmdW4gZGlz cGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93IChidWZmZXIgYWxpc3QpCiAgICJEaXNwbGF5 IEJVRkZFUiBpbiBhbiBleGlzdGluZyB3aW5kb3cuCkBAIC04NTI5LDcgKzg1NzIsMTEgQEAg ZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93CiAJCSAgICAod2luZG93LS1mcmFtZS11 c2FibGUtcCAobGFzdC1ub25taW5pYnVmZmVyLWZyYW1lKSkpKQogCSAod2luZG93CiAJICA7 OyBSZXVzZSBhbiBleGlzdGluZyB3aW5kb3cuCi0JICAob3IgKGdldC1scnUtd2luZG93IGZy YW1lIG5pbCBub3QtdGhpcy13aW5kb3cpCisJICAob3IgKGRpc3BsYXktYnVmZmVyLS1scnUt d2luZG93CisgICAgICAgICAgICAgICA7OyBJZiBBTElTVCBzcGVjaWZpZXMgJ2xydS1mcmFt ZXMnIG9yICd3aW5kb3ctbWluLXdpZHRoJworICAgICAgICAgICAgICAgOzsgbGV0IHRoZW0g cHJldmFpbC4KKyAgICAgICAgICAgICAgIChhcHBlbmQgYWxpc3QgYCgobHJ1LWZyYW1lcyAu ICxmcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2luZG93LW1pbi13 aWR0aCAuIGZ1bGwtd2lkdGgpKSkpCiAJICAgICAgKGxldCAoKHdpbmRvdyAoZ2V0LWJ1ZmZl ci13aW5kb3cgYnVmZmVyICd2aXNpYmxlKSkpCiAJCSh1bmxlc3MgKGFuZCBub3QtdGhpcy13 aW5kb3cKIAkJCSAgICAgKGVxIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkpCkBAIC04NTU5 LDYgKzg2MDYsNzYgQEAgZGlzcGxheS1idWZmZXItdXNlLXNvbWUtd2luZG93CiAJKHVubGVz cyAoY2RyIChhc3NxICdpbmhpYml0LXN3aXRjaC1mcmFtZSBhbGlzdCkpCiAJICAod2luZG93 LS1tYXliZS1yYWlzZS1mcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpKSkpKSkKIAorKGRl ZnVuIGRpc3BsYXktYnVmZmVyLXVzZS1sZWFzdC1yZWNlbnQtd2luZG93IChidWZmZXIgYWxp c3QpCisgICJEaXNwbGF5IEJVRkZFUiB0cnlpbmcgdG8gYXZvaWQgd2luZG93cyB1c2VkIHJl Y2VudGx5LgorVGhpcyBpcyBzaW1pbGFyIHRvIGBkaXNwbGF5LWJ1ZmZlci11c2Utc29tZS13 aW5kb3cnIGJ1dCB0cmllcworaGFyZCB0byBhdm9pZCB1c2luZyBhIHdpbmRvdyByZWNlbnRs eSB1c2VkIGJ5IGBkaXNwbGF5LWJ1ZmZlcicuCisKK0Rpc3RpbmN0aXZlIGZlYXR1cmVzIGFy ZToKKworLSBEbyBub3QgdXNlIHRoZSBzZWxlY3RlZCB3aW5kb3cuCisKKy0gVHJ5IGZpcnN0 IHRvIHJldXNlIGEgd2luZG93IHRoYXQgc2hvd3MgQlVGRkVSIGFscmVhZHkgb24gYQorICBm cmFtZSBzcGVjaWZpZWQgYnkgYSBgcmV1c2FibGUtZnJhbWVzJyBBTElTVCBlbnRyeSwgdXNp bmcgdGhlCisgIHNlbGVjdGVkIGZyYW1lIGlmIG5vIHN1Y2ggZW50cnkgaGFzIGJlZW4gc3Bl Y2lmaWVkLgorCistIE5leHQgdHJ5IHRvIHNob3cgQlVGRkVSIGluIHRoZSBsZWFzdCByZWNl bnRseSB1c2VkIHdpbmRvdy4gIFRoZQorICBmcmFtZXMgdG8gc2VhcmNoIGZvciBzdWNoIGEg d2luZG93IGNhbiBiZSBzcGVjaWZpZWQgdmlhIGEKKyAgYGxydS1mcmFtZXMnIEFMSVNUIGVu dHJ5OyBpZiBubyBzdWNoIGVudHJ5IGV4aXN0cywgc2VhcmNoIHRoZQorICBzZWxlY3RlZCBm cmFtZSBvbmx5LiAgSW4gYWRkaXRpb24sIHRyeSB0byBzYXRpc2Z5IGNvbnN0cmFpbnRzCisg IHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIEFMSVNUIGVudHJpZXMsIGlmIHByZXNlbnQ6 CisKKyAgYGxydS10aW1lJyBzcGVjaWZpZXMgYSB1c2UgdGltZS4gIERvIG5vdCByZXR1cm4g YSB3aW5kb3cgd2hvc2UKKyAgICB1c2UgdGltZSBpcyBoaWdoZXIgdGhhbiB0aGlzLiAgV2hl biBjYWxsaW5nIHRoaXMgYWN0aW9uCisgICAgZnVuY3Rpb24gcmVwZWF0ZWRseSAocHJlc3Vt YWJseSB0byBkaXNwbGF5IHNldmVyYWwgYnVmZmVycyBpbgorICAgIGEgcm93KSwgYW4gYXBw bGljYXRpb24gc2hvdWxkIGZpcnN0IHNhdmUgdGhlIHVzZSB0aW1lIG9mIHRoZQorICAgIHNl bGVjdGVkIHdpbmRvdyBhbmQgcGFzcyB0aGF0IHNhbWUgdmFsdWUgdmlhIHN1Y2ggYW4gZW50 cnkgaW4KKyAgICBlYWNoIGNhbGwgb2YgYGRpc3BsYXktYnVmZmVyJy4gIFRoaXMgcmVkdWNl cyB0aGUgcHJvYmFiaWxpdHkKKyAgICB0aGF0IGBkaXNwbGF5LWJ1ZmZlcicgdXNlcyB0aGUg c2FtZSB3aW5kb3cgYXMgYSBwcmV2aW91cworICAgIGNhbGwuCisKKyAgYHdpbmRvdy1taW4t d2lkdGgnIHNwZWNpZmllcyBhIHByZWZlcnJlZCBtaW5pbXVtIHdpZHRoIGluCisgICAgY2Fu b25pY2FsIGZyYW1lIGNvbHVtbnMuICBJZiBpdCBpcyB0aGUgY29uc3RhbnQgYGZ1bGwtd2lk dGgnLAorICAgIHByZWZlciBhIGZ1bGwtd2lkdGggd2luZG93LgorCisgIGB3aW5kb3ctbWlu LWhlaWdodCcgc3BlY2lmaWVzIGEgcHJlZmVycmVkIG1pbmltdW0gaGVpZ2h0IGluCisgICAg Y2Fub25pY2FsIGZyYW1lIGxpbmVzLiAgSWYgaXQgaXMgdGhlIGNvbnN0YW50IGBmdWxsLWhl aWdodCcsCisgICAgcHJlZmVyIGEgZnVsbC1oZWlnaHQgd2luZG93LgorCistIElmIHRoZSBw cmVjZWRpbmcgc3RlcHMgZmFpbCwgdHJ5IHRvIHBvcCB1cCBhIG5ldyB3aW5kb3cgb24gdGhl CisgIHNlbGVjdGVkIGZyYW1lLgorCitJZiBhIHdpbmRvdyBpcyBmb3VuZCwgYnVtcCB0aGUg dXNlIHRpbWUgb2YgdGhhdCB3aW5kb3cgdG8gdGhlCitoaWdoZXN0IHVzZSB0aW1lIGFmdGVy IHRoZSBzZWxlY3RlZCB3aW5kb3cuICBUaGlzIG1ha2VzIGl0IGxlc3MKK3Byb2JhYmxlIHRo YXQgYSBmdXR1cmUgaW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHVzZXMgdGhhdAord2lu ZG93IGZvciBhbm90aGVyIGJ1ZmZlci4iCisgIChsZXQqICgoYWxpc3QgKGNvbnMgKGNvbnMg J2luaGliaXQtc2FtZS13aW5kb3cgdCkgYWxpc3QpKQorICAgICAgICAgKHdpbmRvdworICAg ICAgICAgIChvciAoZGlzcGxheS1idWZmZXItcmV1c2Utd2luZG93IGJ1ZmZlciBhbGlzdCkK KyAgICAgICAgICAgICAgKGxldCAoKHdpbmRvdyAoZGlzcGxheS1idWZmZXItLWxydS13aW5k b3cgYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAod2hlbiAod2luZG93LWxpdmUtcCB3aW5k b3cpCisgICAgICAgICAgICAgICAgICAobGV0KiAoKHF1aXQtcmVzdG9yZSAod2luZG93LXBh cmFtZXRlciB3aW5kb3cgJ3F1aXQtcmVzdG9yZSkpCisJICAgICAgICAgICAgICAgICAocXVh ZCAobnRoIDEgcXVpdC1yZXN0b3JlKSkpCisgICAgICAgICAgICAgICAgICAgIDs7IElmIHRo ZSB3aW5kb3cgd2FzIHVzZWQgYnkgYGRpc3BsYXktYnVmZmVyJyBiZWZvcmUsIHRyeSB0bwor ICAgICAgICAgICAgICAgICAgICA7OyByZXNpemUgaXQgdG8gaXRzIG9sZCBoZWlnaHQgYnV0 IGRvbid0IHNpZ25hbCBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFu ZCAobGlzdHAgcXVhZCkKKwkJICAgICAgICAgICAgICAgKGludGVnZXJwIChudGggMyBxdWFk KSkKKwkJICAgICAgICAgICAgICAgKD4gKG50aCAzIHF1YWQpICh3aW5kb3ctdG90YWwtaGVp Z2h0IHdpbmRvdykpKQorCSAgICAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAorCSAg ICAgICAgICAgICAgICAgICh3aW5kb3ctcmVzaXplCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB3aW5kb3cgKC0gKG50aCAzIHF1YWQpICh3aW5kb3ctdG90YWwtaGVpZ2h0IHdpbmRv dykpKQorCSAgICAgICAgICAgICAgICAoZXJyb3IgbmlsKSkpCisgICAgICAgICAgICAgICAg ICAgIChwcm9nMQorCSAgICAgICAgICAgICAgICAod2luZG93LS1kaXNwbGF5LWJ1ZmZlciBi dWZmZXIgd2luZG93ICdyZXVzZSBhbGlzdCkKKwkgICAgICAgICAgICAgICh3aW5kb3ctLWV2 ZW4td2luZG93LXNpemVzIHdpbmRvdykKKwkgICAgICAgICAgICAgICh1bmxlc3MgKGNkciAo YXNzcSAnaW5oaWJpdC1zd2l0Y2gtZnJhbWUgYWxpc3QpKQorCSAgICAgICAgICAgICAgICAo d2luZG93LS1tYXliZS1yYWlzZS1mcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpKSkpKSkK KyAgICAgICAgICAgICAgKGRpc3BsYXktYnVmZmVyLXBvcC11cC13aW5kb3cgYnVmZmVyIGFs aXN0KSkpKQorICAgIDs7IERvbid0IGJ1bXAgdXNlIHRpbWUgdHdpY2UuCisgICAgKHdoZW4g KGFuZCB3aW5kb3cgKG5vdCAoY2RyIChhc3NxICdidW1wLXVzZS10aW1lIGFsaXN0KSkpKQor ICAgICAgKHdpbmRvdy1idW1wLXVzZS10aW1lIHdpbmRvdykpCisgICAgd2luZG93KSkKKwog KGRlZnVuIGRpc3BsYXktYnVmZmVyLW5vLXdpbmRvdyAoX2J1ZmZlciBhbGlzdCkKICAgIkRp c3BsYXkgQlVGRkVSIGluIG5vIHdpbmRvdy4KIEFMSVNUIGlzIGFuIGFzc29jaWF0aW9uIGxp c3Qgb2YgYWN0aW9uIHN5bWJvbHMgYW5kIHZhbHVlcy4gIFNlZQpkaWZmIC0tZ2l0IGEvc3Jj L3dpbmRvdy5jIGIvc3JjL3dpbmRvdy5jCmluZGV4IDkwZmE2YWMyZGYuLjg1Zjc0MGQ1NTEg MTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYworKysgYi9zcmMvd2luZG93LmMKQEAgLTc2Miwx MCArNzYyLDE1IEBAIERFRlVOICgic2V0LXdpbmRvdy1jb21iaW5hdGlvbi1saW1pdCIsIEZz ZXRfd2luZG93X2NvbWJpbmF0aW9uX2xpbWl0LCBTc2V0X3dpbmRvCiAKIERFRlVOICgid2lu ZG93LXVzZS10aW1lIiwgRndpbmRvd191c2VfdGltZSwgU3dpbmRvd191c2VfdGltZSwgMCwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgdXNlIHRpbWUgb2Ygd2luZG93IFdJ TkRPVy4KLVdJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRo ZSBzZWxlY3RlZCBvbmUuCi1UaGUgd2luZG93IHdpdGggdGhlIGhpZ2hlc3QgdXNlIHRpbWUg aXMgdGhlIG1vc3QgcmVjZW50bHkgc2VsZWN0ZWQKLW9uZS4gIFRoZSB3aW5kb3cgd2l0aCB0 aGUgbG93ZXN0IHVzZSB0aW1lIGlzIHRoZSBsZWFzdCByZWNlbnRseQotc2VsZWN0ZWQgb25l LiAgKi8pCitXSU5ET1cgbXVzdCBzcGVjaWZ5IGEgbGl2ZSB3aW5kb3cgYW5kIGRlZmF1bHRz IHRvIHRoZSBzZWxlY3RlZCBvbmUuCisKK1RoZSB3aW5kb3cgd2l0aCB0aGUgaGlnaGVzdCB1 c2UgdGltZSBpcyB1c3VhbGx5IHRoZSBvbmUgbW9zdCByZWNlbnRseQorc2VsZWN0ZWQgYnkg Y2FsbGluZyBgc2VsZWN0LXdpbmRvdycgd2l0aCBOT1JFQ09SRCBuaWwuICBUaGUgd2luZG93 IHdpdGgKK3RoZSBsb3dlc3QgdXNlIHRpbWUgaXMgdXN1YWxseSB0aGUgbGVhc3QgcmVjZW50 bHkgc2VsZWN0ZWQgb25lIGNob3NlbiBpbgorc3VjaCBhIHdheS4KKworTm90ZSB0aGF0IHRo ZSB1c2UgdGltZSBvZiBhIHdpbmRvdyBjYW4gYmUgYWxzbyBjaGFuZ2VkIGJ5IGNhbGxpbmcK K2B3aW5kb3ctYnVtcC11c2UtdGltZScgZm9yIHRoYXQgd2luZG93LiAgKi8pCiAgIChMaXNw X09iamVjdCB3aW5kb3cpCiB7CiAgIHJldHVybiBtYWtlX2ZpeG51bSAoZGVjb2RlX2xpdmVf d2luZG93ICh3aW5kb3cpLT51c2VfdGltZSk7CkBAIC03NzMsMTUgKzc3OCwyNyBAQCBERUZV TiAoIndpbmRvdy11c2UtdGltZSIsIEZ3aW5kb3dfdXNlX3RpbWUsIFN3aW5kb3dfdXNlX3Rp bWUsIDAsIDEsIDAsCiAKIERFRlVOICgid2luZG93LWJ1bXAtdXNlLXRpbWUiLCBGd2luZG93 X2J1bXBfdXNlX3RpbWUsCiAgICAgICAgU3dpbmRvd19idW1wX3VzZV90aW1lLCAwLCAxLCAw LAotICAgICAgIGRvYzogLyogTWFyayBXSU5ET1cgYXMgaGF2aW5nIGJlZW4gbW9zdCByZWNl bnRseSB1c2VkLgotV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQorICAgICAgIGRvYzogLyogTWFyayBXSU5ET1cg YXMgc2Vjb25kIG1vc3QgcmVjZW50bHkgdXNlZC4KK1dJTkRPVyBtdXN0IHNwZWNpZnkgYSBs aXZlIHdpbmRvdy4KKworSWYgV0lORE9XIGlzIG5vdCBzZWxlY3RlZCBhbmQgdGhlIHNlbGVj dGVkIHdpbmRvdyBoYXMgdGhlIGhpZ2hlc3QgdXNlCit0aW1lIG9mIGFsbCB3aW5kb3dzLCBz ZXQgdGhlIHVzZSB0aW1lIG9mIFdJTkRPVyB0byB0aGF0IG9mIHRoZSBzZWxlY3RlZAord2lu ZG93LCBpbmNyZWFzZSB0aGUgdXNlIHRpbWUgb2YgdGhlIHNlbGVjdGVkIHdpbmRvdyBieSBv bmUgYW5kIHJldHVybgordGhlIG5ldyB1c2UgdGltZSBvZiBXSU5ET1cuICBPdGhlcndpc2Us IGRvIG5vdGhpbmcgYW5kIHJldHVybiBuaWwuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRv dykKIHsKICAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9saXZlX3dpbmRvdyAod2luZG93 KTsKKyAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpOwog Ci0gIHctPnVzZV90aW1lID0gKyt3aW5kb3dfc2VsZWN0X2NvdW50OworICBpZiAodyAhPSBz dyAmJiBzdy0+dXNlX3RpbWUgPT0gd2luZG93X3NlbGVjdF9jb3VudCkKKyAgICB7CisgICAg ICB3LT51c2VfdGltZSA9IHdpbmRvd19zZWxlY3RfY291bnQ7CisgICAgICBzdy0+dXNlX3Rp bWUgPSArK3dpbmRvd19zZWxlY3RfY291bnQ7CiAKLSAgcmV0dXJuIFFuaWw7CisgICAgICBy ZXR1cm4gbWFrZV9maXhudW0gKHctPnVzZV90aW1lKTsKKyAgICB9CisgIGVsc2UKKyAgICBy ZXR1cm4gUW5pbDsKIH0KIAwKIERFRlVOICgid2luZG93LXBpeGVsLXdpZHRoIiwgRndpbmRv d19waXhlbF93aWR0aCwgU3dpbmRvd19waXhlbF93aWR0aCwgMCwgMSwgMCwK --------------Ij3BHXadAgNUItjb03BJLzmd--