From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108491 invoked by alias); 17 Aug 2017 14:56:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 107815 invoked by uid 89); 17 Aug 2017 14:56:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: mail-oi0-f42.google.com Received: from mail-oi0-f42.google.com (HELO mail-oi0-f42.google.com) (209.85.218.42) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Aug 2017 14:56:43 +0000 Received: by mail-oi0-f42.google.com with SMTP id f11so68908881oic.0 for ; Thu, 17 Aug 2017 07:56:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=QYCkOHSa3z7x2wmLToyv8S1K4C/Q1EG/9zZSP27Ukpw=; b=D0zd+gT/iS3h+eg0jyKNOWCbzEqzwXJxa35FW5/GB9SF3aAbKDI2QVbVdeZs/V347/ epfIz1drxgwUfa8t2ZaasVm0ipzM0yccTuFx4UX9m6pQNHFmuo8ZCaQGlrhxSOm++6vS cgiP9gPCPOolAZJEi3p90nKResSTz7Rv3g5DvlXSaotKMwLJ0LghI7cyzgJj/tpaFBWY d2qRzYbhhKGtBp1m/nxqNkEEaQV02ZgZe8HSUp4zy5L6VcU8OIJxffBjjuz8Q2nmRcmK icgVLiR+p3msPJv7pNDsJssUf4i93TI9fkwK0SyM3cLvrFtWYuE/FlqFw01IUIfQLy3d fQgA== X-Gm-Message-State: AHYfb5jW2vaClgR8htyR30GPCJmL2gTt+0tpX6dRb4ZscnQQK4Nw5y2w 2+Tq1GebMOY37+cnJrUsih0aF9Fp7Q== X-Received: by 10.202.192.84 with SMTP id q81mr7503551oif.88.1502981801764; Thu, 17 Aug 2017 07:56:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.136.75 with HTTP; Thu, 17 Aug 2017 07:56:40 -0700 (PDT) In-Reply-To: References: <6c6c268d-a40b-cfa9-574c-ad235f9205b7@gmail.com> <4a4ac20f-9c27-4844-55dc-38ff56ac138b@gmail.com> <20170616115455.GA3457@gmail.com> <20170708134504.GA1303@gmail.com> From: "H.J. Lu" Date: Thu, 17 Aug 2017 16:23:00 -0000 Message-ID: Subject: Re: RFC: [PATCH] Add warn_if_not_aligned attribute To: Joseph Myers Cc: Martin Sebor , Jason Merrill , GCC Patches Content-Type: multipart/mixed; boundary="001a113ddc6c69e0a00556f438e4" X-IsSubscribed: yes X-SW-Source: 2017-08/txt/msg01088.txt.bz2 --001a113ddc6c69e0a00556f438e4 Content-Type: text/plain; charset="UTF-8" Content-length: 886 On Thu, Aug 17, 2017 at 6:52 AM, Joseph Myers wrote: > On Sat, 8 Jul 2017, H.J. Lu wrote: > >> +@item -Wpacked-not-aligned @r{(C, C++, Objective-C and Objective-C++ only)} >> +@opindex Wpacked-not-aligned >> +@opindex Wno-packed-not-aligned >> +Warn if a structure field with explicitly specified alignment in a >> +packed struct or union is misaligned. For example, a warning will >> +be issued on @code{struct S}, like, @code{warning: alignment 1 of >> +'struct S' is less than 8}, in this code: > > Use @samp for warnings quoted in the manual, as previously discussed. > > OK with that change, in the absence of C++ maintainer objections within 48 > hours. > Here is the updated patch. I moved c++ changes to merge_decls, where alignment is merged, and check_bitfield_type_and_width, where bit-fields are checked. Tested on x86-64 and i686. -- H.J. --001a113ddc6c69e0a00556f438e4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-warn_if_not_aligned-attribute.patch" Content-Disposition: attachment; filename="0001-Add-warn_if_not_aligned-attribute.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j6gken0w0 Content-length: 52444 RnJvbSA0NDFiZDM0NzlhODMwOTNhZDQ2ZmJhYTY3ZDI3MGQ2OTgwOGMwNWIy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjAgQXByIDIwMTIgMTM6 NDk6MDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGQgd2Fybl9pZl9ub3Rf YWxpZ25lZCBhdHRyaWJ1dGUKCkFkZCB3YXJuX2lmX25vdF9hbGlnbmVkIGF0 dHJpYnV0ZSBhcyB3ZWxsIGFzICBjb21tYW5kIGxpbmUgb3B0aW9uczoKLVdp Zi1ub3QtYWxpZ25lZCBhbmQgLVdwYWNrZWQtbm90LWFsaWduZWQuCgpfX2F0 dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKE4pKSkgY2F1c2VzIGNv bXBpbGVyIHRvIGlzc3VlIGEKd2FybmluZyBpZiB0aGUgZmllbGQgaW4gYSBz dHJ1Y3Qgb3IgdW5pb24gaXMgbm90IGFsaWduZWQgdG8gTjoKCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBsb25nIF9fdTY0CiAgX19hdHRyaWJ1dGVfXygoYWxp Z25lZCg0KSx3YXJuX2lmX25vdF9hbGlnbmVkKDgpKSk7CgpzdHJ1Y3QgZm9v CnsKICBpbnQgaTE7CiAgaW50IGkyOwogIF9fdTY0IHg7Cn07CgpfX3U2NCBp cyBhbGlnbmVkIHRvIDQgYnl0ZXMuICBCdXQgaW5zaWRlIHN0cnVjdCBmb28s IF9fdTY0IHNob3VsZCBiZQphbGlnbmVkIGF0IDggYnl0ZXMuICBJdCBpcyB1 c2VkIHRvIGRlZmluZSBzdHJ1Y3QgZm9vIGluIHN1Y2ggYSB3YXkgdGhhdApz dHJ1Y3QgZm9vIGhhcyB0aGUgc2FtZSBsYXlvdXQgYW5kIHggaGFzIHRoZSBz YW1lIGFsaWdubWVudCB3aGVuIF9fdTY0CmlzIGFsaWduZWQgYXQgZWl0aGVy IDQgb3IgOCBieXRlcy4KClNpbmNlIHN0cnVjdCBmb28gaXMgbm9ybWFsbHkg YWxpZ25lZCB0byA0IGJ5dGVzLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQ6 Cgp3YXJuaW5nOiBhbGlnbm1lbnQgNCBvZiAnc3RydWN0IGZvbycgaXMgbGVz cyB0aGFuIDgKCkFsaWduIHN0cnVjdCBmb28gdG8gOCBieXRlczoKCnN0cnVj dCBmb28KewogIGludCBpMTsKICBpbnQgaTI7CiAgX191NjQgeDsKfSBfX2F0 dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CgpzaWxlbmNlcyB0aGUgd2Fybmlu Zy4gIEl0IGFsc28gd2FybnMgdGhlIGZpZWxkIHdpdGggbWlzYWxpZ25lZCBv ZmZzZXQ6CgpzdHJ1Y3QgZm9vCnsKICBpbnQgaTE7CiAgaW50IGkyOwogIGlu dCBpMzsKICBfX3U2NCB4Owp9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkp KTsKCndhcm5pbmc6ICd4JyBvZmZzZXQgMTIgaW4gJ3N0cnVjdCBmb28nIGlz bid0IGFsaWduZWQgdG8gOAoKVGhpcyB3YXJuaW5nIGlzIGNvbnRyb2xsZWQg YnkgLVdpZi1ub3QtYWxpZ25lZCBhbmQgaXMgZW5hYmxlZCBieSBkZWZhdWx0 LgoKV2hlbiAtV3BhY2tlZC1ub3QtYWxpZ25lZCBpcyB1c2VkLCB0aGUgc2Ft ZSB3YXJuaW5nIGlzIGFsc28gaXNzdWVkIGZvcgp0aGUgZmllbGQgd2l0aCBl eHBsaWNpdGx5IHNwZWNpZmllZCBhbGlnbm1lbnQgaW4gYSBwYWNrZWQgc3Ry dWN0IG9yIHVuaW9uOgoKc3RydWN0IF9fYXR0cmlidXRlX18gKChhbGlnbmVk ICg4KSkpIFM4IHsgY2hhciBhWzhdOyB9OwpzdHJ1Y3QgX19hdHRyaWJ1dGVf XyAoKHBhY2tlZCkpIFMgewogIHN0cnVjdCBTOCBzODsKfTsKCndhcm5pbmc6 IGFsaWdubWVudCAxIG9mICdzdHJ1Y3QgUycgaXMgbGVzcyB0aGFuIDgKClRo aXMgd2FybmluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBlbmFibGVk IGJ5IC1XYWxsLgoKZ2NjLwoKCVBSIGMvNTMwMzcKCSogcHJpbnQtdHJlZS5j IChwcmludF9ub2RlKTogU3VwcG9ydCBERUNMX1dBUk5fSUZfTk9UX0FMSUdO CglhbmQgVFlQRV9XQVJOX0lGX05PVF9BTElHTi4KCSogc3Rvci1sYXlvdXQu YyAoZG9fdHlwZV9hbGlnbik6IE1lcmdlIERFQ0xfV0FSTl9JRl9OT1RfQUxJ R04uCgkoaGFuZGxlX3dhcm5faWZfbm90X2FsaWduKTogTmV3LgoJKHBsYWNl X3VuaW9uX2ZpZWxkKTogQ2FsbCBoYW5kbGVfd2Fybl9pZl9ub3RfYWxpZ24u CgkocGxhY2VfZmllbGQpOiBDYWxsIGhhbmRsZV93YXJuX2lmX25vdF9hbGln bi4gIENvcHkKCVRZUEVfV0FSTl9JRl9OT1RfQUxJR04uCgkoZmluaXNoX2J1 aWx0aW5fc3RydWN0KTogQ29weSBUWVBFX1dBUk5fSUZfTk9UX0FMSUdOLgoJ KGxheW91dF90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUtY29yZS5oICh0cmVl X3R5cGVfY29tbW9uKTogQWRkIHdhcm5faWZfbm90X2FsaWduLiAgU2V0Cglz cGFyZSB0byAxOC4KCSh0cmVlX2RlY2xfY29tbW9uKTogQWRkIHdhcm5faWZf bm90X2FsaWduLgoJKiB0cmVlLmMgKGJ1aWxkX3JhbmdlX3R5cGVfMSk6IENv cHkgVFlQRV9XQVJOX0lGX05PVF9BTElHTi4KCSogdHJlZS5oIChUWVBFX1dB Uk5fSUZfTk9UX0FMSUdOKTogTmV3LgoJKFNFVF9UWVBFX1dBUk5fSUZfTk9U X0FMSUdOKTogTGlrZXdpc2UuCgkoREVDTF9XQVJOX0lGX05PVF9BTElHTik6 IExpa2V3aXNlLgoJKFNFVF9ERUNMX1dBUk5fSUZfTk9UX0FMSUdOKTogTGlr ZXdpc2UuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgd2Fybl9pZl9u b3RfYWxpZ25lZCBhdHRyaWJ1dGUuCgkqIGRvYy9pbnZva2UudGV4aTogRG9j dW1lbnQgLVdpZi1ub3QtYWxpZ25lZCBhbmQKCS1XcGFja2VkLW5vdC1hbGln bmVkLgoKZ2NjL2MtZmFtaWx5LwoKCVBSIGMvNTMwMzcKCSogYy1hdHRyaWJz LmMgKGhhbmRsZV93YXJuX2lmX25vdF9hbGlnbmVkX2F0dHJpYnV0ZSk6IE5l dy4KCShjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgd2Fybl9pZl9u b3RfYWxpZ25lZC4KCShoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUpOiBSZW5h bWVkIHRvIC4uLgoJKGNvbW1vbl9oYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUp OiBSZW1vdmUgYXJndW1lbnQsIG5hbWUsIGFuZCBhZGQKCWFyZ3VtZW50LCB3 YXJuX2lmX25vdF9hbGlnbmVkLiAgSGFuZGxlIHdhcm5faWZfbm90X2FsaWdu ZWQuCgkoaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlKTogTmV3LgoJKiBjLm9w dDogQWRkIC1XaWYtbm90LWFsaWduZWQgYW5kIC1XcGFja2VkLW5vdC1hbGln bmVkLgoKZ2NjL2MvCgoJUFIgYy81MzAzNwoJKiBjLWRlY2wuYyAobWVyZ2Vf ZGVjbHMpOiBBbHNvIG1lcmdlIERFQ0xfV0FSTl9JRl9OT1RfQUxJR04uCgko Y2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgpOiBEb24ndCBhbGxvdyBi aXQtZmllbGQgd2l0aAoJd2Fybl9pZl9ub3RfYWxpZ25lZCB0eXBlLgoKZ2Nj L2NwLwoKCVBSIGMvNTMwMzcKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMp OiBBbHNvIG1lcmdlIERFQ0xfV0FSTl9JRl9OT1RfQUxJR04uCgkqIGRlY2wy LmMgKGdyb2tiaXRmaWVsZCk6IERvbid0IGFsbG93IGJpdC1maWVsZCB3aXRo Cgl3YXJuX2lmX25vdF9hbGlnbmVkIHR5cGUuCgpnY2MvdGVzdHN1aXRlLwoK CVBSIGMvNTMwMzcKCSogYy1jKystY29tbW9uL3ByNTMwMzctNS5jOiBOZXcg dGVzdC4KCSogZysrLmRnL3ByNTMwMzctMS5DOiBMaWtld2lzZS4KCSogZysr LmRnL3ByNTMwMzctMi5DOiBMaWtld2lzZS4KCSogZysrLmRnL3ByNTMwMzct My5DOiBMaWtld2lzZS4KCSogZysrLmRnL3ByNTMwMzctNC5DOiBMaWtld2lz ZS4KCSogZ2NjLmRnL3ByNTMwMzctMS5jOiBMaWtld2lzZS4KCSogZ2NjLmRn L3ByNTMwMzctMi5jOiBMaWtld2lzZS4KCSogZ2NjLmRnL3ByNTMwMzctMy5j OiBMaWtld2lzZS4KCSogZ2NjLmRnL3ByNTMwMzctNC5jOiBMaWtld2lzZS4K LS0tCiBnY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmMgICAgICAgICAgICAgICB8 IDcxICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZ2NjL2MtZmFtaWx5 L2Mub3B0ICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrCiBnY2MvYy9j LWRlY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsrKysrCiBn Y2MvY3AvZGVjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsr CiBnY2MvY3AvZGVjbDIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3 ICsrKwogZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAg fCA4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBnY2Mv ZG9jL2ludm9rZS50ZXhpICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysr KysrKysrLQogZ2NjL3ByaW50LXRyZWUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgOSArKy0tCiBnY2Mvc3Rvci1sYXlvdXQuYyAgICAgICAgICAgICAg ICAgICAgICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBnY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUzMDM3LTUuYyB8IDgxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZysr LmRnL3ByNTMwMzctMS5DICAgICAgIHwgODEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI1MzAzNy0y LkMgICAgICAgfCAzNyArKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUv ZysrLmRnL3ByNTMwMzctMy5DICAgICAgIHwgMzcgKysrKysrKysrKysrKysr CiBnY2MvdGVzdHN1aXRlL2crKy5kZy9wcjUzMDM3LTQuQyAgICAgICB8IDI0 ICsrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTMwMzctMS5j ICAgICAgIHwgODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MzAzNy0yLmMgICAgICAgfCAzNyAr KysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTMwMzct My5jICAgICAgIHwgMzcgKysrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRl L2djYy5kZy9wcjUzMDM3LTQuYyAgICAgICB8IDI0ICsrKysrKysrKysKIGdj Yy90cmVlLWNvcmUuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysr LQogZ2NjL3RyZWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MSArCiBnY2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIwICsrKysrKysrCiAyMSBmaWxlcyBjaGFuZ2VkLCA3NDcgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MzAzNy01LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9wcjUzMDM3LTEuQwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3ByNTMw MzctMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvcHI1MzAzNy0zLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9wcjUzMDM3LTQuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTMwMzctMS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MzAzNy0yLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUzMDM3LTMu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3By NTMwMzctNC5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmli cy5jIGIvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jCmluZGV4IDYyNmZmYTFj ZGU3Li4yMDBlOGFlNGVlZCAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2Mt YXR0cmlicy5jCisrKyBiL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYwpAQCAt ODgsNiArODgsOCBAQCBzdGF0aWMgdHJlZSBoYW5kbGVfZGVzdHJ1Y3Rvcl9h dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwog c3RhdGljIHRyZWUgaGFuZGxlX21vZGVfYXR0cmlidXRlICh0cmVlICosIHRy ZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9z ZWN0aW9uX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJv b2wgKik7CiBzdGF0aWMgdHJlZSBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUg KHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOworc3RhdGljIHRy ZWUgaGFuZGxlX3dhcm5faWZfbm90X2FsaWduZWRfYXR0cmlidXRlICh0cmVl ICosIHRyZWUsIHRyZWUsCisJCQkJCQkgIGludCwgYm9vbCAqKTsKIHN0YXRp YyB0cmVlIGhhbmRsZV93ZWFrX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0 cmVlLCBpbnQsIGJvb2wgKikgOwogc3RhdGljIHRyZWUgaGFuZGxlX25vcGx0 X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKikg Owogc3RhdGljIHRyZWUgaGFuZGxlX2FsaWFzX2lmdW5jX2F0dHJpYnV0ZSAo Ym9vbCwgdHJlZSAqLCB0cmVlLCB0cmVlLCBib29sICopOwpAQCAtMjExLDYg KzIxMyw5IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1v bl9hdHRyaWJ1dGVfdGFibGVbXSA9CiAJCQkgICAgICBoYW5kbGVfc2VjdGlv bl9hdHRyaWJ1dGUsIGZhbHNlIH0sCiAgIHsgImFsaWduZWQiLCAgICAgICAg ICAgICAgICAwLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJICAgICAg aGFuZGxlX2FsaWduZWRfYXR0cmlidXRlLCBmYWxzZSB9LAorICB7ICJ3YXJu X2lmX25vdF9hbGlnbmVkIiwgICAgMCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwKKwkJCSAgICAgIGhhbmRsZV93YXJuX2lmX25vdF9hbGlnbmVkX2F0dHJp YnV0ZSwKKwkJCSAgICAgIGZhbHNlIH0sCiAgIHsgIndlYWsiLCAgICAgICAg ICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLAogCQkJICAg ICAgaGFuZGxlX3dlYWtfYXR0cmlidXRlLCBmYWxzZSB9LAogICB7ICJub3Bs dCIsICAgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFs c2UsCkBAIC0xNjQwLDEyICsxNjQ1LDEzIEBAIGNoZWNrX2N4eF9mdW5kYW1l bnRhbF9hbGlnbm1lbnRfY29uc3RyYWludHMgKHRyZWUgbm9kZSwKICAgcmV0 dXJuICFhbGlnbm1lbnRfdG9vX2xhcmdlX3A7CiB9CiAKLS8qIEhhbmRsZSBh ICJhbGlnbmVkIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgotICAgc3Ry dWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLworLyogQ29tbW9uIGNv ZGVzIHNoYXJlZCBieSBoYW5kbGVfd2Fybl9pZl9ub3RfYWxpZ25lZF9hdHRy aWJ1dGUgYW5kCisgICBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUuICAqLwog CiBzdGF0aWMgdHJlZQotaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlICh0cmVl ICpub2RlLCB0cmVlIEFSR19VTlVTRUQgKG5hbWUpLCB0cmVlIGFyZ3MsCi0J CQkgIGludCBmbGFncywgYm9vbCAqbm9fYWRkX2F0dHJzKQorY29tbW9uX2hh bmRsZV9hbGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBhcmdz LCBpbnQgZmxhZ3MsCisJCQkJIGJvb2wgKm5vX2FkZF9hdHRycywKKwkJCQkg Ym9vbCB3YXJuX2lmX25vdF9hbGlnbmVkX3ApCiB7CiAgIHRyZWUgZGVjbCA9 IE5VTExfVFJFRTsKICAgdHJlZSAqdHlwZSA9IE5VTEw7CkBAIC0xNjk0LDgg KzE3MDAsMTYgQEAgaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlICh0cmVlICpu b2RlLCB0cmVlIEFSR19VTlVTRUQgKG5hbWUpLCB0cmVlIGFyZ3MsCiAgICAg ICBlbHNlCiAJKnR5cGUgPSBidWlsZF92YXJpYW50X3R5cGVfY29weSAoKnR5 cGUpOwogCi0gICAgICBTRVRfVFlQRV9BTElHTiAoKnR5cGUsICgxVSA8PCBp KSAqIEJJVFNfUEVSX1VOSVQpOwotICAgICAgVFlQRV9VU0VSX0FMSUdOICgq dHlwZSkgPSAxOworICAgICAgaWYgKHdhcm5faWZfbm90X2FsaWduZWRfcCkK Kwl7CisJICBTRVRfVFlQRV9XQVJOX0lGX05PVF9BTElHTiAoKnR5cGUsICgx VSA8PCBpKSAqIEJJVFNfUEVSX1VOSVQpOworCSAgd2Fybl9pZl9ub3RfYWxp Z25lZF9wID0gZmFsc2U7CisJfQorICAgICAgZWxzZQorCXsKKwkgIFNFVF9U WVBFX0FMSUdOICgqdHlwZSwgKDFVIDw8IGkpICogQklUU19QRVJfVU5JVCk7 CisJICBUWVBFX1VTRVJfQUxJR04gKCp0eXBlKSA9IDE7CisJfQogICAgIH0K ICAgZWxzZSBpZiAoISBWQVJfT1JfRlVOQ1RJT05fREVDTF9QIChkZWNsKQog CSAgICYmIFRSRUVfQ09ERSAoZGVjbCkgIT0gRklFTERfREVDTCkKQEAgLTE3 MjgsMTMgKzE3NDIsNTQgQEAgaGFuZGxlX2FsaWduZWRfYXR0cmlidXRlICh0 cmVlICpub2RlLCB0cmVlIEFSR19VTlVTRUQgKG5hbWUpLCB0cmVlIGFyZ3Ms CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgU0VUX0RFQ0xfQUxJR04g KGRlY2wsICgxVSA8PCBpKSAqIEJJVFNfUEVSX1VOSVQpOwotICAgICAgREVD TF9VU0VSX0FMSUdOIChkZWNsKSA9IDE7CisgICAgICBpZiAod2Fybl9pZl9u b3RfYWxpZ25lZF9wKQorCXsKKwkgIGlmIChUUkVFX0NPREUgKGRlY2wpID09 IEZJRUxEX0RFQ0wgJiYgIURFQ0xfSU5JVElBTCAoZGVjbCkpCisJICAgIHsK KwkgICAgICBTRVRfREVDTF9XQVJOX0lGX05PVF9BTElHTiAoZGVjbCwgKDFV IDw8IGkpICogQklUU19QRVJfVU5JVCk7CisJICAgICAgd2Fybl9pZl9ub3Rf YWxpZ25lZF9wID0gZmFsc2U7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJ eworCSAgU0VUX0RFQ0xfQUxJR04gKGRlY2wsICgxVSA8PCBpKSAqIEJJVFNf UEVSX1VOSVQpOworCSAgREVDTF9VU0VSX0FMSUdOIChkZWNsKSA9IDE7CisJ fQorICAgIH0KKworICBpZiAod2Fybl9pZl9ub3RfYWxpZ25lZF9wKQorICAg IHsKKyAgICAgIGVycm9yICgiJTx3YXJuX2lmX25vdF9hbGlnbmVkJT4gbWF5 IG5vdCBiZSBzcGVjaWZpZWQgZm9yICVxK0QiLAorCSAgICAgZGVjbCk7Cisg ICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKICAgICB9CiAKICAgcmV0dXJu IE5VTExfVFJFRTsKIH0KIAorLyogSGFuZGxlIGEgImFsaWduZWQiIGF0dHJp YnV0ZTsgYXJndW1lbnRzIGFzIGluCisgICBzdHJ1Y3QgYXR0cmlidXRlX3Nw ZWMuaGFuZGxlci4gICovCisKK3N0YXRpYyB0cmVlCitoYW5kbGVfYWxpZ25l ZF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgQVJHX1VOVVNFRCAobmFt ZSksIHRyZWUgYXJncywKKwkJCSAgaW50IGZsYWdzLCBib29sICpub19hZGRf YXR0cnMpCit7CisgIHJldHVybiBjb21tb25faGFuZGxlX2FsaWduZWRfYXR0 cmlidXRlIChub2RlLCBhcmdzLCBmbGFncywKKwkJCQkJIG5vX2FkZF9hdHRy cywgZmFsc2UpOworfQorCisvKiBIYW5kbGUgYSAid2Fybl9pZl9ub3RfYWxp Z25lZCIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KKyAgIHN0cnVjdCBh dHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KKworc3RhdGljIHRyZWUKK2hh bmRsZV93YXJuX2lmX25vdF9hbGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqbm9k ZSwgdHJlZSBBUkdfVU5VU0VEIChuYW1lKSwKKwkJCQkgICAgICB0cmVlIGFy Z3MsIGludCBmbGFncywKKwkJCQkgICAgICBib29sICpub19hZGRfYXR0cnMp Cit7CisgIHJldHVybiBjb21tb25faGFuZGxlX2FsaWduZWRfYXR0cmlidXRl IChub2RlLCBhcmdzLCBmbGFncywKKwkJCQkJICBub19hZGRfYXR0cnMsIHRy dWUpOworfQorCiAvKiBIYW5kbGUgYSAid2VhayIgYXR0cmlidXRlOyBhcmd1 bWVudHMgYXMgaW4KICAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVy LiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2Nj L2MtZmFtaWx5L2Mub3B0CmluZGV4IDA1NzY2YzQ3ODU2Li4xZGMzODBlZWEz NSAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0CisrKyBiL2djYy9j LWZhbWlseS9jLm9wdApAQCAtNTc5LDYgKzU3OSwxMCBAQCBXZm9ybWF0LXRy dW5jYXRpb249CiBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0TmVn YXRpdmUgVUludGVnZXIgVmFyKHdhcm5fZm9ybWF0X3RydW5jKSBXYXJuaW5n IExhbmdFbmFibGVkQnkoQyBPYmpDIEMrKyBPYmpDKyssV2Zvcm1hdD0sIHdh cm5fZm9ybWF0ID49IDEsIDApIEludGVnZXJSYW5nZSgwLCAyKQogV2FybiBh Ym91dCBjYWxscyB0byBzbnByaW50ZiBhbmQgc2ltaWxhciBmdW5jdGlvbnMg dGhhdCB0cnVuY2F0ZSBvdXRwdXQuCiAKK1dpZi1ub3QtYWxpZ25lZAorQyBP YmpDIEMrKyBPYmpDKysgVmFyKHdhcm5faWZfbm90X2FsaWduZWQpIEluaXQo MSkgV2FybmluZworV2FybiB3aGVuIHRoZSBmaWVsZCBpbiBhIHN0cnVjdCBp cyBub3QgYWxpZ25lZC4KKwogV2lnbm9yZWQtcXVhbGlmaWVycwogQyBDKysg VmFyKHdhcm5faWdub3JlZF9xdWFsaWZpZXJzKSBXYXJuaW5nIEVuYWJsZWRC eShXZXh0cmEpCiBXYXJuIHdoZW5ldmVyIHR5cGUgcXVhbGlmaWVycyBhcmUg aWdub3JlZC4KQEAgLTcxMCw2ICs3MTQsMTAgQEAgV25hbWVzcGFjZXMKIEMr KyBPYmpDKysgVmFyKHdhcm5fbmFtZXNwYWNlcykgV2FybmluZwogV2FybiBv biBuYW1lc3BhY2UgZGVmaW5pdGlvbi4KIAorV3BhY2tlZC1ub3QtYWxpZ25l ZAorQyBPYmpDIEMrKyBPYmpDKysgVmFyKHdhcm5fcGFja2VkX25vdF9hbGln bmVkKSBXYXJuaW5nIExhbmdFbmFibGVkQnkoQyBPYmpDIEMrKyBPYmpDKyss V2FsbCkKK1dhcm4gd2hlbiBmaWVsZHMgaW4gYSBzdHJ1Y3Qgd2l0aCB0aGUg cGFja2VkIGF0dHJpYnV0ZSBhcmUgbWlzYWxpZ25lZC4KKwogV3NpemVkLWRl YWxsb2NhdGlvbgogQysrIE9iakMrKyBWYXIod2Fybl9zaXplZF9kZWFsbG9j YXRpb24pIFdhcm5pbmcgRW5hYmxlZEJ5KFdleHRyYSkKIFdhcm4gYWJvdXQg bWlzc2luZyBzaXplZCBkZWFsbG9jYXRpb24gZnVuY3Rpb25zLgpkaWZmIC0t Z2l0IGEvZ2NjL2MvYy1kZWNsLmMgYi9nY2MvYy9jLWRlY2wuYwppbmRleCAz MTdkNWNkZDA5OS4uOGI0OWFiOWEwZTIgMTAwNjQ0Ci0tLSBhL2djYy9jL2Mt ZGVjbC5jCisrKyBiL2djYy9jL2MtZGVjbC5jCkBAIC0yMzg0LDYgKzIzODQs MTAgQEAgbWVyZ2VfZGVjbHMgKHRyZWUgbmV3ZGVjbCwgdHJlZSBvbGRkZWNs LCB0cmVlIG5ld3R5cGUsIHRyZWUgb2xkdHlwZSkKIAkgIFNFVF9ERUNMX0FM SUdOIChuZXdkZWNsLCBERUNMX0FMSUdOIChvbGRkZWNsKSk7CiAJICBERUNM X1VTRVJfQUxJR04gKG5ld2RlY2wpIHw9IERFQ0xfVVNFUl9BTElHTiAob2xk ZGVjbCk7CiAJfQorICAgICAgaWYgKERFQ0xfV0FSTl9JRl9OT1RfQUxJR04g KG9sZGRlY2wpCisJICA+IERFQ0xfV0FSTl9JRl9OT1RfQUxJR04gKG5ld2Rl Y2wpKQorCVNFVF9ERUNMX1dBUk5fSUZfTk9UX0FMSUdOIChuZXdkZWNsLAor CQkJCSAgICBERUNMX1dBUk5fSUZfTk9UX0FMSUdOIChvbGRkZWNsKSk7CiAg ICAgfQogCiAgIC8qIEtlZXAgdGhlIG9sZCBydGwgc2luY2Ugd2UgY2FuIHNh ZmVseSB1c2UgaXQuICAqLwpAQCAtNTM5MCw2ICs1Mzk0LDEzIEBAIGNoZWNr X2JpdGZpZWxkX3R5cGVfYW5kX3dpZHRoIChsb2NhdGlvbl90IGxvYywgdHJl ZSAqdHlwZSwgdHJlZSAqd2lkdGgsCiAgICAgICAqdHlwZSA9IHVuc2lnbmVk X3R5cGVfbm9kZTsKICAgICB9CiAKKyAgaWYgKFRZUEVfV0FSTl9JRl9OT1Rf QUxJR04gKCp0eXBlKSkKKyAgICB7CisgICAgICBlcnJvcl9hdCAobG9jLCAi Y2Fubm90IGRlY2xhcmUgYml0LWZpZWxkICVxcyB3aXRoICU8d2Fybl9pZl9u b3RfYWxpZ25lZCU+IHR5cGUiLAorCQluYW1lKTsKKyAgICAgICp0eXBlID0g dW5zaWduZWRfdHlwZV9ub2RlOworICAgIH0KKwogICB0eXBlX212ID0gVFlQ RV9NQUlOX1ZBUklBTlQgKCp0eXBlKTsKICAgaWYgKCFpbl9zeXN0ZW1faGVh ZGVyX2F0IChpbnB1dF9sb2NhdGlvbikKICAgICAgICYmIHR5cGVfbXYgIT0g aW50ZWdlcl90eXBlX25vZGUKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsLmMg Yi9nY2MvY3AvZGVjbC5jCmluZGV4IDQzYTk0ZDlmNmViLi4wYzM0YjFiYWEw OSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wuYworKysgYi9nY2MvY3AvZGVj bC5jCkBAIC0yNTEwLDYgKzI1MTAsMTAgQEAgbmV4dF9hcmc6OwogICAgICAg REVDTF9VU0VSX0FMSUdOIChuZXdkZWNsKSB8PSBERUNMX1VTRVJfQUxJR04g KG9sZGRlY2wpOwogICAgIH0KICAgREVDTF9VU0VSX0FMSUdOIChvbGRkZWNs KSA9IERFQ0xfVVNFUl9BTElHTiAobmV3ZGVjbCk7CisgIGlmIChERUNMX1dB Uk5fSUZfTk9UX0FMSUdOIChvbGRkZWNsKQorICAgICAgPiBERUNMX1dBUk5f SUZfTk9UX0FMSUdOIChuZXdkZWNsKSkKKyAgICBTRVRfREVDTF9XQVJOX0lG X05PVF9BTElHTiAobmV3ZGVjbCwKKwkJCQlERUNMX1dBUk5fSUZfTk9UX0FM SUdOIChvbGRkZWNsKSk7CiAgIGlmIChUUkVFX0NPREUgKG5ld2RlY2wpID09 IEZJRUxEX0RFQ0wpCiAgICAgREVDTF9QQUNLRUQgKG9sZGRlY2wpID0gREVD TF9QQUNLRUQgKG5ld2RlY2wpOwogCmRpZmYgLS1naXQgYS9nY2MvY3AvZGVj bDIuYyBiL2djYy9jcC9kZWNsMi5jCmluZGV4IDg3Nzc0NWM1NDZiLi4yMWJj OTE3ZTNlMSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wyLmMKKysrIGIvZ2Nj L2NwL2RlY2wyLmMKQEAgLTEwMDgsNiArMTAwOCwxMyBAQCBncm9rYml0Zmll bGQgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAgICAgICBy ZXR1cm4gTlVMTF9UUkVFOwogICAgIH0KIAorICBpZiAod2lkdGggJiYgVFlQ RV9XQVJOX0lGX05PVF9BTElHTiAoVFJFRV9UWVBFICh2YWx1ZSkpKQorICAg IHsKKyAgICAgIGVycm9yICgiY2Fubm90IGRlY2xhcmUgYml0LWZpZWxkICVx RCB3aXRoICU8d2Fybl9pZl9ub3RfYWxpZ25lZCU+IHR5cGUiLAorCSAgICAg REVDTF9OQU1FICh2YWx1ZSkpOworICAgICAgcmV0dXJuIE5VTExfVFJFRTsK KyAgICB9CisKICAgaWYgKERFQ0xfSU5fQUdHUl9QICh2YWx1ZSkpCiAgICAg ewogICAgICAgZXJyb3IgKCIlcUQgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRo ZSBjbGFzcyAlcVQiLCB2YWx1ZSwKZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0 ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCmluZGV4IGQwYWJkN2Zh YWRmLi5kZjE0MWNhY2E3ZCAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRlbmQu dGV4aQorKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC01NzA3LDYgKzU3 MDcsNDEgQEAgYWxpZ25tZW50LiAgU2VlIHlvdXIgbGlua2VyIGRvY3VtZW50 YXRpb24gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiBUaGUgQGNvZGV7YWxp Z25lZH0gYXR0cmlidXRlIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGZ1bmN0aW9u cwogKEBweHJlZntDb21tb24gRnVuY3Rpb24gQXR0cmlidXRlc30uKQogCitA Y2luZGV4IEBjb2Rle3dhcm5faWZfbm90X2FsaWduZWR9IHZhcmlhYmxlIGF0 dHJpYnV0ZQorQGl0ZW0gd2Fybl9pZl9ub3RfYWxpZ25lZCAoQHZhcnthbGln bm1lbnR9KQorVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgdGhyZXNob2xk IGZvciB0aGUgc3RydWN0dXJlIGZpZWxkLCBtZWFzdXJlZAoraW4gYnl0ZXMu ICBJZiB0aGUgc3RydWN0dXJlIGZpZWxkIGlzIGFsaWduZWQgYmVsb3cgdGhl IHRocmVzaG9sZCwgYQord2FybmluZyB3aWxsIGJlIGlzc3VlZC4gIEZvciBl eGFtcGxlLCB0aGUgZGVjbGFyYXRpb246CisKK0BzbWFsbGV4YW1wbGUKK3N0 cnVjdCBmb28KK0B7CisgIGludCBpMTsKKyAgaW50IGkyOworICB1bnNpZ25l ZCBsb25nIGxvbmcgeCBfX2F0dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGln bmVkKDE2KSkpOworQH07CitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRl bnQKK2NhdXNlcyB0aGUgY29tcGlsZXIgdG8gaXNzdWUgYW4gd2FybmluZyBv biBAY29kZXtzdHJ1Y3QgZm9vfSwgbGlrZQorQHNhbXB7d2FybmluZzogYWxp Z25tZW50IDggb2YgJ3N0cnVjdCBmb28nIGlzIGxlc3MgdGhhbiAxNn0uCitU aGUgY29tcGlsZXIgYWxzbyBpc3N1ZXMgYSB3YXJuaW5nLCBsaWtlIEBzYW1w e3dhcm5pbmc6ICd4JyBvZmZzZXQKKzggaW4gJ3N0cnVjdCBmb28nIGlzbid0 IGFsaWduZWQgdG8gMTZ9LCB3aGVuIHRoZSBzdHJ1Y3R1cmUgZmllbGQgaGFz Cit0aGUgbWlzYWxpZ25lZCBvZmZzZXQ6CisKK0BzbWFsbGV4YW1wbGUKK3N0 cnVjdCBmb28KK0B7CisgIGludCBpMTsKKyAgaW50IGkyOworICB1bnNpZ25l ZCBsb25nIGxvbmcgeCBfX2F0dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGln bmVkKDE2KSkpOworQH0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsK K0BlbmQgc21hbGxleGFtcGxlCisKK1RoaXMgd2FybmluZyBjYW4gYmUgZGlz YWJsZWQgYnkgQG9wdGlvbnstV25vLWlmLW5vdC1hbGlnbmVkfS4KK1RoZSBA Y29kZXt3YXJuX2lmX25vdF9hbGlnbmVkfSBhdHRyaWJ1dGUgY2FuIGFsc28g YmUgdXNlZCBmb3IgdHlwZXMKKyhAcHhyZWZ7Q29tbW9uIFR5cGUgQXR0cmli dXRlc30uKQorCiBAaXRlbSBjbGVhbnVwIChAdmFye2NsZWFudXBfZnVuY3Rp b259KQogQGNpbmRleCBAY29kZXtjbGVhbnVwfSB2YXJpYWJsZSBhdHRyaWJ1 dGUKIFRoZSBAY29kZXtjbGVhbnVwfSBhdHRyaWJ1dGUgcnVucyBhIGZ1bmN0 aW9uIHdoZW4gdGhlIHZhcmlhYmxlIGdvZXMKQEAgLTY1NjAsNiArNjU5NSw1 OCBAQCBhbGlnbm1lbnQuICBTZWUgeW91ciBsaW5rZXIgZG9jdW1lbnRhdGlv biBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KIFRoZSBAY29kZXthbGlnbmVk fSBhdHRyaWJ1dGUgY2FuIG9ubHkgaW5jcmVhc2UgYWxpZ25tZW50LiAgQWxp Z25tZW50CiBjYW4gYmUgZGVjcmVhc2VkIGJ5IHNwZWNpZnlpbmcgdGhlIEBj b2Rle3BhY2tlZH0gYXR0cmlidXRlLiAgU2VlIGJlbG93LgogCitAY2luZGV4 IEBjb2Rle3dhcm5faWZfbm90X2FsaWduZWR9IHR5cGUgYXR0cmlidXRlCitA aXRlbSB3YXJuX2lmX25vdF9hbGlnbmVkIChAdmFye2FsaWdubWVudH0pCitU aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgYSB0aHJlc2hvbGQgZm9yIHRoZSBz dHJ1Y3R1cmUgZmllbGQsIG1lYXN1cmVkCitpbiBieXRlcy4gIElmIHRoZSBz dHJ1Y3R1cmUgZmllbGQgaXMgYWxpZ25lZCBiZWxvdyB0aGUgdGhyZXNob2xk LCBhCit3YXJuaW5nIHdpbGwgYmUgaXNzdWVkLiAgRm9yIGV4YW1wbGUsIHRo ZSBkZWNsYXJhdGlvbjoKKworQHNtYWxsZXhhbXBsZQordHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgX191NjQKKyAgIF9fYXR0cmlidXRlX18oKGFsaWdu ZWQoNCksd2Fybl9pZl9ub3RfYWxpZ25lZCg4KSkpOworCitzdHJ1Y3QgZm9v CitAeworICBpbnQgaTE7CisgIGludCBpMjsKKyAgX191NjQgeDsKK0B9Owor QGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitjYXVzZXMgdGhlIGNv bXBpbGVyIHRvIGlzc3VlIGFuIHdhcm5pbmcgb24gQGNvZGV7c3RydWN0IGZv b30sIGxpa2UKK0BzYW1we3dhcm5pbmc6IGFsaWdubWVudCA0IG9mICdzdHJ1 Y3QgZm9vJyBpcyBsZXNzIHRoYW4gOH0uCitJdCBpcyB1c2VkIHRvIGRlZmlu ZSBAY29kZXtzdHJ1Y3QgZm9vfSBpbiBzdWNoIGEgd2F5IHRoYXQKK0Bjb2Rl e3N0cnVjdCBmb299IGhhcyB0aGUgc2FtZSBsYXlvdXQgYW5kIHRoZSBzdHJ1 Y3R1cmUgZmllbGQgQGNvZGV7eH0KK2hhcyB0aGUgc2FtZSBhbGlnbm1lbnQg d2hlbiBAY29kZXtfX3U2NH0gaXMgYWxpZ25lZCBhdCBlaXRoZXIgNCBvcgor OCBieXRlcy4gIEFsaWduIEBjb2Rle3N0cnVjdCBmb299IHRvIDggYnl0ZXM6 CisKK0BzbWFsbGV4YW1wbGUKK3N0cnVjdCBmb28KK0B7CisgIGludCBpMTsK KyAgaW50IGkyOworICBfX3U2NCB4OworQH0gX19hdHRyaWJ1dGVfXygoYWxp Z25lZCg4KSkpOworQGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50Citz aWxlbmNlcyB0aGUgd2FybmluZy4gIFRoZSBjb21waWxlciBhbHNvIGlzc3Vl cyBhIHdhcm5pbmcsIGxpa2UKK0BzYW1we3dhcm5pbmc6ICd4JyBvZmZzZXQg MTIgaW4gJ3N0cnVjdCBmb28nIGlzbid0IGFsaWduZWQgdG8gOH0sCit3aGVu IHRoZSBzdHJ1Y3R1cmUgZmllbGQgaGFzIHRoZSBtaXNhbGlnbmVkIG9mZnNl dDoKKworQHNtYWxsZXhhbXBsZQorc3RydWN0IGZvbworQHsKKyAgaW50IGkx OworICBpbnQgaTI7CisgIGludCBpMzsKKyAgX191NjQgeDsKK0B9IF9fYXR0 cmlidXRlX18oKGFsaWduZWQoOCkpKTsKK0BlbmQgc21hbGxleGFtcGxlCisK K1RoaXMgd2FybmluZyBjYW4gYmUgZGlzYWJsZWQgYnkgQG9wdGlvbnstV25v LWlmLW5vdC1hbGlnbmVkfS4KKwogQGl0ZW0gYm5kX3ZhcmlhYmxlX3NpemUK IEBjaW5kZXggQGNvZGV7Ym5kX3ZhcmlhYmxlX3NpemV9IHR5cGUgYXR0cmli dXRlCiBAY2luZGV4IFBvaW50ZXIgQm91bmRzIENoZWNrZXIgYXR0cmlidXRl cwpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2Mv aW52b2tlLnRleGkKaW5kZXggYWE4NDhiYjIzNDguLjIzMDQ2ZmY4MWI3IDEw MDY0NAotLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9kb2Mv aW52b2tlLnRleGkKQEAgLTI4NCw2ICsyODQsNyBAQCBPYmplY3RpdmUtQyBh bmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCiAtV2Zvcm1hdC1zZWN1cml0 eSAgLVdmb3JtYXQtc2lnbmVkbmVzcyAgLVdmb3JtYXQtdHJ1bmNhdGlvbj1A dmFye259IEBnb2wKIC1XZm9ybWF0LXkyayAgLVdmcmFtZS1hZGRyZXNzIEBn b2wKIC1XZnJhbWUtbGFyZ2VyLXRoYW49QHZhcntsZW59ICAtV25vLWZyZWUt bm9uaGVhcC1vYmplY3QgIC1XanVtcC1taXNzZXMtaW5pdCBAZ29sCistV2lm LW5vdC1hbGlnbmVkIEBnb2wKIC1XaWdub3JlZC1xdWFsaWZpZXJzICAtV2ln bm9yZWQtYXR0cmlidXRlcyAgLVdpbmNvbXBhdGlibGUtcG9pbnRlci10eXBl cyBAZ29sCiAtV2ltcGxpY2l0ICAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoICAt V2ltcGxpY2l0LWZhbGx0aHJvdWdoPUB2YXJ7bn0gQGdvbAogLVdpbXBsaWNp dC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAgLVdpbXBsaWNpdC1pbnQgQGdvbApA QCAtMjk4LDcgKzI5OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUt QysrIERpYWxlY3RzfS4KIC1Xbm9ybWFsaXplZD1AcntbfW5vbmVAcnt8fWlk QHJ7fH1uZmNAcnt8fW5ma2NAcntdfSBAZ29sCiAtV251bGwtZGVyZWZlcmVu Y2UgIC1Xb2RyICAtV25vLW92ZXJmbG93ICAtV29wZW5tcC1zaW1kICBAZ29s CiAtV292ZXJyaWRlLWluaXQtc2lkZS1lZmZlY3RzICAtV292ZXJsZW5ndGgt c3RyaW5ncyBAZ29sCi0tV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29t cGF0ICAtV3BhZGRlZCBAZ29sCistV3BhY2tlZCAgLVdwYWNrZWQtYml0Zmll bGQtY29tcGF0IC1XcGFja2VkLW5vdC1hbGlnbmVkIC1XcGFkZGVkIEBnb2wK IC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wK IC1XcGxhY2VtZW50LW5ldyAgLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0gQGdv bAogLVdwb2ludGVyLWFyaXRoICAtV3BvaW50ZXItY29tcGFyZSAgLVduby1w b2ludGVyLXRvLWludC1jYXN0IEBnb2wKQEAgLTQ0MjcsNiArNDQyOCwxMyBA QCBzd2l0Y2ggKGNvbmQpCiAKIFRoZSBAb3B0aW9uey1XaW1wbGljaXQtZmFs bHRocm91Z2g9M30gd2FybmluZyBpcyBlbmFibGVkIGJ5IEBvcHRpb257LVdl eHRyYX0uCiAKK0BpdGVtIC1XaWYtbm90LWFsaWduZWQgQHJ7KEMsIEMrKywg T2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgb25seSl9CitAb3BpbmRl eCBXaWYtbm90LWFsaWduZWQKK0BvcGluZGV4IFduby1pZi1ub3QtYWxpZ25l ZAorQ29udHJvbCBpZiB3YXJuaW5nIHRyaWdnZXJlZCBieSB0aGUgQGNvZGV7 d2Fybl9pZl9ub3RfYWxpZ25lZH0gYXR0cmlidXRlCitzaG91bGQgYmUgaXNz dWVkLiAgVGhpcyBpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCitVc2UgQG9w dGlvbnstV25vLWlmLW5vdC1hbGlnbmVkfSB0byBkaXNhYmxlIGl0LgorCiBA aXRlbSAtV2lnbm9yZWQtcXVhbGlmaWVycyBAcnsoQyBhbmQgQysrIG9ubHkp fQogQG9waW5kZXggV2lnbm9yZWQtcXVhbGlmaWVycwogQG9waW5kZXggV25v LWlnbm9yZWQtcXVhbGlmaWVycwpAQCAtNjUyMCw2ICs2NTI4LDI1IEBAIHN0 cnVjdCBmb28KIFRoaXMgd2FybmluZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQu ICBVc2UKIEBvcHRpb257LVduby1wYWNrZWQtYml0ZmllbGQtY29tcGF0fSB0 byBkaXNhYmxlIHRoaXMgd2FybmluZy4KIAorQGl0ZW0gLVdwYWNrZWQtbm90 LWFsaWduZWQgQHJ7KEMsIEMrKywgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2 ZS1DKysgb25seSl9CitAb3BpbmRleCBXcGFja2VkLW5vdC1hbGlnbmVkCitA b3BpbmRleCBXbm8tcGFja2VkLW5vdC1hbGlnbmVkCitXYXJuIGlmIGEgc3Ry dWN0dXJlIGZpZWxkIHdpdGggZXhwbGljaXRseSBzcGVjaWZpZWQgYWxpZ25t ZW50IGluIGEKK3BhY2tlZCBzdHJ1Y3Qgb3IgdW5pb24gaXMgbWlzYWxpZ25l ZC4gIEZvciBleGFtcGxlLCBhIHdhcm5pbmcgd2lsbAorYmUgaXNzdWVkIG9u IEBjb2Rle3N0cnVjdCBTfSwgbGlrZSwgQGNvZGV7d2FybmluZzogYWxpZ25t ZW50IDEgb2YKKydzdHJ1Y3QgUycgaXMgbGVzcyB0aGFuIDh9LCBpbiB0aGlz IGNvZGU6CisKK0BzbWFsbGV4YW1wbGUKK0Bncm91cAorc3RydWN0IF9fYXR0 cmlidXRlX18gKChhbGlnbmVkICg4KSkpIFM4IEB7IGNoYXIgYVs4XTsgQH07 CitzdHJ1Y3QgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIFMgQHsKKyAgc3Ry dWN0IFM4IHM4OworQH07CitAZW5kIGdyb3VwCitAZW5kIHNtYWxsZXhhbXBs ZQorCitUaGlzIHdhcm5pbmcgaXMgZW5hYmxlZCBieSBAb3B0aW9uey1XYWxs fS4KKwogQGl0ZW0gLVdwYWRkZWQKIEBvcGluZGV4IFdwYWRkZWQKIEBvcGlu ZGV4IFduby1wYWRkZWQKZGlmZiAtLWdpdCBhL2djYy9wcmludC10cmVlLmMg Yi9nY2MvcHJpbnQtdHJlZS5jCmluZGV4IDZhMjM3Y2MxMjUzLi44YmI2MjMw ODc3NSAxMDA2NDQKLS0tIGEvZ2NjL3ByaW50LXRyZWUuYworKysgYi9nY2Mv cHJpbnQtdHJlZS5jCkBAIC00NTgsNyArNDU4LDggQEAgcHJpbnRfbm9kZSAo RklMRSAqZmlsZSwgY29uc3QgY2hhciAqcHJlZml4LCB0cmVlIG5vZGUsIGlu dCBpbmRlbnQsCiAJICBpZiAoREVDTF9VU0VSX0FMSUdOIChub2RlKSkKIAkg ICAgZnByaW50ZiAoZmlsZSwgIiB1c2VyIik7CiAKLQkgIGZwcmludGYgKGZp bGUsICIgYWxpZ24gJWQiLCBERUNMX0FMSUdOIChub2RlKSk7CisJICBmcHJp bnRmIChmaWxlLCAiIGFsaWduICVkIHdhcm5faWZfbm90X2FsaWduICVkIiwK KwkJICAgREVDTF9BTElHTiAobm9kZSksIERFQ0xfV0FSTl9JRl9OT1RfQUxJ R04gKG5vZGUpKTsKIAkgIGlmIChjb2RlID09IEZJRUxEX0RFQ0wpCiAJICAg IGZwcmludGYgKGZpbGUsICIgb2Zmc2V0X2FsaWduICIgSE9TVF9XSURFX0lO VF9QUklOVF9VTlNJR05FRCwKIAkJICAgICBERUNMX09GRlNFVF9BTElHTiAo bm9kZSkpOwpAQCAtNjAzLDggKzYwNCwxMCBAQCBwcmludF9ub2RlIChGSUxF ICpmaWxlLCBjb25zdCBjaGFyICpwcmVmaXgsIHRyZWUgbm9kZSwgaW50IGlu ZGVudCwKICAgICAgIGlmIChUWVBFX1VTRVJfQUxJR04gKG5vZGUpKQogCWZw cmludGYgKGZpbGUsICIgdXNlciIpOwogCi0gICAgICBmcHJpbnRmIChmaWxl LCAiIGFsaWduICVkIHN5bXRhYiAlZCBhbGlhcyBzZXQgIiBIT1NUX1dJREVf SU5UX1BSSU5UX0RFQywKLQkgICAgICAgVFlQRV9BTElHTiAobm9kZSksIFRZ UEVfU1lNVEFCX0FERFJFU1MgKG5vZGUpLAorICAgICAgZnByaW50ZiAoZmls ZSwgIiBhbGlnbiAlZCB3YXJuX2lmX25vdF9hbGlnbiAlZCBzeW10YWIgJWQg YWxpYXMgc2V0ICIKKwkgICAgICAgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMs CisJICAgICAgIFRZUEVfQUxJR04gKG5vZGUpLCBUWVBFX1dBUk5fSUZfTk9U X0FMSUdOIChub2RlKSwKKwkgICAgICAgVFlQRV9TWU1UQUJfQUREUkVTUyAo bm9kZSksCiAJICAgICAgIChIT1NUX1dJREVfSU5UKSBUWVBFX0FMSUFTX1NF VCAobm9kZSkpOwogCiAgICAgICBpZiAoVFlQRV9TVFJVQ1RVUkFMX0VRVUFM SVRZX1AgKG5vZGUpKQpkaWZmIC0tZ2l0IGEvZ2NjL3N0b3ItbGF5b3V0LmMg Yi9nY2Mvc3Rvci1sYXlvdXQuYwppbmRleCAxNTc0ZTQzODNlOC4uNTRlZGI1 YzllZjQgMTAwNjQ0Ci0tLSBhL2djYy9zdG9yLWxheW91dC5jCisrKyBiL2dj Yy9zdG9yLWxheW91dC5jCkBAIC01NzAsNiArNTcwLDggQEAgZG9fdHlwZV9h bGlnbiAodHJlZSB0eXBlLCB0cmVlIGRlY2wpCiAgICAgICBpZiAoVFJFRV9D T0RFIChkZWNsKSA9PSBGSUVMRF9ERUNMKQogCURFQ0xfVVNFUl9BTElHTiAo ZGVjbCkgPSBUWVBFX1VTRVJfQUxJR04gKHR5cGUpOwogICAgIH0KKyAgaWYg KFRZUEVfV0FSTl9JRl9OT1RfQUxJR04gKHR5cGUpID4gREVDTF9XQVJOX0lG X05PVF9BTElHTiAoZGVjbCkpCisgICAgU0VUX0RFQ0xfV0FSTl9JRl9OT1Rf QUxJR04gKGRlY2wsIFRZUEVfV0FSTl9JRl9OT1RfQUxJR04gKHR5cGUpKTsK IH0KIAogLyogU2V0IHRoZSBzaXplLCBtb2RlIGFuZCBhbGlnbm1lbnQgb2Yg YSAuLi5fREVDTCBub2RlLgpAQCAtMTA3NCw2ICsxMDc2LDU3IEBAIHVwZGF0 ZV9hbGlnbm1lbnRfZm9yX2ZpZWxkIChyZWNvcmRfbGF5b3V0X2luZm8gcmxp LCB0cmVlIGZpZWxkLAogICByZXR1cm4gZGVzaXJlZF9hbGlnbjsKIH0KIAor LyogSXNzdWUgYSB3YXJuaW5nIGlmIHRoZSByZWNvcmQgYWxpZ25tZW50LCBS RUNPUkRfQUxJR04sIGlzIGxlc3MgdGhhbgorICAgdGhlIGZpZWxkIGFsaWdu bWVudCBvZiBGSUVMRCBvciBGSUVMRCBpc24ndCBhbGlnbmVkLiAqLworCitz dGF0aWMgdm9pZAoraGFuZGxlX3dhcm5faWZfbm90X2FsaWduICh0cmVlIGZp ZWxkLCB1bnNpZ25lZCBpbnQgcmVjb3JkX2FsaWduKQoreworICB0cmVlIHR5 cGUgPSBUUkVFX1RZUEUgKGZpZWxkKTsKKworICBpZiAodHlwZSA9PSBlcnJv cl9tYXJrX25vZGUpCisgICAgcmV0dXJuOworCisgIHVuc2lnbmVkIGludCB3 YXJuX2lmX25vdF9hbGlnbiA9IDA7CisKKyAgaW50IG9wdF93ID0gMDsKKwor ICBpZiAod2Fybl9pZl9ub3RfYWxpZ25lZCkKKyAgICB7CisgICAgICB3YXJu X2lmX25vdF9hbGlnbiA9IERFQ0xfV0FSTl9JRl9OT1RfQUxJR04gKGZpZWxk KTsKKyAgICAgIGlmICghd2Fybl9pZl9ub3RfYWxpZ24pCisJd2Fybl9pZl9u b3RfYWxpZ24gPSBUWVBFX1dBUk5fSUZfTk9UX0FMSUdOICh0eXBlKTsKKyAg ICAgIGlmICh3YXJuX2lmX25vdF9hbGlnbikKKwlvcHRfdyA9IE9QVF9XaWZf bm90X2FsaWduZWQ7CisgICAgfQorCisgIGlmICghd2Fybl9pZl9ub3RfYWxp Z24KKyAgICAgICYmIHdhcm5fcGFja2VkX25vdF9hbGlnbmVkCisgICAgICAm JiBUWVBFX1VTRVJfQUxJR04gKHR5cGUpKQorICAgIHsKKyAgICAgIHdhcm5f aWZfbm90X2FsaWduID0gVFlQRV9BTElHTiAodHlwZSk7CisgICAgICBvcHRf dyA9IE9QVF9XcGFja2VkX25vdF9hbGlnbmVkOworICAgIH0KKworICBpZiAo IXdhcm5faWZfbm90X2FsaWduKQorICAgIHJldHVybjsKKworICB0cmVlIGNv bnRleHQgPSBERUNMX0NPTlRFWFQgKGZpZWxkKTsKKworICB3YXJuX2lmX25v dF9hbGlnbiAvPSBCSVRTX1BFUl9VTklUOworICByZWNvcmRfYWxpZ24gLz0g QklUU19QRVJfVU5JVDsKKyAgaWYgKChyZWNvcmRfYWxpZ24gJSB3YXJuX2lm X25vdF9hbGlnbikgIT0gMCkKKyAgICB3YXJuaW5nIChvcHRfdywgImFsaWdu bWVudCAldSBvZiAlcVQgaXMgbGVzcyB0aGFuICV1IiwKKwkgICAgIHJlY29y ZF9hbGlnbiwgY29udGV4dCwgd2Fybl9pZl9ub3RfYWxpZ24pOworCisgIHVu c2lnbmVkIEhPU1RfV0lERV9JTlQgb2ZmCisgICAgPSAodHJlZV90b191aHdp IChERUNMX0ZJRUxEX09GRlNFVCAoZmllbGQpKQorICAgICAgICsgdHJlZV90 b191aHdpIChERUNMX0ZJRUxEX0JJVF9PRkZTRVQgKGZpZWxkKSkgLyBCSVRT X1BFUl9VTklUKTsKKyAgaWYgKChvZmYgJSB3YXJuX2lmX25vdF9hbGlnbikg IT0gMCkKKyAgICB3YXJuaW5nIChvcHRfdywgIiVxK0Qgb2Zmc2V0ICV3dSBp biAlcVQgaXNuJ3QgYWxpZ25lZCB0byAldSIsCisJICAgICBmaWVsZCwgb2Zm LCBjb250ZXh0LCB3YXJuX2lmX25vdF9hbGlnbik7Cit9CisKIC8qIENhbGxl ZCBmcm9tIHBsYWNlX2ZpZWxkIHRvIGhhbmRsZSB1bmlvbnMuICAqLwogCiBz dGF0aWMgdm9pZApAQCAtMTA4NCw2ICsxMTM3LDcgQEAgcGxhY2VfdW5pb25f ZmllbGQgKHJlY29yZF9sYXlvdXRfaW5mbyBybGksIHRyZWUgZmllbGQpCiAg IERFQ0xfRklFTERfT0ZGU0VUIChmaWVsZCkgPSBzaXplX3plcm9fbm9kZTsK ICAgREVDTF9GSUVMRF9CSVRfT0ZGU0VUIChmaWVsZCkgPSBiaXRzaXplX3pl cm9fbm9kZTsKICAgU0VUX0RFQ0xfT0ZGU0VUX0FMSUdOIChmaWVsZCwgQklH R0VTVF9BTElHTk1FTlQpOworICBoYW5kbGVfd2Fybl9pZl9ub3RfYWxpZ24g KGZpZWxkLCBybGktPnJlY29yZF9hbGlnbik7CiAKICAgLyogSWYgdGhpcyBp cyBhbiBFUlJPUl9NQVJLIHJldHVybiAqYWZ0ZXIqIGhhdmluZyBzZXQgdGhl CiAgICAgIGZpZWxkIGF0IHRoZSBzdGFydCBvZiB0aGUgdW5pb24uIFRoaXMg aGVscHMgd2hlbiBwYXJzaW5nCkBAIC0xMTY5LDYgKzEyMjMsNyBAQCBwbGFj ZV9maWVsZCAocmVjb3JkX2xheW91dF9pbmZvIHJsaSwgdHJlZSBmaWVsZCkK ICAgICAgIERFQ0xfRklFTERfT0ZGU0VUIChmaWVsZCkgPSBybGktPm9mZnNl dDsKICAgICAgIERFQ0xfRklFTERfQklUX09GRlNFVCAoZmllbGQpID0gcmxp LT5iaXRwb3M7CiAgICAgICBTRVRfREVDTF9PRkZTRVRfQUxJR04gKGZpZWxk LCBybGktPm9mZnNldF9hbGlnbik7CisgICAgICBoYW5kbGVfd2Fybl9pZl9u b3RfYWxpZ24gKGZpZWxkLCBybGktPnJlY29yZF9hbGlnbik7CiAgICAgICBy ZXR1cm47CiAgICAgfQogCkBAIC0xMjkwLDYgKzEzNDUsOSBAQCBwbGFjZV9m aWVsZCAocmVjb3JkX2xheW91dF9pbmZvIHJsaSwgdHJlZSBmaWVsZCkKIAog ICAgICAgaWYgKCEgREVDTF9QQUNLRUQgKGZpZWxkKSkKIAlUWVBFX1VTRVJf QUxJR04gKHJsaS0+dCkgfD0gVFlQRV9VU0VSX0FMSUdOICh0eXBlKTsKKwor ICAgICAgU0VUX1RZUEVfV0FSTl9JRl9OT1RfQUxJR04gKHJsaS0+dCwKKwkJ CQkgIFRZUEVfV0FSTl9JRl9OT1RfQUxJR04gKHR5cGUpKTsKICAgICB9CiAK ICNpZmRlZiBCSVRGSUVMRF9OQllURVNfTElNSVRFRApAQCAtMTMyOCw2ICsx Mzg2LDggQEAgcGxhY2VfZmllbGQgKHJlY29yZF9sYXlvdXRfaW5mbyBybGks IHRyZWUgZmllbGQpCiAJcmxpLT5iaXRwb3MgPSByb3VuZF91cCAocmxpLT5i aXRwb3MsIHR5cGVfYWxpZ24pOwogCiAgICAgICBUWVBFX1VTRVJfQUxJR04g KHJsaS0+dCkgfD0gVFlQRV9VU0VSX0FMSUdOICh0eXBlKTsKKyAgICAgIFNF VF9UWVBFX1dBUk5fSUZfTk9UX0FMSUdOIChybGktPnQsCisJCQkJICBUWVBF X1dBUk5fSUZfTk9UX0FMSUdOICh0eXBlKSk7CiAgICAgfQogI2VuZGlmCiAK QEAgLTE0NzgsNiArMTUzOCw3IEBAIHBsYWNlX2ZpZWxkIChyZWNvcmRfbGF5 b3V0X2luZm8gcmxpLCB0cmVlIGZpZWxkKQogICBERUNMX0ZJRUxEX09GRlNF VCAoZmllbGQpID0gcmxpLT5vZmZzZXQ7CiAgIERFQ0xfRklFTERfQklUX09G RlNFVCAoZmllbGQpID0gcmxpLT5iaXRwb3M7CiAgIFNFVF9ERUNMX09GRlNF VF9BTElHTiAoZmllbGQsIHJsaS0+b2Zmc2V0X2FsaWduKTsKKyAgaGFuZGxl X3dhcm5faWZfbm90X2FsaWduIChmaWVsZCwgcmxpLT5yZWNvcmRfYWxpZ24p OwogCiAgIC8qIEV2YWx1YXRlIG5vbmNvbnN0YW50IG9mZnNldHMgb25seSBv bmNlLCBlaXRoZXIgbm93IG9yIGFzIHNvb24gYXMgc2FmZS4gICovCiAgIGlm IChUUkVFX0NPREUgKERFQ0xfRklFTERfT0ZGU0VUIChmaWVsZCkpICE9IElO VEVHRVJfQ1NUKQpAQCAtMjA4OCw2ICsyMTQ5LDggQEAgZmluaXNoX2J1aWx0 aW5fc3RydWN0ICh0cmVlIHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRyZWUg ZmllbGRzLAogICAgIHsKICAgICAgIFNFVF9UWVBFX0FMSUdOICh0eXBlLCBU WVBFX0FMSUdOIChhbGlnbl90eXBlKSk7CiAgICAgICBUWVBFX1VTRVJfQUxJ R04gKHR5cGUpID0gVFlQRV9VU0VSX0FMSUdOIChhbGlnbl90eXBlKTsKKyAg ICAgIFNFVF9UWVBFX1dBUk5fSUZfTk9UX0FMSUdOICh0eXBlLAorCQkJCSAg VFlQRV9XQVJOX0lGX05PVF9BTElHTiAoYWxpZ25fdHlwZSkpOwogICAgIH0K IAogICBsYXlvdXRfdHlwZSAodHlwZSk7CkBAIC0yMzI0LDYgKzIzODcsOSBA QCBsYXlvdXRfdHlwZSAodHJlZSB0eXBlKQogCSAgYWxpZ24gPSBNQVggKGFs aWduLCBUWVBFX0FMSUdOICh0eXBlKSk7CiAJZWxzZQogCSAgVFlQRV9VU0VS X0FMSUdOICh0eXBlKSA9IFRZUEVfVVNFUl9BTElHTiAoZWxlbWVudCk7CisJ aWYgKCFUWVBFX1dBUk5fSUZfTk9UX0FMSUdOICh0eXBlKSkKKwkgIFNFVF9U WVBFX1dBUk5fSUZfTk9UX0FMSUdOICh0eXBlLAorCQkJCSAgICAgIFRZUEVf V0FSTl9JRl9OT1RfQUxJR04gKGVsZW1lbnQpKTsKICNpZmRlZiBST1VORF9U WVBFX0FMSUdOCiAJYWxpZ24gPSBST1VORF9UWVBFX0FMSUdOICh0eXBlLCBh bGlnbiwgQklUU19QRVJfVU5JVCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MzAzNy01LmMgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9wcjUzMDM3LTUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTdkNTRiMTlhY2YKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUz MDM3LTUuYwpAQCAtMCwwICsxLDgxIEBACisvKiBQUiBjLzUzMDM3LiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MCAtV25vLWlmLW5vdC1hbGlnbmVkIiB9ICovCisKK3R5cGVkZWYgdW5zaWdu ZWQgbG9uZyBsb25nIF9fdTY0CisgIF9fYXR0cmlidXRlX18oKGFsaWduZWQo NCksd2Fybl9pZl9ub3RfYWxpZ25lZCg4KSkpOworCitzdHJ1Y3QgZm9vMQor eworICBpbnQgaTE7CisgIGludCBpMjsKKyAgaW50IGkzOworICBfX3U2NCB4 OworfTsKKworc3RydWN0IGZvbzIKK3sKKyAgaW50IGkxOworICBpbnQgaTI7 CisgIGludCBpMzsKKyAgX191NjQgeDsKK30gX19hdHRyaWJ1dGVfXygoYWxp Z25lZCg4KSkpOworCitzdHJ1Y3QgZm9vMworeworICBpbnQgaTE7CisgIGlu dCBpMzsKKyAgX191NjQgeDsKK307CisKK3N0cnVjdCBmb280Cit7CisgIGlu dCBpMTsKKyAgaW50IGkyOworICBfX3U2NCB4OworfSBfX2F0dHJpYnV0ZV9f KChhbGlnbmVkKDgpKSk7CisKK3N0cnVjdCBmb281Cit7CisgIGludCBpMTsK KyAgaW50IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCgx NikpKTsKK307CisKK3N0cnVjdCBmb282Cit7CisgIGludCBpMTsKKyAgaW50 IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCgxNikpKTsg Cit9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSk7CisKK3N0cnVjdCBm b283Cit7CisgIGludCBpMTsKKyAgaW50IGkyOworICBpbnQgaTM7CisgIGlu dCBpNDsKKyAgaW50IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxp Z25lZCgxNikpKTsKK30gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsK KwordW5pb24gYmFyMQoreworICBpbnQgaTE7CisgIF9fdTY0IHg7Cit9Owor Cit1bmlvbiBiYXIyCit7CisgIGludCBpMTsKKyAgX191NjQgeDsKK30gX19h dHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOworCit1bmlvbiBiYXIzCit7Cisg IGludCBpMTsKKyAgaW50IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3Rf YWxpZ25lZCgxNikpKTsgCit9OworCit1bmlvbiBiYXI0Cit7CisgIGludCBp MTsKKyAgaW50IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25l ZCgxNikpKTsKK30gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3ByNTMwMzctMS5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI1MzAzNy0xLkMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzZDhmOTliNTRlCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI1MzAzNy0x LkMKQEAgLTAsMCArMSw4MSBAQAorLyogUFIgYy81MzAzNy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzAiIH0g Ki8KKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQKKyAgX19h dHRyaWJ1dGVfXygoYWxpZ25lZCg0KSx3YXJuX2lmX25vdF9hbGlnbmVkKDgp KSk7CisKK3N0cnVjdCBmb28xIC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50 IDQgb2YgJ2ZvbzEnIGlzIGxlc3MgdGhhbiA4IiB9ICovCit7CisgIGludCBp MTsKKyAgaW50IGkyOworICBpbnQgaTM7CisgIF9fdTY0IHg7IC8qIHsgZGct d2FybmluZyAiJ2ZvbzE6OngnIG9mZnNldCAxMiBpbiAnZm9vMScgaXNuJ3Qg YWxpZ25lZCB0byA4IiB9ICovCit9OworCitzdHJ1Y3QgZm9vMgoreworICBp bnQgaTE7CisgIGludCBpMjsKKyAgaW50IGkzOworICBfX3U2NCB4OyAvKiB7 IGRnLXdhcm5pbmcgIidmb28yOjp4JyBvZmZzZXQgMTIgaW4gJ2ZvbzInIGlz bid0IGFsaWduZWQgdG8gOCIgfSAqLworfSBfX2F0dHJpYnV0ZV9fKChhbGln bmVkKDgpKSk7CisKK3N0cnVjdCBmb28zIC8qIHsgZGctd2FybmluZyAiYWxp Z25tZW50IDQgb2YgJ2ZvbzMnIGlzIGxlc3MgdGhhbiA4IiB9ICovCit7Cisg IGludCBpMTsKKyAgaW50IGkzOworICBfX3U2NCB4OworfTsKKworc3RydWN0 IGZvbzQKK3sKKyAgaW50IGkxOworICBpbnQgaTI7CisgIF9fdTY0IHg7Cit9 IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKworc3RydWN0IGZvbzUg LyogeyBkZy13YXJuaW5nICJhbGlnbm1lbnQgNCBvZiAnZm9vNScgaXMgbGVz cyB0aGFuIDE2IiB9ICovCit7CisgIGludCBpMTsKKyAgaW50IHggX19hdHRy aWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCgxNikpKTsgLyogeyBkZy13 YXJuaW5nICInZm9vNTo6eCcgb2Zmc2V0IDQgaW4gJ2ZvbzUnIGlzbid0IGFs aWduZWQgdG8gMTYiIH0gKi8KK307CisKK3N0cnVjdCBmb282Cit7CisgIGlu dCBpMTsKKyAgaW50IHggX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxp Z25lZCgxNikpKTsgLyogeyBkZy13YXJuaW5nICInZm9vNjo6eCcgb2Zmc2V0 IDQgaW4gJ2ZvbzYnIGlzbid0IGFsaWduZWQgdG8gMTYiIH0gKi8KK30gX19h dHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsKKworc3RydWN0IGZvbzcKK3sK KyAgaW50IGkxOworICBpbnQgaTI7CisgIGludCBpMzsKKyAgaW50IGk0Owor ICBpbnQgeCBfX2F0dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKDE2 KSkpOworfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOworCit1bmlv biBiYXIxIC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50IDQgb2YgJ2JhcjEn IGlzIGxlc3MgdGhhbiA4IiB9ICovCit7CisgIGludCBpMTsKKyAgX191NjQg eDsKK307CisKK3VuaW9uIGJhcjIKK3sKKyAgaW50IGkxOworICBfX3U2NCB4 OworfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CisKK3VuaW9uIGJh cjMgLyogeyBkZy13YXJuaW5nICJhbGlnbm1lbnQgNCBvZiAnYmFyMycgaXMg bGVzcyB0aGFuIDE2IiB9ICovCit7CisgIGludCBpMTsKKyAgaW50IHggX19h dHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCgxNikpKTsgCit9Owor Cit1bmlvbiBiYXI0Cit7CisgIGludCBpMTsKKyAgaW50IHggX19hdHRyaWJ1 dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCgxNikpKTsKK30gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZCgxNikpKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZysrLmRnL3ByNTMwMzctMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv cHI1MzAzNy0yLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmU2MTdmOTA1MWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvcHI1MzAzNy0yLkMKQEAgLTAsMCArMSwzNyBAQAor LyogUFIgYy81MzAzNy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzAgLVdwYWNrZWQtbm90LWFsaWduZWQiIH0g Ki8KKworc3RydWN0IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpIFM4 IHsgY2hhciBhWzhdOyB9Oworc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKSBTMSB7IC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50IDEgb2YgJ1Mx JyBpcyBsZXNzIHRoYW4gOCIgfSAqLworICBzdHJ1Y3QgUzggczg7Cit9Owor CitzdHJ1Y3QgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoOCkp KSBTMiB7CisgIHN0cnVjdCBTOCBzODsKK307CisKK3N0cnVjdCBfX2F0dHJp YnV0ZV9fICgocGFja2VkLCBhbGlnbmVkICg4KSkpIFMzIHsKKyAgaW50IGkx OworICBzdHJ1Y3QgUzggczg7IC8qIHsgZGctd2FybmluZyAiJ1MzOjpzOCcg b2Zmc2V0IDQgaW4gJ1MzJyBpc24ndCBhbGlnbmVkIHRvIDgiIH0gKi8KK307 CisKK3N0cnVjdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVkICg4 KSkpIFM0IHsKKyAgaW50IGkxOworICBpbnQgaTI7CisgIHN0cnVjdCBTOCBz ODsKK307CisKK3N0cnVjdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgUzUg eworICAgbG9uZyBsb25nIGxsOworfTsKKwordW5pb24gX19hdHRyaWJ1dGVf XyAoKHBhY2tlZCkpIFUxIHsgLyogeyBkZy13YXJuaW5nICJhbGlnbm1lbnQg MSBvZiAnVTEnIGlzIGxlc3MgdGhhbiA4IiB9ICovCisgIGludCBpMTsKKyAg c3RydWN0IFM4IHM4OworfTsKKwordW5pb24gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCwgYWxpZ25lZCAoOCkpKSBVMiB7CisgIGludCBpMTsKKyAgc3RydWN0 IFM4IHM4OworfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L3ByNTMwMzctMy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI1MzAzNy0z LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFl ZDYzNTRmNjc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvcHI1MzAzNy0zLkMKQEAgLTAsMCArMSwzNyBAQAorLyogUFIgYy81 MzAzNy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItTzAgLVdhbGwiIH0gKi8KKworc3RydWN0IF9fYXR0cmlidXRl X18gKChhbGlnbmVkICg4KSkpIFM4IHsgY2hhciBhWzhdOyB9Oworc3RydWN0 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBTMSB7IC8qIHsgZGctd2Fybmlu ZyAiYWxpZ25tZW50IDEgb2YgJ1MxJyBpcyBsZXNzIHRoYW4gOCIgfSAqLwor ICBzdHJ1Y3QgUzggczg7Cit9OworCitzdHJ1Y3QgX19hdHRyaWJ1dGVfXyAo KHBhY2tlZCwgYWxpZ25lZCAoOCkpKSBTMiB7CisgIHN0cnVjdCBTOCBzODsK K307CisKK3N0cnVjdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVk ICg4KSkpIFMzIHsKKyAgaW50IGkxOworICBzdHJ1Y3QgUzggczg7IC8qIHsg ZGctd2FybmluZyAiJ1MzOjpzOCcgb2Zmc2V0IDQgaW4gJ1MzJyBpc24ndCBh bGlnbmVkIHRvIDgiIH0gKi8KK307CisKK3N0cnVjdCBfX2F0dHJpYnV0ZV9f ICgocGFja2VkLCBhbGlnbmVkICg4KSkpIFM0IHsKKyAgaW50IGkxOworICBp bnQgaTI7CisgIHN0cnVjdCBTOCBzODsKK307CisKK3N0cnVjdCBfX2F0dHJp YnV0ZV9fICgocGFja2VkKSkgUzUgeworICAgbG9uZyBsb25nIGxsOworfTsK KwordW5pb24gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIFUxIHsgLyogeyBk Zy13YXJuaW5nICJhbGlnbm1lbnQgMSBvZiAnVTEnIGlzIGxlc3MgdGhhbiA4 IiB9ICovCisgIGludCBpMTsKKyAgc3RydWN0IFM4IHM4OworfTsKKwordW5p b24gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoOCkpKSBVMiB7 CisgIGludCBpMTsKKyAgc3RydWN0IFM4IHM4OworfTsKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZysrLmRnL3ByNTMwMzctNC5DIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvcHI1MzAzNy00LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjU1M2RkOWE2YzQ1Ci0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI1MzAzNy00LkMKQEAgLTAs MCArMSwyNCBAQAorLyogUFIgYy81MzAzNy4gICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzAiIH0gKi8KKworaW50 IGZvbzEgX19hdHRyaWJ1dGVfXygod2Fybl9pZl9ub3RfYWxpZ25lZCg4KSkp OyAvKiB7IGRnLWVycm9yICInd2Fybl9pZl9ub3RfYWxpZ25lZCcgbWF5IG5v dCBiZSBzcGVjaWZpZWQgZm9yICdmb28xJyIgfSAqLworCitfX2F0dHJpYnV0 ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKDgpKSkKK3ZvaWQKK2ZvbzIgKHZv aWQpIC8qIHsgZGctZXJyb3IgIid3YXJuX2lmX25vdF9hbGlnbmVkJyBtYXkg bm90IGJlIHNwZWNpZmllZCBmb3IgJ3ZvaWQgZm9vMlxcKFxcKSciIH0gKi8K K3sKK30KKworc3RydWN0IGZvbzMKK3sKKyAgaW50IGkgOiAyIF9fYXR0cmli dXRlX18oKHdhcm5faWZfbm90X2FsaWduZWQoOCkpKTsgLyogeyBkZy1lcnJv ciAiJ3dhcm5faWZfbm90X2FsaWduZWQnIG1heSBub3QgYmUgc3BlY2lmaWVk IGZvciAnaSciIH0gKi8KK307CisKK3R5cGVkZWYgdW5zaWduZWQgaW50IF9f dTMyCisgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNCksd2Fybl9pZl9ub3Rf YWxpZ25lZCg4KSkpOworCitzdHJ1Y3QgZm9vNAoreworICBfX3UzMiBpIDog MjsgLyogeyBkZy1lcnJvciAiY2Fubm90IGRlY2xhcmUgYml0LWZpZWxkICdp JyB3aXRoICd3YXJuX2lmX25vdF9hbGlnbmVkJyB0eXBlIiB9ICovCit9Owpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MzAzNy0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUzMDM3LTEuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTNhZjBhNTBjZDQKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUzMDM3 LTEuYwpAQCAtMCwwICsxLDgxIEBACisvKiBQUiBjLzUzMDM3LiAgKi8KKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMCIg fSAqLworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NAorICBf X2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpLHdhcm5faWZfbm90X2FsaWduZWQo OCkpKTsKKworc3RydWN0IGZvbzEKK3sKKyAgaW50IGkxOworICBpbnQgaTI7 CisgIGludCBpMzsKKyAgX191NjQgeDsgLyogeyBkZy13YXJuaW5nICIneCcg b2Zmc2V0IDEyIGluICdzdHJ1Y3QgZm9vMScgaXNuJ3QgYWxpZ25lZCB0byA4 IiB9ICovCit9OyAvKiB7IGRnLXdhcm5pbmcgImFsaWdubWVudCA0IG9mICdz dHJ1Y3QgZm9vMScgaXMgbGVzcyB0aGFuIDgiIH0gKi8KKworc3RydWN0IGZv bzIKK3sKKyAgaW50IGkxOworICBpbnQgaTI7CisgIGludCBpMzsKKyAgX191 NjQgeDsgLyogeyBkZy13YXJuaW5nICIneCcgb2Zmc2V0IDEyIGluICdzdHJ1 Y3QgZm9vMicgaXNuJ3QgYWxpZ25lZCB0byA4IiB9ICovCit9IF9fYXR0cmli dXRlX18oKGFsaWduZWQoOCkpKTsKKworc3RydWN0IGZvbzMKK3sKKyAgaW50 IGkxOworICBpbnQgaTM7CisgIF9fdTY0IHg7Cit9OyAvKiB7IGRnLXdhcm5p bmcgImFsaWdubWVudCA0IG9mICdzdHJ1Y3QgZm9vMycgaXMgbGVzcyB0aGFu IDgiIH0gKi8KKworc3RydWN0IGZvbzQKK3sKKyAgaW50IGkxOworICBpbnQg aTI7CisgIF9fdTY0IHg7Cit9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkp KTsKKworc3RydWN0IGZvbzUKK3sKKyAgaW50IGkxOworICBpbnQgeCBfX2F0 dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKDE2KSkpOyAvKiB7IGRn LXdhcm5pbmcgIid4JyBvZmZzZXQgNCBpbiAnc3RydWN0IGZvbzUnIGlzbid0 IGFsaWduZWQgdG8gMTYiIH0gKi8KK307IC8qIHsgZGctd2FybmluZyAiYWxp Z25tZW50IDQgb2YgJ3N0cnVjdCBmb281JyBpcyBsZXNzIHRoYW4gMTYiIH0g Ki8KKworc3RydWN0IGZvbzYKK3sKKyAgaW50IGkxOworICBpbnQgeCBfX2F0 dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKDE2KSkpOyAvKiB7IGRn LXdhcm5pbmcgIid4JyBvZmZzZXQgNCBpbiAnc3RydWN0IGZvbzYnIGlzbid0 IGFsaWduZWQgdG8gMTYiIH0gKi8KK30gX19hdHRyaWJ1dGVfXygoYWxpZ25l ZCgxNikpKTsKKworc3RydWN0IGZvbzcKK3sKKyAgaW50IGkxOworICBpbnQg aTI7CisgIGludCBpMzsKKyAgaW50IGk0OworICBpbnQgeCBfX2F0dHJpYnV0 ZV9fKCh3YXJuX2lmX25vdF9hbGlnbmVkKDE2KSkpOworfSBfX2F0dHJpYnV0 ZV9fKChhbGlnbmVkKDE2KSkpOworCit1bmlvbiBiYXIxCit7CisgIGludCBp MTsKKyAgX191NjQgeDsKK307IC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50 IDQgb2YgJ3VuaW9uIGJhcjEnIGlzIGxlc3MgdGhhbiA4IiB9ICovCisKK3Vu aW9uIGJhcjIKK3sKKyAgaW50IGkxOworICBfX3U2NCB4OworfSBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDgpKSk7CisKK3VuaW9uIGJhcjMKK3sKKyAgaW50 IGkxOworICBpbnQgeCBfX2F0dHJpYnV0ZV9fKCh3YXJuX2lmX25vdF9hbGln bmVkKDE2KSkpOyAKK307IC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50IDQg b2YgJ3VuaW9uIGJhcjMnIGlzIGxlc3MgdGhhbiAxNiIgfSAqLworCit1bmlv biBiYXI0Cit7CisgIGludCBpMTsKKyAgaW50IHggX19hdHRyaWJ1dGVfXygo d2Fybl9pZl9ub3RfYWxpZ25lZCgxNikpKTsKK30gX19hdHRyaWJ1dGVfXygo YWxpZ25lZCgxNikpKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ByNTMwMzctMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MzAz Ny0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmY5OTM0YTYzZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MzAzNy0yLmMKQEAgLTAsMCArMSwzNyBAQAorLyogUFIg Yy81MzAzNy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTzAgLVdwYWNrZWQtbm90LWFsaWduZWQiIH0gKi8KKwor c3RydWN0IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpIFM4IHsgY2hh ciBhWzhdOyB9Oworc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBT MSB7CisgIHN0cnVjdCBTOCBzODsKK307IC8qIHsgZGctd2FybmluZyAiYWxp Z25tZW50IDEgb2YgJ3N0cnVjdCBTMScgaXMgbGVzcyB0aGFuIDgiIH0gKi8K Kworc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQgKDgp KSkgUzIgeworICBzdHJ1Y3QgUzggczg7Cit9OworCitzdHJ1Y3QgX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoOCkpKSBTMyB7CisgIGludCBp MTsKKyAgc3RydWN0IFM4IHM4OyAvKiB7IGRnLXdhcm5pbmcgIidzOCcgb2Zm c2V0IDQgaW4gJ3N0cnVjdCBTMycgaXNuJ3QgYWxpZ25lZCB0byA4IiB9ICov Cit9OworCitzdHJ1Y3QgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25l ZCAoOCkpKSBTNCB7CisgIGludCBpMTsKKyAgaW50IGkyOworICBzdHJ1Y3Qg Uzggczg7Cit9OworCitzdHJ1Y3QgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp IFM1IHsKKyAgIGxvbmcgbG9uZyBsbDsKK307CisKK3VuaW9uIF9fYXR0cmli dXRlX18gKChwYWNrZWQpKSBVMSB7CisgIGludCBpMTsKKyAgc3RydWN0IFM4 IHM4OworfTsgLyogeyBkZy13YXJuaW5nICJhbGlnbm1lbnQgMSBvZiAndW5p b24gVTEnIGlzIGxlc3MgdGhhbiA4IiB9ICovCisKK3VuaW9uIF9fYXR0cmli dXRlX18gKChwYWNrZWQsIGFsaWduZWQgKDgpKSkgVTIgeworICBpbnQgaTE7 CisgIHN0cnVjdCBTOCBzODsKK307CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy5kZy9wcjUzMDM3LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ByNTMwMzctMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mYzY5YWU4ZTUyZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByNTMwMzctMy5jCkBAIC0wLDAgKzEsMzcgQEAK Ky8qIFBSIGMvNTMwMzcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8wIC1XYWxsIiB9ICovCisKK3N0cnVjdCBf X2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKSBTOCB7IGNoYXIgYVs4XTsg fTsKK3N0cnVjdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgUzEgeworICBz dHJ1Y3QgUzggczg7Cit9OyAvKiB7IGRnLXdhcm5pbmcgImFsaWdubWVudCAx IG9mICdzdHJ1Y3QgUzEnIGlzIGxlc3MgdGhhbiA4IiB9ICovCisKK3N0cnVj dCBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVkICg4KSkpIFMyIHsK KyAgc3RydWN0IFM4IHM4OworfTsKKworc3RydWN0IF9fYXR0cmlidXRlX18g KChwYWNrZWQsIGFsaWduZWQgKDgpKSkgUzMgeworICBpbnQgaTE7CisgIHN0 cnVjdCBTOCBzODsgLyogeyBkZy13YXJuaW5nICInczgnIG9mZnNldCA0IGlu ICdzdHJ1Y3QgUzMnIGlzbid0IGFsaWduZWQgdG8gOCIgfSAqLworfTsKKwor c3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQgKDgpKSkg UzQgeworICBpbnQgaTE7CisgIGludCBpMjsKKyAgc3RydWN0IFM4IHM4Owor fTsKKworc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBTNSB7Cisg ICBsb25nIGxvbmcgbGw7Cit9OworCit1bmlvbiBfX2F0dHJpYnV0ZV9fICgo cGFja2VkKSkgVTEgeworICBpbnQgaTE7CisgIHN0cnVjdCBTOCBzODsKK307 IC8qIHsgZGctd2FybmluZyAiYWxpZ25tZW50IDEgb2YgJ3VuaW9uIFUxJyBp cyBsZXNzIHRoYW4gOCIgfSAqLworCit1bmlvbiBfX2F0dHJpYnV0ZV9fICgo cGFja2VkLCBhbGlnbmVkICg4KSkpIFUyIHsKKyAgaW50IGkxOworICBzdHJ1 Y3QgUzggczg7Cit9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvcHI1MzAzNy00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUzMDM3 LTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZmViM2FmYWQyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9wcjUzMDM3LTQuYwpAQCAtMCwwICsxLDI0IEBACisvKiBQUiBj LzUzMDM3LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMCIgfSAqLworCitpbnQgZm9vMSBfX2F0dHJpYnV0ZV9f KCh3YXJuX2lmX25vdF9hbGlnbmVkKDgpKSk7IC8qIHsgZGctZXJyb3IgIid3 YXJuX2lmX25vdF9hbGlnbmVkJyBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3Ig J2ZvbzEnIiB9ICovCisKK19fYXR0cmlidXRlX18oKHdhcm5faWZfbm90X2Fs aWduZWQoOCkpKQordm9pZAorZm9vMiAodm9pZCkgLyogeyBkZy1lcnJvciAi J3dhcm5faWZfbm90X2FsaWduZWQnIG1heSBub3QgYmUgc3BlY2lmaWVkIGZv ciAnZm9vMiciIH0gKi8KK3sKK30KKworc3RydWN0IGZvbzMKK3sKKyAgaW50 IGkgOiAyIF9fYXR0cmlidXRlX18oKHdhcm5faWZfbm90X2FsaWduZWQoOCkp KTsgLyogeyBkZy1lcnJvciAiJ3dhcm5faWZfbm90X2FsaWduZWQnIG1heSBu b3QgYmUgc3BlY2lmaWVkIGZvciAnaSciIH0gKi8KK307CisKK3R5cGVkZWYg dW5zaWduZWQgaW50IF9fdTMyCisgIF9fYXR0cmlidXRlX18oKGFsaWduZWQo NCksd2Fybl9pZl9ub3RfYWxpZ25lZCg4KSkpOworCitzdHJ1Y3QgZm9vNAor eworICBfX3UzMiBpIDogMjsgLyogeyBkZy1lcnJvciAiY2Fubm90IGRlY2xh cmUgYml0LWZpZWxkICdpJyB3aXRoICd3YXJuX2lmX25vdF9hbGlnbmVkJyB0 eXBlIiB9ICovCit9OwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5oIGIv Z2NjL3RyZWUtY29yZS5oCmluZGV4IDI3OGQwYzliOGY4Li5hNThiNjczZWIx MCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY29yZS5oCisrKyBiL2djYy90cmVl LWNvcmUuaApAQCAtMTUyMyw4ICsxNTIzLDkgQEAgc3RydWN0IEdUWSgoKSkg dHJlZV90eXBlX2NvbW1vbiB7CiAgICAgIHNvIHdlIG5lZWQgdG8gc3RvcmUg dGhlIHZhbHVlIDMyIChub3QgMzEsIGFzIHdlIG5lZWQgdGhlIHplcm8KICAg ICAgYXMgd2VsbCksIGhlbmNlIHNpeCBiaXRzLiAgKi8KICAgdW5zaWduZWQg YWxpZ24gOiA2OworICB1bnNpZ25lZCB3YXJuX2lmX25vdF9hbGlnbiA6IDY7 CiAgIHVuc2lnbmVkIHR5cGVsZXNzX3N0b3JhZ2UgOiAxOwotICB1bnNpZ25l ZCBzcGFyZSA6IDI0OworICB1bnNpZ25lZCBzcGFyZSA6IDE4OwogCiAgIGFs aWFzX3NldF90eXBlIGFsaWFzX3NldDsKICAgdHJlZSBwb2ludGVyX3RvOwpA QCAtMTYzMSw3ICsxNjMyLDExIEBAIHN0cnVjdCBHVFkoKCkpIHRyZWVfZGVj bF9jb21tb24gewogICAvKiBERUNMX0FMSUdOLiAgSXQgc2hvdWxkIGhhdmUg dGhlIHNhbWUgc2l6ZSBhcyBUWVBFX0FMSUdOLiAgKi8KICAgdW5zaWduZWQg aW50IGFsaWduIDogNjsKIAotICAvKiAyMCBiaXRzIHVudXNlZC4gICovCisg IC8qIERFQ0xfV0FSTl9JRl9OT1RfQUxJR04uICBJdCBzaG91bGQgaGF2ZSB0 aGUgc2FtZSBzaXplIGFzCisgICAgIFRZUEVfV0FSTl9JRl9OT1RfQUxJR04u ICAqLworICB1bnNpZ25lZCBpbnQgd2Fybl9pZl9ub3RfYWxpZ24gOiA2Owor CisgIC8qIDE0IGJpdHMgdW51c2VkLiAgKi8KIAogICAvKiBVSUQgZm9yIHBv aW50cy10byBzZXRzLCBzdGFibGUgb3ZlciBjb3B5aW5nIGZyb20gaW5saW5p bmcuICAqLwogICB1bnNpZ25lZCBpbnQgcHRfdWlkOwpkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUuYyBiL2djYy90cmVlLmMKaW5kZXggY2EyOGFmYWQwZjIuLjg3 ZjY1MDQ5OThlIDEwMDY0NAotLS0gYS9nY2MvdHJlZS5jCisrKyBiL2djYy90 cmVlLmMKQEAgLTgzMDUsNiArODMwNSw3IEBAIGJ1aWxkX3JhbmdlX3R5cGVf MSAodHJlZSB0eXBlLCB0cmVlIGxvd3ZhbCwgdHJlZSBoaWdodmFsLCBib29s IHNoYXJlZCkKICAgVFlQRV9TSVpFX1VOSVQgKGl0eXBlKSA9IFRZUEVfU0la RV9VTklUICh0eXBlKTsKICAgU0VUX1RZUEVfQUxJR04gKGl0eXBlLCBUWVBF X0FMSUdOICh0eXBlKSk7CiAgIFRZUEVfVVNFUl9BTElHTiAoaXR5cGUpID0g VFlQRV9VU0VSX0FMSUdOICh0eXBlKTsKKyAgU0VUX1RZUEVfV0FSTl9JRl9O T1RfQUxJR04gKGl0eXBlLCBUWVBFX1dBUk5fSUZfTk9UX0FMSUdOICh0eXBl KSk7CiAKICAgaWYgKCFzaGFyZWQpCiAgICAgcmV0dXJuIGl0eXBlOwpkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90cmVlLmgKaW5kZXggOTFjZjI1 M2RlZTUuLjU1ZjNlYmZhMjMxIDEwMDY0NAotLS0gYS9nY2MvdHJlZS5oCisr KyBiL2djYy90cmVlLmgKQEAgLTE5MjIsNiArMTkyMiwxNiBAQCBleHRlcm4g bWFjaGluZV9tb2RlIGVsZW1lbnRfbW9kZSAoY29uc3RfdHJlZSB0KTsKIC8q IFRoZSBhbGlnbm1lbnQgZm9yIE5PREUsIGluIGJ5dGVzLiAgKi8KICNkZWZp bmUgVFlQRV9BTElHTl9VTklUKE5PREUpIChUWVBFX0FMSUdOIChOT0RFKSAv IEJJVFNfUEVSX1VOSVQpCiAKKy8qIFRoZSBtaW5pbXVtIGFsaWdubWVudCBu ZWNlc3NhcnkgZm9yIG9iamVjdHMgb2YgdGhpcyB0eXBlIHdpdGhvdXQKKyAg IHdhcm5pbmcuICBUaGUgdmFsdWUgaXMgYW4gaW50LCBtZWFzdXJlZCBpbiBi aXRzLiAgKi8KKyNkZWZpbmUgVFlQRV9XQVJOX0lGX05PVF9BTElHTihOT0RF KSBcCisgICAgKFRZUEVfQ0hFQ0sgKE5PREUpLT50eXBlX2NvbW1vbi53YXJu X2lmX25vdF9hbGlnbiBcCisgICAgID8gKCh1bnNpZ25lZCkxKSA8PCAoKE5P REUpLT50eXBlX2NvbW1vbi53YXJuX2lmX25vdF9hbGlnbiAtIDEpIDogMCkK KworLyogU3BlY2lmeSB0aGF0IFRZUEVfV0FSTl9JRl9OT1RfQUxJR04oTk9E RSkgaXMgWC4gICovCisjZGVmaW5lIFNFVF9UWVBFX1dBUk5fSUZfTk9UX0FM SUdOKE5PREUsIFgpIFwKKyAgICAoVFlQRV9DSEVDSyAoTk9ERSktPnR5cGVf Y29tbW9uLndhcm5faWZfbm90X2FsaWduID0gZmZzX2h3aSAoWCkpCisKIC8q IElmIHlvdXIgbGFuZ3VhZ2UgYWxsb3dzIHlvdSB0byBkZWNsYXJlIHR5cGVz LCBhbmQgeW91IHdhbnQgZGVidWcgaW5mbwogICAgZm9yIHRoZW0sIHRoZW4g eW91IG5lZWQgdG8gZ2VuZXJhdGUgY29ycmVzcG9uZGluZyBUWVBFX0RFQ0wg bm9kZXMuCiAgICBUaGVzZSAic3R1YiIgVFlQRV9ERUNMIG5vZGVzIGhhdmUg bm8gbmFtZSwgYW5kIHNpbXBseSBwb2ludCBhdCB0aGUKQEAgLTIzNzcsNiAr MjM4NywxNiBAQCBleHRlcm4gbWFjaGluZV9tb2RlIGVsZW1lbnRfbW9kZSAo Y29uc3RfdHJlZSB0KTsKICNkZWZpbmUgU0VUX0RFQ0xfQUxJR04oTk9ERSwg WCkgXAogICAgIChERUNMX0NPTU1PTl9DSEVDSyAoTk9ERSktPmRlY2xfY29t bW9uLmFsaWduID0gZmZzX2h3aSAoWCkpCiAKKy8qIFRoZSBtaW5pbXVtIGFs aWdubWVudCBuZWNlc3NhcnkgZm9yIHRoZSBkYXR1bSwgaW4gYml0cywgd2l0 aG91dAorICAgd2FybmluZy4gICovCisjZGVmaW5lIERFQ0xfV0FSTl9JRl9O T1RfQUxJR04oTk9ERSkgXAorICAgIChERUNMX0NPTU1PTl9DSEVDSyAoTk9E RSktPmRlY2xfY29tbW9uLndhcm5faWZfbm90X2FsaWduIFwKKyAgICAgPyAo KHVuc2lnbmVkKTEpIDw8ICgoTk9ERSktPmRlY2xfY29tbW9uLndhcm5faWZf bm90X2FsaWduIC0gMSkgOiAwKQorCisvKiBTcGVjaWZ5IHRoYXQgREVDTF9X QVJOX0lGX05PVF9BTElHTihOT0RFKSBpcyBYLiAgKi8KKyNkZWZpbmUgU0VU X0RFQ0xfV0FSTl9JRl9OT1RfQUxJR04oTk9ERSwgWCkgXAorICAgIChERUNM X0NPTU1PTl9DSEVDSyAoTk9ERSktPmRlY2xfY29tbW9uLndhcm5faWZfbm90 X2FsaWduID0gZmZzX2h3aSAoWCkpCisKIC8qIFRoZSBhbGlnbm1lbnQgb2Yg Tk9ERSwgaW4gYnl0ZXMuICAqLwogI2RlZmluZSBERUNMX0FMSUdOX1VOSVQo Tk9ERSkgKERFQ0xfQUxJR04gKE5PREUpIC8gQklUU19QRVJfVU5JVCkKIC8q IFNldCBpZiB0aGUgYWxpZ25tZW50IG9mIHRoaXMgREVDTCBoYXMgYmVlbiBz ZXQgYnkgdGhlIHVzZXIsIGZvcgotLSAKMi4xMy41Cgo= --001a113ddc6c69e0a00556f438e4--