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.bugs Subject: bug#60585: 30.0.50; global-text-scale-adjust shrinks window (was not before), was: Re: bug#52493: 29.0.50; Setting Inconsolata up in init.el makes default face rendered wrong Date: Sun, 22 Jan 2023 10:54:05 +0100 Message-ID: <9c02c0b0-9b96-7d46-37ae-a258a9496891@gmx.at> References: <80e7f515-e16f-5ce8-86a3-e5f47cd2d2f5@yandex.ru> <921de89e-57e0-04de-3e91-043b49503d10@yandex.ru> <32ac6060-a7ed-a0c4-1c62-f0e1804d963d@gmx.at> <0547624a-15c0-792c-dce5-85101cf9cd71@gmx.at> <5770c9ec-4de5-8365-fb70-5a88d14d8179@yandex.ru> <75e1b3d4-a79f-d36f-4898-fdf1ed05492c@gmx.at> <33214f9c-f89f-b96f-e1db-12aad7b03261@yandex.ru> <36f67e04-8450-5273-2136-fb9832ed703f@gmx.at> <67b92c69-f456-0d31-c7b2-83600cc12f61@yandex.ru> <936558fd-5c6e-f575-7211-3d6a14f8febd@yandex.ru> <46994f90-a8ab-7797-73f6-51af01759fb1@gmx.at> <661a804a-ad05-81f8-1aa0-b83811a0576c@yandex.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------VRoO3NuZ8UZiuP2D0na4DApn" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26829"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 60585@debbugs.gnu.org, rpluim@gmail.com To: Dmitry Gutov , Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jan 22 10:55:11 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pJX4B-0006mn-5f for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 22 Jan 2023 10:55:11 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pJX44-0000Qb-Ae; Sun, 22 Jan 2023 04:55:04 -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 1pJX42-0000Q6-GR for bug-gnu-emacs@gnu.org; Sun, 22 Jan 2023 04:55:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pJX42-0003zi-7U for bug-gnu-emacs@gnu.org; Sun, 22 Jan 2023 04:55:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pJX42-0006ID-3i for bug-gnu-emacs@gnu.org; Sun, 22 Jan 2023 04:55:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 22 Jan 2023 09:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60585 X-GNU-PR-Package: emacs Original-Received: via spool by 60585-submit@debbugs.gnu.org id=B60585.167438125824134 (code B ref 60585); Sun, 22 Jan 2023 09:55:02 +0000 Original-Received: (at 60585) by debbugs.gnu.org; 22 Jan 2023 09:54:18 +0000 Original-Received: from localhost ([127.0.0.1]:50723 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pJX3I-0006HA-MV for submit@debbugs.gnu.org; Sun, 22 Jan 2023 04:54:18 -0500 Original-Received: from mout.gmx.net ([212.227.17.21]:54073) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pJX3F-0006Gt-2y for 60585@debbugs.gnu.org; Sun, 22 Jan 2023 04:54:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1674381247; bh=tk/czyuQew79j11GT0HTZrmhBFb4Zc09Qp3Y/jmI2aw=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=erfW0H4uHwPFnkqfmUzR4xRtpvmK7kmEK+CMz7Dr1h1M3NBU497w2exClutW/KVlK tQJXDCMfDAnEzxHpBCYWjJFMHld5r8ozAlZ0oDiqJF8weVdOCESfvXLBxjXS5ugq3S IRiBoj7qnqSR97LFewrnuM5I6bjJU1G1uas2VOnVFLfIviGbe98s84xDp3T5Xg/Y8Y yi5xCGuY9QpWXCJReqNoXWVurr/zblEA1iquRIEg2OZdwPZHm+2a/UD3CRQrLmGiRl i45iluqneauisIEddH7Dr0gNZGXtCnNfXsORcmFpaHE//YRyC8oP2tUDh+JYYZ8fcO QD5qDHoGtQVHg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.1.100] ([212.95.5.165]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M3lYB-1pJntl2hE3-000q1E; Sun, 22 Jan 2023 10:54:06 +0100 Content-Language: en-US In-Reply-To: <661a804a-ad05-81f8-1aa0-b83811a0576c@yandex.ru> X-Provags-ID: V03:K1:Yef6yBuf/yak2toLsXeKx2EPbdB7RAttEQi7K3tcLlx+sjijQba AktSyK1SL23yXIvGi8J6o2RXS2KpBIDngjOCaCUgVnA2OsefeQsOnxh062eqUYi3m4YFBj/ FCvVXaFvTW0WmkMhlAuB/xWsDUpXJdHQlp1kjtEKJyAPLt9Eu8IjxvRtSO8XxFfrlJz/eNZ EngkceO0Wd4cpqQl9Qgtw== UI-OutboundReport: notjunk:1;M01:P0:sgMH01hzyZo=;YsNI0/UsMOzWRFEJBTP9RT7H7tp HpV+i9M4fGxyTIYHNDP7rwRi332nuOBu23YIKB4qrHAGi/N80G0p3mrnGdCOz/Lo4fPBuHfZc jsfDhspo+35Me7+cuXr3TbkYMMEX6wRwhGubVaRBS9/dWjQVUnEKmyQz0+lhmD/GkiKSigoKI R2FK5+Wuz87IMNvLdtLlr3aqTJMvfeqOgsFT6fVqmEHFfZm1lwkvgxnai4f4dYjFqtgk6/BYI CFRvz0qcbAB8YkmAaJwXy76UqoohB6yDhbMRw3QZwQ+v7R3CikIcYFsjGcdexSK5wW6oFgGnE 9wKm8VGdMtilC70LKRbBLuPgc4TDoGt6VXub7y9qk7qpFGdSMe5wI+xGjv4egkX52Zp63LK/L dHOINB0l4WYwVRv8JMAwV3gLoANZGU8vGRxO3Zyw8Wp9EXdc4Gh6sYbQnZj3HttFGpL6bsfdb GFtxuJrxhlPD9PanmvF/eao+q/+gbrTUFC0HYiCPPIsydWtPUWizsoYME9zRz6IyScLN/UOXW aPN0Tt2XWrnOqjUkHAVvdwZrxOztqPB7wBZnnLdd8x8uu7vxflpPTsnIRRhZDEjhBQ5z1ZOb1 QJpXGMcrJhpEFbcRenKaHdJLTs7l5n/S3OFOzckuf64lXxqqB2M/+epUsz5QEEsmL4j+1o9SK kc72YmK4Zd+7e0c1IVIkq9IPcTnCAbfgKBbWMAZ0quj1B+Or9+bso8yy8y5+IFf+3UZUqsV9J oAUERhJIXb21dblSdYnz4WnJv8Xkjex1a+01WJ3UnGBgC+7mKxxLR4V+O47VkAPfeXvECmE+ X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:253917 Archived-At: This is a multi-part message in MIME format. --------------VRoO3NuZ8UZiuP2D0na4DApn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit >> For reference let's try to stick to the last x_scale_font.diff patch I >> sent you. What was the "impair" size there? > > According to https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52493#332, some impair sizes were 80x36 minus 1 in any dimension using the mouse. You mean the ones where you resized a frame with the mouse by 16 or 36 pixels with a character size of 17x37? > So, with x_rest.diff, the attached transcript is of: > > 1. Resizing the frame to 80x36 (according to GNOME). > 2. Evaluating the set-face-attribute form twice. > 3. Resizing the frame to 80x20 (per GNOME), which is 76x20 according to our internal measurements. Do you mean that 80x36 according to GNOME is 80x36 according to our internal measurements while 80x20 to GNOME is 76x20 according to our internal measurements? > 4. Evaluating the set-face-attribute form twice again. > 5. Resizing to 80x32. > 6. Evaluating s-f-a twice again. > > In this scenario, step 4 doesn't change the frame size. But if I skip > step 1, step 4 (evaluating s-f-a after resizing to 80x20) does change > the frame size. And step 6 (s-f-a at size 80x32) does not. > > So it seems the history of size changes now (?) affects which sizes are "impair". Didn't we always have that? The present code simply tries to reduce some noise when setting the font would otherwise cause a resize of a few pixels. > Also, only height is important now: if height 20 is "impair", then I > can resize the frame to any width with this height, and evaling s-f-a > will shrink the frame in both dimensions by one char. Same for height > 34 in the alternative scenario. Please try the next patch so at least the initial size becomes reasonable again. martin --------------VRoO3NuZ8UZiuP2D0na4DApn Content-Type: text/x-patch; charset=UTF-8; name="x_rest.diff" Content-Disposition: attachment; filename="x_rest.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggYTEx MjkzZDM3Mi4uNzA2Yzk4OGIyZSAxMDA2NDQKLS0tIGEvbGlzcC93aW5kb3cuZWwKKysrIGIv bGlzcC93aW5kb3cuZWwKQEAgLTEwNTk2LDYgKzEwNTk2LDIxIEBAIHdpbmRvdy1wcmVmaXgt bWFwCiAgICIwIiAjJ2RlbGV0ZS13aW5kb3dzLW9uKQogKGRlZmluZS1rZXkgY3RsLXgtbWFw ICJ3IiB3aW5kb3ctcHJlZml4LW1hcCkKIAorKGRlZnVuIGZvby1pdCAoJnJlc3QgcmVzdCkK KyAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqZm9vKiIpCisg ICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgICAod2hlbiByZXN0CisgICAgICAoaWYg KGNvbnNwIChjYXIgcmVzdCkpCisgICAgICAgICAgKGluc2VydCAoZm9ybWF0ICIlc3glcyIg KGNhYXIgcmVzdCkgKGNkYXIgcmVzdCkpKQorICAgICAgICAoaW5zZXJ0IChmb3JtYXQgIiVz IiAoY2FyIHJlc3QpKSkpCisgICAgICAoc2V0cSByZXN0IChjZHIgcmVzdCkpCisgICAgICAo d2hpbGUgcmVzdAorICAgICAgICAoaWYgKGNvbnNwIChjYXIgcmVzdCkpCisgICAgICAgICAg ICAoaW5zZXJ0IChmb3JtYXQgIiAlc3glcyIgKGNhYXIgcmVzdCkgKGNkYXIgcmVzdCkpKQor CSAgKGluc2VydCAoZm9ybWF0ICIgJXMiIChjYXIgcmVzdCkpKSkKKwkoc2V0cSByZXN0IChj ZHIgcmVzdCkpKQorICAgICAgKGluc2VydCAiXG4iKSkpKQorCiAocHJvdmlkZSAnd2luZG93 KQogCiA7Ozsgd2luZG93LmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmMg Yi9zcmMvZnJhbWUuYwppbmRleCBiNTdiMjk2YmU1Li5kN2QwNjlkOTA4IDEwMDY0NAotLS0g YS9zcmMvZnJhbWUuYworKysgYi9zcmMvZnJhbWUuYwpAQCAtOTA2LDYgKzkwNiwzMiBAQCBh ZGp1c3RfZnJhbWVfc2l6ZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgbmV3X3RleHRfd2lkdGgs IGludCBuZXdfdGV4dF9oZWlnaHQsCiAKICAgdW5ibG9ja19pbnB1dCAoKTsKIAorICBpZiAo b2xkX25hdGl2ZV93aWR0aCAhPSBuZXdfbmF0aXZlX3dpZHRoCisgICAgICB8fCBvbGRfbmF0 aXZlX2hlaWdodCAhPSBuZXdfbmF0aXZlX2hlaWdodAorICAgICAgfHwgb2xkX3RleHRfd2lk dGggIT0gbmV3X3RleHRfd2lkdGgKKyAgICAgIHx8IG9sZF90ZXh0X2hlaWdodCAhPSBuZXdf dGV4dF9oZWlnaHQKKyAgICAgIHx8IG9sZF90ZXh0X2NvbHMgIT0gbmV3X3RleHRfY29scwor ICAgICAgfHwgb2xkX3RleHRfbGluZXMgIT0gbmV3X3RleHRfbGluZXMpCisgICAgQ0FMTE4g KEZmdW5jYWxsLCBRZm9vX2l0LCBpbnRlcm4gKCJhZGp1c3RfZnJhbWVfc2l6ZSIpLAorCSAg IGludGVybiAoIm9sZCBuYXRpdmUgcGl4ZWxzIiksCisJICAgRmNvbnMgKG1ha2VfZml4bnVt IChvbGRfbmF0aXZlX3dpZHRoKSwKKwkJICBtYWtlX2ZpeG51bSAob2xkX25hdGl2ZV9oZWln aHQpKSwKKwkgICBpbnRlcm4gKCJuZXcgbmF0aXZlIHBpeGVscyIpLAorCSAgIEZjb25zICht YWtlX2ZpeG51bSAobmV3X25hdGl2ZV93aWR0aCksCisJCSAgbWFrZV9maXhudW0gKG5ld19u YXRpdmVfaGVpZ2h0KSksCisJICAgaW50ZXJuICgib2xkIHRleHQgcGl4ZWxzIiksCisJICAg RmNvbnMgKG1ha2VfZml4bnVtIChvbGRfdGV4dF93aWR0aCksCisJCSAgbWFrZV9maXhudW0g KG9sZF90ZXh0X2hlaWdodCkpLAorCSAgIGludGVybiAoIm5ldyB0ZXh0IHBpeGVscyIpLAor CSAgIEZjb25zIChtYWtlX2ZpeG51bSAobmV3X3RleHRfd2lkdGgpLAorCQkgIG1ha2VfZml4 bnVtIChuZXdfdGV4dF9oZWlnaHQpKSwKKwkgICBpbnRlcm4gKCJvbGQgdGV4dCBjaGFycyIp LAorCSAgIEZjb25zIChtYWtlX2ZpeG51bSAob2xkX3RleHRfY29scyksCisJCSAgbWFrZV9m aXhudW0gKG9sZF90ZXh0X2xpbmVzKSksCisJICAgaW50ZXJuICgibmV3IHRleHQgY2hhcnMi KSwKKwkgICBGY29ucyAobWFrZV9maXhudW0gKG5ld190ZXh0X2NvbHMpLAorCQkgIG1ha2Vf Zml4bnVtIChuZXdfdGV4dF9saW5lcykpKTsKKwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RF TQogICB7CiAgICAgLyogQWRqdXN0IHNpemUgb2YgRidzIGNoaWxkIGZyYW1lcy4gICovCmRp ZmYgLS1naXQgYS9zcmMvZ3RrdXRpbC5jIGIvc3JjL2d0a3V0aWwuYwppbmRleCBhNmJiYTA5 NmE0Li5iNjA3YmE5NjRmIDEwMDY0NAotLS0gYS9zcmMvZ3RrdXRpbC5jCisrKyBiL3NyYy9n dGt1dGlsLmMKQEAgLTExNDksNiArMTE0OSwxNCBAQCB4Z19mcmFtZV9yZXNpemVkIChzdHJ1 Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAkgICBmLT5uZXdfc2l6ZV9w ID8gZi0+bmV3X2hlaWdodCA6IC0xKTsKIAogICAgICAgRlJBTUVfUklGIChmKS0+Y2xlYXJf dW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKKworICAgICAgQ0FMTE4gKEZmdW5jYWxsLCBR Zm9vX2l0LCBpbnRlcm4gKCJ4Z19mcmFtZV9yZXNpemVkIiksCisJICAgICBpbnRlcm4gKCJv bGQgbmF0aXZlIHBpeGVscyIpLAorCSAgICAgRmNvbnMgKG1ha2VfZml4bnVtIChGUkFNRV9Q SVhFTF9XSURUSCAoZikpLAorCQkgICAgbWFrZV9maXhudW0gKEZSQU1FX1BJWEVMX0hFSUdI VCAoZikpKSwKKwkgICAgIGludGVybiAoIm5ldyBuYXRpdmUgcGl4ZWxzIiksCisJICAgICBG Y29ucyAobWFrZV9maXhudW0gKHdpZHRoKSwgbWFrZV9maXhudW0gKGhlaWdodCkpKTsKKwog ICAgICAgY2hhbmdlX2ZyYW1lX3NpemUgKGYsIHdpZHRoLCBoZWlnaHQsIGZhbHNlLCB0cnVl LCBmYWxzZSk7CiAgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICAgICAgY2FuY2Vs X21vdXNlX2ZhY2UgKGYpOwpAQCAtMTE3NCw2ICsxMTgyLDggQEAgeGdfZnJhbWVfc2V0X2No YXJfc2l6ZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgIGlu dCBvdXRlcl93aWR0aCA9IHdpZHRoICsgRlJBTUVfVE9PTEJBUl9XSURUSCAoZik7CiAgIGJv b2wgd2FzX3Zpc2libGUgPSBmYWxzZTsKICAgYm9vbCBoaWRlX2NoaWxkX2ZyYW1lOworICBp bnQgc2NhbGUgPSB4Z19nZXRfc2NhbGUgKGYpOworICBHZGtHZW9tZXRyeSBzaXplX2hpbnRz ID0gZi0+b3V0cHV0X2RhdGEueHAtPnNpemVfaGludHM7CiAKICNpZm5kZWYgSEFWRV9QR1RL CiAgIGd0a193aW5kb3dfZ2V0X3NpemUgKEdUS19XSU5ET1cgKEZSQU1FX0dUS19PVVRFUl9X SURHRVQgKGYpKSwKQEAgLTExOTYsMTAgKzEyMDYsMjYgQEAgeGdfZnJhbWVfc2V0X2NoYXJf c2l6ZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgIC8qIERv IHRoaXMgYmVmb3JlIHJlc2l6ZSwgYXMgd2UgZG9uJ3Qga25vdyB5ZXQgaWYgd2Ugd2lsbCBi ZSByZXNpemVkLiAgKi8KICAgRlJBTUVfUklGIChmKS0+Y2xlYXJfdW5kZXJfaW50ZXJuYWxf Ym9yZGVyIChmKTsKIAotICBvdXRlcl9oZWlnaHQgLz0geGdfZ2V0X3NjYWxlIChmKTsKLSAg b3V0ZXJfd2lkdGggLz0geGdfZ2V0X3NjYWxlIChmKTsKKyAgaWYgKHNjYWxlICE9IDEgJiYg IWZyYW1lX3Jlc2l6ZV9waXhlbHdpc2UKKyAgICAgIC8qIERvbid0IGJvdGhlciB0aGUgV00g d2hlbiB0aGUgbnVtYmVyIG9mIHRleHQgY29sdW1ucyBvciB0ZXh0CisJIGxpbmVzIHdvdWxk bid0IGNoYW5nZSBhbmQgb25seSB0aGUgcGl4ZWwgc2l6ZXMgd291bGQuICBCdXQgbWFrZQor CSBzdXJlIGZpcnN0IHRoYXQgdGhlc2Ugc2l6ZXMgYXJlICJvdXQgb2Ygc3luY2giIGR1ZSB0 byBhCisJIHByZWNlZGluZyAiaW1wcmVjaXNlIGJ5IHNjYWxpbmciIG9wZXJhdGlvbiBsaWtl IGEgbW91c2UgZHJhZy4KKwkgT3RoZXJ3aXNlLCB3ZSBtaWdodCBlbmQgdXAgd2l0aCBhIGZy YW1lIHRoYXQgZG9lc24ndCBnZXQgYQorCSBzdWl0YWJsZSBpbml0aWFsIHNpemUuICAqLwor ICAgICAgJiYgKEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKGYsIHdpZHRoKSAvIEZSQU1F X0NPTFMgKGYpCisJICA9PSBGUkFNRV9URVhUX1dJRFRIIChmKSAvIEZSQU1FX0NPTFMgKGYp KQorICAgICAgJiYgRlJBTUVfVEVYVF9XSURUSCAoZikgIT0gRlJBTUVfQ09MUyAoZikgKiBG UkFNRV9DT0xVTU5fV0lEVEggKGYpCisgICAgICAmJiAoRlJBTUVfUElYRUxfVE9fVEVYVF9I RUlHSFQgKGYsIGhlaWdodCkgLyBGUkFNRV9MSU5FUyAoZikKKwkgID09IEZSQU1FX1RFWFRf SEVJR0hUIChmKSAvIEZSQU1FX0xJTkVTIChmKSkKKyAgICAgICYmIEZSQU1FX1RFWFRfSEVJ R0hUIChmKSAhPSBGUkFNRV9MSU5FUyAoZikgKiBGUkFNRV9MSU5FX0hFSUdIVCAoZikpCisg ICAgcmV0dXJuOworCisgIG91dGVyX2hlaWdodCAvPSBzY2FsZTsKKyAgb3V0ZXJfd2lkdGgg Lz0gc2NhbGU7CiAKLSAgeGdfd21fc2V0X3NpemVfaGludCAoZiwgMCwgMCk7CisgIHhnX3dt X3NldF9zaXplX2hpbnQgKGYsIDAsIDAsIEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKGYs IHdpZHRoKSwKKwkJICAgICAgIEZSQU1FX1BJWEVMX1RPX1RFWFRfSEVJR0hUIChmLCBoZWln aHQpKTsKIAogICAvKiBSZXNpemUgdGhlIHRvcCBsZXZlbCB3aWRnZXQgc28gcm93cyBhbmQg Y29sdW1ucyByZW1haW4gY29uc3RhbnQuCiAKQEAgLTEzMTcsNiArMTM0MywzMyBAQCB4Z19m cmFtZV9zZXRfY2hhcl9zaXplIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhl aWdodCkKICAgU0VUX0ZSQU1FX0dBUkJBR0VEIChmKTsKICAgY2FuY2VsX21vdXNlX2ZhY2Ug KGYpOwogCisgIHNpemVfaGludHMgPSBmLT5vdXRwdXRfZGF0YS54cC0+c2l6ZV9oaW50czsK KyAgaWYgKG91dGVyX3dpZHRoID4gMCAmJiBzaXplX2hpbnRzLmJhc2Vfd2lkdGggPiAwCisg ICAgICAmJiBzaXplX2hpbnRzLndpZHRoX2luYyA+IDAgJiYgb3V0ZXJfaGVpZ2h0ID4gMAor ICAgICAgJiYgc2l6ZV9oaW50cy5iYXNlX2hlaWdodCA+IDAgJiYgc2l6ZV9oaW50cy5oZWln aHRfaW5jID4gMCkKKyAgICBDQUxMTiAoRmZ1bmNhbGwsIFFmb29faXQsIGludGVybiAoInhn X2ZyYW1lX3NldF9jaGFyX3NpemUiKSwKKwkgICBpbnRlcm4gKCJvbGQgbmF0aXZlIHBpeGVs cyIpLAorCSAgIEZjb25zIChtYWtlX2ZpeG51bSAoRlJBTUVfUElYRUxfV0lEVEggKGYpKSwK KwkJICBtYWtlX2ZpeG51bSAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSkpLAorCSAgIGludGVy biAoIm5ldyBuYXRpdmUgcGl4ZWxzIiksCisJICAgRmNvbnMgKG1ha2VfZml4bnVtICh3aWR0 aCksIG1ha2VfZml4bnVtIChoZWlnaHQpKSwKKwkgICBpbnRlcm4gKCJvdXRlciBwaXhlbHMi KSwKKwkgICBGY29ucyAobWFrZV9maXhudW0gKG91dGVyX3dpZHRoKSwgbWFrZV9maXhudW0g KG91dGVyX2hlaWdodCkpLAorCSAgIGludGVybiAoIm91dGVyIHJlc3QiKSwKKwkgICBGY29u cyAobWFrZV9maXhudW0gKChvdXRlcl93aWR0aCAtIHNpemVfaGludHMuYmFzZV93aWR0aCkK KwkJCSAgICAgICAlIHNpemVfaGludHMud2lkdGhfaW5jKSwKKwkJICBtYWtlX2ZpeG51bSAo KG91dGVyX2hlaWdodCAtIHNpemVfaGludHMuYmFzZV9oZWlnaHQpCisJCQkgICAgICAgJSBz aXplX2hpbnRzLmhlaWdodF9pbmMpKSk7CisgIGVsc2UKKyAgICBDQUxMTiAoRmZ1bmNhbGws IFFmb29faXQsIGludGVybiAoInhnX2ZyYW1lX3NldF9jaGFyX3NpemUiKSwKKwkgICBpbnRl cm4gKCJvbGQgbmF0aXZlIHBpeGVscyIpLAorCSAgIEZjb25zIChtYWtlX2ZpeG51bSAoRlJB TUVfUElYRUxfV0lEVEggKGYpKSwKKwkJICBtYWtlX2ZpeG51bSAoRlJBTUVfUElYRUxfSEVJ R0hUIChmKSkpLAorCSAgIGludGVybiAoIm5ldyBuYXRpdmUgcGl4ZWxzIiksCisJICAgRmNv bnMgKG1ha2VfZml4bnVtICh3aWR0aCksIG1ha2VfZml4bnVtIChoZWlnaHQpKSwKKwkgICBp bnRlcm4gKCJvdXRlciBwaXhlbHMiKSwKKwkgICBGY29ucyAobWFrZV9maXhudW0gKG91dGVy X3dpZHRoKSwgbWFrZV9maXhudW0gKG91dGVyX2hlaWdodCkpKTsKKwogICAvKiBXZSBjYW4g bm90IGNhbGwgY2hhbmdlX2ZyYW1lX3NpemUgZm9yIGEgbWFwcGVkIGZyYW1lLAogICAgICB3 ZSBjYW4gbm90IHNldCBwaXhlbCB3aWR0aC9oZWlnaHQgZWl0aGVyLiAgVGhlIHdpbmRvdyBt YW5hZ2VyIG1heQogICAgICBvdmVycmlkZSBvdXIgcmVzaXplIHJlcXVlc3QsIFhNb25hZCBk b2VzIHRoaXMgYWxsIHRoZSB0aW1lLgpAQCAtMTM2MCwyMSArMTQxMyw2IEBAIHhnX2ZyYW1l X3NldF9jaGFyX3NpemUgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 KQogICAgIH0KIH0KIAotLyogSGFuZGxlIGhlaWdodC93aWR0aCBjaGFuZ2VzIChpLmUuIGFk ZC9yZW1vdmUvbW92ZSBtZW51L3Rvb2xiYXIpLgotICAgVGhlIHBvbGljeSBpcyB0byBrZWVw IHRoZSBudW1iZXIgb2YgZWRpdGFibGUgbGluZXMuICAqLwotCi0jaWYgMAotc3RhdGljIHZv aWQKLXhnX2hlaWdodF9vcl93aWR0aF9jaGFuZ2VkIChzdHJ1Y3QgZnJhbWUgKmYpCi17Ci0g IGd0a193aW5kb3dfcmVzaXplIChHVEtfV0lORE9XIChGUkFNRV9HVEtfT1VURVJfV0lER0VU IChmKSksCi0gICAgICAgICAgICAgICAgICAgICBGUkFNRV9UT1RBTF9QSVhFTF9XSURUSCAo ZiksCi0gICAgICAgICAgICAgICAgICAgICBGUkFNRV9UT1RBTF9QSVhFTF9IRUlHSFQgKGYp KTsKLSAgZi0+b3V0cHV0X2RhdGEueHAtPmhpbnRfZmxhZ3MgPSAwOwotICB4X3dtX3NldF9z aXplX2hpbnQgKGYsIDAsIDApOwotfQotI2VuZGlmCi0KICNpZm5kZWYgSEFWRV9QR1RLCiAv KiBDb252ZXJ0IGFuIFggV2luZG93IFdTRVNDIG9uIGRpc3BsYXkgRFBZIHRvIGl0cyBjb3Jy ZXNwb25kaW5nIEd0a1dpZGdldC4KICAgIE11c3QgYmUgZG9uZSBsaWtlIHRoaXMsIGJlY2F1 c2UgR3RrV2lkZ2V0OnMgY2FuIGhhdmUgImhpZGRlbiIKQEAgLTE5MTcsNyArMTk1NSw4IEBA IHhnX2ZyZWVfZnJhbWVfd2lkZ2V0cyAoc3RydWN0IGZyYW1lICpmKQogICAgZmxhZyAodGhp cyBpcyB1c2VmdWwgd2hlbiBGTEFHUyBpcyAwKS4gICovCiAKIHZvaWQKLXhnX3dtX3NldF9z aXplX2hpbnQgKHN0cnVjdCBmcmFtZSAqZiwgbG9uZyBpbnQgZmxhZ3MsIGJvb2wgdXNlcl9w b3NpdGlvbikKK3hnX3dtX3NldF9zaXplX2hpbnQgKHN0cnVjdCBmcmFtZSAqZiwgbG9uZyBp bnQgZmxhZ3MsIGJvb2wgdXNlcl9wb3NpdGlvbiwKKwkJICAgICBpbnQgdGV4dF93aWR0aCwg aW50IHRleHRfaGVpZ2h0KQogewogICAvKiBNdXN0IHVzZSBHVEsgcm91dGluZXMgaGVyZSwg b3RoZXJ3aXNlIEdUSyByZXNldHMgdGhlIHNpemUgaGludHMKICAgICAgdG8gaXRzIG93biBk ZWZhdWx0cy4gICovCkBAIC0xOTY0LDIxICsyMDAzLDMzIEBAIHhnX3dtX3NldF9zaXplX2hp bnQgKHN0cnVjdCBmcmFtZSAqZiwgbG9uZyBpbnQgZmxhZ3MsIGJvb2wgdXNlcl9wb3NpdGlv bikKICAgaGludF9mbGFncyA9IGYtPm91dHB1dF9kYXRhLnhwLT5oaW50X2ZsYWdzOwogCiAg IGhpbnRfZmxhZ3MgfD0gR0RLX0hJTlRfUkVTSVpFX0lOQyB8IEdES19ISU5UX01JTl9TSVpF OwotICBzaXplX2hpbnRzLndpZHRoX2luYyA9IGZyYW1lX3Jlc2l6ZV9waXhlbHdpc2UgPyAx IDogRlJBTUVfQ09MVU1OX1dJRFRIIChmKTsKLSAgc2l6ZV9oaW50cy5oZWlnaHRfaW5jID0g ZnJhbWVfcmVzaXplX3BpeGVsd2lzZSA/IDEgOiBGUkFNRV9MSU5FX0hFSUdIVCAoZik7Cisg IHNpemVfaGludHMud2lkdGhfaW5jCisgICAgPSBmcmFtZV9yZXNpemVfcGl4ZWx3aXNlID8g MSA6IChGUkFNRV9DT0xVTU5fV0lEVEggKGYpIC8gc2NhbGUpOworICBzaXplX2hpbnRzLmhl aWdodF9pbmMKKyAgICA9IGZyYW1lX3Jlc2l6ZV9waXhlbHdpc2UgPyAxIDogKEZSQU1FX0xJ TkVfSEVJR0hUIChmKSAvIHNjYWxlKTsKIAogICBoaW50X2ZsYWdzIHw9IEdES19ISU5UX0JB U0VfU0laRTsKICAgLyogVXNlIG9uZSByb3cvY29sIGhlcmUgc28gYmFzZV9oZWlnaHQvd2lk dGggZG9lcyBub3QgYmVjb21lIHplcm8uCiAgICAgIEd0aysgYW5kL29yIFVuaXR5IG9uIFVi dW50dSAxMi4wNCBjYW4ndCBoYW5kbGUgaXQuCiAgICAgIE9idmlvdXNseSB0aGlzIG1ha2Vz IHRoZSByb3cvY29sIHZhbHVlIGRpc3BsYXllZCBvZmYgYnkgMS4gICovCi0gIGJhc2Vfd2lk dGggPSBGUkFNRV9URVhUX0NPTFNfVE9fUElYRUxfV0lEVEggKGYsIDEpICsgRlJBTUVfVE9P TEJBUl9XSURUSCAoZik7Ci0gIGJhc2VfaGVpZ2h0ID0gRlJBTUVfVEVYVF9MSU5FU19UT19Q SVhFTF9IRUlHSFQgKGYsIDEpCi0gICAgKyBGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikgKyBG UkFNRV9UT09MQkFSX0hFSUdIVCAoZik7CisgIGJhc2Vfd2lkdGggPSAoKEZSQU1FX1RFWFRf Q09MU19UT19QSVhFTF9XSURUSCAoZiwgMSkKKwkJICsgRlJBTUVfVE9PTEJBUl9XSURUSCAo ZikpIC8gc2NhbGUpOworICBiYXNlX2hlaWdodCA9ICgoRlJBTUVfVEVYVF9MSU5FU19UT19Q SVhFTF9IRUlHSFQgKGYsIDEpCisJCSAgKyBGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikgKyBG UkFNRV9UT09MQkFSX0hFSUdIVCAoZikpCisJCSAvIHNjYWxlKTsKIAotICBzaXplX2hpbnRz LmJhc2Vfd2lkdGggPSBiYXNlX3dpZHRoOwotICBzaXplX2hpbnRzLmJhc2VfaGVpZ2h0ID0g YmFzZV9oZWlnaHQ7Ci0gIHNpemVfaGludHMubWluX3dpZHRoICA9IGJhc2Vfd2lkdGg7Ci0g IHNpemVfaGludHMubWluX2hlaWdodCA9IGJhc2VfaGVpZ2h0OworICBpZiAodGV4dF93aWR0 aCA8IDApCisgICAgdGV4dF93aWR0aCA9IEZSQU1FX1RFWFRfV0lEVEggKGYpOworICB0ZXh0 X3dpZHRoIC89IHNjYWxlOworCisgIGlmICh0ZXh0X2hlaWdodCA8IDApCisgICAgdGV4dF9o ZWlnaHQgPSBGUkFNRV9URVhUX0hFSUdIVCAoZik7CisgIHRleHRfaGVpZ2h0IC89IHNjYWxl OworCisgIHNpemVfaGludHMuYmFzZV93aWR0aCA9IGJhc2Vfd2lkdGggKyAodGV4dF93aWR0 aCAlIHNpemVfaGludHMud2lkdGhfaW5jKTsKKyAgc2l6ZV9oaW50cy5iYXNlX2hlaWdodCA9 IGJhc2VfaGVpZ2h0ICsgKHRleHRfaGVpZ2h0ICUgc2l6ZV9oaW50cy5oZWlnaHRfaW5jKTsK KyAgc2l6ZV9oaW50cy5taW5fd2lkdGggPSBzaXplX2hpbnRzLmJhc2Vfd2lkdGg7CisgIHNp emVfaGludHMubWluX2hlaWdodCA9IHNpemVfaGludHMuYmFzZV9oZWlnaHQ7CiAKICAgLyog VGhlc2UgY3VycmVudGx5IGhhdmUgYSBvbmUgdG8gb25lIG1hcHBpbmcgd2l0aCB0aGUgWCB2 YWx1ZXMsIGJ1dCBJCiAgICAgIGRvbid0IHRoaW5rIHdlIHNob3VsZCByZWx5IG9uIHRoYXQu ICAqLwpAQCAtMjAxOCwxNiArMjA2OSwzMSBAQCB4Z193bV9zZXRfc2l6ZV9oaW50IChzdHJ1 Y3QgZnJhbWUgKmYsIGxvbmcgaW50IGZsYWdzLCBib29sIHVzZXJfcG9zaXRpb24pCiAgICAg ICBoaW50X2ZsYWdzIHw9IEdES19ISU5UX1VTRVJfUE9TOwogICAgIH0KIAotICBzaXplX2hp bnRzLmJhc2Vfd2lkdGggLz0gc2NhbGU7Ci0gIHNpemVfaGludHMuYmFzZV9oZWlnaHQgLz0g c2NhbGU7Ci0gIHNpemVfaGludHMud2lkdGhfaW5jIC89IHNjYWxlOwotICBzaXplX2hpbnRz LmhlaWdodF9pbmMgLz0gc2NhbGU7Ci0KICAgaWYgKGhpbnRfZmxhZ3MgIT0gZi0+b3V0cHV0 X2RhdGEueHAtPmhpbnRfZmxhZ3MKICAgICAgIHx8IG1lbWNtcCAoJnNpemVfaGludHMsCiAJ CSAmZi0+b3V0cHV0X2RhdGEueHAtPnNpemVfaGludHMsCiAJCSBzaXplb2YgKHNpemVfaGlu dHMpKSAhPSAwKQogICAgIHsKKyAgICAgIENBTExOIChGZnVuY2FsbCwgUWZvb19pdCwgaW50 ZXJuICgieGdfd21fc2V0X3NpemVfaGludCIpLAorCSAgICAgaW50ZXJuICgic2NhbGUiKSwg bWFrZV9maXhudW0gKHNjYWxlKSwKKwkgICAgIGludGVybiAoImNoYXIgd2lkdGgiKSwgbWFr ZV9maXhudW0gKEZSQU1FX0NPTFVNTl9XSURUSCAoZikpLAorCSAgICAgaW50ZXJuICgidG9v bGJhciIpLCBtYWtlX2ZpeG51bSAoRlJBTUVfVE9PTEJBUl9XSURUSCAoZikpLAorCSAgICAg aW50ZXJuICgidnNjcm9sbCIpLCBtYWtlX2ZpeG51bSAoRlJBTUVfU0NST0xMX0JBUl9BUkVB X1dJRFRIIChmKSksCisJICAgICBpbnRlcm4gKCJmcmluZ2VzIiksIG1ha2VfZml4bnVtIChG UkFNRV9UT1RBTF9GUklOR0VfV0lEVEggKGYpKSwKKwkgICAgIGludGVybiAoImJvcmRlcnMi KSwgbWFrZV9maXhudW0gKDIgKiBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpKSwK KwkgICAgIGludGVybiAoInRleHQgd2lkdGgiKSwgbWFrZV9maXhudW0gKHRleHRfd2lkdGgp LAorCSAgICAgaW50ZXJuICgiYmFzZSB3aWR0aCIpLCBtYWtlX2ZpeG51bSAoc2l6ZV9oaW50 cy5iYXNlX3dpZHRoKSwKKwkgICAgIGludGVybiAoIndpZHRoIGluYyIpLCBtYWtlX2ZpeG51 bSAoc2l6ZV9oaW50cy53aWR0aF9pbmMpKTsKKyAgICAgIENBTExOIChGZnVuY2FsbCwgUWZv b19pdCwgaW50ZXJuICgiICAgIiksCisJICAgICBpbnRlcm4gKCJjaGFyIGhlaWdodCIpLCBt YWtlX2ZpeG51bSAoRlJBTUVfTElORV9IRUlHSFQgKGYpKSwKKwkgICAgIGludGVybiAoIm1l bnViYXIiKSwgbWFrZV9maXhudW0gKEZSQU1FX01FTlVCQVJfSEVJR0hUIChmKSksCisJICAg ICBpbnRlcm4gKCJ0b29sYmFyIiksIG1ha2VfZml4bnVtIChGUkFNRV9UT09MQkFSX0hFSUdI VCAoZikpLAorCSAgICAgaW50ZXJuICgiaHNjcm9sbCIpLCBtYWtlX2ZpeG51bSAoRlJBTUVf U0NST0xMX0JBUl9BUkVBX0hFSUdIVCAoZikpLAorCSAgICAgaW50ZXJuICgiYm9yZGVycyIp LCBtYWtlX2ZpeG51bSAoMiAqIEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZikpLAor CSAgICAgaW50ZXJuICgidGV4dCBoZWlnaHQiKSwgbWFrZV9maXhudW0gKHRleHRfaGVpZ2h0 KSwKKwkgICAgIGludGVybiAoImJhc2UgaGVpZ2h0IiksIG1ha2VfZml4bnVtIChzaXplX2hp bnRzLmJhc2VfaGVpZ2h0KSwKKwkgICAgIGludGVybiAoImhlaWdodCBpbmMiKSwgbWFrZV9m aXhudW0gKHNpemVfaGludHMuaGVpZ2h0X2luYykpOworCiAgICAgICBibG9ja19pbnB1dCAo KTsKICAgICAgIGd0a193aW5kb3dfc2V0X2dlb21ldHJ5X2hpbnRzIChHVEtfV0lORE9XIChG UkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwgJnNpemVfaGludHMsIGhpbnRfZmxhZ3MpOwpkaWZmIC0tZ2l0 IGEvc3JjL2d0a3V0aWwuaCBiL3NyYy9ndGt1dGlsLmgKaW5kZXggMTkwZDY2MjgzMS4uMjEy NDVkZGU1ZiAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuaAorKysgYi9zcmMvZ3RrdXRpbC5o CkBAIC0xNTMsNyArMTUzLDcgQEAgI2RlZmluZSBYR19JVEVNX0RBVEEgImVtYWNzX21lbnVp dGVtIgogZXh0ZXJuIGludCB4Z19nZXRfZGVmYXVsdF9zY3JvbGxiYXJfd2lkdGggKHN0cnVj dCBmcmFtZSAqZik7CiBleHRlcm4gaW50IHhnX2dldF9kZWZhdWx0X3Njcm9sbGJhcl9oZWln aHQgKHN0cnVjdCBmcmFtZSAqZik7CiAKLWV4dGVybiB2b2lkIHhnX3dtX3NldF9zaXplX2hp bnQgKHN0cnVjdCBmcmFtZSAqLCBsb25nIGludCwgYm9vbCk7CitleHRlcm4gdm9pZCB4Z193 bV9zZXRfc2l6ZV9oaW50IChzdHJ1Y3QgZnJhbWUgKiwgbG9uZyBpbnQsIGJvb2wsIGludCwg aW50KTsKIAogZXh0ZXJuIHZvaWQgdXBkYXRlX2ZyYW1lX3Rvb2xfYmFyIChzdHJ1Y3QgZnJh bWUgKmYpOwogZXh0ZXJuIHZvaWQgZnJlZV9mcmFtZV90b29sX2JhciAoc3RydWN0IGZyYW1l ICpmKTsKZGlmZiAtLWdpdCBhL3NyYy9wZ3RrZm5zLmMgYi9zcmMvcGd0a2Zucy5jCmluZGV4 IGEzMjA2N2FmODEuLmEzOTE1NDFlMTAgMTAwNjQ0Ci0tLSBhL3NyYy9wZ3RrZm5zLmMKKysr IGIvc3JjL3BndGtmbnMuYwpAQCAtMTY2Miw3ICsxNjYyLDggQEAgI2RlZmluZSBJTlNUQUxM X0NVUlNPUihGSUVMRCwgTkFNRSkgXAogICAgICBiYWRseSB3ZSB3YW50IHRoZW0uICBUaGlz IHNob3VsZCBiZSBkb25lIGFmdGVyIHdlIGhhdmUgdGhlIG1lbnUKICAgICAgYmFyIHNvIHRo YXQgaXRzIHNpemUgY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4gICovCiAgIGJsb2NrX2lu cHV0ICgpOwotICB4Z193bV9zZXRfc2l6ZV9oaW50IChmLCB3aW5kb3dfcHJvbXB0aW5nLCBm YWxzZSk7CisgIHhnX3dtX3NldF9zaXplX2hpbnQgKGYsIHdpbmRvd19wcm9tcHRpbmcsIGZh bHNlLAorCQkgICAgICAgRlJBTUVfVEVYVF9XSURUSCAoZiksIEZSQU1FX1RFWFRfSEVJR0hU IChmKSk7CiAgIHVuYmxvY2tfaW5wdXQgKCk7CiAKICAgYWRqdXN0X2ZyYW1lX3NpemUgKGYs IEZSQU1FX1RFWFRfV0lEVEggKGYpLCBGUkFNRV9URVhUX0hFSUdIVCAoZiksCmRpZmYgLS1n aXQgYS9zcmMvcGd0a3Rlcm0uYyBiL3NyYy9wZ3RrdGVybS5jCmluZGV4IDEzZjZjNmMzYzQu LjhiMDc3YmUxNzggMTAwNjQ0Ci0tLSBhL3NyYy9wZ3RrdGVybS5jCisrKyBiL3NyYy9wZ3Rr dGVybS5jCkBAIC02NTgsNyArNjU4LDcgQEAgcGd0a19zZXRfb2Zmc2V0IChzdHJ1Y3QgZnJh bWUgKmYsIGludCB4b2ZmLCBpbnQgeW9mZiwgaW50IGNoYW5nZV9ncmF2aXR5KQogICBwZ3Rr X2NhbGNfYWJzb2x1dGVfcG9zaXRpb24gKGYpOwogCiAgIGJsb2NrX2lucHV0ICgpOwotICB4 Z193bV9zZXRfc2l6ZV9oaW50IChmLCAwLCBmYWxzZSk7CisgIHhnX3dtX3NldF9zaXplX2hp bnQgKGYsIDAsIGZhbHNlLCAtMSwgLTEpOwogCiAgIGlmIChjaGFuZ2VfZ3Jhdml0eSAhPSAw KQogICAgIHsKQEAgLTcwNSw3ICs3MDUsOCBAQCBwZ3RrX3NldF93aW5kb3dfc2l6ZSAoc3Ry dWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2aXR5LAogCiAgIGYtPm91dHB1dF9kYXRh LnBndGstPnByZWZlcnJlZF93aWR0aCA9IHBpeGVsd2lkdGg7CiAgIGYtPm91dHB1dF9kYXRh LnBndGstPnByZWZlcnJlZF9oZWlnaHQgPSBwaXhlbGhlaWdodDsKLSAgeGdfd21fc2V0X3Np emVfaGludCAoZiwgMCwgMCk7CisgIHhnX3dtX3NldF9zaXplX2hpbnQgKGYsIDAsIDAsIEZS QU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKHBpeGVsd2lkdGgpLAorCQkgICAgICAgRlJBTUVf UElYRUxfVE9fVEVYVF9IRUlHSFQgKHBpeGVsaGVpZ2h0KSk7CiAgIHhnX2ZyYW1lX3NldF9j aGFyX3NpemUgKGYsIHBpeGVsd2lkdGgsIHBpeGVsaGVpZ2h0KTsKICAgZ3RrX3dpZGdldF9x dWV1ZV9yZXNpemUgKEZSQU1FX1dJREdFVCAoZikpOwogCkBAIC05OTMsNyArOTk0LDEwIEBA IHBndGtfc2V0X3BhcmVudF9mcmFtZSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBu ZXdfdmFsdWUsCiAJCQkgICAgICBmaXhlZCwgVFJVRSwgVFJVRSwgMCk7CiAJICBmLT5vdXRw dXRfZGF0YS5wZ3RrLT5wcmVmZXJyZWRfd2lkdGggPSBhbGxvYy53aWR0aDsKIAkgIGYtPm91 dHB1dF9kYXRhLnBndGstPnByZWZlcnJlZF9oZWlnaHQgPSBhbGxvYy5oZWlnaHQ7Ci0JICB4 Z193bV9zZXRfc2l6ZV9oaW50IChmLCAwLCAwKTsKKwkgIHhnX3dtX3NldF9zaXplX2hpbnQg KGYsIDAsIDAsIEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKGFsbG9jLndpZHRoKSwKKwkJ CSAgICAgICBGUkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoYWxsb2MuaGVpZ2h0KSk7CisJ ICAvKiBXaHkgY29udmVydCBoZXJlPyAgeGdfZnJhbWVfc2V0X2NoYXJfc2l6ZSB3YW50cyBu YXRpdmUKKwkgICAgIHBpeGVscy4gICovCiAJICB4Z19mcmFtZV9zZXRfY2hhcl9zaXplIChm LCBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCBhbGxvYy53aWR0aCksCiAJCQkJICBG UkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoZiwgYWxsb2MuaGVpZ2h0KSk7CiAJICBndGtf d2lkZ2V0X3F1ZXVlX3Jlc2l6ZSAoRlJBTUVfV0lER0VUIChmKSk7CmRpZmYgLS1naXQgYS9z cmMvd2lkZ2V0LmMgYi9zcmMvd2lkZ2V0LmMKaW5kZXggYWFhYjMzYjZkOC4uNzQ2OGJmNjNm YyAxMDA2NDQKLS0tIGEvc3JjL3dpZGdldC5jCisrKyBiL3NyYy93aWRnZXQuYwpAQCAtMzIs NiArMzIsNyBAQAogI2luY2x1ZGUgInN5c3N0ZGlvLmgiCiAjaW5jbHVkZSAieHRlcm0uaCIK ICNpbmNsdWRlICJmcmFtZS5oIgorI2luY2x1ZGUgImJsb2NraW5wdXQuaCIKIAogI2luY2x1 ZGUgPFgxMS9TdHJpbmdEZWZzLmg+CiAjaW5jbHVkZSA8WDExL0ludHJpbnNpY1AuaD4KQEAg LTE1NCwxNSArMTU1LDYgQEAgZW1hY3NGcmFtZUNsYXNzICh2b2lkKQogICByZXR1cm4gKFdp ZGdldENsYXNzKSAmZW1hY3NGcmFtZUNsYXNzUmVjOwogfQogCi1zdGF0aWMgdm9pZAotZ2V0 X2RlZmF1bHRfY2hhcl9waXhlbF9zaXplIChFbWFjc0ZyYW1lIGV3LCBpbnQgKnBpeGVsX3dp ZHRoLCBpbnQgKnBpeGVsX2hlaWdodCkKLXsKLSAgc3RydWN0IGZyYW1lICpmID0gZXctPmVt YWNzX2ZyYW1lLmZyYW1lOwotCi0gICpwaXhlbF93aWR0aCA9IEZSQU1FX0NPTFVNTl9XSURU SCAoZik7Ci0gICpwaXhlbF9oZWlnaHQgPSBGUkFNRV9MSU5FX0hFSUdIVCAoZik7Ci19Ci0K IHN0YXRpYyB2b2lkCiBwaXhlbF90b19jaGFyX3NpemUgKEVtYWNzRnJhbWUgZXcsIERpbWVu c2lvbiBwaXhlbF93aWR0aCwKIAkJICAgIERpbWVuc2lvbiBwaXhlbF9oZWlnaHQsIGludCAq Y2hhcl93aWR0aCwgaW50ICpjaGFyX2hlaWdodCkKQEAgLTIwNywxMjAgKzE5OSw5NyBAQCBn ZXRfd21fc2hlbGwgKFdpZGdldCB3KQogICByZXR1cm4gKFdNU2hlbGxXaWRnZXQpIHdtc2hl bGw7CiB9CiAKLSNpZiAwIC8qIEN1cnJlbnRseSBub3QgdXNlZC4gICovCi0KLXN0YXRpYyB2 b2lkCi1tYXJrX3NoZWxsX3NpemVfdXNlcl9zcGVjaWZpZWQgKFdpZGdldCB3bXNoZWxsKQot ewotICBpZiAoISBYdElzV01TaGVsbCAod21zaGVsbCkpIGVtYWNzX2Fib3J0ICgpOwotICAv KiBUaGlzIGlzIGtpbmQgb2Ygc2xlYXp5LCBidXQgSSBjYW4ndCBzZWUgaG93IGVsc2UgdG8g dGVsbCBpdCB0byBtYWtlIGl0Ci0gICAgIG1hcmsgdGhlIFdNX1NJWkVfSElOVFMgc2l6ZSBh cyB1c2VyIHNwZWNpZmllZCB3aGVuIGFwcHJvcHJpYXRlLiAqLwotICAoKFdNU2hlbGxXaWRn ZXQpIHdtc2hlbGwpLT53bS5zaXplX2hpbnRzLmZsYWdzIHw9IFVTU2l6ZTsKLX0KLQotI2Vu ZGlmCi0KLQogc3RhdGljIHZvaWQKIHNldF9mcmFtZV9zaXplIChFbWFjc0ZyYW1lIGV3KQog ewotICAvKiBUaGUgd2lkZ2V0IGhpZXJhcmNoeSBpcwotCi0JYXJndlswXQkJCWVtYWNzU2hl bGwJcGFuZQlGcmFtZS1OQU1FCi0JQXBwbGljYXRpb25TaGVsbAlFbWFjc1NoZWxsCVBhbmVk CUVtYWNzRnJhbWUKLQotICAgICBXZSBhY2NlcHQgZ2VvbWV0cnkgc3BlY3MgaW4gdGhpcyBv cmRlcjoKLQotCSpGcmFtZS1OQU1FLmdlb21ldHJ5Ci0JKkVtYWNzRnJhbWUuZ2VvbWV0cnkK LQlFbWFjcy5nZW9tZXRyeQotCi0gICAgIE90aGVyIHBvc3NpYmlsaXRpZXMgZm9yIHdpZGdl dCBoaWVyYXJjaGllcyBtaWdodCBiZQotCi0JYXJndlswXQkJCWZyYW1lCQlwYW5lCUZyYW1l LU5BTUUKLQlBcHBsaWNhdGlvblNoZWxsCUVtYWNzU2hlbGwJUGFuZWQJRW1hY3NGcmFtZQot ICAgICBvcgotCWFyZ3ZbMF0JCQlGcmFtZS1OQU1FCXBhbmUJRnJhbWUtTkFNRQotCUFwcGxp Y2F0aW9uU2hlbGwJRW1hY3NTaGVsbAlQYW5lZAlFbWFjc0ZyYW1lCi0gICAgIG9yCi0JYXJn dlswXQkJCUZyYW1lLU5BTUUJcGFuZQllbWFjc1RleHRQYW5lCi0JQXBwbGljYXRpb25TaGVs bAlFbWFjc0ZyYW1lCVBhbmVkCUVtYWNzVGV4dFBhbmUKLQotICAgICBXaXRoIHRoZSBjdXJy ZW50IHNldHVwLCB0aGUgdGV4dC1kaXNwbGF5LWFyZWEgaXMgdGhlIHBhcnQgd2hpY2ggaXMK LSAgICAgYW4gZW1hY3MgImZyYW1lIiwgc2luY2UgdGhhdCdzIHRoZSBvbmx5IHBhcnQgbWFu YWdlZCBieSBlbWFjcyBwcm9wZXIKLSAgICAgKHRoZSBtZW51YmFyIGFuZCB0aGUgcGFyZW50 IG9mIHRoZSBtZW51YmFyIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHRoaW5nCi0gICAgIGFyZSBt YW5hZ2VkIGJ5IGx3bGliLikKLQotICAgICBUaGUgRW1hY3NTaGVsbCB3aWRnZXQgaXMgc2lt cGx5IGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBTaGVsbCB3aWRnZXQKLSAgICAgd2hpY2ggaXMg YWJsZSB0byBkZWFsIHdpdGggdXNpbmcgYW4gZXh0ZXJuYWxseS1zdXBwbGllZCB3aW5kb3cg aW5zdGVhZAotICAgICBvZiBhbHdheXMgY3JlYXRpbmcgaXRzIG93bi4gIEl0IGlzIG5vdCBh Y3R1YWxseSBlbWFjcyBzcGVjaWZpYywgYW5kCi0gICAgIHNob3VsZCBwb3NzaWJseSBoYXZl IGNsYXNzICJTaGVsbCIgaW5zdGVhZCBvZiAiRW1hY3NTaGVsbCIgdG8gc2ltcGxpZnkKLSAg ICAgdGhlIHJlc291cmNlcy4KLQotICAgKi8KLQogICBzdHJ1Y3QgZnJhbWUgKmYgPSBldy0+ ZW1hY3NfZnJhbWUuZnJhbWU7CiAKICAgZXctPmNvcmUud2lkdGggPSBGUkFNRV9QSVhFTF9X SURUSCAoZik7CiAgIGV3LT5jb3JlLmhlaWdodCA9IEZSQU1FX1BJWEVMX0hFSUdIVCAoZik7 CiAKLSAgaWYgKENPTlNQIChmcmFtZV9zaXplX2hpc3RvcnkpKQotICAgIGZyYW1lX3NpemVf aGlzdG9yeV9wbGFpbgotICAgICAgKGYsIGJ1aWxkX3N0cmluZyAoInNldF9mcmFtZV9zaXpl IikpOworICBDQUxMTiAoRmZ1bmNhbGwsIFFmb29faXQsIGJ1aWxkX3N0cmluZyAoInNldF9m cmFtZV9zaXplIiksCisJIGJ1aWxkX3N0cmluZyAoIm5hdGl2ZSBwaXhlbHMiKSwKKwkgRmNv bnMgKG1ha2VfZml4bnVtIChGUkFNRV9QSVhFTF9XSURUSCAoZikpLAorCQltYWtlX2ZpeG51 bSAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSkpKTsKIH0KIAogc3RhdGljIGJvb2wKLXVwZGF0 ZV93bV9oaW50cyAoV01TaGVsbFdpZGdldCB3bXNoZWxsLCBFbWFjc0ZyYW1lIGV3KQordXBk YXRlX3dtX2hpbnRzIChXTVNoZWxsV2lkZ2V0IHdtc2hlbGwsIEVtYWNzRnJhbWUgZXcsIGlu dCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgaW50IGN3OwotICBpbnQgY2g7Ci0gIERpbWVu c2lvbiByb3VuZGVkX3dpZHRoOwotICBEaW1lbnNpb24gcm91bmRlZF9oZWlnaHQ7Ci0gIGlu dCBjaGFyX3dpZHRoOwotICBpbnQgY2hhcl9oZWlnaHQ7Ci0gIGludCBiYXNlX3dpZHRoOwot ICBpbnQgYmFzZV9oZWlnaHQ7Ci0gIGNoYXIgYnVmZmVyW3NpemVvZiB3bXNoZWxsLT53bS5z aXplX2hpbnRzXTsKLSAgY2hhciAqaGludHNfcHRyOwotCi0gIC8qIENvcHkgdGhlIG9sZCBz aXplIGhpbnRzIHRvIHRoZSBidWZmZXIuICAqLwotICBtZW1jcHkgKGJ1ZmZlciwgJndtc2hl bGwtPndtLnNpemVfaGludHMsCi0JICBzaXplb2Ygd21zaGVsbC0+d20uc2l6ZV9oaW50cyk7 Ci0KLSAgcGl4ZWxfdG9fY2hhcl9zaXplIChldywgZXctPmNvcmUud2lkdGgsIGV3LT5jb3Jl LmhlaWdodCwKLQkJICAgICAgJmNoYXJfd2lkdGgsICZjaGFyX2hlaWdodCk7Ci0gIGNoYXJf dG9fcGl4ZWxfc2l6ZSAoZXcsIGNoYXJfd2lkdGgsIGNoYXJfaGVpZ2h0LAotCQkgICAgICAm cm91bmRlZF93aWR0aCwgJnJvdW5kZWRfaGVpZ2h0KTsKLSAgZ2V0X2RlZmF1bHRfY2hhcl9w aXhlbF9zaXplIChldywgJmN3LCAmY2gpOwotCi0gIGJhc2Vfd2lkdGggPSAod21zaGVsbC0+ Y29yZS53aWR0aCAtIGV3LT5jb3JlLndpZHRoCi0JCSsgKHJvdW5kZWRfd2lkdGggLSAoY2hh cl93aWR0aCAqIGN3KSkpOwotICBiYXNlX2hlaWdodCA9ICh3bXNoZWxsLT5jb3JlLmhlaWdo dCAtIGV3LT5jb3JlLmhlaWdodAotCQkgKyAocm91bmRlZF9oZWlnaHQgLSAoY2hhcl9oZWln aHQgKiBjaCkpKTsKKyAgc3RydWN0IGZyYW1lICpmID0gZXctPmVtYWNzX2ZyYW1lLmZyYW1l OworICBpbnQgY2hhcl93aWR0aCA9IGZyYW1lX3Jlc2l6ZV9waXhlbHdpc2UgPyAxIDogRlJB TUVfQ09MVU1OX1dJRFRIIChmKTsKKyAgaW50IGNoYXJfaGVpZ2h0ID0gZnJhbWVfcmVzaXpl X3BpeGVsd2lzZSA/IDEgOiBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CisgIGludCBiYXNlX3dp ZHRoCisgICAgPSAoRlJBTUVfVEVYVF9DT0xTX1RPX1BJWEVMX1dJRFRIIChmLCAxKQorICAg ICAgICsgKCgod2lkdGggPCAwKSA/IEZSQU1FX1RFWFRfV0lEVEggKGYpIDogd2lkdGgpICUg Y2hhcl93aWR0aCkpOworICBpbnQgYmFzZV9oZWlnaHQKKyAgICA9IChGUkFNRV9URVhUX0xJ TkVTX1RPX1BJWEVMX0hFSUdIVCAoZiwgMSkKKyAgICAgICArIEZSQU1FX01FTlVCQVJfSEVJ R0hUIChmKQorICAgICAgICsgKCgoaGVpZ2h0IDwgMCkgPyBGUkFNRV9URVhUX0hFSUdIVCAo ZikgOiBoZWlnaHQpICUgY2hhcl9oZWlnaHQpKTsKKyAgaW50IG1pbl93aWR0aCA9IGJhc2Vf d2lkdGg7CisgIGludCBtaW5faGVpZ2h0ID0gYmFzZV9oZWlnaHQ7CisgIGJvb2wgdmFsdWU7 CisKKyAgaW50IG9sZF9iYXNlX3dpZHRoLCBvbGRfYmFzZV9oZWlnaHQ7CisgIGludCBvbGRf Y2hhcl93aWR0aCwgb2xkX2NoYXJfaGVpZ2h0OworICBpbnQgb2xkX21pbl93aWR0aCwgb2xk X21pbl9oZWlnaHQ7CisKKyAgYmxvY2tfaW5wdXQgKCk7CisgIFh0VmFHZXRWYWx1ZXMgKChX aWRnZXQpIHdtc2hlbGwsCisJCSBYdE5iYXNlV2lkdGgsICZvbGRfYmFzZV93aWR0aCwKKwkJ IFh0TmJhc2VIZWlnaHQsICZvbGRfYmFzZV9oZWlnaHQsCisJCSBYdE53aWR0aEluYywgJm9s ZF9jaGFyX3dpZHRoLAorCQkgWHROaGVpZ2h0SW5jLCAmb2xkX2NoYXJfaGVpZ2h0LAorCQkg WHRObWluV2lkdGgsICZvbGRfbWluX3dpZHRoLAorCQkgWHRObWluSGVpZ2h0LCAmb2xkX21p bl9oZWlnaHQsCisJCSBOVUxMKTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKIAogICBYdFZhU2V0 VmFsdWVzICgoV2lkZ2V0KSB3bXNoZWxsLAogCQkgWHROYmFzZVdpZHRoLCAoWHRBcmdWYWwp IGJhc2Vfd2lkdGgsCiAJCSBYdE5iYXNlSGVpZ2h0LCAoWHRBcmdWYWwpIGJhc2VfaGVpZ2h0 LAotCQkgWHROd2lkdGhJbmMsIChYdEFyZ1ZhbCkgKGZyYW1lX3Jlc2l6ZV9waXhlbHdpc2Ug PyAxIDogY3cpLAotCQkgWHROaGVpZ2h0SW5jLCAoWHRBcmdWYWwpIChmcmFtZV9yZXNpemVf cGl4ZWx3aXNlID8gMSA6IGNoKSwKLQkJIFh0Tm1pbldpZHRoLCAoWHRBcmdWYWwpIGJhc2Vf d2lkdGgsCi0JCSBYdE5taW5IZWlnaHQsIChYdEFyZ1ZhbCkgYmFzZV9oZWlnaHQsCisJCSBY dE53aWR0aEluYywgKFh0QXJnVmFsKSBjaGFyX3dpZHRoLAorCQkgWHROaGVpZ2h0SW5jLCAo WHRBcmdWYWwpIGNoYXJfaGVpZ2h0LAorCQkgWHRObWluV2lkdGgsIChYdEFyZ1ZhbCkgbWlu X3dpZHRoLAorCQkgWHRObWluSGVpZ2h0LCAoWHRBcmdWYWwpIG1pbl9oZWlnaHQsCiAJCSBO VUxMKTsKIAotICAvKiBSZXR1cm4gaWYgc2l6ZSBoaW50cyByZWFsbHkgY2hhbmdlZC4gIElm IHRoZXkgZGlkIG5vdCwgdGhlbiBYdAotICAgICBwcm9iYWJseSBkaWRuJ3Qgc2V0IHRoZW0g ZWl0aGVyIChvciB0YWtlIHRoZSBmbGFncyBpbnRvCi0gICAgIGFjY291bnQuKSAgKi8KLSAg aGludHNfcHRyID0gKGNoYXIgKikgJndtc2hlbGwtPndtLnNpemVfaGludHM7CisgIHZhbHVl ID0gKGJhc2Vfd2lkdGggIT0gb2xkX2Jhc2Vfd2lkdGggfHwgYmFzZV9oZWlnaHQgIT0gb2xk X2Jhc2VfaGVpZ2h0CisJICAgfHwgY2hhcl93aWR0aCAhPSBvbGRfY2hhcl93aWR0aCB8fCBj aGFyX2hlaWdodCAhPSBvbGRfY2hhcl9oZWlnaHQKKwkgICB8fCBtaW5fd2lkdGggIT0gb2xk X21pbl93aWR0aCB8fCBtaW5faGVpZ2h0ICE9IG9sZF9taW5faGVpZ2h0KTsKIAotICAvKiBT a2lwIGZsYWdzLCB3aGljaCBpcyB1bnNpZ25lZCBsb25nLiAgKi8KLSAgcmV0dXJuIG1lbWNt cCAoaGludHNfcHRyICsgc2l6ZW9mIChsb25nKSwgYnVmZmVyICsgc2l6ZW9mIChsb25nKSwK LQkJIHNpemVvZiB3bXNoZWxsLT53bS53bV9oaW50cyAtIHNpemVvZiAobG9uZykpOworICBp ZiAodmFsdWUpCisgICAgeworICAgICAgQ0FMTE4gKEZmdW5jYWxsLCBRZm9vX2l0LCBidWls ZF9zdHJpbmcgKCJ1cGRhdGVfd21faGludHMiKSwKKwkgICAgIGJ1aWxkX3N0cmluZyAoImNo YXIgd2lkdGgiKSwgbWFrZV9maXhudW0gKEZSQU1FX0NPTFVNTl9XSURUSCAoZikpLAorCSAg ICAgYnVpbGRfc3RyaW5nICgib2xkIGNoYXIgd2lkdGgiKSwgbWFrZV9maXhudW0gKG9sZF9j aGFyX3dpZHRoKSwKKwkgICAgIGJ1aWxkX3N0cmluZyAoInZzY3JvbGwiKSwgbWFrZV9maXhu dW0gKEZSQU1FX1NDUk9MTF9CQVJfQVJFQV9XSURUSCAoZikpLAorCSAgICAgYnVpbGRfc3Ry aW5nICgiZnJpbmdlcyIpLCBtYWtlX2ZpeG51bSAoRlJBTUVfVE9UQUxfRlJJTkdFX1dJRFRI IChmKSksCisJICAgICBidWlsZF9zdHJpbmcgKCJib3JkZXJzIiksIG1ha2VfZml4bnVtICgy ICogRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChmKSksCisJICAgICBidWlsZF9zdHJp bmcgKCJiYXNlIHdpZHRoIiksIG1ha2VfZml4bnVtIChiYXNlX3dpZHRoKSwKKwkgICAgIGJ1 aWxkX3N0cmluZyAoIm9sZF9iYXNlIHdpZHRoIiksIG1ha2VfZml4bnVtIChvbGRfYmFzZV93 aWR0aCksCisJICAgICBidWlsZF9zdHJpbmcgKCJtaW4gd2lkdGgiKSwgbWFrZV9maXhudW0g KG1pbl93aWR0aCksCisJICAgICBidWlsZF9zdHJpbmcgKCJvbGQgbWluIHdpZHRoIiksIG1h a2VfZml4bnVtIChvbGRfbWluX3dpZHRoKSk7CisgICAgICBDQUxMTiAoRmZ1bmNhbGwsIFFm b29faXQsIGJ1aWxkX3N0cmluZyAoIiAgICIpLAorCSAgICAgYnVpbGRfc3RyaW5nICgiY2hh ciBoZWlnaHQiKSwgbWFrZV9maXhudW0gKEZSQU1FX0xJTkVfSEVJR0hUIChmKSksCisJICAg ICBidWlsZF9zdHJpbmcgKCJvbGQgY2hhciBoZWlnaHQiKSwgbWFrZV9maXhudW0gKG9sZF9j aGFyX2hlaWdodCksCisJICAgICBidWlsZF9zdHJpbmcgKCJtZW51YmFyIiksIG1ha2VfZml4 bnVtIChGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikpLAorCSAgICAgYnVpbGRfc3RyaW5nICgi aHNjcm9sbCIpLCBtYWtlX2ZpeG51bSAoRlJBTUVfU0NST0xMX0JBUl9BUkVBX0hFSUdIVCAo ZikpLAorCSAgICAgYnVpbGRfc3RyaW5nICgiYm9yZGVycyIpLCBtYWtlX2ZpeG51bSAoMiAq IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZikpLAorCSAgICAgYnVpbGRfc3RyaW5n ICgiYmFzZSBoZWlnaHQiKSwgbWFrZV9maXhudW0gKGJhc2VfaGVpZ2h0KSwKKwkgICAgIGJ1 aWxkX3N0cmluZyAoIm9sZCBiYXNlIGhlaWdodCIpLCBtYWtlX2ZpeG51bSAob2xkX2Jhc2Vf aGVpZ2h0KSwKKwkgICAgIGJ1aWxkX3N0cmluZyAoIm1pbiBoZWlnaHQiKSwgbWFrZV9maXhu dW0gKG1pbl9oZWlnaHQpLAorCSAgICAgYnVpbGRfc3RyaW5nICgib2xkIG1pbiBoZWlnaHQi KSwgbWFrZV9maXhudW0gKG9sZF9taW5faGVpZ2h0KSk7CisgICAgfQorCisgIHJldHVybiB2 YWx1ZTsKIH0KIAogYm9vbAotd2lkZ2V0X3VwZGF0ZV93bV9zaXplX2hpbnRzIChXaWRnZXQg d2lkZ2V0LCBXaWRnZXQgZnJhbWUpCit3aWRnZXRfdXBkYXRlX3dtX3NpemVfaGludHMgKFdp ZGdldCB3aWRnZXQsIFdpZGdldCBmcmFtZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewot ICByZXR1cm4gdXBkYXRlX3dtX2hpbnRzICgoV01TaGVsbFdpZGdldCkgd2lkZ2V0LCAoRW1h Y3NGcmFtZSkgZnJhbWUpOworICByZXR1cm4gdXBkYXRlX3dtX2hpbnRzICgoV01TaGVsbFdp ZGdldCkgd2lkZ2V0LCAoRW1hY3NGcmFtZSkgZnJhbWUsCisJCQkgIHdpZHRoLCBoZWlnaHQp OwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzM3LDcgKzMwNiw3IEBAIHVwZGF0ZV9mcm9tX3Zh cmlvdXNfZnJhbWVfc2xvdHMgKEVtYWNzRnJhbWUgZXcpCiAgIHN0cnVjdCBmcmFtZSAqZiA9 IGV3LT5lbWFjc19mcmFtZS5mcmFtZTsKICAgc3RydWN0IHhfb3V0cHV0ICp4ID0gZi0+b3V0 cHV0X2RhdGEueDsKIAotICBldy0+Y29yZS5oZWlnaHQgPSBGUkFNRV9QSVhFTF9IRUlHSFQg KGYpIC0geC0+bWVudWJhcl9oZWlnaHQ7CisgIGV3LT5jb3JlLmhlaWdodCA9IEZSQU1FX1BJ WEVMX0hFSUdIVCAoZik7IC8vIC0geC0+bWVudWJhcl9oZWlnaHQ7CiAgIGV3LT5jb3JlLndp ZHRoID0gRlJBTUVfUElYRUxfV0lEVEggKGYpOwogICBldy0+Y29yZS5iYWNrZ3JvdW5kX3Bp eGVsID0gRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZik7CiAgIGV3LT5lbWFjc19mcmFtZS5p bnRlcm5hbF9ib3JkZXJfd2lkdGggPSBmLT5pbnRlcm5hbF9ib3JkZXJfd2lkdGg7CkBAIC0z NDUsMTIgKzMxNCwxMSBAQCB1cGRhdGVfZnJvbV92YXJpb3VzX2ZyYW1lX3Nsb3RzIChFbWFj c0ZyYW1lIGV3KQogICBldy0+ZW1hY3NfZnJhbWUuY3Vyc29yX2NvbG9yID0geC0+Y3Vyc29y X3BpeGVsOwogICBldy0+Y29yZS5ib3JkZXJfcGl4ZWwgPSB4LT5ib3JkZXJfcGl4ZWw7CiAK LSAgaWYgKENPTlNQIChmcmFtZV9zaXplX2hpc3RvcnkpKQotICAgIGZyYW1lX3NpemVfaGlz dG9yeV9leHRyYQotICAgICAgKGYsIGJ1aWxkX3N0cmluZyAoInVwZGF0ZV9mcm9tX3Zhcmlv dXNfZnJhbWVfc2xvdHMiKSwKLSAgICAgICBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZSQU1F X1BJWEVMX0hFSUdIVCAoZiksCi0gICAgICAgZXctPmNvcmUud2lkdGgsIGV3LT5jb3JlLmhl aWdodCwKLSAgICAgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOworICBDQUxMTiAo RmZ1bmNhbGwsIFFmb29faXQsCisJIGJ1aWxkX3N0cmluZyAoInVwZGF0ZV9mcm9tX3Zhcmlv dXNfZnJhbWVfc2xvdHMiKSwKKwkgYnVpbGRfc3RyaW5nICgibmF0aXZlIHBpeGVscyIpLAor CSAoRmNvbnMgKG1ha2VfZml4bnVtIChGUkFNRV9QSVhFTF9XSURUSCAoZikpLAorCQkgbWFr ZV9maXhudW0gKEZSQU1FX1BJWEVMX0hFSUdIVCAoZikpKSkpOwogfQogCiBzdGF0aWMgdm9p ZApAQCAtMzg0LDcgKzM1Miw2IEBAIEVtYWNzRnJhbWVSZWFsaXplIChXaWRnZXQgd2lkZ2V0 LCBYdFZhbHVlTWFzayAqbWFzaywKIAkJICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgKmF0dHJz KQogewogICBFbWFjc0ZyYW1lIGV3ID0gKEVtYWNzRnJhbWUpIHdpZGdldDsKLSAgc3RydWN0 IGZyYW1lICpmID0gZXctPmVtYWNzX2ZyYW1lLmZyYW1lOwogCiAgIC8qIFRoaXMgdXNlZCB0 byBjb250YWluIFN1YnN0cnVjdHVyZVJlZGlyZWN0TWFzaywgYnV0IHRoaXMgdHVybnMgb3V0 CiAgICAgIHRvIGJlIGEgcHJvYmxlbSB3aXRoIFhJTSBvbiBTb2xhcmlzLCBhbmQgZXZlbnRz IGZyb20gdGhhdCBtYXNrCkBAIC0zOTksMTIgKzM2Niw4IEBAIEVtYWNzRnJhbWVSZWFsaXpl IChXaWRnZXQgd2lkZ2V0LCBYdFZhbHVlTWFzayAqbWFzaywKICAgICAgbWFrZSBzdXJlIHdl IGdldCB0aGVtIGFsbC4gIFNlZW4gd2l0aCB4ZmN3bTQgZm9yIGV4YW1wbGUuICAqLwogICBY dEFkZFJhd0V2ZW50SGFuZGxlciAod2lkZ2V0LCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCBGYWxz ZSwgcmVzaXplX2NiLCBOVUxMKTsKIAotICBpZiAoQ09OU1AgKGZyYW1lX3NpemVfaGlzdG9y eSkpCi0gICAgZnJhbWVfc2l6ZV9oaXN0b3J5X3BsYWluCi0gICAgICAoZiwgYnVpbGRfc3Ry aW5nICgiRW1hY3NGcmFtZVJlYWxpemUiKSk7Ci0KICAgaWYgKGdldF93bV9zaGVsbCAod2lk Z2V0KSkKLSAgICB1cGRhdGVfd21faGludHMgKGdldF93bV9zaGVsbCAod2lkZ2V0KSwgZXcp OworICAgIHVwZGF0ZV93bV9oaW50cyAoZ2V0X3dtX3NoZWxsICh3aWRnZXQpLCBldywgLTEs IC0xKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQxOSwxOCArMzgyLDIzIEBAIEVtYWNzRnJh bWVSZXNpemUgKFdpZGdldCB3aWRnZXQpCiAgIEVtYWNzRnJhbWUgZXcgPSAoRW1hY3NGcmFt ZSkgd2lkZ2V0OwogICBzdHJ1Y3QgZnJhbWUgKmYgPSBldy0+ZW1hY3NfZnJhbWUuZnJhbWU7 CiAKLSAgaWYgKENPTlNQIChmcmFtZV9zaXplX2hpc3RvcnkpKQotICAgIGZyYW1lX3NpemVf aGlzdG9yeV9leHRyYQotICAgICAgKGYsIGJ1aWxkX3N0cmluZyAoIkVtYWNzRnJhbWVSZXNp emUiKSwKLSAgICAgICBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZSQU1FX1BJWEVMX0hFSUdI VCAoZiksCi0gICAgICAgZXctPmNvcmUud2lkdGgsIGV3LT5jb3JlLmhlaWdodCwKLSAgICAg ICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOworICBpZiAoRlJBTUVfUElYRUxfV0lE VEggKGYpICE9IGV3LT5jb3JlLndpZHRoCisgICAgICB8fCBGUkFNRV9QSVhFTF9IRUlHSFQg KGYpCSE9IGV3LT5jb3JlLmhlaWdodCkKKyAgICBDQUxMTiAoRmZ1bmNhbGwsIFFmb29faXQs IGJ1aWxkX3N0cmluZyAoIkVtYWNzRnJhbWVSZXNpemUiKSwKKwkgICBidWlsZF9zdHJpbmcg KCJvbGQgbmF0aXZlIHBpeGVscyIpLAorCSAgIEZjb25zIChtYWtlX2ZpeG51bSAoRlJBTUVf UElYRUxfV0lEVEggKGYpKSwKKwkJICBtYWtlX2ZpeG51bSAoRlJBTUVfUElYRUxfSEVJR0hU IChmKSkpLAorCSAgIGJ1aWxkX3N0cmluZyAoIm5ldyBuYXRpdmUgcGl4ZWxzIiksCisJICAg RmNvbnMgKG1ha2VfZml4bnVtIChldy0+Y29yZS53aWR0aCksCisJCSAgbWFrZV9maXhudW0g KGV3LT5jb3JlLmhlaWdodCkpKTsKIAogICBjaGFuZ2VfZnJhbWVfc2l6ZSAoZiwgZXctPmNv cmUud2lkdGgsIGV3LT5jb3JlLmhlaWdodCwKIAkJICAgICBmYWxzZSwgdHJ1ZSwgZmFsc2Up OwogCiAgIGlmIChnZXRfd21fc2hlbGwgKHdpZGdldCkpCi0gICAgdXBkYXRlX3dtX2hpbnRz IChnZXRfd21fc2hlbGwgKHdpZGdldCksIGV3KTsKKyAgICB1cGRhdGVfd21faGludHMgKGdl dF93bV9zaGVsbCAod2lkZ2V0KSwgZXcsCisJCSAgICAgRlJBTUVfUElYRUxfVE9fVEVYVF9X SURUSCAoZiwgZXctPmNvcmUud2lkdGgpLAorCQkgICAgIEZSQU1FX1BJWEVMX1RPX1RFWFRf SEVJR0hUIChmLCBldy0+Y29yZS5oZWlnaHQpKTsKICAgdXBkYXRlX3ZhcmlvdXNfZnJhbWVf c2xvdHMgKGV3KTsKIAogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CkBAIC00NzIsMTMgKzQ0 MCw2IEBAIEVtYWNzRnJhbWVTZXRDaGFyU2l6ZSAoV2lkZ2V0IHdpZGdldCwgaW50IGNvbHVt bnMsIGludCByb3dzKQogICBFbWFjc0ZyYW1lIGV3ID0gKEVtYWNzRnJhbWUpIHdpZGdldDsK ICAgc3RydWN0IGZyYW1lICpmID0gZXctPmVtYWNzX2ZyYW1lLmZyYW1lOwogCi0gIGlmIChD T05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKLSAgICBmcmFtZV9zaXplX2hpc3RvcnlfZXh0 cmEKLSAgICAgIChmLCBidWlsZF9zdHJpbmcgKCJFbWFjc0ZyYW1lU2V0Q2hhclNpemUiKSwK LSAgICAgICBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZSQU1FX1BJWEVMX0hFSUdIVCAoZiks Ci0gICAgICAgY29sdW1ucywgcm93cywKLSAgICAgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19o ZWlnaHQpOwotCiAgIGlmICghZnJhbWVfaW5oaWJpdF9yZXNpemUgKGYsIDAsIFFmb250KQog ICAgICAgJiYgIWZyYW1lX2luaGliaXRfcmVzaXplIChmLCAxLCBRZm9udCkpCiAgICAgeF9z ZXRfd2luZG93X3NpemUgKGYsIDAsIGNvbHVtbnMgKiBGUkFNRV9DT0xVTU5fV0lEVEggKGYp LApkaWZmIC0tZ2l0IGEvc3JjL3dpZGdldC5oIGIvc3JjL3dpZGdldC5oCmluZGV4IGNmODNj YjEwNzguLjAzYmM4MDljNDEgMTAwNjQ0Ci0tLSBhL3NyYy93aWRnZXQuaAorKysgYi9zcmMv d2lkZ2V0LmgKQEAgLTk3LDYgKzk3LDYgQEAgI2RlZmluZSBYdENJbml0aWFsR2VvbWV0cnkg IkluaXRpYWxHZW9tZXRyeSIKIC8qIFNwZWNpYWwgZW50cnkgcG9pbnRzICovCiB2b2lkIEVt YWNzRnJhbWVTZXRDaGFyU2l6ZSAoV2lkZ2V0LCBpbnQsIGludCk7CiB2b2lkIHdpZGdldF9z dG9yZV9pbnRlcm5hbF9ib3JkZXIgKFdpZGdldCB3aWRnZXQpOwotYm9vbCB3aWRnZXRfdXBk YXRlX3dtX3NpemVfaGludHMgKFdpZGdldCB3aWRnZXQsIFdpZGdldCBmcmFtZSk7Citib29s IHdpZGdldF91cGRhdGVfd21fc2l6ZV9oaW50cyAoV2lkZ2V0IHdpZGdldCwgV2lkZ2V0IGZy YW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCiAjZW5kaWYgLyogX0VtYWNzRnJhbWVf aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5jIGIvc3JjL3dpbmRvdy5jCmluZGV4IGYx MTZiOWE5ZDcuLmMwOTBmMjk0NjEgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYworKysgYi9z cmMvd2luZG93LmMKQEAgLTgzOTQsNiArODM5NCw3IEBAIHN5bXNfb2Zfd2luZG93ICh2b2lk KQogICBERUZTWU0gKFFoZWFkZXJfbGluZV9mb3JtYXQsICJoZWFkZXItbGluZS1mb3JtYXQi KTsKICAgREVGU1lNIChRdGFiX2xpbmVfZm9ybWF0LCAidGFiLWxpbmUtZm9ybWF0Iik7CiAg IERFRlNZTSAoUW5vX290aGVyX3dpbmRvdywgIm5vLW90aGVyLXdpbmRvdyIpOworICBERUZT WU0gKFFmb29faXQsICJmb28taXQiKTsKIAogICBERUZWQVJfTElTUCAoInRlbXAtYnVmZmVy LXNob3ctZnVuY3Rpb24iLCBWdGVtcF9idWZmZXJfc2hvd19mdW5jdGlvbiwKIAkgICAgICAg ZG9jOiAvKiBOb24tbmlsIG1lYW5zIGNhbGwgYXMgZnVuY3Rpb24gdG8gZGlzcGxheSBhIGhl bHAgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXgg MzZiNTFhMzAxMS4uMjVlMWFmMjc5ZCAxMDA2NDQKLS0tIGEvc3JjL3hmbnMuYworKysgYi9z cmMveGZucy5jCkBAIC00NTc1LDcgKzQ1NzUsNyBAQCBERUZVTiAoIngtd20tc2V0LXNpemUt aGludCIsIEZ4X3dtX3NldF9zaXplX2hpbnQsIFN4X3dtX3NldF9zaXplX2hpbnQsCiAgIHN0 cnVjdCBmcmFtZSAqZiA9IGRlY29kZV93aW5kb3dfc3lzdGVtX2ZyYW1lIChmcmFtZSk7CiAK ICAgYmxvY2tfaW5wdXQgKCk7Ci0gIHhfd21fc2V0X3NpemVfaGludCAoZiwgMCwgZmFsc2Up OworICB4X3dtX3NldF9zaXplX2hpbnQgKGYsIDAsIGZhbHNlLCAtMSwgLTEpOwogICB1bmJs b2NrX2lucHV0ICgpOwogICByZXR1cm4gUW5pbDsKIH0KQEAgLTUwOTcsNyArNTA5Nyw4IEBA IERFRlVOICgieC1jcmVhdGUtZnJhbWUiLCBGeF9jcmVhdGVfZnJhbWUsIFN4X2NyZWF0ZV9m cmFtZSwKICAgICAgYmFkbHkgd2Ugd2FudCB0aGVtLiAgVGhpcyBzaG91bGQgYmUgZG9uZSBh ZnRlciB3ZSBoYXZlIHRoZSBtZW51CiAgICAgIGJhciBzbyB0aGF0IGl0cyBzaXplIGNhbiBi ZSB0YWtlbiBpbnRvIGFjY291bnQuICAqLwogICBibG9ja19pbnB1dCAoKTsKLSAgeF93bV9z ZXRfc2l6ZV9oaW50IChmLCB3aW5kb3dfcHJvbXB0aW5nLCBmYWxzZSk7CisgIHhfd21fc2V0 X3NpemVfaGludCAoZiwgd2luZG93X3Byb21wdGluZywgZmFsc2UsCisJCSAgICAgIEZSQU1F X1RFWFRfV0lEVEggKGYpLCBGUkFNRV9URVhUX0hFSUdIVCAoZikpOwogICB1bmJsb2NrX2lu cHV0ICgpOwogCiAgIGFkanVzdF9mcmFtZV9zaXplIChmLCBGUkFNRV9URVhUX1dJRFRIIChm KSwgRlJBTUVfVEVYVF9IRUlHSFQgKGYpLApkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9z cmMveHRlcm0uYwppbmRleCA3ZWFmNTlkNTRiLi5iMWQ2NWNlNTlkIDEwMDY0NAotLS0gYS9z cmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtMjYxNjAsNiArMjYxNjAsOCBAQCB4 X25ld19mb250IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGZvbnRfb2JqZWN0LCBp bnQgZm9udHNldCkKIHsKICAgc3RydWN0IGZvbnQgKmZvbnQgPSBYRk9OVF9PQkpFQ1QgKGZv bnRfb2JqZWN0KTsKICAgaW50IHVuaXQsIGZvbnRfYXNjZW50LCBmb250X2Rlc2NlbnQ7Cisg IGludCBvbGRfd2lkdGggPSBGUkFNRV9DT0xVTU5fV0lEVEggKGYpOworICBpbnQgb2xkX2hl aWdodCA9IEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKIAogICBpZiAoZm9udHNldCA8IDApCiAg ICAgZm9udHNldCA9IGZvbnRzZXRfZnJvbV9mb250IChmb250X29iamVjdCk7CkBAIC0yNjE5 Nyw5ICsyNjE5OSwyNyBAQCB4X25ld19mb250IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2Jq ZWN0IGZvbnRfb2JqZWN0LCBpbnQgZm9udHNldCkKICAgICAgYmVjYXVzZSBpdCdzIGRvbmUg aW4gRnhfc2hvd190aXAsIGFuZCBpdCBsZWFkcyB0byBwcm9ibGVtcyBiZWNhdXNlCiAgICAg IHRoZSB0aXAgZnJhbWUgaGFzIG5vIHdpZGdldC4gICovCiAgIGlmIChGUkFNRV9YX1dJTkRP VyAoZikgIT0gMCAmJiAhRlJBTUVfVE9PTFRJUF9QIChmKSkKLSAgICBhZGp1c3RfZnJhbWVf c2l6ZQotICAgICAgKGYsIEZSQU1FX0NPTFMgKGYpICogRlJBTUVfQ09MVU1OX1dJRFRIIChm KSwKLSAgICAgICBGUkFNRV9MSU5FUyAoZikgKiBGUkFNRV9MSU5FX0hFSUdIVCAoZiksIDMs IGZhbHNlLCBRZm9udCk7CisgICAgeworICAgICAgQ0FMTE4gKEZmdW5jYWxsLCBRZm9vX2l0 LCBpbnRlcm4gKCJcbnhfbmV3X2ZvbnQiKSwKKwkgICAgIGludGVybiAoIm9sZCBjaGFyIHNp emUiKSwKKwkgICAgIEZjb25zIChtYWtlX2ZpeG51bSAob2xkX3dpZHRoKSwgbWFrZV9maXhu dW0gKG9sZF9oZWlnaHQpKSwKKwkgICAgIGludGVybiAoIm5ldyBjaGFyIHNpemUiKSwKKwkg ICAgIEZjb25zIChtYWtlX2ZpeG51bSAoRlJBTUVfQ09MVU1OX1dJRFRIIChmKSksCisJCSAg ICBtYWtlX2ZpeG51bSAoRlJBTUVfTElORV9IRUlHSFQgKGYpKSksCisJICAgICBpbnRlcm4g KCJ0ZXh0IGNoYXJzIiksCisJICAgICBGY29ucyAobWFrZV9maXhudW0gKEZSQU1FX0NPTFMg KGYpKSwKKwkJICAgIG1ha2VfZml4bnVtIChGUkFNRV9MSU5FUyAoZikpKSwKKwkgICAgIGlu dGVybiAoIm9sZCB0ZXh0IHBpeGVscyIpLAorCSAgICAgRmNvbnMgKG1ha2VfZml4bnVtIChG UkFNRV9URVhUX1dJRFRIIChmKSksCisJCSAgICBtYWtlX2ZpeG51bSAoRlJBTUVfVEVYVF9I RUlHSFQgKGYpKSksCisJICAgICBpbnRlcm4gKCJuZXcgdGV4dCBwaXhlbHMiKSwKKwkgICAg IEZjb25zIChtYWtlX2ZpeG51bSAoRlJBTUVfQ09MUyAoZikgKiBGUkFNRV9DT0xVTU5fV0lE VEggKGYpKSwKKwkJICAgIG1ha2VfZml4bnVtIChGUkFNRV9MSU5FUyAoZikgKiBGUkFNRV9M SU5FX0hFSUdIVCAoZikpKSk7CisKKyAgICAgIGFkanVzdF9mcmFtZV9zaXplCisJKGYsIEZS QU1FX0NPTFMgKGYpICogRlJBTUVfQ09MVU1OX1dJRFRIIChmKSwKKwkgRlJBTUVfTElORVMg KGYpICogRlJBTUVfTElORV9IRUlHSFQgKGYpLCAzLCBmYWxzZSwgUWZvbnQpOworICAgIH0K IAogI2lmZGVmIEhBVkVfWF9JMThOCiAgIGlmIChGUkFNRV9YSUMgKGYpCkBAIC0yNjU4OSw3 ICsyNjYwOSw3IEBAIHhfc2V0X29mZnNldCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeG9mZiwg aW50IHlvZmYsIGludCBjaGFuZ2VfZ3Jhdml0eSkKICAgeF9jYWxjX2Fic29sdXRlX3Bvc2l0 aW9uIChmKTsKIAogICBibG9ja19pbnB1dCAoKTsKLSAgeF93bV9zZXRfc2l6ZV9oaW50IChm LCAwLCBmYWxzZSk7CisgIHhfd21fc2V0X3NpemVfaGludCAoZiwgMCwgZmFsc2UsIC0xLCAt MSk7CiAKICNpZmRlZiBVU0VfR1RLCiAgIGlmICh4X2d0a191c2Vfd2luZG93X21vdmUpCkBA IC0yNzI3OSw3ICsyNzI5OSw3IEBAIHhfY2hlY2tfZnVsbHNjcmVlbiAoc3RydWN0IGZyYW1l ICpmKQogCSAgZW1hY3NfYWJvcnQgKCk7CiAgICAgICAgIH0KIAotICAgICAgeF93bV9zZXRf c2l6ZV9oaW50IChmLCAwLCBmYWxzZSk7CisgICAgICB4X3dtX3NldF9zaXplX2hpbnQgKGYs IDAsIGZhbHNlLCAtMSwgLTEpOwogCiAgICAgICBYUmVzaXplV2luZG93IChGUkFNRV9YX0RJ U1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAogCQkgICAgIHdpZHRoLCBoZWln aHQpOwpAQCAtMjc0NTMsNyArMjc0NzMsOCBAQCB4X3NldF93aW5kb3dfc2l6ZV8xIChzdHJ1 Y3QgZnJhbWUgKmYsIGJvb2wgY2hhbmdlX2dyYXZpdHksCiB7CiAgIGlmIChjaGFuZ2VfZ3Jh dml0eSkKICAgICBmLT53aW5fZ3Jhdml0eSA9IE5vcnRoV2VzdEdyYXZpdHk7Ci0gIHhfd21f c2V0X3NpemVfaGludCAoZiwgMCwgZmFsc2UpOworICB4X3dtX3NldF9zaXplX2hpbnQgKGYs IDAsIGZhbHNlLCBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCB3aWR0aCksCisJCSAg ICAgIEZSQU1FX1BJWEVMX1RPX1RFWFRfSEVJR0hUIChmLCBoZWlnaHQpKTsKIAogICBYUmVz aXplV2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYp LAogCQkgd2lkdGgsIGhlaWdodCArIEZSQU1FX01FTlVCQVJfSEVJR0hUIChmKSk7CkBAIC0y ODI0Myw3ICsyODI2NCw3IEBAIHhfbWFrZV9mcmFtZV9pbnZpc2libGUgKHN0cnVjdCBmcmFt ZSAqZikKICAgICAgcHJvZ3JhbS1zcGVjaWZpZWQsIHNvIHRoYXQgd2hlbiB0aGUgd2luZG93 IGlzIG1hcHBlZCBhZ2FpbiwgaXQgd2lsbCBiZQogICAgICBwbGFjZWQgYXQgdGhlIHNhbWUg bG9jYXRpb24sIHdpdGhvdXQgZm9yY2luZyB0aGUgdXNlciB0byBwb3NpdGlvbiBpdAogICAg ICBieSBoYW5kIGFnYWluICh0aGV5IGhhdmUgYWxyZWFkeSBkb25lIHRoYXQgb25jZSBmb3Ig dGhpcyB3aW5kb3cuKSAgKi8KLSAgeF93bV9zZXRfc2l6ZV9oaW50IChmLCAwLCB0cnVlKTsK KyAgeF93bV9zZXRfc2l6ZV9oaW50IChmLCAwLCB0cnVlLCAtMSwgLTEpOwogCiAjaWZkZWYg VVNFX0dUSwogICBpZiAoRlJBTUVfR1RLX09VVEVSX1dJREdFVCAoZikpCkBAIC0yODg5Niw3 ICsyODkxNyw4IEBAIHhfZW1iZWRfZnJhbWUgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5 aW5mbywgc3RydWN0IGZyYW1lICpmKQogICAgVGhlIEdUSyB2ZXJzaW9uIGlzIGluIGd0a3V0 aWxzLmMuICAqLwogCiB2b2lkCi14X3dtX3NldF9zaXplX2hpbnQgKHN0cnVjdCBmcmFtZSAq ZiwgbG9uZyBmbGFncywgYm9vbCB1c2VyX3Bvc2l0aW9uKQoreF93bV9zZXRfc2l6ZV9oaW50 IChzdHJ1Y3QgZnJhbWUgKmYsIGxvbmcgZmxhZ3MsIGJvb2wgdXNlcl9wb3NpdGlvbiwKKwkJ ICAgIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICNpZm5kZWYgVVNFX0dUSwogICBYU2l6 ZUhpbnRzIHNpemVfaGludHM7CkBAIC0yODkzNSwxMCArMjg5NTcsMTIgQEAgeF93bV9zZXRf c2l6ZV9oaW50IChzdHJ1Y3QgZnJhbWUgKmYsIGxvbmcgZmxhZ3MsIGJvb2wgdXNlcl9wb3Np dGlvbikKICNpZm5kZWYgVVNFX01PVElGCiAgICAgICBoaW50c19jaGFuZ2VkCiAJPSB3aWRn ZXRfdXBkYXRlX3dtX3NpemVfaGludHMgKGYtPm91dHB1dF9kYXRhLngtPndpZGdldCwKLQkJ CQkgICAgICAgZi0+b3V0cHV0X2RhdGEueC0+ZWRpdF93aWRnZXQpOworCQkJCSAgICAgICBm LT5vdXRwdXRfZGF0YS54LT5lZGl0X3dpZGdldCwKKwkJCQkgICAgICAgd2lkdGgsIGhlaWdo dCk7CiAjZWxzZQogICAgICAgd2lkZ2V0X3VwZGF0ZV93bV9zaXplX2hpbnRzIChmLT5vdXRw dXRfZGF0YS54LT53aWRnZXQsCi0JCQkJICAgZi0+b3V0cHV0X2RhdGEueC0+ZWRpdF93aWRn ZXQpOworCQkJCSAgIGYtPm91dHB1dF9kYXRhLngtPmVkaXRfd2lkZ2V0LAorCQkJCSAgIHdp ZHRoLCBoZWlnaHQpOwogCiAgICAgICAvKiBEbyB0aGlzIGFsbCBvdmVyIGFnYWluIGZvciB0 aGUgYmVuZWZpdCBvZiBNb3RpZiwgd2hpY2ggYWx3YXlzCiAJIGtub3dzIGJldHRlciB0aGFu IHRoZSBwcm9ncmFtbWVyLiAgKi8KQEAgLTI5MDEyLDggKzI5MDM2LDE2IEBAIHhfd21fc2V0 X3NpemVfaGludCAoc3RydWN0IGZyYW1lICpmLCBsb25nIGZsYWdzLCBib29sIHVzZXJfcG9z aXRpb24pCiAgIHsKICAgICBpbnQgYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQ7CiAKLSAgICBi YXNlX3dpZHRoID0gRlJBTUVfVEVYVF9DT0xTX1RPX1BJWEVMX1dJRFRIIChmLCAwKTsKLSAg ICBiYXNlX2hlaWdodCA9IEZSQU1FX1RFWFRfTElORVNfVE9fUElYRUxfSEVJR0hUIChmLCAw KTsKKyAgICBpZiAod2lkdGggPT0gLTEpCisgICAgICB3aWR0aCA9IEZSQU1FX1RFWFRfV0lE VEggKGYpOworCisgICAgaWYgKGhlaWdodCA9PSAtMSkKKyAgICAgIGhlaWdodCA9IEZSQU1F X1RFWFRfSEVJR0hUIChmKTsKKworICAgIGJhc2Vfd2lkdGggPSAoRlJBTUVfVEVYVF9DT0xT X1RPX1BJWEVMX1dJRFRIIChmLCAwKQorCQkgICsgd2lkdGggJSBGUkFNRV9DT0xVTU5fV0lE VEggKGYpKTsKKyAgICBiYXNlX2hlaWdodCA9IChGUkFNRV9URVhUX0xJTkVTX1RPX1BJWEVM X0hFSUdIVCAoZiwgMCkKKwkJICAgKyBoZWlnaHQgJSBGUkFNRV9MSU5FX0hFSUdIVCAoZikp OwogCiAgICAgLyogVGhlIHdpbmRvdyBtYW5hZ2VyIHVzZXMgdGhlIGJhc2Ugd2lkdGggaGlu dHMgdG8gY2FsY3VsYXRlIHRoZQogICAgICAgIGN1cnJlbnQgbnVtYmVyIG9mIHJvd3MgYW5k IGNvbHVtbnMgaW4gdGhlIGZyYW1lIHdoaWxlCkBAIC0yOTA3NSw3ICsyOTEwNyw3IEBAIHhf d21fc2V0X3NpemVfaGludCAoc3RydWN0IGZyYW1lICpmLCBsb25nIGZsYWdzLCBib29sIHVz ZXJfcG9zaXRpb24pCiAKICAgWFNldFdNTm9ybWFsSGludHMgKEZSQU1FX1hfRElTUExBWSAo ZiksIHdpbmRvdywgJnNpemVfaGludHMpOwogI2Vsc2UKLSAgeGdfd21fc2V0X3NpemVfaGlu dCAoZiwgZmxhZ3MsIHVzZXJfcG9zaXRpb24pOworICB4Z193bV9zZXRfc2l6ZV9oaW50IChm LCBmbGFncywgdXNlcl9wb3NpdGlvbiwgd2lkdGgsIGhlaWdodCk7CiAjZW5kaWYgLyogVVNF X0dUSyAqLwogfQogCmRpZmYgLS1naXQgYS9zcmMveHRlcm0uaCBiL3NyYy94dGVybS5oCmlu ZGV4IGVlNDI5ZTljNjguLjYxNTEyZjExMTcgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5oCisr KyBiL3NyYy94dGVybS5oCkBAIC0xNjUzLDcgKzE2NTMsNyBAQCAjZGVmaW5lIFNFTEVDVElP Tl9FVkVOVF9USU1FKGV2ZW50cCkJXAogZXh0ZXJuIHZvaWQgeF9tYWtlX2ZyYW1lX2ludmlz aWJsZSAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIHZvaWQgeF9pY29uaWZ5X2ZyYW1lIChz dHJ1Y3QgZnJhbWUgKik7CiBleHRlcm4gdm9pZCB4X2ZyZWVfZnJhbWVfcmVzb3VyY2VzIChz dHJ1Y3QgZnJhbWUgKik7Ci1leHRlcm4gdm9pZCB4X3dtX3NldF9zaXplX2hpbnQgKHN0cnVj dCBmcmFtZSAqLCBsb25nLCBib29sKTsKK2V4dGVybiB2b2lkIHhfd21fc2V0X3NpemVfaGlu dCAoc3RydWN0IGZyYW1lICosIGxvbmcsIGJvb2wsIGludCwgaW50KTsKICNpZiBkZWZpbmVk IEhBVkVfWFNZTkNUUklHR0VSRkVOQ0UgJiYgIWRlZmluZWQgVVNFX0dUSyBcCiAgICYmIGRl ZmluZWQgSEFWRV9DTE9DS19HRVRUSU1FCiBleHRlcm4gdm9pZCB4X3N5bmNfaW5pdF9mZW5j ZXMgKHN0cnVjdCBmcmFtZSAqKTsK --------------VRoO3NuZ8UZiuP2D0na4DApn--