From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5498CC31E51 for ; Tue, 18 Jun 2019 11:24:15 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 10BF82082C for ; Tue, 18 Jun 2019 11:24:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 10BF82082C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdCDR-0001WE-TD; Tue, 18 Jun 2019 11:23:53 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdCDQ-0001Vz-Cs for xen-devel@lists.xenproject.org; Tue, 18 Jun 2019 11:23:52 +0000 X-Inumbo-ID: 896672ce-91bb-11e9-a2bf-8f59c7f48ab5 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 896672ce-91bb-11e9-a2bf-8f59c7f48ab5; Tue, 18 Jun 2019 11:23:46 +0000 (UTC) Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: iAHnyEQDiAYjKmkQ/QJYVnRvLCTvnkS/LvsRCzkmeY5mlZNOLWoqsewtTf7RiVdVUM1C6XuBeH bVVAV+9DHkdsemZ4k4BK2UxIhqVgp8/dKeDfPRQ+zcXBJ3szcDm/jBO3NOaDdk90p2+Cvzn/pf 5WhiT0FiUlOLHwpCSfHq3uxLBaxZq8EPk2w/sJV5wvFLtL/PJi3dFMMAGhM8FYFpD0RYd07tOV RUCbHIGR8bPhrryM3Eilrg+biCJQUy4H1jQxbbR6H8Bgc3JBvdcM6UaQ3UwaP4s7dBvr2YAzbH Fc8= X-SBRS: 2.7 X-MesageID: 1889147 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.63,389,1557201600"; d="scan'208";a="1889147" From: Anthony PERARD To: Date: Tue, 18 Jun 2019 12:23:39 +0100 Message-ID: <20190618112341.513-3-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190618112341.513-1-anthony.perard@citrix.com> References: <20190618112341.513-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 2/4] xen: Import other xen/io/*.h X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Paul Durrant , Stefano Stabellini Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Rm9sbG93aW5nICJ4ZW46IEZpeCBidWlsZCB3aXRoIHB1YmxpYyBoZWFkZXJzIiwgaW1wb3J0IG90 aGVyIFhlbgpwdWJsaWMgaGVhZGVycyB0aGF0IGFyZSBkZXNjcmliaW5nIGludGVyZmFjZXMuCgpJ bXBvcnQgZmJpZi5oLCBrYmRpZi5oLCBuZXRpZi5oLCBjb25zb2xlLmgsIHhlbmJ1cy5oLCBwcm90 b2NvbHMuaC4KCldoaWxlIGVkaXRpbmcgeGVuZmIuYywgcmVtb3ZlIHRoZSBpbmNsdWRlIG9mIGV2 ZW50X2NoYW5uZWwuaCBhcyBpdAppc24ndCBuZWVkZWQuCgpUaGUgaGVhZGVycyBhcmUgY2xlYW5l ZCB1cCBhIGJpdCB3aGlsZSBpbXBvcnRpbmcgdGhlbS4gVGhlIGhlYWRlcgpndWFyZCBzeW1ib2xz IGFyZSBjaGFuZ2VkIHRvIG1hdGNoIFFFTVUncyBjb2Rpbmcgc3R5bGUsIHNvbWUgb3RoZXIKcGFy dCBvZiB0aGUgZmlsZSB0aGF0IFFFTVUgZG9lc24ndCB1c2UgYXJlIHJlbW92ZWQuCgpTaWduZWQt b2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KUmV2aWV3 ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQogaHcvOXBm cy94ZW4tOXBmcy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogaHcvYmxvY2sveGVu X2Jsa2lmLmggICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogaHcvY2hhci94ZW5fY29uc29s ZS5jICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogaHcvZGlzcGxheS94ZW5mYi5jICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNyArLQogaHcvbmV0L3hlbl9uaWMuYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMiArLQogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2NvbnNvbGUu aCAgIHwgICA0NiArKwogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2ZiaWYuaCAgICAgIHwg IDE1NiArKysrCiBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8va2JkaWYuaCAgICAgfCAgNTY2 ICsrKysrKysrKysrKysKIGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9uZXRpZi5oICAgICB8 IDEwMTAgKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9p by9wcm90b2NvbHMuaCB8ICAgNDIgKwogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3hlbmJ1 cy5oICAgIHwgICA3MCArKwogaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oICAgICAgICAgICAg IHwgICAgMiArLQogMTIgZmlsZXMgY2hhbmdlZCwgMTg5OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9j b25zb2xlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8v ZmJpZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2ti ZGlmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vbmV0 aWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9wcm90 b2NvbHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby94 ZW5idXMuaAoKZGlmZiAtLWdpdCBhL2h3LzlwZnMveGVuLTlwZnMuaCBiL2h3LzlwZnMveGVuLTlw ZnMuaAppbmRleCA5MmRjODdlOWUwLi4yNDFlMjIxNmE0IDEwMDY0NAotLS0gYS9ody85cGZzL3hl bi05cGZzLmgKKysrIGIvaHcvOXBmcy94ZW4tOXBmcy5oCkBAIC0xMyw3ICsxMyw3IEBACiAjaWZu ZGVmIEhXXzlQRlNfWEVOXzlQRlNfSAogI2RlZmluZSBIV185UEZTX1hFTl85UEZTX0gKIAotI2lu Y2x1ZGUgPHhlbi9pby9wcm90b2NvbHMuaD4KKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lv L3Byb3RvY29scy5oIgogI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vcmluZy5oIgogCiAv KgpkaWZmIC0tZ2l0IGEvaHcvYmxvY2sveGVuX2Jsa2lmLmggYi9ody9ibG9jay94ZW5fYmxraWYu aAppbmRleCA1YTEwOTRkNzkzLi45OTczMzUyOWMxIDEwMDY0NAotLS0gYS9ody9ibG9jay94ZW5f YmxraWYuaAorKysgYi9ody9ibG9jay94ZW5fYmxraWYuaApAQCAtMiw3ICsyLDcgQEAKICNkZWZp bmUgWEVOX0JMS0lGX0gKIAogI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vYmxraWYuaCIK LSNpbmNsdWRlIDx4ZW4vaW8vcHJvdG9jb2xzLmg+CisjaW5jbHVkZSAiaHcveGVuL2ludGVyZmFj ZS9pby9wcm90b2NvbHMuaCIKIAogLyoKICAqIE5vdCBhIHJlYWwgcHJvdG9jb2wuICBVc2VkIHRv IGdlbmVyYXRlIHJpbmcgc3RydWN0cyB3aGljaCBjb250YWluCmRpZmYgLS1naXQgYS9ody9jaGFy L3hlbl9jb25zb2xlLmMgYi9ody9jaGFyL3hlbl9jb25zb2xlLmMKaW5kZXggOTFmMzRlZjA2Yy4u NDdlMTA5MjI2MyAxMDA2NDQKLS0tIGEvaHcvY2hhci94ZW5fY29uc29sZS5jCisrKyBiL2h3L2No YXIveGVuX2NvbnNvbGUuYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNoYXJkZXYvY2hh ci1mZS5oIgogI2luY2x1ZGUgImh3L3hlbi94ZW4tbGVnYWN5LWJhY2tlbmQuaCIKIAotI2luY2x1 ZGUgPHhlbi9pby9jb25zb2xlLmg+CisjaW5jbHVkZSAiaHcveGVuL2ludGVyZmFjZS9pby9jb25z b2xlLmgiCiAKIHN0cnVjdCBidWZmZXIgewogICAgIHVpbnQ4X3QgKmRhdGE7CmRpZmYgLS1naXQg YS9ody9kaXNwbGF5L3hlbmZiLmMgYi9ody9kaXNwbGF5L3hlbmZiLmMKaW5kZXggNjIwMmYxMTUw ZS4uM2M3OTkxM2IzMSAxMDA2NDQKLS0tIGEvaHcvZGlzcGxheS94ZW5mYi5jCisrKyBiL2h3L2Rp c3BsYXkveGVuZmIuYwpAQCAtMzIsMTAgKzMyLDkgQEAKICNpbmNsdWRlICJ1aS9jb25zb2xlLmgi CiAjaW5jbHVkZSAiaHcveGVuL3hlbi1sZWdhY3ktYmFja2VuZC5oIgogCi0jaW5jbHVkZSA8eGVu L2V2ZW50X2NoYW5uZWwuaD4KLSNpbmNsdWRlIDx4ZW4vaW8vZmJpZi5oPgotI2luY2x1ZGUgPHhl bi9pby9rYmRpZi5oPgotI2luY2x1ZGUgPHhlbi9pby9wcm90b2NvbHMuaD4KKyNpbmNsdWRlICJo dy94ZW4vaW50ZXJmYWNlL2lvL2ZiaWYuaCIKKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lv L2tiZGlmLmgiCisjaW5jbHVkZSAiaHcveGVuL2ludGVyZmFjZS9pby9wcm90b2NvbHMuaCIKIAog I2luY2x1ZGUgInRyYWNlLmgiCiAKZGlmZiAtLWdpdCBhL2h3L25ldC94ZW5fbmljLmMgYi9ody9u ZXQveGVuX25pYy5jCmluZGV4IDM3Y2RhOGU0YmUuLmZmYjNiNTg5OGQgMTAwNjQ0Ci0tLSBhL2h3 L25ldC94ZW5fbmljLmMKKysrIGIvaHcvbmV0L3hlbl9uaWMuYwpAQCAtMzAsNyArMzAsNyBAQAog I2luY2x1ZGUgIm5ldC91dGlsLmgiCiAjaW5jbHVkZSAiaHcveGVuL3hlbi1sZWdhY3ktYmFja2Vu ZC5oIgogCi0jaW5jbHVkZSA8eGVuL2lvL25ldGlmLmg+CisjaW5jbHVkZSAiaHcveGVuL2ludGVy ZmFjZS9pby9uZXRpZi5oIgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcv eGVuL2ludGVyZmFjZS9pby9jb25zb2xlLmggYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8v Y29uc29sZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIxNDMxNjk4 MWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vY29uc29s ZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnNvbGUu aAorICoKKyAqIENvbnNvbGUgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICog ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgS2VpciBGcmFzZXIKKyAqLworCisjaWZu ZGVmIFhFTl9QVUJMSUNfSU9fQ09OU09MRV9ICisjZGVmaW5lIFhFTl9QVUJMSUNfSU9fQ09OU09M RV9ICisKK3R5cGVkZWYgdWludDMyX3QgWEVOQ09OU19SSU5HX0lEWDsKKworI2RlZmluZSBNQVNL X1hFTkNPTlNfSURYKGlkeCwgcmluZykgKChpZHgpICYgKHNpemVvZihyaW5nKS0xKSkKKworc3Ry dWN0IHhlbmNvbnNfaW50ZXJmYWNlIHsKKyAgICBjaGFyIGluWzEwMjRdOworICAgIGNoYXIgb3V0 WzIwNDhdOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZDsKKyAgICBYRU5D T05TX1JJTkdfSURYIG91dF9jb25zLCBvdXRfcHJvZDsKK307CisKKyNpZmRlZiBYRU5fV0FOVF9G TEVYX0NPTlNPTEVfUklORworI2luY2x1ZGUgInJpbmcuaCIKK0RFRklORV9YRU5fRkxFWF9SSU5H KHhlbmNvbnMpOworI2VuZGlmCisKKyNlbmRpZiAvKiBYRU5fUFVCTElDX0lPX0NPTlNPTEVfSCAq LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2ZiaWYuaCBiL2luY2x1 ZGUvaHcveGVuL2ludGVyZmFjZS9pby9mYmlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNGUyNTQyMzQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcveGVu L2ludGVyZmFjZS9pby9mYmlmLmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBmYmlmLmggLS0g WGVuIHZpcnR1YWwgZnJhbWUgYnVmZmVyIGRldmljZQorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv cHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P IEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMDUgQW50aG9ueSBMaWd1b3JpIDxhbGlndW9yaUB1cy5pYm0uY29tPgorICogQ29w eXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4sIE1hcmt1cyBBcm1icnVzdGVyIDxhcm1icnVA cmVkaGF0LmNvbT4KKyAqLworCisjaWZuZGVmIFhFTl9QVUJMSUNfSU9fRkJJRl9ICisjZGVmaW5l IFhFTl9QVUJMSUNfSU9fRkJJRl9ICisKKy8qIE91dCBldmVudHMgKGZyb250ZW5kIC0+IGJhY2tl bmQpICovCisKKy8qCisgKiBPdXQgZXZlbnRzIG1heSBiZSBzZW50IG9ubHkgd2hlbiByZXF1ZXN0 ZWQgYnkgYmFja2VuZCwgYW5kIHJlY2VpcHQKKyAqIG9mIGFuIHVua25vd24gb3V0IGV2ZW50IGlz IGFuIGVycm9yLgorICovCisKKy8qIEV2ZW50IHR5cGUgMSBjdXJyZW50bHkgbm90IHVzZWQgKi8K Ky8qCisgKiBGcmFtZWJ1ZmZlciB1cGRhdGUgbm90aWZpY2F0aW9uIGV2ZW50CisgKiBDYXBhYmxl IGZyb250ZW5kIHNldHMgZmVhdHVyZS11cGRhdGUgaW4geGVuc3RvcmUuCisgKiBCYWNrZW5kIHJl cXVlc3RzIGl0IGJ5IHNldHRpbmcgcmVxdWVzdC11cGRhdGUgaW4geGVuc3RvcmUuCisgKi8KKyNk ZWZpbmUgWEVORkJfVFlQRV9VUERBVEUgMgorCitzdHJ1Y3QgeGVuZmJfdXBkYXRlCit7CisgICAg dWludDhfdCB0eXBlOyAgICAvKiBYRU5GQl9UWVBFX1VQREFURSAqLworICAgIGludDMyX3QgeDsg ICAgICAvKiBzb3VyY2UgeCAqLworICAgIGludDMyX3QgeTsgICAgICAvKiBzb3VyY2UgeSAqLwor ICAgIGludDMyX3Qgd2lkdGg7ICAvKiByZWN0IHdpZHRoICovCisgICAgaW50MzJfdCBoZWlnaHQ7 IC8qIHJlY3QgaGVpZ2h0ICovCit9OworCisvKgorICogRnJhbWVidWZmZXIgcmVzaXplIG5vdGlm aWNhdGlvbiBldmVudAorICogQ2FwYWJsZSBiYWNrZW5kIHNldHMgZmVhdHVyZS1yZXNpemUgaW4g eGVuc3RvcmUuCisgKi8KKyNkZWZpbmUgWEVORkJfVFlQRV9SRVNJWkUgMworCitzdHJ1Y3QgeGVu ZmJfcmVzaXplCit7CisgICAgdWludDhfdCB0eXBlOyAgICAvKiBYRU5GQl9UWVBFX1JFU0laRSAq LworICAgIGludDMyX3Qgd2lkdGg7ICAgLyogd2lkdGggaW4gcGl4ZWxzICovCisgICAgaW50MzJf dCBoZWlnaHQ7ICAvKiBoZWlnaHQgaW4gcGl4ZWxzICovCisgICAgaW50MzJfdCBzdHJpZGU7ICAv KiBzdHJpZGUgaW4gYnl0ZXMgKi8KKyAgICBpbnQzMl90IGRlcHRoOyAgIC8qIGRlcHRoIGluIGJp dHMgKi8KKyAgICBpbnQzMl90IG9mZnNldDsgIC8qIG9mZnNldCBvZiB0aGUgZnJhbWVidWZmZXIg aW4gYnl0ZXMgKi8KK307CisKKyNkZWZpbmUgWEVORkJfT1VUX0VWRU5UX1NJWkUgNDAKKwordW5p b24geGVuZmJfb3V0X2V2ZW50Cit7CisgICAgdWludDhfdCB0eXBlOworICAgIHN0cnVjdCB4ZW5m Yl91cGRhdGUgdXBkYXRlOworICAgIHN0cnVjdCB4ZW5mYl9yZXNpemUgcmVzaXplOworICAgIGNo YXIgcGFkW1hFTkZCX09VVF9FVkVOVF9TSVpFXTsKK307CisKKy8qIEluIGV2ZW50cyAoYmFja2Vu ZCAtPiBmcm9udGVuZCkgKi8KKworLyoKKyAqIEZyb250ZW5kcyBzaG91bGQgaWdub3JlIHVua25v d24gaW4gZXZlbnRzLgorICovCisKKy8qCisgKiBGcmFtZWJ1ZmZlciByZWZyZXNoIHBlcmlvZCBh ZHZpY2UKKyAqIEJhY2tlbmQgc2VuZHMgaXQgdG8gYWR2aXNlIHRoZSBmcm9udGVuZCB0aGVpciBw cmVmZXJyZWQgcGVyaW9kIG9mCisgKiByZWZyZXNoLiAgRnJvbnRlbmRzIHRoYXQga2VlcCB0aGUg ZnJhbWVidWZmZXIgY29uc3RhbnRseSB1cC10by1kYXRlCisgKiBqdXN0IGlnbm9yZSBpdC4gIEZy b250ZW5kcyB0aGF0IHVzZSB0aGUgYWR2aWNlIHNob3VsZCBpbW1lZGlhdGVseQorICogcmVmcmVz aCB0aGUgZnJhbWVidWZmZXIgKGFuZCBzZW5kIGFuIHVwZGF0ZSBub3RpZmljYXRpb24gZXZlbnQg aWYKKyAqIHRob3NlIGhhdmUgYmVlbiByZXF1ZXN0ZWQpLCB0aGVuIHVzZSB0aGUgdXBkYXRlIGZy ZXF1ZW5jeSB0byBndWlkZQorICogdGhlaXIgcGVyaW9kaWNhbCByZWZyZXNocy4KKyAqLworI2Rl ZmluZSBYRU5GQl9UWVBFX1JFRlJFU0hfUEVSSU9EIDEKKyNkZWZpbmUgWEVORkJfTk9fUkVGUkVT SCAwCisKK3N0cnVjdCB4ZW5mYl9yZWZyZXNoX3BlcmlvZAoreworICAgIHVpbnQ4X3QgdHlwZTsg ICAgLyogWEVORkJfVFlQRV9VUERBVEVfUEVSSU9EICovCisgICAgdWludDMyX3QgcGVyaW9kOyAv KiBwZXJpb2Qgb2YgcmVmcmVzaCwgaW4gbXMsCisgICAgICAgICAgICAgICAgICAgICAgKiBYRU5G Ql9OT19SRUZSRVNIIGlmIG5vIHJlZnJlc2ggaXMgbmVlZGVkICovCit9OworCisjZGVmaW5lIFhF TkZCX0lOX0VWRU5UX1NJWkUgNDAKKwordW5pb24geGVuZmJfaW5fZXZlbnQKK3sKKyAgICB1aW50 OF90IHR5cGU7CisgICAgc3RydWN0IHhlbmZiX3JlZnJlc2hfcGVyaW9kIHJlZnJlc2hfcGVyaW9k OworICAgIGNoYXIgcGFkW1hFTkZCX0lOX0VWRU5UX1NJWkVdOworfTsKKworLyogc2hhcmVkIHBh Z2UgKi8KKworI2RlZmluZSBYRU5GQl9JTl9SSU5HX1NJWkUgMTAyNAorI2RlZmluZSBYRU5GQl9J Tl9SSU5HX0xFTiAoWEVORkJfSU5fUklOR19TSVpFIC8gWEVORkJfSU5fRVZFTlRfU0laRSkKKyNk ZWZpbmUgWEVORkJfSU5fUklOR19PRkZTIDEwMjQKKyNkZWZpbmUgWEVORkJfSU5fUklORyhwYWdl KSBcCisgICAgKCh1bmlvbiB4ZW5mYl9pbl9ldmVudCAqKSgoY2hhciAqKShwYWdlKSArIFhFTkZC X0lOX1JJTkdfT0ZGUykpCisjZGVmaW5lIFhFTkZCX0lOX1JJTkdfUkVGKHBhZ2UsIGlkeCkgXAor ICAgIChYRU5GQl9JTl9SSU5HKChwYWdlKSlbKGlkeCkgJSBYRU5GQl9JTl9SSU5HX0xFTl0pCisK KyNkZWZpbmUgWEVORkJfT1VUX1JJTkdfU0laRSAyMDQ4CisjZGVmaW5lIFhFTkZCX09VVF9SSU5H X0xFTiAoWEVORkJfT1VUX1JJTkdfU0laRSAvIFhFTkZCX09VVF9FVkVOVF9TSVpFKQorI2RlZmlu ZSBYRU5GQl9PVVRfUklOR19PRkZTIChYRU5GQl9JTl9SSU5HX09GRlMgKyBYRU5GQl9JTl9SSU5H X1NJWkUpCisjZGVmaW5lIFhFTkZCX09VVF9SSU5HKHBhZ2UpIFwKKyAgICAoKHVuaW9uIHhlbmZi X291dF9ldmVudCAqKSgoY2hhciAqKShwYWdlKSArIFhFTkZCX09VVF9SSU5HX09GRlMpKQorI2Rl ZmluZSBYRU5GQl9PVVRfUklOR19SRUYocGFnZSwgaWR4KSBcCisgICAgKFhFTkZCX09VVF9SSU5H KChwYWdlKSlbKGlkeCkgJSBYRU5GQl9PVVRfUklOR19MRU5dKQorCitzdHJ1Y3QgeGVuZmJfcGFn ZQoreworICAgIHVpbnQzMl90IGluX2NvbnMsIGluX3Byb2Q7CisgICAgdWludDMyX3Qgb3V0X2Nv bnMsIG91dF9wcm9kOworCisgICAgaW50MzJfdCB3aWR0aDsgICAgICAgICAgLyogdGhlIHdpZHRo IG9mIHRoZSBmcmFtZWJ1ZmZlciAoaW4gcGl4ZWxzKSAqLworICAgIGludDMyX3QgaGVpZ2h0OyAg ICAgICAgIC8qIHRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lYnVmZmVyIChpbiBwaXhlbHMpICovCisg ICAgdWludDMyX3QgbGluZV9sZW5ndGg7ICAgLyogdGhlIGxlbmd0aCBvZiBhIHJvdyBvZiBwaXhl bHMgKGluIGJ5dGVzKSAqLworICAgIHVpbnQzMl90IG1lbV9sZW5ndGg7ICAgIC8qIHRoZSBsZW5n dGggb2YgdGhlIGZyYW1lYnVmZmVyIChpbiBieXRlcykgKi8KKyAgICB1aW50OF90IGRlcHRoOyAg ICAgICAgICAvKiB0aGUgZGVwdGggb2YgYSBwaXhlbCAoaW4gYml0cykgKi8KKworICAgIC8qCisg ICAgICogRnJhbWVidWZmZXIgcGFnZSBkaXJlY3RvcnkKKyAgICAgKgorICAgICAqIEVhY2ggZGly ZWN0b3J5IHBhZ2UgaG9sZHMgUEFHRV9TSVpFIC8gc2l6ZW9mKCpwZCkKKyAgICAgKiBmcmFtZWJ1 ZmZlciBwYWdlcywgYW5kIGNhbiB0aHVzIG1hcCB1cCB0byBQQUdFX1NJWkUgKgorICAgICAqIFBB R0VfU0laRSAvIHNpemVvZigqcGQpIGJ5dGVzLiAgV2l0aCBQQUdFX1NJWkUgPT0gNDA5NiBhbmQK KyAgICAgKiBzaXplb2YodW5zaWduZWQgbG9uZykgPT0gNC84LCB0aGF0J3MgNCBNZWdzIDMyIGJp dCBhbmQgMiBNZWdzCisgICAgICogNjQgYml0LiAgMjU2IGRpcmVjdG9yaWVzIGdpdmUgZW5vdWdo IHJvb20gZm9yIGEgNTEyIE1lZworICAgICAqIGZyYW1lYnVmZmVyIHdpdGggYSBtYXggcmVzb2x1 dGlvbiBvZiAxMiw4MDB4MTAsMjQwLiAgU2hvdWxkCisgICAgICogYmUgZW5vdWdoIGZvciBhIHdo aWxlIHdpdGggcm9vbSBsZWZ0b3ZlciBmb3IgZXhwYW5zaW9uLgorICAgICAqLworICAgIHVuc2ln bmVkIGxvbmcgcGRbMjU2XTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94 ZW4vaW50ZXJmYWNlL2lvL2tiZGlmLmggYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8va2Jk aWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNTJjZjEwMTU2Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2tiZGlmLmgKQEAg LTAsMCArMSw1NjYgQEAKKy8qCisgKiBrYmRpZi5oIC0tIFhlbiB2aXJ0dWFsIGtleWJvYXJkL21v dXNlCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBbnRob255IExpZ3Vvcmkg PGFsaWd1b3JpQHVzLmlibS5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5j LiwgTWFya3VzIEFybWJydXN0ZXIgPGFybWJydUByZWRoYXQuY29tPgorICovCisKKyNpZm5kZWYg WEVOX1BVQkxJQ19JT19LQkRJRl9ICisjZGVmaW5lIFhFTl9QVUJMSUNfSU9fS0JESUZfSAorCisv KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgIEZlYXR1cmUg YW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICog VGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWwgZHJpdmVyIHV0aWxpemUgbm9kZXMgd2l0 aGluCisgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290 aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRo ZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAqIGJh Y2tlbmQgcG9ydGlvbnMgb2YgWGVuU3RvcmUsIGZvbGxvd2luZyBYZW5CdXMgY29udmVudGlvbi4K KyAqCisgKiBBbGwgZGF0YSBpbiBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gIE5vZGVz IHNwZWNpZnlpbmcgbnVtZXJpYworICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIGRlY2ltYWwuIElu dGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3NlZCBhcyBmaXhl ZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVyc2lvbgor ICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGlu Zm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGZWF0dXJlcyBzdXBwb3J0ZWQgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENhcGFibGUgYmFja2VuZCBhZHZlcnRp c2VzIHN1cHBvcnRlZCBmZWF0dXJlcyBieSBwdWJsaXNoaW5nCisgKiBjb3JyZXNwb25kaW5nIGVu dHJpZXMgaW4gWGVuU3RvcmUgYW5kIHB1dHMgMSBhcyB0aGUgdmFsdWUgb2YgdGhlIGVudHJ5Lgor ICogSWYgYSBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgdGhlbiAwIG11c3QgYmUgc2V0IG9yIGZl YXR1cmUgZW50cnkgb21pdHRlZC4KKyAqCisgKiBmZWF0dXJlLWRpc2FibGUta2V5Ym9hcmQKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgSWYgdGhlcmUgaXMgbm8g bmVlZCB0byBleHBvc2UgYSB2aXJ0dWFsIGtleWJvYXJkIGRldmljZSBieSB0aGUKKyAqICAgICAg ZnJvbnRlbmQgdGhlbiB0aGlzIG11c3QgYmUgc2V0IHRvIDEuCisgKgorICogZmVhdHVyZS1kaXNh YmxlLXBvaW50ZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAg SWYgdGhlcmUgaXMgbm8gbmVlZCB0byBleHBvc2UgYSB2aXJ0dWFsIHBvaW50ZXIgZGV2aWNlIGJ5 IHRoZQorICogICAgICBmcm9udGVuZCB0aGVuIHRoaXMgbXVzdCBiZSBzZXQgdG8gMS4KKyAqCisg KiBmZWF0dXJlLWFicy1wb2ludGVyCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAq CisgKiAgICAgIEJhY2tlbmRzLCB3aGljaCBzdXBwb3J0IHJlcG9ydGluZyBvZiBhYnNvbHV0ZSBj b29yZGluYXRlcyBmb3IgcG9pbnRlcgorICogICAgICBkZXZpY2Ugc2hvdWxkIHNldCB0aGlzIHRv IDEuCisgKgorICogZmVhdHVyZS1tdWx0aS10b3VjaAorICogICAgICBWYWx1ZXM6ICAgICAgICAg PHVpbnQ+CisgKgorICogICAgICBCYWNrZW5kcywgd2hpY2ggc3VwcG9ydCByZXBvcnRpbmcgb2Yg bXVsdGktdG91Y2ggZXZlbnRzCisgKiAgICAgIHNob3VsZCBzZXQgdGhpcyB0byAxLgorICoKKyAq IGZlYXR1cmUtcmF3LXBvaW50ZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgPHVpbnQ+CisgKgor ICogICAgICBCYWNrZW5kcywgd2hpY2ggc3VwcG9ydCByZXBvcnRpbmcgcmF3ICh1bnNjYWxlZCkg YWJzb2x1dGUgY29vcmRpbmF0ZXMKKyAqICAgICAgZm9yIHBvaW50ZXIgZGV2aWNlcyBzaG91bGQg c2V0IHRoaXMgdG8gMS4gUmF3ICh1bnNjYWxlZCkgdmFsdWVzIGhhdmUKKyAqICAgICAgYSByYW5n ZSBvZiBbMCwgMHg3ZmZmXS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBEZXZpY2Ug SW5zdGFuY2UgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB1bmlx dWUtaWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAgICBBZnRl ciBkZXZpY2UgaW5zdGFuY2UgaW5pdGlhbGl6YXRpb24gaXQgaXMgYXNzaWduZWQgYSB1bmlxdWUg SUQsCisgKiAgICAgIHNvIGV2ZXJ5IGluc3RhbmNlIG9mIHRoZSBmcm9udGVuZCBjYW4gYmUgaWRl bnRpZmllZCBieSB0aGUgYmFja2VuZAorICogICAgICBieSB0aGlzIElELiBUaGlzIGNhbiBiZSBV VUlEIG9yIHN1Y2guCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvaW50ZXIgRGV2 aWNlIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2lkdGgKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgTWF4aW11bSBYIGNvb3Jk aW5hdGUgKHdpZHRoKSB0byBiZSB1c2VkIGJ5IHRoZSBmcm9udGVuZAorICogICAgICB3aGlsZSBy ZXBvcnRpbmcgaW5wdXQgZXZlbnRzLCBwaXhlbHMsIFswOyBVSU5UMzJfTUFYXS4KKyAqCisgKiBo ZWlnaHQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgTWF4aW11 bSBZIGNvb3JkaW5hdGUgKGhlaWdodCkgdG8gYmUgdXNlZCBieSB0aGUgZnJvbnRlbmQKKyAqICAg ICAgd2hpbGUgcmVwb3J0aW5nIGlucHV0IGV2ZW50cywgcGl4ZWxzLCBbMDsgVUlOVDMyX01BWF0u CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aS10b3VjaCBEZXZpY2UgUGFyYW1l dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogbXVsdGktdG91Y2gtbnVtLWNvbnRh Y3RzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIE51bWJlciBv ZiBzaW11bHRhbmVvdXMgdG91Y2hlcyByZXBvcnRlZC4KKyAqCisgKiBtdWx0aS10b3VjaC13aWR0 aAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBXaWR0aCBvZiB0 aGUgdG91Y2ggYXJlYSB0byBiZSB1c2VkIGJ5IHRoZSBmcm9udGVuZAorICogICAgICB3aGlsZSBy ZXBvcnRpbmcgaW5wdXQgZXZlbnRzLCBwaXhlbHMsIFswOyBVSU5UMzJfTUFYXS4KKyAqCisgKiBt dWx0aS10b3VjaC1oZWlnaHQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAq ICAgICAgSGVpZ2h0IG9mIHRoZSB0b3VjaCBhcmVhIHRvIGJlIHVzZWQgYnkgdGhlIGZyb250ZW5k CisgKiAgICAgIHdoaWxlIHJlcG9ydGluZyBpbnB1dCBldmVudHMsIHBpeGVscywgWzA7IFVJTlQz Ml9NQVhdLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGZWF0dXJlIHJlcXVlc3QgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDYXBhYmxlIGZyb250ZW5kIHJlcXVlc3Rz IGZlYXR1cmVzIGZyb20gYmFja2VuZCB2aWEgc2V0dGluZyBjb3JyZXNwb25kaW5nCisgKiBlbnRy aWVzIHRvIDEgaW4gWGVuU3RvcmUuIFJlcXVlc3RzIGZvciBmZWF0dXJlcyBub3QgYWR2ZXJ0aXNl ZCBhcyBzdXBwb3J0ZWQKKyAqIGJ5IHRoZSBiYWNrZW5kIGhhdmUgbm8gZWZmZWN0LgorICoKKyAq IHJlcXVlc3QtYWJzLXBvaW50ZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoK KyAqICAgICAgUmVxdWVzdCBiYWNrZW5kIHRvIHJlcG9ydCBhYnNvbHV0ZSBwb2ludGVyIGNvb3Jk aW5hdGVzCisgKiAgICAgIChYRU5LQkRfVFlQRV9QT1MpIGluc3RlYWQgb2YgcmVsYXRpdmUgb25l cyAoWEVOS0JEX1RZUEVfTU9USU9OKS4KKyAqCisgKiByZXF1ZXN0LW11bHRpLXRvdWNoCisgKiAg ICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFJlcXVlc3QgYmFja2VuZCB0 byByZXBvcnQgbXVsdGktdG91Y2ggZXZlbnRzLgorICoKKyAqIHJlcXVlc3QtcmF3LXBvaW50ZXIK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgUmVxdWVzdCBiYWNr ZW5kIHRvIHJlcG9ydCByYXcgdW5zY2FsZWQgYWJzb2x1dGUgcG9pbnRlciBjb29yZGluYXRlcy4K KyAqICAgICAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBpZiByZXF1ZXN0LWFicy1wb2ludGVy IGlzIGFsc28gc2V0LgorICogICAgICBSYXcgdW5zY2FsZWQgY29vcmRpbmF0ZXMgaGF2ZSB0aGUg cmFuZ2UgWzAsIDB4N2ZmZl0KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlcXVlc3Qg VHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldmVu dC1jaGFubmVsCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFRo ZSBpZGVudGlmaWVyIG9mIHRoZSBYZW4gZXZlbnQgY2hhbm5lbCB1c2VkIHRvIHNpZ25hbCBhY3Rp dml0eQorICogICAgICBpbiB0aGUgcmluZyBidWZmZXIuCisgKgorICogcGFnZS1ncmVmCisgKiAg ICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVm ZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAg ICBhIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIGV2ZW50IHJpbmcgYnVmZmVyLgor ICoKKyAqIHBhZ2UtcmVmCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAg ICAgIE9CU09MRVRFLCBub3QgcmVjb21tZW5kZWQgZm9yIHVzZS4KKyAqICAgICAgUEZOIG9mIHRo ZSBzaGFyZWQgcGFnZS4KKyAqLworCisvKgorICogRVZFTlQgQ09ERVMuCisgKi8KKworI2RlZmlu ZSBYRU5LQkRfVFlQRV9NT1RJT04gICAgICAgICAgICAgMQorI2RlZmluZSBYRU5LQkRfVFlQRV9S RVNFUlZFRCAgICAgICAgICAgMgorI2RlZmluZSBYRU5LQkRfVFlQRV9LRVkgICAgICAgICAgICAg ICAgMworI2RlZmluZSBYRU5LQkRfVFlQRV9QT1MgICAgICAgICAgICAgICAgNAorI2RlZmluZSBY RU5LQkRfVFlQRV9NVE9VQ0ggICAgICAgICAgICAgNQorCisvKiBNdWx0aS10b3VjaCBldmVudCBz dWItY29kZXMgKi8KKworI2RlZmluZSBYRU5LQkRfTVRfRVZfRE9XTiAgICAgICAgICAgICAgMAor I2RlZmluZSBYRU5LQkRfTVRfRVZfVVAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBYRU5LQkRf TVRfRVZfTU9USU9OICAgICAgICAgICAgMgorI2RlZmluZSBYRU5LQkRfTVRfRVZfU1lOICAgICAg ICAgICAgICAgMworI2RlZmluZSBYRU5LQkRfTVRfRVZfU0hBUEUgICAgICAgICAgICAgNAorI2Rl ZmluZSBYRU5LQkRfTVRfRVZfT1JJRU5UICAgICAgICAgICAgNQorCisvKgorICogQ09OU1RBTlRT LCBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1MsIEhFTFBFUlMuCisgKi8KKwor I2RlZmluZSBYRU5LQkRfRFJJVkVSX05BTUUgICAgICAgICAgICAgInZrYmQiCisKKyNkZWZpbmUg WEVOS0JEX0ZJRUxEX0ZFQVRfRFNCTF9LRVlCUkQgICJmZWF0dXJlLWRpc2FibGUta2V5Ym9hcmQi CisjZGVmaW5lIFhFTktCRF9GSUVMRF9GRUFUX0RTQkxfUE9JTlRFUiAiZmVhdHVyZS1kaXNhYmxl LXBvaW50ZXIiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9GRUFUX0FCU19QT0lOVEVSICAiZmVhdHVy ZS1hYnMtcG9pbnRlciIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX0ZFQVRfUkFXX1BPSU5URVIgICJm ZWF0dXJlLXJhdy1wb2ludGVyIgorI2RlZmluZSBYRU5LQkRfRklFTERfRkVBVF9NVE9VQ0ggICAg ICAgImZlYXR1cmUtbXVsdGktdG91Y2giCisjZGVmaW5lIFhFTktCRF9GSUVMRF9SRVFfQUJTX1BP SU5URVIgICAicmVxdWVzdC1hYnMtcG9pbnRlciIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX1JFUV9S QVdfUE9JTlRFUiAgICJyZXF1ZXN0LXJhdy1wb2ludGVyIgorI2RlZmluZSBYRU5LQkRfRklFTERf UkVRX01UT1VDSCAgICAgICAgInJlcXVlc3QtbXVsdGktdG91Y2giCisjZGVmaW5lIFhFTktCRF9G SUVMRF9SSU5HX0dSRUYgICAgICAgICAicGFnZS1ncmVmIgorI2RlZmluZSBYRU5LQkRfRklFTERf RVZUX0NIQU5ORUwgICAgICAgImV2ZW50LWNoYW5uZWwiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9X SURUSCAgICAgICAgICAgICAid2lkdGgiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9IRUlHSFQgICAg ICAgICAgICAiaGVpZ2h0IgorI2RlZmluZSBYRU5LQkRfRklFTERfTVRfV0lEVEggICAgICAgICAg Im11bHRpLXRvdWNoLXdpZHRoIgorI2RlZmluZSBYRU5LQkRfRklFTERfTVRfSEVJR0hUICAgICAg ICAgIm11bHRpLXRvdWNoLWhlaWdodCIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX01UX05VTV9DT05U QUNUUyAgICJtdWx0aS10b3VjaC1udW0tY29udGFjdHMiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9V TklRVUVfSUQgICAgICAgICAidW5pcXVlLWlkIgorCisvKiBPQlNPTEVURSwgbm90IHJlY29tbWVu ZGVkIGZvciB1c2UgKi8KKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX1JJTkdfUkVGICAgICAgICAgICJw YWdlLXJlZiIKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRGVzY3JpcHRpb24gb2Yg dGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyLgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1YWwg ZHJpdmVyIGNvbW11bmljYXRlIHdpdGgKKyAqIGVhY2ggb3RoZXIgdXNpbmcgYSBzaGFyZWQgcGFn ZSBhbmQgYW4gZXZlbnQgY2hhbm5lbC4KKyAqIFNoYXJlZCBwYWdlIGNvbnRhaW5zIGEgcmluZyB3 aXRoIGV2ZW50IHN0cnVjdHVyZXMuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUg c3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgdG8gZnJvbnRlbmQgZXZlbnRzCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGcm9udGVuZHMgc2hvdWxkIGlnbm9yZSB1bmtu b3duIGluIGV2ZW50cy4KKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3Ro ICg0MCBvY3RldHMpCisgKiBBbGwgZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cisg KgorICogICAgICAgICAgMCAgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgIHR5cGUgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB0eXBlIC0g dWludDhfdCwgZXZlbnQgY29kZSwgWEVOS0JEX1RZUEVfPz8/CisgKgorICoKKyAqIFBvaW50ZXIg cmVsYXRpdmUgbW92ZW1lbnQgZXZlbnQKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgX1RZUEVfTU9USU9OICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWxfeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWxfeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsX3ogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogcmVsX3ggLSBpbnQzMl90LCBy ZWxhdGl2ZSBYIG1vdGlvbgorICogcmVsX3kgLSBpbnQzMl90LCByZWxhdGl2ZSBZIG1vdGlvbgor ICogcmVsX3ogLSBpbnQzMl90LCByZWxhdGl2ZSBaIG1vdGlvbiAod2hlZWwpCisgKi8KKworc3Ry dWN0IHhlbmtiZF9tb3Rpb24KK3sKKyAgICB1aW50OF90IHR5cGU7CisgICAgaW50MzJfdCByZWxf eDsKKyAgICBpbnQzMl90IHJlbF95OworICAgIGludDMyX3QgcmVsX3o7Cit9OworCisvKgorICog S2V5IGV2ZW50IChpbmNsdWRlcyBwb2ludGVyIGJ1dHRvbnMpCisgKiAgICAgICAgIDAgICAgICAg ICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgIF9UWVBFX0tFWSAgICAgfCAgICAgcHJlc3NlZCAgICB8 ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXljb2RlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBwcmVzc2VkIC0gdWludDhfdCwgMSBp ZiBwcmVzc2VkOyAwIG90aGVyd2lzZQorICoga2V5Y29kZSAtIHVpbnQzMl90LCBLRVlfKiBmcm9t IGxpbnV4L2lucHV0LmgKKyAqLworCitzdHJ1Y3QgeGVua2JkX2tleQoreworICAgIHVpbnQ4X3Qg dHlwZTsKKyAgICB1aW50OF90IHByZXNzZWQ7CisgICAgdWludDMyX3Qga2V5Y29kZTsKK307CisK Ky8qCisgKiBQb2ludGVyIGFic29sdXRlIHBvc2l0aW9uIGV2ZW50CisgKiAgICAgICAgIDAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9j dGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgIF9UWVBFX1BPUyAgICAgfCAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX3ggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWJzX3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbF96 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGFi c194IC0gaW50MzJfdCwgYWJzb2x1dGUgWCBwb3NpdGlvbiAoaW4gRkIgcGl4ZWxzKQorICogYWJz X3kgLSBpbnQzMl90LCBhYnNvbHV0ZSBZIHBvc2l0aW9uIChpbiBGQiBwaXhlbHMpCisgKiByZWxf eiAtIGludDMyX3QsIHJlbGF0aXZlIFogbW90aW9uICh3aGVlbCkKKyAqLworCitzdHJ1Y3QgeGVu a2JkX3Bvc2l0aW9uCit7CisgICAgdWludDhfdCB0eXBlOworICAgIGludDMyX3QgYWJzX3g7Cisg ICAgaW50MzJfdCBhYnNfeTsKKyAgICBpbnQzMl90IHJlbF96OworfTsKKworLyoKKyAqIE11bHRp LXRvdWNoIGV2ZW50IGFuZCBpdHMgc3ViLXR5cGVzCisgKgorICogQWxsIG11bHRpLXRvdWNoIGV2 ZW50IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICoKKyAqICAgICAgICAgMCAgICAgICAg ICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgX1RZUEVfTVRPVUNIICB8ICAgZXZlbnRfdHlwZSAgIHwg ICBjb250YWN0X2lkICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGV2ZW50X3R5cGUgLSB1bnQ4 X3QsIG11bHRpLXRvdWNoIGV2ZW50IHN1Yi10eXBlLCBYRU5LQkRfTVRfRVZfPz8/CisgKiBjb250 YWN0X2lkIC0gdW50OF90LCBJRCBvZiB0aGUgY29udGFjdAorICoKKyAqIFRvdWNoIGludGVyYWN0 aW9ucyBjYW4gY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBjb250YWN0cy4KKyAqIEZvciBlYWNoIGNv bnRhY3QsIGEgc2VyaWVzIG9mIGV2ZW50cyBpcyBnZW5lcmF0ZWQsIHN0YXJ0aW5nCisgKiB3aXRo IGEgZG93biBldmVudCwgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIG1vdGlvbiBldmVudHMsCisg KiBhbmQgZW5kaW5nIHdpdGggYW4gdXAgZXZlbnQuIEV2ZW50cyByZWxhdGluZyB0byB0aGUgc2Ft ZQorICogY29udGFjdCBwb2ludCBjYW4gYmUgaWRlbnRpZmllZCBieSB0aGUgSUQgb2YgdGhlIHNl cXVlbmNlOiBjb250YWN0IElELgorICogQ29udGFjdCBJRCBtYXkgYmUgcmV1c2VkIGFmdGVyIFhF TktCRF9NVF9FVl9VUCBldmVudCBhbmQKKyAqIGlzIGluIHRoZSBbMDsgWEVOS0JEX0ZJRUxEX05V TV9DT05UQUNUUyAtIDFdIHJhbmdlLgorICoKKyAqIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIHBs ZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIFdheWxhbmQgWzFdLAorICogTGludXggWzJd IGFuZCBXaW5kb3dzIFszXSBtdWx0aS10b3VjaCBzdXBwb3J0LgorICoKKyAqIFsxXSBodHRwczov L2NnaXQuZnJlZWRlc2t0b3Aub3JnL3dheWxhbmQvd2F5bGFuZC90cmVlL3Byb3RvY29sL3dheWxh bmQueG1sCisgKiBbMl0gaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9p bnB1dC9tdWx0aS10b3VjaC1wcm90b2NvbC50eHQKKyAqIFszXSBodHRwczovL21zZG4ubWljcm9z b2Z0LmNvbS9lbi11cy9saWJyYXJ5L2pqMTUxNTY0KHY9dnMuODUpLmFzcHgKKyAqCisgKgorICog TXVsdGktdG91Y2ggZG93biBldmVudCAtIHNlbnQgd2hlbiBhIG5ldyB0b3VjaCBpcyBtYWRlOiB0 b3VjaCBpcyBhc3NpZ25lZAorICogYSB1bmlxdWUgY29udGFjdCBJRCwgc2VudCB3aXRoIHRoaXMg YW5kIGNvbnNlcXVlbnQgZXZlbnRzIHJlbGF0ZWQKKyAqIHRvIHRoaXMgdG91Y2guCisgKiAgICAg ICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMg ICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgIF9UWVBFX01UT1VDSCAgfCAgIF9N VF9FVl9ET1dOICB8ICAgY29udGFjdF9pZCAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWJzX3ggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFic195ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICoKKyAqIGFic194IC0gaW50MzJfdCwgYWJzb2x1dGUgWCBwb3NpdGlvbiwgaW4gcGl4ZWxzCisg KiBhYnNfeSAtIGludDMyX3QsIGFic29sdXRlIFkgcG9zaXRpb24sIGluIHBpeGVscworICoKKyAq IE11bHRpLXRvdWNoIGNvbnRhY3QgcmVsZWFzZSBldmVudAorICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9VUCAgICAgfCAg IGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNdWx0 aS10b3VjaCBtb3Rpb24gZXZlbnQKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgX1RZUEVfTVRPVUNIICB8ICBfTVRfRVZfTU9USU9OIHwgICBjb250YWN0X2lkICAg fCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNf eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX3kgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogYWJzX3ggLSBpbnQzMl90LCBhYnNv bHV0ZSBYIHBvc2l0aW9uLCBpbiBwaXhlbHMsCisgKiBhYnNfeSAtIGludDMyX3QsIGFic29sdXRl IFkgcG9zaXRpb24sIGluIHBpeGVscywKKyAqCisgKiBNdWx0aS10b3VjaCBpbnB1dCBzeW5jaHJv bml6YXRpb24gZXZlbnQgLSBzaG93cyBlbmQgb2YgYSBzZXQgb2YgZXZlbnRzCisgKiB3aGljaCBs b2dpY2FsbHkgYmVsb25nIHRvZ2V0aGVyLgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEg ICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9TWU4gICAgfCAgIGNvbnRhY3Rf aWQgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNdWx0aS10b3VjaCBz aGFwZSBldmVudCAtIHRvdWNoIHBvaW50J3Mgc2hhcGUgaGFzIGNoYW5nZWQgaXRzIHNoYXBlLgor ICogU2hhcGUgaXMgYXBwcm94aW1hdGVkIGJ5IGFuIGVsbGlwc2UgdGhyb3VnaCB0aGUgbWFqb3Ig YW5kIG1pbm9yIGF4aXMKKyAqIGxlbmd0aHM6IG1ham9yIGlzIHRoZSBsb25nZXIgZGlhbWV0ZXIg b2YgdGhlIGVsbGlwc2UgYW5kIG1pbm9yIGlzIHRoZQorICogc2hvcnRlciBvbmUuIENlbnRlciBv ZiB0aGUgZWxsaXBzZSBpcyByZXBvcnRlZCB2aWEKKyAqIFhFTktCRF9NVF9FVl9ET1dOL1hFTktC RF9NVF9FVl9NT1RJT04gZXZlbnRzLgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAg ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9TSEFQRSAgfCAgIGNvbnRhY3RfaWQg ICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg OAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h am9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBtYWpvciAtIHVudDMyX3QsIGxl bmd0aCBvZiB0aGUgbWFqb3IgYXhpcywgcGl4ZWxzCisgKiBtaW5vciAtIHVudDMyX3QsIGxlbmd0 aCBvZiB0aGUgbWlub3IgYXhpcywgcGl4ZWxzCisgKgorICogTXVsdGktdG91Y2ggb3JpZW50YXRp b24gZXZlbnQgLSB0b3VjaCBwb2ludCdzIHNoYXBlIGhhcyBjaGFuZ2VkCisgKiBpdHMgb3JpZW50 YXRpb246IGNhbGN1bGF0ZWQgYXMgYSBjbG9ja3dpc2UgYW5nbGUgYmV0d2VlbiB0aGUgbWFqb3Ig YXhpcworICogb2YgdGhlIGVsbGlwc2UgYW5kIHBvc2l0aXZlIFkgYXhpcyBpbiBkZWdyZWVzLCBb LTE4MDsgKzE4MF0uCisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg IF9UWVBFX01UT1VDSCAgfCAgX01UX0VWX09SSUVOVCB8ICAgY29udGFjdF9pZCAgIHwgICAgcmVz ZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgIG9yaWVudGF0aW9uICAgICAgICAgICB8ICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogb3JpZW50YXRp b24gLSBpbnQxNl90LCBjbG9ja3dpc2UgYW5nbGUgb2YgdGhlIG1ham9yIGF4aXMKKyAqLworCitz dHJ1Y3QgeGVua2JkX210b3VjaCB7CisgICAgdWludDhfdCB0eXBlOyAgICAgICAgICAgIC8qIFhF TktCRF9UWVBFX01UT1VDSCAqLworICAgIHVpbnQ4X3QgZXZlbnRfdHlwZTsgICAgICAvKiBYRU5L QkRfTVRfRVZfPz8/ICovCisgICAgdWludDhfdCBjb250YWN0X2lkOworICAgIHVpbnQ4X3QgcmVz ZXJ2ZWRbNV07ICAgICAvKiByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSB1c2UgKi8KKyAgICB1bmlv biB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQzMl90IGFic194OyAgIC8qIGFi c29sdXRlIFggcG9zaXRpb24sIHBpeGVscyAqLworICAgICAgICAgICAgaW50MzJfdCBhYnNfeTsg ICAvKiBhYnNvbHV0ZSBZIHBvc2l0aW9uLCBwaXhlbHMgKi8KKyAgICAgICAgfSBwb3M7CisgICAg ICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBtYWpvcjsgIC8qIGxlbmd0aCBvZiB0 aGUgbWFqb3IgYXhpcywgcGl4ZWxzICovCisgICAgICAgICAgICB1aW50MzJfdCBtaW5vcjsgIC8q IGxlbmd0aCBvZiB0aGUgbWlub3IgYXhpcywgcGl4ZWxzICovCisgICAgICAgIH0gc2hhcGU7Cisg ICAgICAgIGludDE2X3Qgb3JpZW50YXRpb247IC8qIGNsb2Nrd2lzZSBhbmdsZSBvZiB0aGUgbWFq b3IgYXhpcyAqLworICAgIH0gdTsKK307CisKKyNkZWZpbmUgWEVOS0JEX0lOX0VWRU5UX1NJWkUg NDAKKwordW5pb24geGVua2JkX2luX2V2ZW50Cit7CisgICAgdWludDhfdCB0eXBlOworICAgIHN0 cnVjdCB4ZW5rYmRfbW90aW9uIG1vdGlvbjsKKyAgICBzdHJ1Y3QgeGVua2JkX2tleSBrZXk7Cisg ICAgc3RydWN0IHhlbmtiZF9wb3NpdGlvbiBwb3M7CisgICAgc3RydWN0IHhlbmtiZF9tdG91Y2gg bXRvdWNoOworICAgIGNoYXIgcGFkW1hFTktCRF9JTl9FVkVOVF9TSVpFXTsKK307CisKKy8qCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250 ZW5kIHRvIGJhY2tlbmQgZXZlbnRzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBPdXQg ZXZlbnRzIG1heSBiZSBzZW50IG9ubHkgd2hlbiByZXF1ZXN0ZWQgYnkgYmFja2VuZCwgYW5kIHJl Y2VpcHQKKyAqIG9mIGFuIHVua25vd24gb3V0IGV2ZW50IGlzIGFuIGVycm9yLgorICogTm8gb3V0 IGV2ZW50cyBjdXJyZW50bHkgZGVmaW5lZC4KKworICogQWxsIGV2ZW50IHBhY2tldHMgaGF2ZSB0 aGUgc2FtZSBsZW5ndGggKDQwIG9jdGV0cykKKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgY29t bW9uIGhlYWRlcjoKKyAqICAgICAgICAgIDAgICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICB0eXBlICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKwor ICogdHlwZSAtIHVpbnQ4X3QsIGV2ZW50IGNvZGUKKyAqLworCisjZGVmaW5lIFhFTktCRF9PVVRf RVZFTlRfU0laRSA0MAorCit1bmlvbiB4ZW5rYmRfb3V0X2V2ZW50Cit7CisgICAgdWludDhfdCB0 eXBlOworICAgIGNoYXIgcGFkW1hFTktCRF9PVVRfRVZFTlRfU0laRV07Cit9OworCisvKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWQg cGFnZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworI2RlZmluZSBYRU5LQkRfSU5fUklO R19TSVpFIDIwNDgKKyNkZWZpbmUgWEVOS0JEX0lOX1JJTkdfTEVOIChYRU5LQkRfSU5fUklOR19T SVpFIC8gWEVOS0JEX0lOX0VWRU5UX1NJWkUpCisjZGVmaW5lIFhFTktCRF9JTl9SSU5HX09GRlMg MTAyNAorI2RlZmluZSBYRU5LQkRfSU5fUklORyhwYWdlKSBcCisgICAgKCh1bmlvbiB4ZW5rYmRf aW5fZXZlbnQgKikoKGNoYXIgKikocGFnZSkgKyBYRU5LQkRfSU5fUklOR19PRkZTKSkKKyNkZWZp bmUgWEVOS0JEX0lOX1JJTkdfUkVGKHBhZ2UsIGlkeCkgXAorICAgIChYRU5LQkRfSU5fUklORygo cGFnZSkpWyhpZHgpICUgWEVOS0JEX0lOX1JJTkdfTEVOXSkKKworI2RlZmluZSBYRU5LQkRfT1VU X1JJTkdfU0laRSAxMDI0CisjZGVmaW5lIFhFTktCRF9PVVRfUklOR19MRU4gKFhFTktCRF9PVVRf UklOR19TSVpFIC8gWEVOS0JEX09VVF9FVkVOVF9TSVpFKQorI2RlZmluZSBYRU5LQkRfT1VUX1JJ TkdfT0ZGUyAoWEVOS0JEX0lOX1JJTkdfT0ZGUyArIFhFTktCRF9JTl9SSU5HX1NJWkUpCisjZGVm aW5lIFhFTktCRF9PVVRfUklORyhwYWdlKSBcCisgICAgKCh1bmlvbiB4ZW5rYmRfb3V0X2V2ZW50 ICopKChjaGFyICopKHBhZ2UpICsgWEVOS0JEX09VVF9SSU5HX09GRlMpKQorI2RlZmluZSBYRU5L QkRfT1VUX1JJTkdfUkVGKHBhZ2UsIGlkeCkgXAorICAgIChYRU5LQkRfT1VUX1JJTkcoKHBhZ2Up KVsoaWR4KSAlIFhFTktCRF9PVVRfUklOR19MRU5dKQorCitzdHJ1Y3QgeGVua2JkX3BhZ2UKK3sK KyAgICB1aW50MzJfdCBpbl9jb25zLCBpbl9wcm9kOworICAgIHVpbnQzMl90IG91dF9jb25zLCBv dXRfcHJvZDsKK307CisKKyNlbmRpZiAvKiBYRU5fUFVCTElDX0lPX0tCRElGX0ggKi8KZGlmZiAt LWdpdCBhL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9uZXRpZi5oIGIvaW5jbHVkZS9ody94 ZW4vaW50ZXJmYWNlL2lvL25ldGlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uZjRhMjhhNDNiMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcveGVuL2ludGVy ZmFjZS9pby9uZXRpZi5oCkBAIC0wLDAgKzEsMTAxMCBAQAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogbmV0aWYuaAorICoKKyAqIFVuaWZpZWQgbmV0d29yay1kZXZpY2UgSS9PIGludGVyZmFj ZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAw My0yMDA0LCBLZWlyIEZyYXNlcgorICovCisKKyNpZm5kZWYgWEVOX1BVQkxJQ19JT19ORVRJRl9I CisjZGVmaW5lIFhFTl9QVUJMSUNfSU9fTkVUSUZfSAorCisjaW5jbHVkZSAicmluZy5oIgorI2lu Y2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisKKy8qCisgKiBPbGRlciBpbXBsZW1lbnRhdGlvbiBv ZiBYZW4gbmV0d29yayBmcm9udGVuZCAvIGJhY2tlbmQgaGFzIGFuCisgKiBpbXBsaWNpdCBkZXBl bmRlbmN5IG9uIHRoZSBNQVhfU0tCX0ZSQUdTIGFzIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICog cmluZyBzbG90cyBhIHNrYiBjYW4gdXNlLiBOZXRmcm9udCAvIG5ldGJhY2sgbWF5IG5vdCB3b3Jr IGFzCisgKiBleHBlY3RlZCB3aGVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGhhdmUgZGlmZmVyZW50 IE1BWF9TS0JfRlJBR1MuCisgKgorICogQSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gYWRkIG1lY2hh bmlzbSBmb3IgbmV0ZnJvbnQgLyBuZXRiYWNrIHRvCisgKiBuZWdvdGlhdGUgdGhpcyB2YWx1ZS4g SG93ZXZlciB3ZSBjYW5ub3QgZml4IGFsbCBwb3NzaWJsZQorICogZnJvbnRlbmRzLCBzbyB3ZSBu ZWVkIHRvIGRlZmluZSBhIHZhbHVlIHdoaWNoIHN0YXRlcyB0aGUgbWluaW11bQorICogc2xvdHMg YmFja2VuZCBtdXN0IHN1cHBvcnQuCisgKgorICogVGhlIG1pbmltdW0gdmFsdWUgZGVyaXZlcyBm cm9tIG9sZGVyIExpbnV4IGtlcm5lbCdzIE1BWF9TS0JfRlJBR1MKKyAqICgxOCksIHdoaWNoIGlz IHByb3ZlZCB0byB3b3JrIHdpdGggbW9zdCBmcm9udGVuZHMuIEFueSBuZXcgYmFja2VuZAorICog d2hpY2ggZG9lc24ndCBuZWdvdGlhdGUgd2l0aCBmcm9udGVuZCBzaG91bGQgZXhwZWN0IGZyb250 ZW5kIHRvCisgKiBzZW5kIGEgdmFsaWQgcGFja2V0IHVzaW5nIHNsb3RzIHVwIHRvIHRoaXMgdmFs dWUuCisgKi8KKyNkZWZpbmUgWEVOX05FVElGX05SX1NMT1RTX01JTiAxOAorCisvKgorICogTm90 aWZpY2F0aW9ucyBhZnRlciBlbnF1ZXVpbmcgYW55IHR5cGUgb2YgbWVzc2FnZSBzaG91bGQgYmUg Y29uZGl0aW9uYWwgb24KKyAqIHRoZSBhcHByb3ByaWF0ZSByZXFfZXZlbnQgb3IgcnNwX2V2ZW50 IGZpZWxkIGluIHRoZSBzaGFyZWQgcmluZy4KKyAqIElmIHRoZSBjbGllbnQgc2VuZHMgbm90aWZp Y2F0aW9uIGZvciByeCByZXF1ZXN0cyB0aGVuIGl0IHNob3VsZCBzcGVjaWZ5CisgKiBmZWF0dXJl ICdmZWF0dXJlLXJ4LW5vdGlmeScgdmlhIHhlbmJ1cy4gT3RoZXJ3aXNlIHRoZSBiYWNrZW5kIHdp bGwgYXNzdW1lCisgKiB0aGF0IGl0IGNhbm5vdCBzYWZlbHkgcXVldWUgcGFja2V0cyAoYXMgaXQg bWF5IG5vdCBiZSBraWNrZWQgdG8gc2VuZCB0aGVtKS4KKyAqLworCisvKgorICogImZlYXR1cmUt c3BsaXQtZXZlbnQtY2hhbm5lbHMiIGlzIGludHJvZHVjZWQgdG8gc2VwYXJhdGUgZ3Vlc3QgVFgK KyAqIGFuZCBSWCBub3RpZmljYXRpb24uIEJhY2tlbmQgZWl0aGVyIGRvZXNuJ3Qgc3VwcG9ydCB0 aGlzIGZlYXR1cmUgb3IKKyAqIGFkdmVydGlzZXMgaXQgdmlhIHhlbnN0b3JlIGFzIDAgKGRpc2Fi bGVkKSBvciAxIChlbmFibGVkKS4KKyAqCisgKiBUbyBtYWtlIHVzZSBvZiB0aGlzIGZlYXR1cmUs IGZyb250ZW5kIHNob3VsZCBhbGxvY2F0ZSB0d28gZXZlbnQKKyAqIGNoYW5uZWxzIGZvciBUWCBh bmQgUlgsIGFkdmVydGlzZSB0aGVtIHRvIGJhY2tlbmQgYXMKKyAqICJldmVudC1jaGFubmVsLXR4 IiBhbmQgImV2ZW50LWNoYW5uZWwtcngiIHJlc3BlY3RpdmVseS4gSWYgZnJvbnRlbmQKKyAqIGRv ZXNuJ3Qgd2FudCB0byB1c2UgdGhpcyBmZWF0dXJlLCBpdCBqdXN0IHdyaXRlcyAiZXZlbnQtY2hh bm5lbCIKKyAqIG5vZGUgYXMgYmVmb3JlLgorICovCisKKy8qCisgKiBNdWx0aXBsZSB0cmFuc21p dCBhbmQgcmVjZWl2ZSBxdWV1ZXM6CisgKiBJZiBzdXBwb3J0ZWQsIHRoZSBiYWNrZW5kIHdpbGwg d3JpdGUgdGhlIGtleSAibXVsdGktcXVldWUtbWF4LXF1ZXVlcyIgdG8KKyAqIHRoZSBkaXJlY3Rv cnkgZm9yIHRoYXQgdmlmLCBhbmQgc2V0IGl0cyB2YWx1ZSB0byB0aGUgbWF4aW11bSBzdXBwb3J0 ZWQKKyAqIG51bWJlciBvZiBxdWV1ZXMuCisgKiBGcm9udGVuZHMgdGhhdCBhcmUgYXdhcmUgb2Yg dGhpcyBmZWF0dXJlIGFuZCB3aXNoIHRvIHVzZSBpdCBjYW4gd3JpdGUgdGhlCisgKiBrZXkgIm11 bHRpLXF1ZXVlLW51bS1xdWV1ZXMiLCBzZXQgdG8gdGhlIG51bWJlciB0aGV5IHdpc2ggdG8gdXNl LCB3aGljaAorICogbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybywgYW5kIG5vIG1vcmUgdGhhbiB0 aGUgdmFsdWUgcmVwb3J0ZWQgYnkgdGhlIGJhY2tlbmQKKyAqIGluICJtdWx0aS1xdWV1ZS1tYXgt cXVldWVzIi4KKyAqCisgKiBRdWV1ZXMgcmVwbGljYXRlIHRoZSBzaGFyZWQgcmluZ3MgYW5kIGV2 ZW50IGNoYW5uZWxzLgorICogImZlYXR1cmUtc3BsaXQtZXZlbnQtY2hhbm5lbHMiIG1heSBvcHRp b25hbGx5IGJlIHVzZWQgd2hlbiB1c2luZworICogbXVsdGlwbGUgcXVldWVzLCBidXQgaXMgbm90 IG1hbmRhdG9yeS4KKyAqCisgKiBFYWNoIHF1ZXVlIGNvbnNpc3RzIG9mIG9uZSBzaGFyZWQgcmlu ZyBwYWlyLCBpLmUuIHRoZXJlIG11c3QgYmUgdGhlIHNhbWUKKyAqIG51bWJlciBvZiB0eCBhbmQg cnggcmluZ3MuCisgKgorICogRm9yIGZyb250ZW5kcyByZXF1ZXN0aW5nIGp1c3Qgb25lIHF1ZXVl LCB0aGUgdXN1YWwgZXZlbnQtY2hhbm5lbCBhbmQKKyAqIHJpbmctcmVmIGtleXMgYXJlIHdyaXR0 ZW4gYXMgYmVmb3JlLCBzaW1wbGlmeWluZyB0aGUgYmFja2VuZCBwcm9jZXNzaW5nCisgKiB0byBh dm9pZCBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGEgZnJvbnRlbmQgdGhhdCBkb2Vzbid0IHVuZGVy c3RhbmQgdGhlCisgKiBtdWx0aS1xdWV1ZSBmZWF0dXJlLCBhbmQgb25lIHRoYXQgZG9lcywgYnV0 IHJlcXVlc3RlZCBvbmx5IG9uZSBxdWV1ZS4KKyAqCisgKiBGcm9udGVuZHMgcmVxdWVzdGluZyB0 d28gb3IgbW9yZSBxdWV1ZXMgbXVzdCBub3Qgd3JpdGUgdGhlIHRvcGxldmVsCisgKiBldmVudC1j aGFubmVsIChvciBldmVudC1jaGFubmVsLXt0eCxyeH0pIGFuZCB7dHgscnh9LXJpbmctcmVmIGtl eXMsCisgKiBpbnN0ZWFkIHdyaXRpbmcgdGhvc2Uga2V5cyB1bmRlciBzdWIta2V5cyBoYXZpbmcg dGhlIG5hbWUgInF1ZXVlLU4iIHdoZXJlCisgKiBOIGlzIHRoZSBpbnRlZ2VyIElEIG9mIHRoZSBx dWV1ZSBmb3Igd2hpY2ggdGhvc2Uga2V5cyBiZWxvbmcuIFF1ZXVlcworICogYXJlIGluZGV4ZWQg ZnJvbSB6ZXJvLiBGb3IgZXhhbXBsZSwgYSBmcm9udGVuZCB3aXRoIHR3byBxdWV1ZXMgYW5kIHNw bGl0CisgKiBldmVudCBjaGFubmVscyBtdXN0IHdyaXRlIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHF1 ZXVlLXJlbGF0ZWQga2V5czoKKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL211 bHRpLXF1ZXVlLW51bS1xdWV1ZXMgPSAiMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uvdmlm LzAvcXVldWUtMCA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAv dHgtcmluZy1yZWYgPSAiPHJpbmctcmVmLXR4MD4iCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZpZi8wL3F1ZXVlLTAvcngtcmluZy1yZWYgPSAiPHJpbmctcmVmLXJ4MD4iCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbC10eCA9ICI8ZXZ0Y2hu LXR4MD4iCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvZXZlbnQtY2hh bm5lbC1yeCA9ICI8ZXZ0Y2huLXJ4MD4iCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8w L3F1ZXVlLTEgPSAiIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92aWYvMC9xdWV1ZS0xL3R4 LXJpbmctcmVmID0gIjxyaW5nLXJlZi10eDE+IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 aWYvMC9xdWV1ZS0xL3J4LXJpbmctcmVmID0gIjxyaW5nLXJlZi1yeDEiCisgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvZXZlbnQtY2hhbm5lbC10eCA9ICI8ZXZ0Y2huLXR4 MT4iCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvZXZlbnQtY2hhbm5l bC1yeCA9ICI8ZXZ0Y2huLXJ4MT4iCisgKgorICogSWYgdGhlcmUgaXMgYW55IGluY29uc2lzdGVu Y3kgaW4gdGhlIFhlblN0b3JlIGRhdGEsIHRoZSBiYWNrZW5kIG1heQorICogY2hvb3NlIG5vdCB0 byBjb25uZWN0IGFueSBxdWV1ZXMsIGluc3RlYWQgdHJlYXRpbmcgdGhlIHJlcXVlc3QgYXMgYW4K KyAqIGVycm9yLiBUaGlzIGluY2x1ZGVzIHNjZW5hcmlvcyB3aGVyZSBtb3JlIChvciBmZXdlcikg cXVldWVzIHdlcmUKKyAqIHJlcXVlc3RlZCB0aGFuIHRoZSBmcm9udGVuZCBwcm92aWRlZCBkZXRh aWxzIGZvci4KKyAqCisgKiBNYXBwaW5nIG9mIHBhY2tldHMgdG8gcXVldWVzIGlzIGNvbnNpZGVy ZWQgdG8gYmUgYSBmdW5jdGlvbiBvZiB0aGUKKyAqIHRyYW5zbWl0dGluZyBzeXN0ZW0gKGJhY2tl bmQgb3IgZnJvbnRlbmQpIGFuZCBpcyBub3QgbmVnb3RpYXRlZAorICogYmV0d2VlbiB0aGUgdHdv LiBHdWVzdHMgYXJlIGZyZWUgdG8gdHJhbnNtaXQgcGFja2V0cyBvbiBhbnkgcXVldWUKKyAqIHRo ZXkgY2hvb3NlLCBwcm92aWRlZCBpdCBoYXMgYmVlbiBzZXQgdXAgY29ycmVjdGx5LiBHdWVzdHMg bXVzdCBiZQorICogcHJlcGFyZWQgdG8gcmVjZWl2ZSBwYWNrZXRzIG9uIGFueSBxdWV1ZSB0aGV5 IGhhdmUgcmVxdWVzdGVkIGJlIHNldCB1cC4KKyAqLworCisvKgorICogImZlYXR1cmUtbm8tY3N1 bS1vZmZsb2FkIiBzaG91bGQgYmUgdXNlZCB0byB0dXJuIElQdjQgVENQL1VEUCBjaGVja3N1bQor ICogb2ZmbG9hZCBvZmYgb3Igb24uIElmIGl0IGlzIG1pc3NpbmcgdGhlbiB0aGUgZmVhdHVyZSBp cyBhc3N1bWVkIHRvIGJlIG9uLgorICogImZlYXR1cmUtaXB2Ni1jc3VtLW9mZmxvYWQiIHNob3Vs ZCBiZSB1c2VkIHRvIHR1cm4gSVB2NiBUQ1AvVURQIGNoZWNrc3VtCisgKiBvZmZsb2FkIG9uIG9y IG9mZi4gSWYgaXQgaXMgbWlzc2luZyB0aGVuIHRoZSBmZWF0dXJlIGlzIGFzc3VtZWQgdG8gYmUg b2ZmLgorICovCisKKy8qCisgKiAiZmVhdHVyZS1nc28tdGNwdjQiIGFuZCAiZmVhdHVyZS1nc28t dGNwdjYiIGFkdmVydGlzZSB0aGUgY2FwYWJpbGl0eSB0bworICogaGFuZGxlIGxhcmdlIFRDUCBw YWNrZXRzIChpbiBJUHY0IG9yIElQdjYgZm9ybSByZXNwZWN0aXZlbHkpLiBOZWl0aGVyCisgKiBm cm9udGVuZHMgbm9yIGJhY2tlbmRzIGFyZSBhc3N1bWVkIHRvIGJlIGNhcGFibGUgdW5sZXNzIHRo ZSBmbGFncyBhcmUKKyAqIHByZXNlbnQuCisgKi8KKworLyoKKyAqICJmZWF0dXJlLW11bHRpY2Fz dC1jb250cm9sIiBhbmQgImZlYXR1cmUtZHluYW1pYy1tdWx0aWNhc3QtY29udHJvbCIKKyAqIGFk dmVydGlzZSB0aGUgY2FwYWJpbGl0eSB0byBmaWx0ZXIgZXRoZXJuZXQgbXVsdGljYXN0IHBhY2tl dHMgaW4gdGhlCisgKiBiYWNrZW5kLiBJZiB0aGUgZnJvbnRlbmQgd2lzaGVzIHRvIHRha2UgYWR2 YW50YWdlIG9mIHRoaXMgZmVhdHVyZSB0aGVuCisgKiBpdCBtYXkgc2V0ICJyZXF1ZXN0LW11bHRp Y2FzdC1jb250cm9sIi4gSWYgdGhlIGJhY2tlbmQgb25seSBhZHZlcnRpc2VzCisgKiAiZmVhdHVy ZS1tdWx0aWNhc3QtY29udHJvbCIgdGhlbiAicmVxdWVzdC1tdWx0aWNhc3QtY29udHJvbCIgbXVz dCBiZSBzZXQKKyAqIGJlZm9yZSB0aGUgZnJvbnRlbmQgbW92ZXMgaW50byB0aGUgY29ubmVjdGVk IHN0YXRlLiBUaGUgYmFja2VuZCB3aWxsCisgKiBzYW1wbGUgdGhlIHZhbHVlIG9uIHRoaXMgc3Rh dGUgdHJhbnNpdGlvbiBhbmQgYW55IHN1YnNlcXVlbnQgY2hhbmdlIGluCisgKiB2YWx1ZSB3aWxs IGhhdmUgbm8gZWZmZWN0LiBIb3dldmVyLCBpZiB0aGUgYmFja2VuZCBhbHNvIGFkdmVydGlzZXMK KyAqICJmZWF0dXJlLWR5bmFtaWMtbXVsdGljYXN0LWNvbnRyb2wiIHRoZW4gInJlcXVlc3QtbXVs dGljYXN0LWNvbnRyb2wiCisgKiBtYXkgYmUgc2V0IGJ5IHRoZSBmcm9udGVuZCBhdCBhbnkgdGlt ZS4gSW4gdGhpcyBjYXNlLCB0aGUgYmFja2VuZCB3aWxsCisgKiB3YXRjaCB0aGUgdmFsdWUgYW5k IHJlLXNhbXBsZSBvbiB3YXRjaCBldmVudHMuCisgKgorICogSWYgdGhlIHNhbXBsZWQgdmFsdWUg b2YgInJlcXVlc3QtbXVsdGljYXN0LWNvbnRyb2wiIGlzIHNldCB0aGVuIHRoZQorICogYmFja2Vu ZCB0cmFuc21pdCBzaWRlIHNob3VsZCBubyBsb25nZXIgZmxvb2QgbXVsdGljYXN0IHBhY2tldHMg dG8gdGhlCisgKiBmcm9udGVuZCwgaXQgc2hvdWxkIGluc3RlYWQgZHJvcCBhbnkgbXVsdGljYXN0 IHBhY2tldCB0aGF0IGRvZXMgbm90CisgKiBtYXRjaCBpbiBhIGZpbHRlciBsaXN0LgorICogVGhl IGxpc3QgaXMgYW1lbmRlZCBieSB0aGUgZnJvbnRlbmQgYnkgc2VuZGluZyBkdW1teSB0cmFuc21p dCByZXF1ZXN0cworICogY29udGFpbmluZyBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF97QURE LERFTH0gZXh0cmEtaW5mbyBmcmFnbWVudHMgYXMKKyAqIHNwZWNpZmllZCBiZWxvdy4KKyAqIE5v dGUgdGhhdCB0aGUgZmlsdGVyIGxpc3QgbWF5IGJlIGFtZW5kZWQgZXZlbiBpZiB0aGUgc2FtcGxl ZCB2YWx1ZSBvZgorICogInJlcXVlc3QtbXVsdGljYXN0LWNvbnRyb2wiIGlzIG5vdCBzZXQsIGhv d2V2ZXIgdGhlIGZpbHRlciBzaG91bGQgb25seQorICogYmUgYXBwbGllZCBpZiBpdCBpcyBzZXQu CisgKi8KKworLyoKKyAqIENvbnRyb2wgcmluZworICogPT09PT09PT09PT09CisgKgorICogU29t ZSBmZWF0dXJlcywgc3VjaCBhcyBoYXNoaW5nIChkZXRhaWxlZCBiZWxvdyksIHJlcXVpcmUgYQor ICogc2lnbmlmaWNhbnQgYW1vdW50IG9mIG91dC1vZi1iYW5kIGRhdGEgdG8gYmUgcGFzc2VkIGZy b20gZnJvbnRlbmQgdG8KKyAqIGJhY2tlbmQuIFVzZSBvZiB4ZW5zdG9yZSBpcyBub3Qgc3VpdGFi bGUgZm9yIGxhcmdlIHF1YW50aXRpZXMgb2YgZGF0YQorICogYmVjYXVzZSBvZiBxdW90YSBsaW1p dGF0aW9ucyBhbmQgc28gYSBkZWRpY2F0ZWQgJ2NvbnRyb2wgcmluZycgaXMgdXNlZC4KKyAqIFRo ZSBhYmlsaXR5IG9mIHRoZSBiYWNrZW5kIHRvIHVzZSBhIGNvbnRyb2wgcmluZyBpcyBhZHZlcnRp c2VkIGJ5CisgKiBzZXR0aW5nOgorICoKKyAqIC9sb2NhbC9kb21haW4vWC9iYWNrZW5kLzxkb21p ZD4vPHZpZj4vZmVhdHVyZS1jdHJsLXJpbmcgPSAiMSIKKyAqCisgKiBUaGUgZnJvbnRlbmQgcHJv dmlkZXMgYSBjb250cm9sIHJpbmcgdG8gdGhlIGJhY2tlbmQgYnkgc2V0dGluZzoKKyAqCisgKiAv bG9jYWwvZG9tYWluLzxkb21pZD4vZGV2aWNlL3ZpZi88dmlmPi9jdHJsLXJpbmctcmVmID0gPGdy ZWY+CisgKiAvbG9jYWwvZG9tYWluLzxkb21pZD4vZGV2aWNlL3ZpZi88dmlmPi9ldmVudC1jaGFu bmVsLWN0cmwgPSA8cG9ydD4KKyAqCisgKiB3aGVyZSA8Z3JlZj4gaXMgdGhlIGdyYW50IHJlZmVy ZW5jZSBvZiB0aGUgc2hhcmVkIHBhZ2UgdXNlZCB0bworICogaW1wbGVtZW50IHRoZSBjb250cm9s IHJpbmcgYW5kIDxwb3J0PiBpcyBhbiBldmVudCBjaGFubmVsIHRvIGJlIHVzZWQKKyAqIGFzIGEg bWFpbGJveCBpbnRlcnJ1cHQuIFRoZXNlIGtleXMgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBmcm9u dGVuZAorICogbW92ZXMgaW50byB0aGUgY29ubmVjdGVkIHN0YXRlLgorICoKKyAqIFRoZSBjb250 cm9sIHJpbmcgdXNlcyBhIGZpeGVkIHJlcXVlc3QvcmVzcG9uc2UgbWVzc2FnZSBzaXplIGFuZCBp cworICogYmFsYW5jZWQgKGkuZS4gb25lIHJlcXVlc3QgdG8gb25lIHJlc3BvbnNlKSwgc28gb3Bl cmF0aW9uYWxseSBpdCBpcyBtdWNoCisgKiB0aGUgc2FtZSBhcyBhIHRyYW5zbWl0IG9yIHJlY2Vp dmUgcmluZy4KKyAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyByZXF1aXJlbWVudCB0aGF0IHJlc3Bv bnNlcyBhcmUgaXNzdWVkIGluIHRoZSBzYW1lCisgKiBvcmRlciBhcyByZXF1ZXN0cy4KKyAqLwor CisvKgorICogSGFzaCB0eXBlcworICogPT09PT09PT09PQorICoKKyAqIEZvciB0aGUgcHVycG9z ZXMgb2YgdGhlIGRlZmluaXRpb25zIGJlbG93LCAnUGFja2V0W10nIGlzIGFuIGFycmF5IG9mCisg KiBvY3RldHMgY29udGFpbmluZyBhbiBJUCBwYWNrZXQgd2l0aG91dCBvcHRpb25zLCAnQXJyYXlb WC4uWV0nIG1lYW5zIGEKKyAqIHN1Yi1hcnJheSBvZiAnQXJyYXknIGNvbnRhaW5pbmcgYnl0ZXMg WCB0aHJ1IFkgaW5jbHVzaXZlLCBhbmQgJysnIGlzCisgKiB1c2VkIHRvIGluZGljYXRlIGNvbmNh dGVuYXRpb24gb2YgYXJyYXlzLgorICovCisKKy8qCisgKiBBIGhhc2ggY2FsY3VsYXRlZCBvdmVy IGFuIElQIHZlcnNpb24gNCBoZWFkZXIgYXMgZm9sbG93czoKKyAqCisgKiBCdWZmZXJbMC4uOF0g PSBQYWNrZXRbMTIuLjE1XSAoc291cmNlIGFkZHJlc3MpICsKKyAqICAgICAgICAgICAgICAgIFBh Y2tldFsxNi4uMTldIChkZXN0aW5hdGlvbiBhZGRyZXNzKQorICoKKyAqIFJlc3VsdCA9IEhhc2go QnVmZmVyLCA4KQorICovCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNCAw CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY0IFwKKyAgICAoMSA8PCBfWEVO X05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjQpCisKKy8qCisgKiBBIGhhc2ggY2FsY3VsYXRlZCBv dmVyIGFuIElQIHZlcnNpb24gNCBoZWFkZXIgYW5kIFRDUCBoZWFkZXIgYXMKKyAqIGZvbGxvd3M6 CisgKgorICogQnVmZmVyWzAuLjEyXSA9IFBhY2tldFsxMi4uMTVdIChzb3VyY2UgYWRkcmVzcykg KworICogICAgICAgICAgICAgICAgIFBhY2tldFsxNi4uMTldIChkZXN0aW5hdGlvbiBhZGRyZXNz KSArCisgKiAgICAgICAgICAgICAgICAgUGFja2V0WzIwLi4yMV0gKHNvdXJjZSBwb3J0KSArCisg KiAgICAgICAgICAgICAgICAgUGFja2V0WzIyLi4yM10gKGRlc3RpbmF0aW9uIHBvcnQpCisgKgor ICogUmVzdWx0ID0gSGFzaChCdWZmZXIsIDEyKQorICovCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RS TF9IQVNIX1RZUEVfSVBWNF9UQ1AgMQorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVf SVBWNF9UQ1AgXAorICAgICgxIDw8IF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNF9UQ1Ap CisKKy8qCisgKiBBIGhhc2ggY2FsY3VsYXRlZCBvdmVyIGFuIElQIHZlcnNpb24gNiBoZWFkZXIg YXMgZm9sbG93czoKKyAqCisgKiBCdWZmZXJbMC4uMzJdID0gUGFja2V0WzguLjIzXSAgKHNvdXJj ZSBhZGRyZXNzICkgKworICogICAgICAgICAgICAgICAgIFBhY2tldFsyNC4uMzldIChkZXN0aW5h dGlvbiBhZGRyZXNzKQorICoKKyAqIFJlc3VsdCA9IEhhc2goQnVmZmVyLCAzMikKKyAqLworI2Rl ZmluZSBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjYgMgorI2RlZmluZSBYRU5fTkVUSUZf Q1RSTF9IQVNIX1RZUEVfSVBWNiBcCisgICAgKDEgPDwgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQ RV9JUFY2KQorCisvKgorICogQSBoYXNoIGNhbGN1bGF0ZWQgb3ZlciBhbiBJUCB2ZXJzaW9uIDYg aGVhZGVyIGFuZCBUQ1AgaGVhZGVyIGFzCisgKiBmb2xsb3dzOgorICoKKyAqIEJ1ZmZlclswLi4z Nl0gPSBQYWNrZXRbOC4uMjNdICAoc291cmNlIGFkZHJlc3MpICsKKyAqICAgICAgICAgICAgICAg ICBQYWNrZXRbMjQuLjM5XSAoZGVzdGluYXRpb24gYWRkcmVzcykgKworICogICAgICAgICAgICAg ICAgIFBhY2tldFs0MC4uNDFdIChzb3VyY2UgcG9ydCkgKworICogICAgICAgICAgICAgICAgIFBh Y2tldFs0Mi4uNDNdIChkZXN0aW5hdGlvbiBwb3J0KQorICoKKyAqIFJlc3VsdCA9IEhhc2goQnVm ZmVyLCAzNikKKyAqLworI2RlZmluZSBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjZfVENQ IDMKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjZfVENQIFwKKyAgICAoMSA8 PCBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjZfVENQKQorCisvKgorICogSGFzaCBhbGdv cml0aG1zCisgKiA9PT09PT09PT09PT09PT0KKyAqLworCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJM X0hBU0hfQUxHT1JJVEhNX05PTkUgMAorCisvKgorICogVG9lcGxpdHogaGFzaDoKKyAqLworCisj ZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hfQUxHT1JJVEhNX1RPRVBMSVRaIDEKKworLyoKKyAq IENvbnRyb2wgcmVxdWVzdHMgKHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXF1ZXN0KQorICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogQWxs IHJlcXVlc3RzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgKgorICogICAgMCAgICAgMSAg ICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgICAgaWQgICAgIHwg ICB0eXBlICAgIHwgICAgICAgICBkYXRhWzBdICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgICAgICAgICBkYXRhWzFdICAg ICAgIHwgICAgICAgICBkYXRhWzJdICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpZDogdGhlIHJlcXVlc3QgaWRlbnRp ZmllciwgZWNob2VkIGluIHJlc3BvbnNlLgorICogdHlwZTogdGhlIHR5cGUgb2YgcmVxdWVzdCAo c2VlIGJlbG93KQorICogZGF0YVtdOiBhbnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVl c3QgKGRldGVybWluZWQgYnkgdHlwZSkKKyAqLworCitzdHJ1Y3QgeGVuX25ldGlmX2N0cmxfcmVx dWVzdCB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDE2X3QgdHlwZTsKKworI2RlZmluZSBY RU5fTkVUSUZfQ1RSTF9UWVBFX0lOVkFMSUQgICAgICAgICAgICAgICAwCisjZGVmaW5lIFhFTl9O RVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfRkxBR1MgICAgICAgIDEKKyNkZWZpbmUgWEVOX05FVElG X0NUUkxfVFlQRV9TRVRfSEFTSF9GTEFHUyAgICAgICAgMgorI2RlZmluZSBYRU5fTkVUSUZfQ1RS TF9UWVBFX1NFVF9IQVNIX0tFWSAgICAgICAgICAzCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZ UEVfR0VUX0hBU0hfTUFQUElOR19TSVpFIDQKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9T RVRfSEFTSF9NQVBQSU5HX1NJWkUgNQorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9I QVNIX01BUFBJTkcgICAgICA2CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hf QUxHT1JJVEhNICAgIDcKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9HRVRfR1JFRl9NQVBQ SU5HX1NJWkUgOAorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0FERF9HUkVGX01BUFBJTkcg ICAgICA5CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfREVMX0dSRUZfTUFQUElORyAgICAg MTAKKworICAgIHVpbnQzMl90IGRhdGFbM107Cit9OworCisvKgorICogQ29udHJvbCByZXNwb25z ZXMgKHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXNwb25zZSkKKyAqID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogQWxsIHJlc3BvbnNlcyBo YXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICoKKyAqICAgIDAgICAgIDEgICAgIDIgICAgIDMg ICAgIDQgICAgIDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8ICAgIGlkICAgICB8ICAgdHlwZSAgICB8 ICAgICAgICAgc3RhdHVzICAgICAgICB8CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8ICAgICAgICAgZGF0YSAgICAgICAgICB8CisgKiAr LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKgorICogaWQ6IHRoZSBjb3JyZXNwb25kaW5nIHJl cXVlc3QgaWRlbnRpZmllcgorICogdHlwZTogdGhlIHR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcg cmVxdWVzdAorICogc3RhdHVzOiB0aGUgc3RhdHVzIG9mIHJlcXVlc3QgcHJvY2Vzc2luZworICog ZGF0YTogYW55IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXNwb25zZSAoZGV0ZXJtaW5lZCBi eSB0eXBlIGFuZAorICogICAgICAgc3RhdHVzKQorICovCisKK3N0cnVjdCB4ZW5fbmV0aWZfY3Ry bF9yZXNwb25zZSB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDE2X3QgdHlwZTsKKyAgICB1 aW50MzJfdCBzdGF0dXM7CisKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1Mg ICAgICAgICAgIDAKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQg ICAgIDEKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIDIK KyNkZWZpbmUgWEVOX05FVElGX0NUUkxfU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyAgIDMKKworICAg IHVpbnQzMl90IGRhdGE7Cit9OworCisvKgorICogU3RhdGljIEdyYW50cyAoc3RydWN0IHhlbl9u ZXRpZl9ncmVmKQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoK KyAqIEEgZnJvbnRlbmQgbWF5IHByb3ZpZGUgYSBmaXhlZCBzZXQgb2YgZ3JhbnQgcmVmZXJlbmNl cyB0byBiZSBtYXBwZWQgb24KKyAqIHRoZSBiYWNrZW5kLiBUaGUgbWVzc2FnZSBvZiB0eXBlIFhF Tl9ORVRJRl9DVFJMX1RZUEVfQUREX0dSRUZfTUFQUElORworICogcHJpb3IgaXRzIHVzYWdlIGlu IHRoZSBjb21tYW5kIHJpbmcgYWxsb3dzIGZvciBjcmVhdGlvbiBvZiB0aGVzZSBtYXBwaW5ncy4K KyAqIFRoZSBiYWNrZW5kIHdpbGwgbWFpbnRhaW4gYSBmaXhlZCBhbW91bnQgb2YgdGhlc2UgbWFw cGluZ3MuCisgKgorICogWEVOX05FVElGX0NUUkxfVFlQRV9HRVRfR1JFRl9NQVBQSU5HX1NJWkUg bGV0cyBhIGZyb250ZW5kIHF1ZXJ5IGhvdyBtYW55CisgKiBvZiB0aGVzZSBtYXBwaW5ncyBjYW4g YmUga2VwdC4KKyAqCisgKiBFYWNoIGVudHJ5IGluIHRoZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX3tB REQsREVMfV9HUkVGX01BUFBJTkcgaW5wdXQgdGFibGUgaGFzCisgKiB0aGUgZm9sbG93aW5nIGZv cm1hdDoKKyAqCisgKiAgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAg ICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tKworICogfCBncmFudCByZWYgICAgICAgICAgICAgfCAgZmxhZ3MgICAgfCAgc3RhdHVz ICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t KworICoKKyAqIGdyYW50IHJlZjogZ3JhbnQgcmVmZXJlbmNlIChJTikKKyAqIGZsYWdzOiBmbGFn cyBkZXNjcmliaW5nIHRoZSBjb250cm9sIG9wZXJhdGlvbiAoSU4pCisgKiBzdGF0dXM6IFhFTl9O RVRJRl9DVFJMX1NUQVRVU18qIChPVVQpCisgKgorICogJ3N0YXR1cycgaXMgYW4gb3V0cHV0IHBh cmFtZXRlciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIHRvIGJlIHNldCB0byB6ZXJvCisgKiBwcmlv ciB0byBpdHMgdXNhZ2UgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbCBtZXNzYWdlcy4KKyAq LworCitzdHJ1Y3QgeGVuX25ldGlmX2dyZWYgeworICAgICAgIGdyYW50X3JlZl90IHJlZjsKKyAg ICAgICB1aW50MTZfdCBmbGFnczsKKworI2RlZmluZSBfWEVOX05FVElGX0NUUkxGX0dSRUZfcmVh ZG9ubHkgICAgMAorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTEZfR1JFRl9yZWFkb25seSAgICAoMVU8 PF9YRU5fTkVUSUZfQ1RSTEZfR1JFRl9yZWFkb25seSkKKworICAgICAgIHVpbnQxNl90IHN0YXR1 czsKK307CisKKy8qCisgKiBDb250cm9sIG1lc3NhZ2VzCisgKiA9PT09PT09PT09PT09PT09Cisg KgorICogWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9BTEdPUklUSE0KKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBpcyBzZW50IGJ5IHRo ZSBmcm9udGVuZCB0byBzZXQgdGhlIGRlc2lyZWQgaGFzaCBhbGdvcml0aG0uCisgKgorICogUmVx dWVzdDoKKyAqCisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfQUxH T1JJVEhNCisgKiAgZGF0YVswXSA9IGEgWEVOX05FVElGX0NUUkxfSEFTSF9BTEdPUklUSE1fKiB2 YWx1ZQorICogIGRhdGFbMV0gPSAwCisgKiAgZGF0YVsyXSA9IDAKKyAqCisgKiBSZXNwb25zZToK KyAqCisgKiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAg IC0gT3BlcmF0aW9uIG5vdAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN1cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NU QVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIFRoZSBhbGdvcml0aG0gaXMgbm90CisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkCisg KiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgIC0gT3Bl cmF0aW9uIHN1Y2Nlc3NmdWwKKyAqCisgKiBOT1RFOiBTZXR0aW5nIGRhdGFbMF0gdG8gWEVOX05F VElGX0NUUkxfSEFTSF9BTEdPUklUSE1fTk9ORSBkaXNhYmxlcworICogICAgICAgaGFzaGluZyBh bmQgdGhlIGJhY2tlbmQgaXMgZnJlZSB0byBjaG9vc2UgaG93IGl0IHN0ZWVycyBwYWNrZXRzCisg KiAgICAgICB0byBxdWV1ZXMgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91cikuCisgKgor ICogWEVOX05FVElGX0NUUkxfVFlQRV9HRVRfSEFTSF9GTEFHUworICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQg dG8gcXVlcnkgdGhlIHR5cGVzIG9mIGhhc2ggc3VwcG9ydGVkIGJ5CisgKiB0aGUgYmFja2VuZC4K KyAqCisgKiBSZXF1ZXN0OgorICoKKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9H RVRfSEFTSF9GTEFHUworICogIGRhdGFbMF0gPSAwCisgKiAgZGF0YVsxXSA9IDAKKyAqICBkYXRh WzJdID0gMAorICoKKyAqIFJlc3BvbnNlOgorICoKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RS TF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAtIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkCisgKiAgICAg ICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgLSBPcGVyYXRpb24gc3Vj Y2Vzc2Z1bAorICogIGRhdGEgICA9IHN1cHBvcnRlZCBoYXNoIHR5cGVzIChpZiBvcGVyYXRpb24g d2FzIHN1Y2Nlc3NmdWwpCisgKgorICogTk9URTogQSB2YWxpZCBoYXNoIGFsZ29yaXRobSBtdXN0 IGJlIHNlbGVjdGVkIGJlZm9yZSB0aGlzIG9wZXJhdGlvbiBjYW4KKyAqICAgICAgIHN1Y2NlZWQu CisgKgorICogWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9GTEFHUworICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJv bnRlbmQgdG8gc2V0IHRoZSB0eXBlcyBvZiBoYXNoIHRoYXQgdGhlIGJhY2tlbmQKKyAqIHNob3Vs ZCBjYWxjdWxhdGUuIChTZWUgYWJvdmUgZm9yIGhhc2ggdHlwZSBkZWZpbml0aW9ucykuCisgKiBO b3RlIHRoYXQgdGhlICdtYXhpbWFsJyB0eXBlIG9mIGhhc2ggc2hvdWxkIGFsd2F5cyBiZSBjaG9z ZW4uIEZvcgorICogZXhhbXBsZSwgaWYgdGhlIGZyb250ZW5kIHNldHMgYm90aCBJUFY0IGFuZCBJ UFY0X1RDUCBoYXNoIHR5cGVzIHRoZW4KKyAqIHRoZSBsYXR0ZXIgaGFzaCB0eXBlIHNob3VsZCBi ZSBjYWxjdWxhdGVkIGZvciBhbnkgVENQIHBhY2tldCBhbmQgdGhlCisgKiBmb3JtZXIgb25seSBj YWxjdWxhdGVkIGZvciBub24tVENQIHBhY2tldHMuCisgKgorICogUmVxdWVzdDoKKyAqCisgKiAg dHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfRkxBR1MKKyAqICBkYXRhWzBd ID0gYml0d2lzZSBPUiBvZiBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfKiB2YWx1ZXMKKyAqICBk YXRhWzFdID0gMAorICogIGRhdGFbMl0gPSAwCisgKgorICogUmVzcG9uc2U6CisgKgorICogIHN0 YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJhdGlv biBub3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJ RF9QQVJBTUVURVIgLSBPbmUgb3IgbW9yZSBmbGFnCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgaW52YWxpZCBvcgorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9y dGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAg IC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqICBkYXRhICAgPSAwCisgKgorICogTk9URTogQSB2 YWxpZCBoYXNoIGFsZ29yaXRobSBtdXN0IGJlIHNlbGVjdGVkIGJlZm9yZSB0aGlzIG9wZXJhdGlv biBjYW4KKyAqICAgICAgIHN1Y2NlZWQuCisgKiAgICAgICBBbHNvLCBzZXR0aW5nIGRhdGFbMF0g dG8gemVybyBkaXNhYmxlcyBoYXNoaW5nIGFuZCB0aGUgYmFja2VuZAorICogICAgICAgaXMgZnJl ZSB0byBjaG9vc2UgaG93IGl0IHN0ZWVycyBwYWNrZXRzIHRvIHF1ZXVlcy4KKyAqCisgKiBYRU5f TkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0tFWQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUg a2V5IG9mIHRoZSBoYXNoIGlmIHRoZSBhbGdvcml0aG0KKyAqIHJlcXVpcmVzIGl0LiAoU2VlIGhh c2ggYWxnb3JpdGhtcyBhYm92ZSkuCisgKgorICogUmVxdWVzdDoKKyAqCisgKiAgdHlwZSAgICA9 IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZCisgKiAgZGF0YVswXSA9IGdyYW50IHJl ZmVyZW5jZSBvZiBwYWdlIGNvbnRhaW5pbmcgdGhlIGtleSAoYXNzdW1lZCB0bworICogICAgICAg ICAgICBzdGFydCBhdCBiZWdpbm5pbmcgb2YgZ3JhbnQpCisgKiAgZGF0YVsxXSA9IHNpemUgb2Yg a2V5IGluIG9jdGV0cworICogIGRhdGFbMl0gPSAwCisgKgorICogUmVzcG9uc2U6CisgKgorICog IHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJh dGlvbiBub3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5W QUxJRF9QQVJBTUVURVIgLSBLZXkgc2l6ZSBpcyBpbnZhbGlkCisgKiAgICAgICAgICAgWEVOX05F VElGX0NUUkxfU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyAgIC0gS2V5IHNpemUgaXMgbGFyZ2VyCisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhh biB0aGUgYmFja2VuZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN1cHBvcnRzCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVT X1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqICBkYXRhICAgPSAw CisgKgorICogTk9URTogQW55IGtleSBvY3RldHMgbm90IHNwZWNpZmllZCBhcmUgYXNzdW1lZCB0 byBiZSB6ZXJvICh0aGUga2V5CisgKiAgICAgICBpcyBhc3N1bWVkIHRvIGJlIGVtcHR5IGJ5IGRl ZmF1bHQpIGFuZCBzcGVjaWZ5aW5nIGEgbmV3IGtleQorICogICAgICAgaW52YWxpZGF0ZXMgYW55 IHByZXZpb3VzIGtleSwgaGVuY2Ugc3BlY2lmeWluZyBhIGtleSBzaXplIG9mCisgKiAgICAgICB6 ZXJvIHdpbGwgY2xlYXIgdGhlIGtleSAod2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBjYWxjdWxhdGVk IGhhc2gKKyAqICAgICAgIHdpbGwgYWx3YXlzIGJlIHplcm8pLgorICogICAgICAgVGhlIG1heGlt dW0gc2l6ZSBvZiBrZXkgaXMgYWxnb3JpdGhtIGFuZCBiYWNrZW5kIHNwZWNpZmljLCBidXQKKyAq ICAgICAgIGlzIGFsc28gbGltaXRlZCBieSB0aGUgc2luZ2xlIGdyYW50IHJlZmVyZW5jZS4KKyAq ICAgICAgIFRoZSBncmFudCByZWZlcmVuY2UgbWF5IGJlIHJlYWQtb25seSBhbmQgbXVzdCByZW1h aW4gdmFsaWQgdW50aWwKKyAqICAgICAgIHRoZSByZXNwb25zZSBoYXMgYmVlbiBwcm9jZXNzZWQu CisgKgorICogWEVOX05FVElGX0NUUkxfVFlQRV9HRVRfSEFTSF9NQVBQSU5HX1NJWkUKKyAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBpcyBz ZW50IGJ5IHRoZSBmcm9udGVuZCB0byBxdWVyeSB0aGUgbWF4aW11bSBzaXplIG9mIG1hcHBpbmcK KyAqIHRhYmxlIHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4gVGhlIHNpemUgaXMgc3BlY2lmaWVk IGluIHRlcm1zIG9mCisgKiB0YWJsZSBlbnRyaWVzLgorICoKKyAqIFJlcXVlc3Q6CisgKgorICog IHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX01BUFBJTkdfU0laRQorICog IGRhdGFbMF0gPSAwCisgKiAgZGF0YVsxXSA9IDAKKyAqICBkYXRhWzJdID0gMAorICoKKyAqIFJl c3BvbnNlOgorICoKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBP UlRFRCAtIE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NU UkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICogIGRhdGEg ICA9IG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBpbiB0aGUgbWFwcGluZyB0YWJs ZQorICogICAgICAgICAgIChpZiBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwpIG9yIHplcm8gaWYg YSBtYXBwaW5nIHRhYmxlIGlzCisgKiAgICAgICAgICAgbm90IHN1cHBvcnRlZCAoaS5lLiBoYXNo IG1hcHBpbmcgaXMgZG9uZSBvbmx5IGJ5IG1vZHVsYXIKKyAqICAgICAgICAgICBhcml0aG1ldGlj KS4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX01BUFBJTkdfU0laRQorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2Vu dCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgbWFwcGluZwor ICogdGFibGUgdG8gYmUgdXNlZCBieSB0aGUgYmFja2VuZC4gVGhlIHNpemUgaXMgc3BlY2lmaWVk IGluIHRlcm1zIG9mCisgKiB0YWJsZSBlbnRyaWVzLgorICogQW55IHByZXZpb3VzIHRhYmxlIGlz IGludmFsaWRhdGVkIGJ5IHRoaXMgbWVzc2FnZSBhbmQgYW55IG5ldyB0YWJsZQorICogaXMgYXNz dW1lZCB0byBiZSB6ZXJvIGZpbGxlZC4KKyAqCisgKiBSZXF1ZXN0OgorICoKKyAqICB0eXBlICAg ID0gWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUKKyAqICBkYXRhWzBd ID0gbnVtYmVyIG9mIGVudHJpZXMgaW4gbWFwcGluZyB0YWJsZQorICogIGRhdGFbMV0gPSAwCisg KiAgZGF0YVsyXSA9IDAKKyAqCisgKiBSZXNwb25zZToKKyAqCisgKiAgc3RhdHVzID0gWEVOX05F VElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdAorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRl ZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAt IFRhYmxlIHNpemUgaXMgaW52YWxpZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCisgKiAgZGF0YSAgID0g MAorICoKKyAqIE5PVEU6IFNldHRpbmcgZGF0YVswXSB0byAwIG1lYW5zIHRoYXQgaGFzaCBtYXBw aW5nIHNob3VsZCBiZSBkb25lCisgKiAgICAgICB1c2luZyBtb2R1bGFyIGFyaXRobWV0aWMuCisg KgorICogWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZy b250ZW5kIHRvIHNldCB0aGUgY29udGVudCBvZiB0aGUgdGFibGUgbWFwcGluZworICogaGFzaCB2 YWx1ZSB0byBxdWV1ZSBudW1iZXIuIFRoZSBiYWNrZW5kIHNob3VsZCBjYWxjdWxhdGUgdGhlIGhh c2ggZnJvbQorICogdGhlIHBhY2tldCBoZWFkZXIsIHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHRo ZSB0YWJsZSAobW9kdWxvIHRoZSBzaXplCisgKiBvZiB0aGUgdGFibGUpIGFuZCB0aGVuIHN0ZWVy IHRoZSBwYWNrZXQgdG8gdGhlIHF1ZXVlIG51bWJlciBmb3VuZCBhdAorICogdGhhdCBpbmRleC4K KyAqCisgKiBSZXF1ZXN0OgorICoKKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9T RVRfSEFTSF9NQVBQSU5HCisgKiAgZGF0YVswXSA9IGdyYW50IHJlZmVyZW5jZSBvZiBwYWdlIGNv bnRhaW5pbmcgdGhlIG1hcHBpbmcgKHN1Yi0pdGFibGUKKyAqICAgICAgICAgICAgKGFzc3VtZWQg dG8gc3RhcnQgYXQgYmVnaW5uaW5nIG9mIGdyYW50KQorICogIGRhdGFbMV0gPSBzaXplIG9mIChz dWItKXRhYmxlIGluIGVudHJpZXMKKyAqICBkYXRhWzJdID0gb2Zmc2V0LCBpbiBlbnRyaWVzLCBv ZiBzdWItdGFibGUgd2l0aGluIG92ZXJhbGwgdGFibGUKKyAqCisgKiBSZXNwb25zZToKKyAqCisg KiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3Bl cmF0aW9uIG5vdAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19J TlZBTElEX1BBUkFNRVRFUiAtIFRhYmxlIHNpemUgb3IgY29udGVudAorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGludmFsaWQKKyAqICAg ICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XICAgLSBUYWJsZSBz aXplIGlzIGxhcmdlcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoYW4gdGhlIGJhY2tlbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cworICogICAgICAgICAgIFhFTl9O RVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVs CisgKiAgZGF0YSAgID0gMAorICoKKyAqIE5PVEU6IFRoZSBvdmVyYWxsIHRhYmxlIGhhcyB0aGUg Zm9sbG93aW5nIGZvcm1hdDoKKyAqCisgKiAgICAgICAgICAwICAgICAxICAgICAyICAgICAzICAg ICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogICAgICAgKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogICAgICAgfCAgICAgICBtYXBwaW5n WzBdICAgICAgfCAgICAgICBtYXBwaW5nWzFdICAgICAgfAorICogICAgICAgKy0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAg Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogICAg ICAgfCAgICAgIG1hcHBpbmdbTi0yXSAgICAgfCAgICAgIG1hcHBpbmdbTi0xXSAgICAgfAorICog ICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwor ICoKKyAqICAgICAgIHdoZXJlIE4gaXMgc3BlY2lmaWVkIGJ5IGEgWEVOX05FVElGX0NUUkxfVFlQ RV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUKKyAqICAgICAgIG1lc3NhZ2UgYW5kIGVhY2ggIG1hcHBp bmcgbXVzdCBzcGVjaWZpZXMgYSBxdWV1ZSBiZXR3ZWVuIDAgYW5kCisgKiAgICAgICAibXVsdGkt cXVldWUtbnVtLXF1ZXVlcyIgKHNlZSBhYm92ZSkuCisgKiAgICAgICBUaGUgYmFja2VuZCBtYXkg c3VwcG9ydCBhIG1hcHBpbmcgdGFibGUgbGFyZ2VyIHRoYW4gY2FuIGJlCisgKiAgICAgICBtYXBw ZWQgYnkgYSBzaW5nbGUgZ3JhbnQgcmVmZXJlbmNlLiBUaHVzIHN1Yi10YWJsZXMgd2l0aGluIGEK KyAqICAgICAgIGxhcmdlciB0YWJsZSBjYW4gYmUgaW5kaXZpZHVhbGx5IHNldCBieSBzZW5kaW5n IG11bHRpcGxlIG1lc3NhZ2VzCisgKiAgICAgICB3aXRoIGRpZmZlcmluZyBvZmZzZXQgdmFsdWVz LiBTcGVjaWZ5aW5nIGEgbmV3IHN1Yi10YWJsZSBkb2VzIG5vdAorICogICAgICAgaW52YWxpZGF0 ZSBhbnkgdGFibGUgZGF0YSBvdXRzaWRlIHRoYXQgcmFuZ2UuCisgKiAgICAgICBUaGUgZ3JhbnQg cmVmZXJlbmNlIG1heSBiZSByZWFkLW9ubHkgYW5kIG11c3QgcmVtYWluIHZhbGlkIHVudGlsCisg KiAgICAgICB0aGUgcmVzcG9uc2UgaGFzIGJlZW4gcHJvY2Vzc2VkLgorICoKKyAqIFhFTl9ORVRJ Rl9DVFJMX1RZUEVfR0VUX0dSRUZfTUFQUElOR19TSVpFCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRl bmQgdG8gZmV0Y2ggdGhlIG51bWJlciBvZiBncmVmcyB0aGF0IGNhbiBiZSBrZXB0CisgKiBtYXBw ZWQgaW4gdGhlIGJhY2tlbmQuCisgKgorICogUmVxdWVzdDoKKyAqCisgKiAgdHlwZSAgICA9IFhF Tl9ORVRJRl9DVFJMX1RZUEVfR0VUX0dSRUZfTUFQUElOR19TSVpFCisgKiAgZGF0YVswXSA9IHF1 ZXVlIGluZGV4IChhc3N1bWVkIDAgZm9yIHNpbmdsZSBxdWV1ZSkKKyAqICBkYXRhWzFdID0gMAor ICogIGRhdGFbMl0gPSAwCisgKgorICogUmVzcG9uc2U6CisgKgorICogIHN0YXR1cyA9IFhFTl9O RVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJhdGlvbiBub3QKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0 ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIg LSBUaGUgcXVldWUgaW5kZXggaXMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQgb2YgcmFuZ2UKKyAqICAgICAgICAgICBYRU5fTkVUSUZf Q1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICog IGRhdGEgICA9IG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBpbiB0aGUgZ3JlZiBt YXBwaW5nIHRhYmxlCisgKiAgICAgICAgICAgKGlmIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCkg b3IgemVybyBpZiBpdCBpcyBub3Qgc3VwcG9ydGVkLgorICoKKyAqIFhFTl9ORVRJRl9DVFJMX1RZ UEVfQUREX0dSRUZfTUFQUElORworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCBmb3IgYmFja2VuZCB0byBt YXAgYSBsaXN0IG9mIGdyYW50CisgKiByZWZlcmVuY2VzLgorICoKKyAqIFJlcXVlc3Q6CisgKgor ICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0FERF9HUkVGX01BUFBJTkcKKyAqICBk YXRhWzBdID0gcXVldWUgaW5kZXgKKyAqICBkYXRhWzFdID0gZ3JhbnQgcmVmZXJlbmNlIG9mIHBh Z2UgY29udGFpbmluZyB0aGUgbWFwcGluZyBsaXN0CisgKiAgICAgICAgICAgIChyL3cgYW5kIGFz c3VtZWQgdG8gc3RhcnQgYXQgYmVnaW5uaW5nIG9mIHBhZ2UpCisgKiAgZGF0YVsyXSA9IHNpemUg b2YgbGlzdCBpbiBlbnRyaWVzCisgKgorICogUmVzcG9uc2U6CisgKgorICogIHN0YXR1cyA9IFhF Tl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJhdGlvbiBub3QKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw b3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVU RVIgLSBPcGVyYXRpb24gZmFpbGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVT X1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqCisgKiBOT1RFOiBF YWNoIGVudHJ5IGluIHRoZSBpbnB1dCB0YWJsZSBoYXMgdGhlIGZvcm1hdCBvdXRsaW5lZAorICog ICAgICAgaW4gc3RydWN0IHhlbl9uZXRpZl9ncmVmLgorICogICAgICAgQ29udHJhcnkgdG8gWEVO X05FVElGX0NUUkxfVFlQRV9ERUxfR1JFRl9NQVBQSU5HLCB0aGUgc3RydWN0CisgKiAgICAgICB4 ZW5fbmV0aWZfZ3JlZiAnc3RhdHVzJyBmaWVsZCBpcyBub3QgdXNlZCBhbmQgdGhlcmVmb3JlIHRo ZSByZXNwb25zZQorICogICAgICAgJ3N0YXR1cycgZGV0ZXJtaW5lcyB0aGUgc3VjY2VzcyBvZiB0 aGlzIG9wZXJhdGlvbi4gSW4gY2FzZSBvZgorICogICAgICAgZmFpbHVyZSBub25lIG9mIGdyYW50 cyBtYXBwaW5ncyBnZXQgYWRkZWQgaW4gdGhlIGJhY2tlbmQuCisgKgorICogWEVOX05FVElGX0NU UkxfVFlQRV9ERUxfR1JFRl9NQVBQSU5HCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIGZvciBiYWNrZW5k IHRvIHVubWFwIGEgbGlzdCBvZiBncmFudAorICogcmVmZXJlbmNlcy4KKyAqCisgKiBSZXF1ZXN0 OgorICoKKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9ERUxfR1JFRl9NQVBQSU5H CisgKiAgZGF0YVswXSA9IHF1ZXVlIGluZGV4CisgKiAgZGF0YVsxXSA9IGdyYW50IHJlZmVyZW5j ZSBvZiBwYWdlIGNvbnRhaW5pbmcgdGhlIG1hcHBpbmcgbGlzdAorICogICAgICAgICAgICAoci93 IGFuZCBhc3N1bWVkIHRvIHN0YXJ0IGF0IGJlZ2lubmluZyBvZiBwYWdlKQorICogIGRhdGFbMl0g PSBzaXplIG9mIGxpc3QgaW4gZW50cmllcworICoKKyAqIFJlc3BvbnNlOgorICoKKyAqICBzdGF0 dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24g bm90CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURf UEFSQU1FVEVSIC0gT3BlcmF0aW9uIGZhaWxlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJM X1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCisgKiAgZGF0 YSAgID0gbnVtYmVyIG9mIGVudHJpZXMgdGhhdCB3ZXJlIHVubWFwcGVkCisgKgorICogTk9URTog RWFjaCBlbnRyeSBpbiB0aGUgaW5wdXQgdGFibGUgaGFzIHRoZSBmb3JtYXQgb3V0bGluZWQgaW4g c3RydWN0CisgKiAgICAgICB4ZW5fbmV0aWZfZ3JlZi4KKyAqICAgICAgIFRoZSBzdHJ1Y3QgeGVu X25ldGlmX2dyZWYgJ3N0YXR1cycgZmllbGQgZGV0ZXJtaW5lcyBpZiB0aGUgZW50cnkKKyAqICAg ICAgIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KKyAqICAgICAgIFRoZSBlbnRyaWVzIHVzZWQg YXJlIG9ubHkgdGhlIG9uZXMgcmVwcmVzZW50aW5nIGdyYW50IHJlZmVyZW5jZXMgdGhhdAorICog ICAgICAgd2VyZSBwcmV2aW91c2x5IHRoZSBzdWJqZWN0IG9mIGEgWEVOX05FVElGX0NUUkxfVFlQ RV9BRERfR1JFRl9NQVBQSU5HCisgKiAgICAgICBvcGVyYXRpb24uIEFueSBvdGhlciBlbnRyaWVz IHdpbGwgaGF2ZSB0aGVpciBzdGF0dXMgc2V0IHRvCisgKiAgICAgICBYRU5fTkVUSUZfQ1RSTF9T VEFUVVNfSU5WQUxJRF9QQVJBTUVURVIgdXBvbiBjb21wbGV0aW9uLgorICovCisKK0RFRklORV9S SU5HX1RZUEVTKHhlbl9uZXRpZl9jdHJsLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9u ZXRpZl9jdHJsX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX25ldGlmX2N0 cmxfcmVzcG9uc2UpOworCisvKgorICogR3Vlc3QgdHJhbnNtaXQKKyAqID09PT09PT09PT09PT09 CisgKgorICogVGhpcyBpcyB0aGUgJ3dpcmUnIGZvcm1hdCBmb3IgdHJhbnNtaXQgKGZyb250ZW5k IC0+IGJhY2tlbmQpIHBhY2tldHM6CisgKgorICogIEZyYWdtZW50IDE6IG5ldGlmX3R4X3JlcXVl c3RfdCAgLSBmbGFncyA9IE5FVFRYRl8qCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemUgPSB0b3RhbCBwYWNrZXQgc2l6ZQorICogW0V4dHJhIDE6IG5ldGlmX2V4dHJh X2luZm9fdF0gICAgLSAob25seSBpZiBmcmFnbWVudCAxIGZsYWdzIGluY2x1ZGUKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFRYRl9leHRyYV9pbmZvKQorICogIC4u LgorICogW0V4dHJhIE46IG5ldGlmX2V4dHJhX2luZm9fdF0gICAgLSAob25seSBpZiBleHRyYSBO LTEgZmxhZ3MgaW5jbHVkZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WEVOX05FVElGX0VYVFJBX01PUkUpCisgKiAgLi4uCisgKiAgRnJhZ21lbnQgTjogbmV0aWZfdHhf cmVxdWVzdF90ICAtIChvbmx5IGlmIGZyYWdtZW50IE4tMSBmbGFncyBpbmNsdWRlCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRUWEZfbW9yZV9kYXRhIC0gZmxhZ3Mg b24gcHJlY2VkaW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRy YXMgYXJlIG5vdCByZWxldmFudCBoZXJlKQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmbGFncyA9IDAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZSA9IGZyYWdtZW50IHNpemUKKyAqCisgKiBOT1RFOgorICoKKyAqIFRoaXMgZm9ybWF0IHNs aWdodGx5IGlzIGRpZmZlcmVudCBmcm9tIHRoYXQgdXNlZCBmb3IgcmVjZWl2ZQorICogKGJhY2tl bmQgLT4gZnJvbnRlbmQpIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaW4gYSBtdWx0aS1mcmFnbWVu dAorICogcGFja2V0IHRoZSBhY3R1YWwgc2l6ZSBvZiBmcmFnbWVudCAxIGNhbiBvbmx5IGJlIGRl dGVybWluZWQgYnkKKyAqIHN1YnRyYWN0aW5nIHRoZSBzaXplcyBvZiBmcmFnbWVudHMgMi4uTiBm cm9tIHRoZSB0b3RhbCBwYWNrZXQgc2l6ZS4KKyAqCisgKiBSaW5nIHNsb3Qgc2l6ZSBpcyAxMiBv Y3RldHMsIGhvd2V2ZXIgbm90IGFsbCByZXF1ZXN0L3Jlc3BvbnNlCisgKiBzdHJ1Y3RzIHVzZSB0 aGUgZnVsbCBzaXplLgorICoKKyAqIHR4IHJlcXVlc3QgZGF0YSAobmV0aWZfdHhfcmVxdWVzdF90 KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAg ICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgZ3JhbnQg cmVmICAgICAgICAgICAgIHwgb2Zmc2V0ICAgIHwgZmxhZ3MgICAgIHwKKyAqICstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgaWQgICAgICAgIHwg c2l6ZSAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiBncmFudCBy ZWY6IFJlZmVyZW5jZSB0byBidWZmZXIgcGFnZS4KKyAqIG9mZnNldDogT2Zmc2V0IHdpdGhpbiBi dWZmZXIgcGFnZS4KKyAqIGZsYWdzOiBORVRUWEZfKi4KKyAqIGlkOiByZXF1ZXN0IGlkZW50aWZp ZXIsIGVjaG9lZCBpbiByZXNwb25zZS4KKyAqIHNpemU6IHBhY2tldCBzaXplIGluIGJ5dGVzLgor ICoKKyAqIHR4IHJlc3BvbnNlIChuZXRpZl90eF9yZXNwb25zZV90KQorICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAg NCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgaWQgICAgICAgIHwgc3RhdHVzICAgIHwgdW51 c2VkICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSsKKyAqIHwgdW51c2VkICAgICAgICAgICAgICAgIHwKKyAqICstLS0t LSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiBpZDogcmVmbGVjdHMgaWQgaW4gdHJhbnNtaXQg cmVxdWVzdAorICogc3RhdHVzOiBORVRJRl9SU1BfKgorICoKKyAqIEd1ZXN0IHJlY2VpdmUKKyAq ID09PT09PT09PT09PT0KKyAqCisgKiBUaGlzIGlzIHRoZSAnd2lyZScgZm9ybWF0IGZvciByZWNl aXZlIChiYWNrZW5kIC0+IGZyb250ZW5kKSBwYWNrZXRzOgorICoKKyAqICBGcmFnbWVudCAxOiBu ZXRpZl9yeF9yZXF1ZXN0X3QgIC0gZmxhZ3MgPSBORVRSWEZfKgorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplID0gZnJhZ21lbnQgc2l6ZQorICogW0V4dHJhIDE6IG5l dGlmX2V4dHJhX2luZm9fdF0gICAgLSAob25seSBpZiBmcmFnbWVudCAxIGZsYWdzIGluY2x1ZGUK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFJYRl9leHRyYV9pbmZv KQorICogIC4uLgorICogW0V4dHJhIE46IG5ldGlmX2V4dHJhX2luZm9fdF0gICAgLSAob25seSBp ZiBleHRyYSBOLTEgZmxhZ3MgaW5jbHVkZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWEVOX05FVElGX0VYVFJBX01PUkUpCisgKiAgLi4uCisgKiAgRnJhZ21lbnQgTjog bmV0aWZfcnhfcmVxdWVzdF90ICAtIChvbmx5IGlmIGZyYWdtZW50IE4tMSBmbGFncyBpbmNsdWRl CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRSWEZfbW9yZV9kYXRh IC0gZmxhZ3Mgb24gcHJlY2VkaW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBleHRyYXMgYXJlIG5vdCByZWxldmFudCBoZXJlKQorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmbGFncyA9IDAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZSA9IGZyYWdtZW50IHNpemUKKyAqCisgKiBOT1RFOgorICoKKyAqIFRoaXMg Zm9ybWF0IHNsaWdodGx5IGlzIGRpZmZlcmVudCBmcm9tIHRoYXQgdXNlZCBmb3IgdHJhbnNtaXQK KyAqIChmcm9udGVuZCAtPiBiYWNrZW5kKSBwYWNrZXRzLiBTcGVjaWZpY2FsbHksIGluIGEgbXVs dGktZnJhZ21lbnQKKyAqIHBhY2tldCB0aGUgc2l6ZSBvZiB0aGUgcGFja2V0IGNhbiBvbmx5IGJl IGRldGVybWluZWQgYnkgc3VtbWluZyB0aGUKKyAqIHNpemVzIG9mIGZyYWdtZW50cyAxLi5OLgor ICoKKyAqIFJpbmcgc2xvdCBzaXplIGlzIDggb2N0ZXRzLgorICoKKyAqIHJ4IHJlcXVlc3QgKG5l dGlmX3J4X3JlcXVlc3RfdCkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CisgKiAgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3Rl dAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwor ICogfCBpZCAgICAgICAgfCBwYWQgICAgICAgfCBncmVmICAgICAgICAgICAgICAgICAgfAorICog Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAq IGlkOiByZXF1ZXN0IGlkZW50aWZpZXIsIGVjaG9lZCBpbiByZXNwb25zZS4KKyAqIGdyZWY6IHJl ZmVyZW5jZSB0byBpbmNvbWluZyBncmFudGVkIGZyYW1lLgorICoKKyAqIHJ4IHJlc3BvbnNlIChu ZXRpZl9yeF9yZXNwb25zZV90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAg b2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t LSsKKyAqIHwgaWQgICAgICAgIHwgb2Zmc2V0ICAgIHwgZmxhZ3MgICAgIHwgc3RhdHVzICAgIHwK KyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAq CisgKiBpZDogcmVmbGVjdHMgaWQgaW4gcmVjZWl2ZSByZXF1ZXN0CisgKiBvZmZzZXQ6IG9mZnNl dCBpbiBwYWdlIG9mIHN0YXJ0IG9mIHJlY2VpdmVkIHBhY2tldAorICogZmxhZ3M6IE5FVFJYRl8q CisgKiBzdGF0dXM6IC12ZTogTkVUSUZfUlNQXyo7ICt2ZTogUngnZWQgcGt0IHNpemUuCisgKgor ICogTk9URTogSGlzdG9yaWNhbGx5LCB0byBzdXBwb3J0IEdTTyBvbiB0aGUgZnJvbnRlbmQgcmVj ZWl2ZSBzaWRlLCBMaW51eAorICogICAgICAgbmV0ZnJvbnQgZG9lcyBub3QgbWFrZSB1c2Ugb2Yg dGhlIHJ4IHJlc3BvbnNlIGlkIChiZWNhdXNlLCBhcworICogICAgICAgZGVzY3JpYmVkIGJlbG93 LCBleHRyYSBpbmZvIHN0cnVjdHVyZXMgb3ZlcmxheSB0aGUgaWQgZmllbGQpLgorICogICAgICAg SW5zdGVhZCBpdCBhc3N1bWVzIHRoYXQgcmVzcG9uc2VzIGFsd2F5cyBhcHBlYXIgaW4gdGhlIHNh bWUgcmluZworICogICAgICAgc2xvdCBhcyB0aGVpciBjb3JyZXNwb25kaW5nIHJlcXVlc3QuIFRo dXMsIHRvIG1haW50YWluCisgKiAgICAgICBjb21wYXRpYmlsaXR5LCBiYWNrZW5kcyBtdXN0IG1h a2Ugc3VyZSB0aGlzIGlzIHRoZSBjYXNlLgorICoKKyAqIEV4dHJhIEluZm8KKyAqID09PT09PT09 PT0KKyAqCisgKiBDYW4gYmUgcHJlc2VudCBpZiBpbml0aWFsIHJlcXVlc3Qgb3IgcmVzcG9uc2Ug aGFzIE5FVHtULFJ9WEZfZXh0cmFfaW5mbywKKyAqIG9yIHByZXZpb3VzIGV4dHJhIHJlcXVlc3Qg aGFzIFhFTl9ORVRJRl9FWFRSQV9NT1JFLgorICoKKyAqIFRoZSBzdHJ1Y3QgdGhlcmVmb3JlIG5l ZWRzIHRvIGZpdCBpbnRvIGVpdGhlciBhIHR4IG9yIHJ4IHNsb3QgYW5kCisgKiBpcyB0aGVyZWZv cmUgbGltaXRlZCB0byA4IG9jdGV0cy4KKyAqCisgKiBOT1RFOiBCZWNhdXNlIGV4dHJhIGluZm8g ZGF0YSBvdmVybGF5cyB0aGUgdXN1YWwgcmVxdWVzdC9yZXNwb25zZQorICogICAgICAgc3RydWN0 dXJlcywgdGhlcmUgaXMgbm8gaWQgaW5mb3JtYXRpb24gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlv bi4KKyAqICAgICAgIFNvLCBpZiBhbiBleHRyYSBpbmZvIG92ZXJsYXlzIGFuIHJ4IHJlc3BvbnNl IHRoZSBmcm9udGVuZCBjYW4KKyAqICAgICAgIGFzc3VtZSB0aGF0IGl0IGlzIGluIHRoZSBzYW1l IHJpbmcgc2xvdCBhcyB0aGUgcmVxdWVzdCB0aGF0IHdhcworICogICAgICAgY29uc3VtZWQgdG8g bWFrZSB0aGUgc2xvdCBhdmFpbGFibGUsIGFuZCB0aGUgYmFja2VuZCBtdXN0IGVuc3VyZQorICog ICAgICAgdGhpcyBhc3N1bXB0aW9uIGlzIHRydWUuCisgKgorICogZXh0cmEgaW5mbyAobmV0aWZf ZXh0cmFfaW5mb190KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IEdlbmVyYWwgZm9ybWF0OgorICoKKyAqICAgIDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAg IDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8dHlwZSB8ZmxhZ3N8IHR5cGUgc3BlY2lmaWMgZGF0YSAg ICAgICAgICAgICAgICB8CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rCisgKiB8IHBhZGRpbmcgZm9yIHR4ICAgICAgICB8CisgKiArLS0tLS0rLS0t LS0rLS0tLS0rLS0tLS0rCisgKgorICogdHlwZTogWEVOX05FVElGX0VYVFJBX1RZUEVfKgorICog ZmxhZ3M6IFhFTl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIHBhZGRpbmcgZm9yIHR4OiBwcmVzZW50 IG9ubHkgaW4gdGhlIHR4IGNhc2UgZHVlIHRvIDggb2N0ZXQgbGltaXQKKyAqICAgICAgICAgICAg ICAgICBmcm9tIHJ4IGNhc2UuIE5vdCBzaG93biBpbiB0eXBlIHNwZWNpZmljIGVudHJpZXMKKyAq ICAgICAgICAgICAgICAgICBiZWxvdy4KKyAqCisgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9HU086 CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAg b2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t LSsKKyAqIHx0eXBlIHxmbGFnc3wgc2l6ZSAgICAgIHx0eXBlIHwgcGFkIHwgZmVhdHVyZXMgIHwK KyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAq CisgKiB0eXBlOiBNdXN0IGJlIFhFTl9ORVRJRl9FWFRSQV9UWVBFX0dTTworICogZmxhZ3M6IFhF Tl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIHNpemU6IE1heGltdW0gcGF5bG9hZCBzaXplIG9mIGVh Y2ggc2VnbWVudC4gRm9yIGV4YW1wbGUsCisgKiAgICAgICBmb3IgVENQIHRoaXMgaXMganVzdCB0 aGUgcGF0aCBNU1MuCisgKiB0eXBlOiBYRU5fTkVUSUZfR1NPX1RZUEVfKjogVGhpcyBkZXRlcm1p bmVzIHRoZSBwcm90b2NvbCBvZgorICogICAgICAgdGhlIHBhY2tldCBhbmQgYW55IGV4dHJhIGZl YXR1cmVzIHJlcXVpcmVkIHRvIHNlZ21lbnQgdGhlCisgKiAgICAgICBwYWNrZXQgcHJvcGVybHku CisgKiBmZWF0dXJlczogRU5fTkVUSUZfR1NPX0ZFQVRfKjogVGhpcyBzcGVjaWZpZXMgYW55IGV4 dHJhIEdTTworICogICAgICAgICAgIGZlYXR1cmVzIHJlcXVpcmVkIHRvIHByb2Nlc3MgdGhpcyBw YWNrZXQsIHN1Y2ggYXMgRUNOCisgKiAgICAgICAgICAgc3VwcG9ydCBmb3IgVENQdjQuCisgKgor ICogWEVOX05FVElGX0VYVFJBX1RZUEVfTUNBU1Rfe0FERCxERUx9OgorICoKKyAqICAgIDAgICAg IDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiArLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiB8dHlwZSB8Zmxh Z3N8IGFkZHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKgorICogdHlwZTogTXVzdCBi ZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF97QURELERFTH0KKyAqIGZsYWdzOiBYRU5fTkVU SUZfRVhUUkFfRkxBR18qCisgKiBhZGRyOiBhZGRyZXNzIHRvIGFkZC9yZW1vdmUKKyAqCisgKiBY RU5fTkVUSUZfRVhUUkFfVFlQRV9IQVNIOgorICoKKyAqIEEgYmFja2VuZCB0aGF0IHN1cHBvcnRz IHRlb3BsaXR6IGhhc2hpbmcgaXMgYXNzdW1lZCB0byBhY2NlcHQKKyAqIHRoaXMgdHlwZSBvZiBl eHRyYSBpbmZvIGluIHRyYW5zbWl0IHBhY2tldHMuCisgKiBBIGZyb250ZW5kIHRoYXQgZW5hYmxl cyBoYXNoaW5nIGlzIGFzc3VtZWQgdG8gYWNjZXB0CisgKiB0aGlzIHR5cGUgb2YgZXh0cmEgaW5m byBpbiByZWNlaXZlIHBhY2tldHMuCisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAg NCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3xodHlwZXwgYWxnIHxMU0Ig LS0tLSB2YWx1ZSAtLS0tIE1TQnwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBNdXN0IGJlIFhFTl9ORVRJRl9FWFRSQV9U WVBFX0hBU0gKKyAqIGZsYWdzOiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qCisgKiBodHlwZTogSGFz aCB0eXBlIChvbmUgb2YgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV8qIC0gc2VlIGFib3ZlKQor ICogYWxnOiBUaGUgYWxnb3JpdGhtIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBoYXNoIChvbmUgb2YK KyAqICAgICAgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0FMR09SSVRITV8qIC0gc2VlIGFib3Zl KQorICogdmFsdWU6IEhhc2ggdmFsdWUKKyAqLworCisvKiBQcm90b2NvbCBjaGVja3N1bSBmaWVs ZCBpcyBibGFuayBpbiB0aGUgcGFja2V0IChoYXJkd2FyZSBvZmZsb2FkKT8gKi8KKyNkZWZpbmUg X05FVFRYRl9jc3VtX2JsYW5rICAgICAoMCkKKyNkZWZpbmUgIE5FVFRYRl9jc3VtX2JsYW5rICAg ICAoMVU8PF9ORVRUWEZfY3N1bV9ibGFuaykKKworLyogUGFja2V0IGRhdGEgaGFzIGJlZW4gdmFs aWRhdGVkIGFnYWluc3QgcHJvdG9jb2wgY2hlY2tzdW0uICovCisjZGVmaW5lIF9ORVRUWEZfZGF0 YV92YWxpZGF0ZWQgKDEpCisjZGVmaW5lICBORVRUWEZfZGF0YV92YWxpZGF0ZWQgKDFVPDxfTkVU VFhGX2RhdGFfdmFsaWRhdGVkKQorCisvKiBQYWNrZXQgY29udGludWVzIGluIHRoZSBuZXh0IHJl cXVlc3QgZGVzY3JpcHRvci4gKi8KKyNkZWZpbmUgX05FVFRYRl9tb3JlX2RhdGEgICAgICAoMikK KyNkZWZpbmUgIE5FVFRYRl9tb3JlX2RhdGEgICAgICAoMVU8PF9ORVRUWEZfbW9yZV9kYXRhKQor CisvKiBQYWNrZXQgdG8gYmUgZm9sbG93ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4gKi8KKyNk ZWZpbmUgX05FVFRYRl9leHRyYV9pbmZvICAgICAoMykKKyNkZWZpbmUgIE5FVFRYRl9leHRyYV9p bmZvICAgICAoMVU8PF9ORVRUWEZfZXh0cmFfaW5mbykKKworI2RlZmluZSBYRU5fTkVUSUZfTUFY X1RYX1NJWkUgMHhGRkZGCitzdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdCB7CisgICAgZ3JhbnRfcmVm X3QgZ3JlZjsKKyAgICB1aW50MTZfdCBvZmZzZXQ7CisgICAgdWludDE2X3QgZmxhZ3M7CisgICAg dWludDE2X3QgaWQ7CisgICAgdWludDE2X3Qgc2l6ZTsKK307Cit0eXBlZGVmIHN0cnVjdCBuZXRp Zl90eF9yZXF1ZXN0IG5ldGlmX3R4X3JlcXVlc3RfdDsKKworLyogVHlwZXMgb2YgbmV0aWZfZXh0 cmFfaW5mbyBkZXNjcmlwdG9ycy4gKi8KKyNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfTk9O RSAgICAgICgwKSAgLyogTmV2ZXIgdXNlZCAtIGludmFsaWQgKi8KKyNkZWZpbmUgWEVOX05FVElG X0VYVFJBX1RZUEVfR1NPICAgICAgICgxKSAgLyogdS5nc28gKi8KKyNkZWZpbmUgWEVOX05FVElG X0VYVFJBX1RZUEVfTUNBU1RfQUREICgyKSAgLyogdS5tY2FzdCAqLworI2RlZmluZSBYRU5fTkVU SUZfRVhUUkFfVFlQRV9NQ0FTVF9ERUwgKDMpICAvKiB1Lm1jYXN0ICovCisjZGVmaW5lIFhFTl9O RVRJRl9FWFRSQV9UWVBFX0hBU0ggICAgICAoNCkgIC8qIHUuaGFzaCAqLworI2RlZmluZSBYRU5f TkVUSUZfRVhUUkFfVFlQRV9NQVggICAgICAgKDUpCisKKy8qIG5ldGlmX2V4dHJhX2luZm9fdCBm bGFncy4gKi8KKyNkZWZpbmUgX1hFTl9ORVRJRl9FWFRSQV9GTEFHX01PUkUgKDApCisjZGVmaW5l IFhFTl9ORVRJRl9FWFRSQV9GTEFHX01PUkUgICgxVTw8X1hFTl9ORVRJRl9FWFRSQV9GTEFHX01P UkUpCisKKy8qIEdTTyB0eXBlcyAqLworI2RlZmluZSBYRU5fTkVUSUZfR1NPX1RZUEVfTk9ORSAg ICAgICAgICgwKQorI2RlZmluZSBYRU5fTkVUSUZfR1NPX1RZUEVfVENQVjQgICAgICAgICgxKQor I2RlZmluZSBYRU5fTkVUSUZfR1NPX1RZUEVfVENQVjYgICAgICAgICgyKQorCisvKgorICogVGhp cyBzdHJ1Y3R1cmUgbmVlZHMgdG8gZml0IHdpdGhpbiBib3RoIG5ldGlmX3R4X3JlcXVlc3RfdCBh bmQKKyAqIG5ldGlmX3J4X3Jlc3BvbnNlX3QgZm9yIGNvbXBhdGliaWxpdHkuCisgKi8KK3N0cnVj dCBuZXRpZl9leHRyYV9pbmZvIHsKKyAgICB1aW50OF90IHR5cGU7CisgICAgdWludDhfdCBmbGFn czsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MTZfdCBz aXplOworICAgICAgICAgICAgdWludDhfdCB0eXBlOworICAgICAgICAgICAgdWludDhfdCBwYWQ7 CisgICAgICAgICAgICB1aW50MTZfdCBmZWF0dXJlczsKKyAgICAgICAgfSBnc287CisgICAgICAg IHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IGFkZHJbNl07CisgICAgICAgIH0gbWNhc3Q7 CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHR5cGU7CisgICAgICAgICAg ICB1aW50OF90IGFsZ29yaXRobTsKKyAgICAgICAgICAgIHVpbnQ4X3QgdmFsdWVbNF07CisgICAg ICAgIH0gaGFzaDsKKyAgICAgICAgdWludDE2X3QgcGFkWzNdOworICAgIH0gdTsKK307Cit0eXBl ZGVmIHN0cnVjdCBuZXRpZl9leHRyYV9pbmZvIG5ldGlmX2V4dHJhX2luZm9fdDsKKworc3RydWN0 IG5ldGlmX3R4X3Jlc3BvbnNlIHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICBpbnQxNl90ICBzdGF0 dXM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbmV0aWZfdHhfcmVzcG9uc2UgbmV0aWZfdHhfcmVzcG9u c2VfdDsKKworc3RydWN0IG5ldGlmX3J4X3JlcXVlc3QgeworICAgIHVpbnQxNl90ICAgIGlkOyAg ICAgICAgLyogRWNob2VkIGluIHJlc3BvbnNlIG1lc3NhZ2UuICAgICAgICAqLworICAgIHVpbnQx Nl90ICAgIHBhZDsKKyAgICBncmFudF9yZWZfdCBncmVmOworfTsKK3R5cGVkZWYgc3RydWN0IG5l dGlmX3J4X3JlcXVlc3QgbmV0aWZfcnhfcmVxdWVzdF90OworCisvKiBQYWNrZXQgZGF0YSBoYXMg YmVlbiB2YWxpZGF0ZWQgYWdhaW5zdCBwcm90b2NvbCBjaGVja3N1bS4gKi8KKyNkZWZpbmUgX05F VFJYRl9kYXRhX3ZhbGlkYXRlZCAoMCkKKyNkZWZpbmUgIE5FVFJYRl9kYXRhX3ZhbGlkYXRlZCAo MVU8PF9ORVRSWEZfZGF0YV92YWxpZGF0ZWQpCisKKy8qIFByb3RvY29sIGNoZWNrc3VtIGZpZWxk IGlzIGJsYW5rIGluIHRoZSBwYWNrZXQgKGhhcmR3YXJlIG9mZmxvYWQpPyAqLworI2RlZmluZSBf TkVUUlhGX2NzdW1fYmxhbmsgICAgICgxKQorI2RlZmluZSAgTkVUUlhGX2NzdW1fYmxhbmsgICAg ICgxVTw8X05FVFJYRl9jc3VtX2JsYW5rKQorCisvKiBQYWNrZXQgY29udGludWVzIGluIHRoZSBu ZXh0IHJlcXVlc3QgZGVzY3JpcHRvci4gKi8KKyNkZWZpbmUgX05FVFJYRl9tb3JlX2RhdGEgICAg ICAoMikKKyNkZWZpbmUgIE5FVFJYRl9tb3JlX2RhdGEgICAgICAoMVU8PF9ORVRSWEZfbW9yZV9k YXRhKQorCisvKiBQYWNrZXQgdG8gYmUgZm9sbG93ZWQgYnkgZXh0cmEgZGVzY3JpcHRvcihzKS4g Ki8KKyNkZWZpbmUgX05FVFJYRl9leHRyYV9pbmZvICAgICAoMykKKyNkZWZpbmUgIE5FVFJYRl9l eHRyYV9pbmZvICAgICAoMVU8PF9ORVRSWEZfZXh0cmFfaW5mbykKKworLyogUGFja2V0IGhhcyBH U08gcHJlZml4LiBEZXByZWNhdGVkIGJ1dCBpbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSAqLwor I2RlZmluZSBfTkVUUlhGX2dzb19wcmVmaXggICAgICg0KQorI2RlZmluZSAgTkVUUlhGX2dzb19w cmVmaXggICAgICgxVTw8X05FVFJYRl9nc29fcHJlZml4KQorCitzdHJ1Y3QgbmV0aWZfcnhfcmVz cG9uc2UgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQxNl90IG9mZnNldDsKKyAgICB1aW50 MTZfdCBmbGFnczsKKyAgICBpbnQxNl90ICBzdGF0dXM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgbmV0 aWZfcnhfcmVzcG9uc2UgbmV0aWZfcnhfcmVzcG9uc2VfdDsKKworLyoKKyAqIEdlbmVyYXRlIG5l dGlmIHJpbmcgc3RydWN0dXJlcyBhbmQgdHlwZXMuCisgKi8KKworREVGSU5FX1JJTkdfVFlQRVMo bmV0aWZfdHgsIHN0cnVjdCBuZXRpZl90eF9yZXF1ZXN0LCBzdHJ1Y3QgbmV0aWZfdHhfcmVzcG9u c2UpOworREVGSU5FX1JJTkdfVFlQRVMobmV0aWZfcngsIHN0cnVjdCBuZXRpZl9yeF9yZXF1ZXN0 LCBzdHJ1Y3QgbmV0aWZfcnhfcmVzcG9uc2UpOworCisjZGVmaW5lIE5FVElGX1JTUF9EUk9QUEVE ICAgICAgICAgLTIKKyNkZWZpbmUgTkVUSUZfUlNQX0VSUk9SICAgICAgICAgICAtMQorI2RlZmlu ZSBORVRJRl9SU1BfT0tBWSAgICAgICAgICAgICAwCisvKiBObyByZXNwb25zZTogdXNlZCBmb3Ig YXV4aWxpYXJ5IHJlcXVlc3RzIChlLmcuLCBuZXRpZl9leHRyYV9pbmZvX3QpLiAqLworI2RlZmlu ZSBORVRJRl9SU1BfTlVMTCAgICAgICAgICAgICAxCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3Byb3RvY29scy5oIGIvaW5jbHVkZS9ody94ZW4vaW50 ZXJmYWNlL2lvL3Byb3RvY29scy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjNkMWNhYzMyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZh Y2UvaW8vcHJvdG9jb2xzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogcHJvdG9jb2xzLmgKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAq IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU SEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisg KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBL ZWlyIEZyYXNlcgorICovCisKKyNpZm5kZWYgWEVOX1BST1RPQ09MU19ICisjZGVmaW5lIFhFTl9Q Uk9UT0NPTFNfSAorCisjZGVmaW5lIFhFTl9JT19QUk9UT19BQklfWDg2XzMyICAgICAieDg2XzMy LWFiaSIKKyNkZWZpbmUgWEVOX0lPX1BST1RPX0FCSV9YODZfNjQgICAgICJ4ODZfNjQtYWJpIgor I2RlZmluZSBYRU5fSU9fUFJPVE9fQUJJX0FSTSAgICAgICAgImFybS1hYmkiCisKKyNpZiBkZWZp bmVkKF9faTM4Nl9fKQorIyBkZWZpbmUgWEVOX0lPX1BST1RPX0FCSV9OQVRJVkUgWEVOX0lPX1BS T1RPX0FCSV9YODZfMzIKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyMgZGVmaW5lIFhFTl9J T19QUk9UT19BQklfTkFUSVZFIFhFTl9JT19QUk9UT19BQklfWDg2XzY0CisjZWxpZiBkZWZpbmVk KF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCisjIGRlZmluZSBYRU5fSU9fUFJPVE9f QUJJX05BVElWRSBYRU5fSU9fUFJPVE9fQUJJX0FSTQorI2Vsc2UKKyMgZXJyb3IgYXJjaCBmaXh1 cCBuZWVkZWQgaGVyZQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94 ZW4vaW50ZXJmYWNlL2lvL3hlbmJ1cy5oIGIvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3hl bmJ1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjEzZDI2YzUxY2QK LS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8veGVuYnVzLmgK QEAgLTAsMCArMSw3MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiB4ZW5idXMuaAorICoK KyAqIFhlbmJ1cyBwcm90b2NvbCBkZXRhaWxzLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK KyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us IGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW RU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQg KEMpIDIwMDUgWGVuU291cmNlIEx0ZC4KKyAqLworCisjaWZuZGVmIFhFTl9QVUJMSUNfSU9fWEVO QlVTX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT19YRU5CVVNfSAorCisvKgorICogVGhlIHN0YXRl IG9mIGVpdGhlciBlbmQgb2YgdGhlIFhlbmJ1cywgaS5lLiB0aGUgY3VycmVudCBjb21tdW5pY2F0 aW9uCisgKiBzdGF0dXMgb2YgaW5pdGlhbGlzYXRpb24gYWNyb3NzIHRoZSBidXMuICBTdGF0ZXMg aGVyZSBpbXBseSBub3RoaW5nIGFib3V0CisgKiB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24g YmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUga2VybmVsJ3MgZGV2aWNlCisgKiBsYXllcnMuCisg Ki8KK2VudW0geGVuYnVzX3N0YXRlIHsKKyAgICBYZW5idXNTdGF0ZVVua25vd24gICAgICAgPSAw LAorCisgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgID0gMSwKKworICAgIC8qCisgICAgICog SW5pdFdhaXQ6IEZpbmlzaGVkIGVhcmx5IGluaXRpYWxpc2F0aW9uIGJ1dCB3YWl0aW5nIGZvciBp bmZvcm1hdGlvbgorICAgICAqIGZyb20gdGhlIHBlZXIgb3IgaG90cGx1ZyBzY3JpcHRzLgorICAg ICAqLworICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQgICAgICA9IDIsCisKKyAgICAvKgorICAgICAq IEluaXRpYWxpc2VkOiBXYWl0aW5nIGZvciBhIGNvbm5lY3Rpb24gZnJvbSB0aGUgcGVlci4KKyAg ICAgKi8KKyAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2VkICAgPSAzLAorCisgICAgWGVuYnVzU3Rh dGVDb25uZWN0ZWQgICAgID0gNCwKKworICAgIC8qCisgICAgICogQ2xvc2luZzogVGhlIGRldmlj ZSBpcyBiZWluZyBjbG9zZWQgZHVlIHRvIGFuIGVycm9yIG9yIGFuIHVucGx1ZyBldmVudC4KKyAg ICAgKi8KKyAgICBYZW5idXNTdGF0ZUNsb3NpbmcgICAgICAgPSA1LAorCisgICAgWGVuYnVzU3Rh dGVDbG9zZWQgICAgICAgID0gNiwKKworICAgIC8qCisgICAgICogUmVjb25maWd1cmluZzogVGhl IGRldmljZSBpcyBiZWluZyByZWNvbmZpZ3VyZWQuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVS ZWNvbmZpZ3VyaW5nID0gNywKKworICAgIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkICA9IDgKK307 Cit0eXBlZGVmIGVudW0geGVuYnVzX3N0YXRlIFhlbmJ1c1N0YXRlOworCisjZW5kaWYgLyogWEVO X1BVQkxJQ19JT19YRU5CVVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2Nv bW1vbi5oIGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCmluZGV4IDlhODE1NWUxNzIuLjA1 MDRiNDM2NTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAorKysgYi9p bmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKQEAgLTEyLDcgKzEyLDcgQEAKIAogI2luY2x1ZGUg PHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4ZW5zdG9yZS5oPgotI2luY2x1ZGUgPHhlbi9pby94ZW5i dXMuaD4KKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lvL3hlbmJ1cy5oIgogCiAjaW5jbHVk ZSAiaHcvaHcuaCIKICNpbmNsdWRlICJody94ZW4veGVuLmgiCi0tIApBbnRob255IFBFUkFSRAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=