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.7 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 17A15C31E5B for ; Mon, 17 Jun 2019 15:41:36 +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 C7D492084A for ; Mon, 17 Jun 2019 15:41:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C7D492084A 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 1hctl2-0008On-Gr; Mon, 17 Jun 2019 15:41:20 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hctl1-0008O9-HY for xen-devel@lists.xenproject.org; Mon, 17 Jun 2019 15:41:19 +0000 X-Inumbo-ID: 5697d5f6-9116-11e9-8980-bc764e045a96 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 5697d5f6-9116-11e9-8980-bc764e045a96; Mon, 17 Jun 2019 15:41:14 +0000 (UTC) Authentication-Results: esa6.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 (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.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=esa6.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 (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: sVNDe32oHFN2hkdrGX9mUdKBYh+L/Phi1yVWVurNdR+fhZS+xRhIEvteOG/brelpRbm2jQdAAy hu6fi2oqrPZcPWZRwXdFY/ojmrtecae6PzOpBoXe0ZmS4xzOyQB0hSWe78xqImbtHMDEaTtb1Y uPf8aXN+MEekHUwLQWXxhVvfqpFZgyEk6EGnAeVHzIT6NPblXkmn6kbRpxj2lR9BMZBKtbwbDp CSd33t9snYjQdVEk2Z2SeOAKR2ZfFXJLq9UCTehpASNTrgQ+3JBFZW3umUAEQTgXB1senEKX7S yco= X-SBRS: 2.7 X-MesageID: 1821671 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.63,385,1557201600"; d="scan'208";a="1821671" From: Anthony PERARD To: Date: Mon, 17 Jun 2019 16:41:03 +0100 Message-ID: <20190617154105.32323-3-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190617154105.32323-1-anthony.perard@citrix.com> References: <20190617154105.32323-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 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, Stefano Stabellini , Paul Durrant 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 b2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KLS0tCiBo dy85cGZzL3hlbi05cGZzLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBody9ibG9j ay94ZW5fYmxraWYuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBody9jaGFyL3hlbl9j b25zb2xlLmMgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBody9kaXNwbGF5L3hlbmZiLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBody9uZXQveGVuX25pYy5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAyICstCiBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vY29u c29sZS5oICAgfCAgIDQ2ICsrCiBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vZmJpZi5oICAg ICAgfCAgMTU2ICsrKysKIGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9rYmRpZi5oICAgICB8 ICA1NjYgKysrKysrKysrKysrKwogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL25ldGlmLmgg ICAgIHwgMTAxMCArKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9ody94ZW4vaW50ZXJm YWNlL2lvL3Byb3RvY29scy5oIHwgICA0MiArCiBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8v eGVuYnVzLmggICAgfCAgIDcwICsrCiBpbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmggICAgICAg ICAgICAgfCAgICAyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxODk4IGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNl L2lvL2NvbnNvbGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL2ludGVyZmFj ZS9pby9mYmlmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2Uv aW8va2JkaWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9p by9uZXRpZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lv L3Byb3RvY29scy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNl L2lvL3hlbmJ1cy5oCgpkaWZmIC0tZ2l0IGEvaHcvOXBmcy94ZW4tOXBmcy5oIGIvaHcvOXBmcy94 ZW4tOXBmcy5oCmluZGV4IDkyZGM4N2U5ZTAuLjI0MWUyMjE2YTQgMTAwNjQ0Ci0tLSBhL2h3Lzlw ZnMveGVuLTlwZnMuaAorKysgYi9ody85cGZzL3hlbi05cGZzLmgKQEAgLTEzLDcgKzEzLDcgQEAK ICNpZm5kZWYgSFdfOVBGU19YRU5fOVBGU19ICiAjZGVmaW5lIEhXXzlQRlNfWEVOXzlQRlNfSAog Ci0jaW5jbHVkZSA8eGVuL2lvL3Byb3RvY29scy5oPgorI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZh Y2UvaW8vcHJvdG9jb2xzLmgiCiAjaW5jbHVkZSAiaHcveGVuL2ludGVyZmFjZS9pby9yaW5nLmgi CiAKIC8qCmRpZmYgLS1naXQgYS9ody9ibG9jay94ZW5fYmxraWYuaCBiL2h3L2Jsb2NrL3hlbl9i bGtpZi5oCmluZGV4IDVhMTA5NGQ3OTMuLjk5NzMzNTI5YzEgMTAwNjQ0Ci0tLSBhL2h3L2Jsb2Nr L3hlbl9ibGtpZi5oCisrKyBiL2h3L2Jsb2NrL3hlbl9ibGtpZi5oCkBAIC0yLDcgKzIsNyBAQAog I2RlZmluZSBYRU5fQkxLSUZfSAogCiAjaW5jbHVkZSAiaHcveGVuL2ludGVyZmFjZS9pby9ibGtp Zi5oIgotI2luY2x1ZGUgPHhlbi9pby9wcm90b2NvbHMuaD4KKyNpbmNsdWRlICJody94ZW4vaW50 ZXJmYWNlL2lvL3Byb3RvY29scy5oIgogCiAvKgogICogTm90IGEgcmVhbCBwcm90b2NvbC4gIFVz ZWQgdG8gZ2VuZXJhdGUgcmluZyBzdHJ1Y3RzIHdoaWNoIGNvbnRhaW4KZGlmZiAtLWdpdCBhL2h3 L2NoYXIveGVuX2NvbnNvbGUuYyBiL2h3L2NoYXIveGVuX2NvbnNvbGUuYwppbmRleCA5MWYzNGVm MDZjLi40N2UxMDkyMjYzIDEwMDY0NAotLS0gYS9ody9jaGFyL3hlbl9jb25zb2xlLmMKKysrIGIv aHcvY2hhci94ZW5fY29uc29sZS5jCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY2hhcmRl di9jaGFyLWZlLmgiCiAjaW5jbHVkZSAiaHcveGVuL3hlbi1sZWdhY3ktYmFja2VuZC5oIgogCi0j aW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUuaD4KKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lv L2NvbnNvbGUuaCIKIAogc3RydWN0IGJ1ZmZlciB7CiAgICAgdWludDhfdCAqZGF0YTsKZGlmZiAt LWdpdCBhL2h3L2Rpc3BsYXkveGVuZmIuYyBiL2h3L2Rpc3BsYXkveGVuZmIuYwppbmRleCA2MjAy ZjExNTBlLi4zYzc5OTEzYjMxIDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3hlbmZiLmMKKysrIGIv aHcvZGlzcGxheS94ZW5mYi5jCkBAIC0zMiwxMCArMzIsOSBAQAogI2luY2x1ZGUgInVpL2NvbnNv bGUuaCIKICNpbmNsdWRlICJody94ZW4veGVuLWxlZ2FjeS1iYWNrZW5kLmgiCiAKLSNpbmNsdWRl IDx4ZW4vZXZlbnRfY2hhbm5lbC5oPgotI2luY2x1ZGUgPHhlbi9pby9mYmlmLmg+Ci0jaW5jbHVk ZSA8eGVuL2lvL2tiZGlmLmg+Ci0jaW5jbHVkZSA8eGVuL2lvL3Byb3RvY29scy5oPgorI2luY2x1 ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vZmJpZi5oIgorI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZh Y2UvaW8va2JkaWYuaCIKKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lvL3Byb3RvY29scy5o IgogCiAjaW5jbHVkZSAidHJhY2UuaCIKIApkaWZmIC0tZ2l0IGEvaHcvbmV0L3hlbl9uaWMuYyBi L2h3L25ldC94ZW5fbmljLmMKaW5kZXggMzdjZGE4ZTRiZS4uZmZiM2I1ODk4ZCAxMDA2NDQKLS0t IGEvaHcvbmV0L3hlbl9uaWMuYworKysgYi9ody9uZXQveGVuX25pYy5jCkBAIC0zMCw3ICszMCw3 IEBACiAjaW5jbHVkZSAibmV0L3V0aWwuaCIKICNpbmNsdWRlICJody94ZW4veGVuLWxlZ2FjeS1i YWNrZW5kLmgiCiAKLSNpbmNsdWRlIDx4ZW4vaW8vbmV0aWYuaD4KKyNpbmNsdWRlICJody94ZW4v aW50ZXJmYWNlL2lvL25ldGlmLmgiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9ody94ZW4vaW50ZXJmYWNlL2lvL2NvbnNvbGUuaCBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFj ZS9pby9jb25zb2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjE0 MzE2OTgxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9j b25zb2xlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29u c29sZS5oCisgKgorICogQ29uc29sZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1LCBLZWlyIEZyYXNlcgorICovCisK KyNpZm5kZWYgWEVOX1BVQkxJQ19JT19DT05TT0xFX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT19D T05TT0xFX0gKKwordHlwZWRlZiB1aW50MzJfdCBYRU5DT05TX1JJTkdfSURYOworCisjZGVmaW5l IE1BU0tfWEVOQ09OU19JRFgoaWR4LCByaW5nKSAoKGlkeCkgJiAoc2l6ZW9mKHJpbmcpLTEpKQor CitzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgeworICAgIGNoYXIgaW5bMTAyNF07CisgICAgY2hh ciBvdXRbMjA0OF07CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOworICAg IFhFTkNPTlNfUklOR19JRFggb3V0X2NvbnMsIG91dF9wcm9kOworfTsKKworI2lmZGVmIFhFTl9X QU5UX0ZMRVhfQ09OU09MRV9SSU5HCisjaW5jbHVkZSAicmluZy5oIgorREVGSU5FX1hFTl9GTEVY X1JJTkcoeGVuY29ucyk7CisjZW5kaWYKKworI2VuZGlmIC8qIFhFTl9QVUJMSUNfSU9fQ09OU09M RV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vZmJpZi5oIGIv aW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2ZiaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi40ZTI1NDIzNDkwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9o dy94ZW4vaW50ZXJmYWNlL2lvL2ZiaWYuaApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIGZiaWYu aCAtLSBYZW4gdmlydHVhbCBmcmFtZSBidWZmZXIgZGV2aWNlCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENv cHlyaWdodCAoQykgMjAwNSBBbnRob255IExpZ3VvcmkgPGFsaWd1b3JpQHVzLmlibS5jb20+Cisg KiBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLiwgTWFya3VzIEFybWJydXN0ZXIgPGFy bWJydUByZWRoYXQuY29tPgorICovCisKKyNpZm5kZWYgWEVOX1BVQkxJQ19JT19GQklGX0gKKyNk ZWZpbmUgWEVOX1BVQkxJQ19JT19GQklGX0gKKworLyogT3V0IGV2ZW50cyAoZnJvbnRlbmQgLT4g YmFja2VuZCkgKi8KKworLyoKKyAqIE91dCBldmVudHMgbWF5IGJlIHNlbnQgb25seSB3aGVuIHJl cXVlc3RlZCBieSBiYWNrZW5kLCBhbmQgcmVjZWlwdAorICogb2YgYW4gdW5rbm93biBvdXQgZXZl bnQgaXMgYW4gZXJyb3IuCisgKi8KKworLyogRXZlbnQgdHlwZSAxIGN1cnJlbnRseSBub3QgdXNl ZCAqLworLyoKKyAqIEZyYW1lYnVmZmVyIHVwZGF0ZSBub3RpZmljYXRpb24gZXZlbnQKKyAqIENh cGFibGUgZnJvbnRlbmQgc2V0cyBmZWF0dXJlLXVwZGF0ZSBpbiB4ZW5zdG9yZS4KKyAqIEJhY2tl bmQgcmVxdWVzdHMgaXQgYnkgc2V0dGluZyByZXF1ZXN0LXVwZGF0ZSBpbiB4ZW5zdG9yZS4KKyAq LworI2RlZmluZSBYRU5GQl9UWVBFX1VQREFURSAyCisKK3N0cnVjdCB4ZW5mYl91cGRhdGUKK3sK KyAgICB1aW50OF90IHR5cGU7ICAgIC8qIFhFTkZCX1RZUEVfVVBEQVRFICovCisgICAgaW50MzJf dCB4OyAgICAgIC8qIHNvdXJjZSB4ICovCisgICAgaW50MzJfdCB5OyAgICAgIC8qIHNvdXJjZSB5 ICovCisgICAgaW50MzJfdCB3aWR0aDsgIC8qIHJlY3Qgd2lkdGggKi8KKyAgICBpbnQzMl90IGhl aWdodDsgLyogcmVjdCBoZWlnaHQgKi8KK307CisKKy8qCisgKiBGcmFtZWJ1ZmZlciByZXNpemUg bm90aWZpY2F0aW9uIGV2ZW50CisgKiBDYXBhYmxlIGJhY2tlbmQgc2V0cyBmZWF0dXJlLXJlc2l6 ZSBpbiB4ZW5zdG9yZS4KKyAqLworI2RlZmluZSBYRU5GQl9UWVBFX1JFU0laRSAzCisKK3N0cnVj dCB4ZW5mYl9yZXNpemUKK3sKKyAgICB1aW50OF90IHR5cGU7ICAgIC8qIFhFTkZCX1RZUEVfUkVT SVpFICovCisgICAgaW50MzJfdCB3aWR0aDsgICAvKiB3aWR0aCBpbiBwaXhlbHMgKi8KKyAgICBp bnQzMl90IGhlaWdodDsgIC8qIGhlaWdodCBpbiBwaXhlbHMgKi8KKyAgICBpbnQzMl90IHN0cmlk ZTsgIC8qIHN0cmlkZSBpbiBieXRlcyAqLworICAgIGludDMyX3QgZGVwdGg7ICAgLyogZGVwdGgg aW4gYml0cyAqLworICAgIGludDMyX3Qgb2Zmc2V0OyAgLyogb2Zmc2V0IG9mIHRoZSBmcmFtZWJ1 ZmZlciBpbiBieXRlcyAqLworfTsKKworI2RlZmluZSBYRU5GQl9PVVRfRVZFTlRfU0laRSA0MAor Cit1bmlvbiB4ZW5mYl9vdXRfZXZlbnQKK3sKKyAgICB1aW50OF90IHR5cGU7CisgICAgc3RydWN0 IHhlbmZiX3VwZGF0ZSB1cGRhdGU7CisgICAgc3RydWN0IHhlbmZiX3Jlc2l6ZSByZXNpemU7Cisg ICAgY2hhciBwYWRbWEVORkJfT1VUX0VWRU5UX1NJWkVdOworfTsKKworLyogSW4gZXZlbnRzIChi YWNrZW5kIC0+IGZyb250ZW5kKSAqLworCisvKgorICogRnJvbnRlbmRzIHNob3VsZCBpZ25vcmUg dW5rbm93biBpbiBldmVudHMuCisgKi8KKworLyoKKyAqIEZyYW1lYnVmZmVyIHJlZnJlc2ggcGVy aW9kIGFkdmljZQorICogQmFja2VuZCBzZW5kcyBpdCB0byBhZHZpc2UgdGhlIGZyb250ZW5kIHRo ZWlyIHByZWZlcnJlZCBwZXJpb2Qgb2YKKyAqIHJlZnJlc2guICBGcm9udGVuZHMgdGhhdCBrZWVw IHRoZSBmcmFtZWJ1ZmZlciBjb25zdGFudGx5IHVwLXRvLWRhdGUKKyAqIGp1c3QgaWdub3JlIGl0 LiAgRnJvbnRlbmRzIHRoYXQgdXNlIHRoZSBhZHZpY2Ugc2hvdWxkIGltbWVkaWF0ZWx5CisgKiBy ZWZyZXNoIHRoZSBmcmFtZWJ1ZmZlciAoYW5kIHNlbmQgYW4gdXBkYXRlIG5vdGlmaWNhdGlvbiBl dmVudCBpZgorICogdGhvc2UgaGF2ZSBiZWVuIHJlcXVlc3RlZCksIHRoZW4gdXNlIHRoZSB1cGRh dGUgZnJlcXVlbmN5IHRvIGd1aWRlCisgKiB0aGVpciBwZXJpb2RpY2FsIHJlZnJlc2hzLgorICov CisjZGVmaW5lIFhFTkZCX1RZUEVfUkVGUkVTSF9QRVJJT0QgMQorI2RlZmluZSBYRU5GQl9OT19S RUZSRVNIIDAKKworc3RydWN0IHhlbmZiX3JlZnJlc2hfcGVyaW9kCit7CisgICAgdWludDhfdCB0 eXBlOyAgICAvKiBYRU5GQl9UWVBFX1VQREFURV9QRVJJT0QgKi8KKyAgICB1aW50MzJfdCBwZXJp b2Q7IC8qIHBlcmlvZCBvZiByZWZyZXNoLCBpbiBtcywKKyAgICAgICAgICAgICAgICAgICAgICAq IFhFTkZCX05PX1JFRlJFU0ggaWYgbm8gcmVmcmVzaCBpcyBuZWVkZWQgKi8KK307CisKKyNkZWZp bmUgWEVORkJfSU5fRVZFTlRfU0laRSA0MAorCit1bmlvbiB4ZW5mYl9pbl9ldmVudAoreworICAg IHVpbnQ4X3QgdHlwZTsKKyAgICBzdHJ1Y3QgeGVuZmJfcmVmcmVzaF9wZXJpb2QgcmVmcmVzaF9w ZXJpb2Q7CisgICAgY2hhciBwYWRbWEVORkJfSU5fRVZFTlRfU0laRV07Cit9OworCisvKiBzaGFy ZWQgcGFnZSAqLworCisjZGVmaW5lIFhFTkZCX0lOX1JJTkdfU0laRSAxMDI0CisjZGVmaW5lIFhF TkZCX0lOX1JJTkdfTEVOIChYRU5GQl9JTl9SSU5HX1NJWkUgLyBYRU5GQl9JTl9FVkVOVF9TSVpF KQorI2RlZmluZSBYRU5GQl9JTl9SSU5HX09GRlMgMTAyNAorI2RlZmluZSBYRU5GQl9JTl9SSU5H KHBhZ2UpIFwKKyAgICAoKHVuaW9uIHhlbmZiX2luX2V2ZW50ICopKChjaGFyICopKHBhZ2UpICsg WEVORkJfSU5fUklOR19PRkZTKSkKKyNkZWZpbmUgWEVORkJfSU5fUklOR19SRUYocGFnZSwgaWR4 KSBcCisgICAgKFhFTkZCX0lOX1JJTkcoKHBhZ2UpKVsoaWR4KSAlIFhFTkZCX0lOX1JJTkdfTEVO XSkKKworI2RlZmluZSBYRU5GQl9PVVRfUklOR19TSVpFIDIwNDgKKyNkZWZpbmUgWEVORkJfT1VU X1JJTkdfTEVOIChYRU5GQl9PVVRfUklOR19TSVpFIC8gWEVORkJfT1VUX0VWRU5UX1NJWkUpCisj ZGVmaW5lIFhFTkZCX09VVF9SSU5HX09GRlMgKFhFTkZCX0lOX1JJTkdfT0ZGUyArIFhFTkZCX0lO X1JJTkdfU0laRSkKKyNkZWZpbmUgWEVORkJfT1VUX1JJTkcocGFnZSkgXAorICAgICgodW5pb24g eGVuZmJfb3V0X2V2ZW50ICopKChjaGFyICopKHBhZ2UpICsgWEVORkJfT1VUX1JJTkdfT0ZGUykp CisjZGVmaW5lIFhFTkZCX09VVF9SSU5HX1JFRihwYWdlLCBpZHgpIFwKKyAgICAoWEVORkJfT1VU X1JJTkcoKHBhZ2UpKVsoaWR4KSAlIFhFTkZCX09VVF9SSU5HX0xFTl0pCisKK3N0cnVjdCB4ZW5m Yl9wYWdlCit7CisgICAgdWludDMyX3QgaW5fY29ucywgaW5fcHJvZDsKKyAgICB1aW50MzJfdCBv dXRfY29ucywgb3V0X3Byb2Q7CisKKyAgICBpbnQzMl90IHdpZHRoOyAgICAgICAgICAvKiB0aGUg d2lkdGggb2YgdGhlIGZyYW1lYnVmZmVyIChpbiBwaXhlbHMpICovCisgICAgaW50MzJfdCBoZWln aHQ7ICAgICAgICAgLyogdGhlIGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgKGluIHBpeGVscykg Ki8KKyAgICB1aW50MzJfdCBsaW5lX2xlbmd0aDsgICAvKiB0aGUgbGVuZ3RoIG9mIGEgcm93IG9m IHBpeGVscyAoaW4gYnl0ZXMpICovCisgICAgdWludDMyX3QgbWVtX2xlbmd0aDsgICAgLyogdGhl IGxlbmd0aCBvZiB0aGUgZnJhbWVidWZmZXIgKGluIGJ5dGVzKSAqLworICAgIHVpbnQ4X3QgZGVw dGg7ICAgICAgICAgIC8qIHRoZSBkZXB0aCBvZiBhIHBpeGVsIChpbiBiaXRzKSAqLworCisgICAg LyoKKyAgICAgKiBGcmFtZWJ1ZmZlciBwYWdlIGRpcmVjdG9yeQorICAgICAqCisgICAgICogRWFj aCBkaXJlY3RvcnkgcGFnZSBob2xkcyBQQUdFX1NJWkUgLyBzaXplb2YoKnBkKQorICAgICAqIGZy YW1lYnVmZmVyIHBhZ2VzLCBhbmQgY2FuIHRodXMgbWFwIHVwIHRvIFBBR0VfU0laRSAqCisgICAg ICogUEFHRV9TSVpFIC8gc2l6ZW9mKCpwZCkgYnl0ZXMuICBXaXRoIFBBR0VfU0laRSA9PSA0MDk2 IGFuZAorICAgICAqIHNpemVvZih1bnNpZ25lZCBsb25nKSA9PSA0LzgsIHRoYXQncyA0IE1lZ3Mg MzIgYml0IGFuZCAyIE1lZ3MKKyAgICAgKiA2NCBiaXQuICAyNTYgZGlyZWN0b3JpZXMgZ2l2ZSBl bm91Z2ggcm9vbSBmb3IgYSA1MTIgTWVnCisgICAgICogZnJhbWVidWZmZXIgd2l0aCBhIG1heCBy ZXNvbHV0aW9uIG9mIDEyLDgwMHgxMCwyNDAuICBTaG91bGQKKyAgICAgKiBiZSBlbm91Z2ggZm9y IGEgd2hpbGUgd2l0aCByb29tIGxlZnRvdmVyIGZvciBleHBhbnNpb24uCisgICAgICovCisgICAg dW5zaWduZWQgbG9uZyBwZFsyNTZdOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRl L2h3L3hlbi9pbnRlcmZhY2UvaW8va2JkaWYuaCBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9p by9rYmRpZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI1MmNmMTAx NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8va2JkaWYu aApAQCAtMCwwICsxLDU2NiBAQAorLyoKKyAqIGtiZGlmLmggLS0gWGVuIHZpcnR1YWwga2V5Ym9h cmQvbW91c2UKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8K KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFudGhvbnkgTGln dW9yaSA8YWxpZ3VvcmlAdXMuaWJtLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0 LCBJbmMuLCBNYXJrdXMgQXJtYnJ1c3RlciA8YXJtYnJ1QHJlZGhhdC5jb20+CisgKi8KKworI2lm bmRlZiBYRU5fUFVCTElDX0lPX0tCRElGX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT19LQkRJRl9I CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgRmVh dHVyZSBhbmQgUGFyYW1ldGVyIE5lZ290aWF0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmlydHVhbCBkcml2ZXIgdXRpbGl6ZSBub2Rl cyB3aXRoaW4KKyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRlIGNhcGFiaWxpdGllcyBhbmQgdG8g bmVnb3RpYXRlIG9wZXJhdGluZyBwYXJhbWV0ZXJzLgorICogVGhpcyBzZWN0aW9uIGVudW1lcmF0 ZXMgdGhlc2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSByZXNwZWN0aXZlIGZyb250IGFuZAor ICogYmFja2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9sbG93aW5nIFhlbkJ1cyBjb252ZW50 aW9uLgorICoKKyAqIEFsbCBkYXRhIGluIFhlblN0b3JlIGlzIHN0b3JlZCBhcyBzdHJpbmdzLiAg Tm9kZXMgc3BlY2lmeWluZyBudW1lcmljCisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1h bC4gSW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJlbG93IGFyZQorICogZXhwcmVzc2VkIGFz IGZpeGVkIHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJz aW9uCisgKiBvZiBhIHByb3Blcmx5IGZvcm1hdGVkIG5vZGUgc3RyaW5nLCB3aXRob3V0IGxvc3Mg b2YgaW5mb3JtYXRpb24uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZlYXR1cmVzIHN1cHBvcnRl ZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ2FwYWJsZSBiYWNrZW5kIGFk dmVydGlzZXMgc3VwcG9ydGVkIGZlYXR1cmVzIGJ5IHB1Ymxpc2hpbmcKKyAqIGNvcnJlc3BvbmRp bmcgZW50cmllcyBpbiBYZW5TdG9yZSBhbmQgcHV0cyAxIGFzIHRoZSB2YWx1ZSBvZiB0aGUgZW50 cnkuCisgKiBJZiBhIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCB0aGVuIDAgbXVzdCBiZSBzZXQg b3IgZmVhdHVyZSBlbnRyeSBvbWl0dGVkLgorICoKKyAqIGZlYXR1cmUtZGlzYWJsZS1rZXlib2Fy ZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBJZiB0aGVyZSBp cyBubyBuZWVkIHRvIGV4cG9zZSBhIHZpcnR1YWwga2V5Ym9hcmQgZGV2aWNlIGJ5IHRoZQorICog ICAgICBmcm9udGVuZCB0aGVuIHRoaXMgbXVzdCBiZSBzZXQgdG8gMS4KKyAqCisgKiBmZWF0dXJl LWRpc2FibGUtcG9pbnRlcgorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICog ICAgICBJZiB0aGVyZSBpcyBubyBuZWVkIHRvIGV4cG9zZSBhIHZpcnR1YWwgcG9pbnRlciBkZXZp Y2UgYnkgdGhlCisgKiAgICAgIGZyb250ZW5kIHRoZW4gdGhpcyBtdXN0IGJlIHNldCB0byAxLgor ICoKKyAqIGZlYXR1cmUtYWJzLXBvaW50ZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 PgorICoKKyAqICAgICAgQmFja2VuZHMsIHdoaWNoIHN1cHBvcnQgcmVwb3J0aW5nIG9mIGFic29s dXRlIGNvb3JkaW5hdGVzIGZvciBwb2ludGVyCisgKiAgICAgIGRldmljZSBzaG91bGQgc2V0IHRo aXMgdG8gMS4KKyAqCisgKiBmZWF0dXJlLW11bHRpLXRvdWNoCisgKiAgICAgIFZhbHVlczogICAg ICAgICA8dWludD4KKyAqCisgKiAgICAgIEJhY2tlbmRzLCB3aGljaCBzdXBwb3J0IHJlcG9ydGlu ZyBvZiBtdWx0aS10b3VjaCBldmVudHMKKyAqICAgICAgc2hvdWxkIHNldCB0aGlzIHRvIDEuCisg KgorICogZmVhdHVyZS1yYXctcG9pbnRlcgorICogICAgICBWYWx1ZXM6ICAgICAgICA8dWludD4K KyAqCisgKiAgICAgIEJhY2tlbmRzLCB3aGljaCBzdXBwb3J0IHJlcG9ydGluZyByYXcgKHVuc2Nh bGVkKSBhYnNvbHV0ZSBjb29yZGluYXRlcworICogICAgICBmb3IgcG9pbnRlciBkZXZpY2VzIHNo b3VsZCBzZXQgdGhpcyB0byAxLiBSYXcgKHVuc2NhbGVkKSB2YWx1ZXMgaGF2ZQorICogICAgICBh IHJhbmdlIG9mIFswLCAweDdmZmZdLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIERl dmljZSBJbnN0YW5jZSBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHVuaXF1ZS1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KKyAqCisgKiAgICAg IEFmdGVyIGRldmljZSBpbnN0YW5jZSBpbml0aWFsaXphdGlvbiBpdCBpcyBhc3NpZ25lZCBhIHVu aXF1ZSBJRCwKKyAqICAgICAgc28gZXZlcnkgaW5zdGFuY2Ugb2YgdGhlIGZyb250ZW5kIGNhbiBi ZSBpZGVudGlmaWVkIGJ5IHRoZSBiYWNrZW5kCisgKiAgICAgIGJ5IHRoaXMgSUQuIFRoaXMgY2Fu IGJlIFVVSUQgb3Igc3VjaC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9pbnRl ciBEZXZpY2UgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3aWR0 aAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBNYXhpbXVtIFgg Y29vcmRpbmF0ZSAod2lkdGgpIHRvIGJlIHVzZWQgYnkgdGhlIGZyb250ZW5kCisgKiAgICAgIHdo aWxlIHJlcG9ydGluZyBpbnB1dCBldmVudHMsIHBpeGVscywgWzA7IFVJTlQzMl9NQVhdLgorICoK KyAqIGhlaWdodAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBN YXhpbXVtIFkgY29vcmRpbmF0ZSAoaGVpZ2h0KSB0byBiZSB1c2VkIGJ5IHRoZSBmcm9udGVuZAor ICogICAgICB3aGlsZSByZXBvcnRpbmcgaW5wdXQgZXZlbnRzLCBwaXhlbHMsIFswOyBVSU5UMzJf TUFYXS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE11bHRpLXRvdWNoIERldmljZSBQ YXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBtdWx0aS10b3VjaC1udW0t Y29udGFjdHMKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgTnVt YmVyIG9mIHNpbXVsdGFuZW91cyB0b3VjaGVzIHJlcG9ydGVkLgorICoKKyAqIG11bHRpLXRvdWNo LXdpZHRoCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFdpZHRo IG9mIHRoZSB0b3VjaCBhcmVhIHRvIGJlIHVzZWQgYnkgdGhlIGZyb250ZW5kCisgKiAgICAgIHdo aWxlIHJlcG9ydGluZyBpbnB1dCBldmVudHMsIHBpeGVscywgWzA7IFVJTlQzMl9NQVhdLgorICoK KyAqIG11bHRpLXRvdWNoLWhlaWdodAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cisg KgorICogICAgICBIZWlnaHQgb2YgdGhlIHRvdWNoIGFyZWEgdG8gYmUgdXNlZCBieSB0aGUgZnJv bnRlbmQKKyAqICAgICAgd2hpbGUgcmVwb3J0aW5nIGlucHV0IGV2ZW50cywgcGl4ZWxzLCBbMDsg VUlOVDMyX01BWF0uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZlYXR1cmUgcmVxdWVzdCAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENhcGFibGUgZnJvbnRlbmQgcmVx dWVzdHMgZmVhdHVyZXMgZnJvbSBiYWNrZW5kIHZpYSBzZXR0aW5nIGNvcnJlc3BvbmRpbmcKKyAq IGVudHJpZXMgdG8gMSBpbiBYZW5TdG9yZS4gUmVxdWVzdHMgZm9yIGZlYXR1cmVzIG5vdCBhZHZl cnRpc2VkIGFzIHN1cHBvcnRlZAorICogYnkgdGhlIGJhY2tlbmQgaGF2ZSBubyBlZmZlY3QuCisg KgorICogcmVxdWVzdC1hYnMtcG9pbnRlcgorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+ CisgKgorICogICAgICBSZXF1ZXN0IGJhY2tlbmQgdG8gcmVwb3J0IGFic29sdXRlIHBvaW50ZXIg Y29vcmRpbmF0ZXMKKyAqICAgICAgKFhFTktCRF9UWVBFX1BPUykgaW5zdGVhZCBvZiByZWxhdGl2 ZSBvbmVzIChYRU5LQkRfVFlQRV9NT1RJT04pLgorICoKKyAqIHJlcXVlc3QtbXVsdGktdG91Y2gK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgUmVxdWVzdCBiYWNr ZW5kIHRvIHJlcG9ydCBtdWx0aS10b3VjaCBldmVudHMuCisgKgorICogcmVxdWVzdC1yYXctcG9p bnRlcgorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBSZXF1ZXN0 IGJhY2tlbmQgdG8gcmVwb3J0IHJhdyB1bnNjYWxlZCBhYnNvbHV0ZSBwb2ludGVyIGNvb3JkaW5h dGVzLgorICogICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGlmIHJlcXVlc3QtYWJzLXBv aW50ZXIgaXMgYWxzbyBzZXQuCisgKiAgICAgIFJhdyB1bnNjYWxlZCBjb29yZGluYXRlcyBoYXZl IHRoZSByYW5nZSBbMCwgMHg3ZmZmXQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVx dWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IGV2ZW50LWNoYW5uZWwKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAg ICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBldmVudCBjaGFubmVsIHVzZWQgdG8gc2lnbmFs IGFjdGl2aXR5CisgKiAgICAgIGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiBwYWdlLWdyZWYK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgVGhlIFhlbiBncmFu dCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCisg KiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgZXZlbnQgcmluZyBidWZm ZXIuCisgKgorICogcGFnZS1yZWYKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoK KyAqICAgICAgT0JTT0xFVEUsIG5vdCByZWNvbW1lbmRlZCBmb3IgdXNlLgorICogICAgICBQRk4g b2YgdGhlIHNoYXJlZCBwYWdlLgorICovCisKKy8qCisgKiBFVkVOVCBDT0RFUy4KKyAqLworCisj ZGVmaW5lIFhFTktCRF9UWVBFX01PVElPTiAgICAgICAgICAgICAxCisjZGVmaW5lIFhFTktCRF9U WVBFX1JFU0VSVkVEICAgICAgICAgICAyCisjZGVmaW5lIFhFTktCRF9UWVBFX0tFWSAgICAgICAg ICAgICAgICAzCisjZGVmaW5lIFhFTktCRF9UWVBFX1BPUyAgICAgICAgICAgICAgICA0CisjZGVm aW5lIFhFTktCRF9UWVBFX01UT1VDSCAgICAgICAgICAgICA1CisKKy8qIE11bHRpLXRvdWNoIGV2 ZW50IHN1Yi1jb2RlcyAqLworCisjZGVmaW5lIFhFTktCRF9NVF9FVl9ET1dOICAgICAgICAgICAg ICAwCisjZGVmaW5lIFhFTktCRF9NVF9FVl9VUCAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFhF TktCRF9NVF9FVl9NT1RJT04gICAgICAgICAgICAyCisjZGVmaW5lIFhFTktCRF9NVF9FVl9TWU4g ICAgICAgICAgICAgICAzCisjZGVmaW5lIFhFTktCRF9NVF9FVl9TSEFQRSAgICAgICAgICAgICA0 CisjZGVmaW5lIFhFTktCRF9NVF9FVl9PUklFTlQgICAgICAgICAgICA1CisKKy8qCisgKiBDT05T VEFOVFMsIFhFTlNUT1JFIEZJRUxEIEFORCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUy4KKyAq LworCisjZGVmaW5lIFhFTktCRF9EUklWRVJfTkFNRSAgICAgICAgICAgICAidmtiZCIKKworI2Rl ZmluZSBYRU5LQkRfRklFTERfRkVBVF9EU0JMX0tFWUJSRCAgImZlYXR1cmUtZGlzYWJsZS1rZXli b2FyZCIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX0ZFQVRfRFNCTF9QT0lOVEVSICJmZWF0dXJlLWRp c2FibGUtcG9pbnRlciIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX0ZFQVRfQUJTX1BPSU5URVIgICJm ZWF0dXJlLWFicy1wb2ludGVyIgorI2RlZmluZSBYRU5LQkRfRklFTERfRkVBVF9SQVdfUE9JTlRF UiAgImZlYXR1cmUtcmF3LXBvaW50ZXIiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9GRUFUX01UT1VD SCAgICAgICAiZmVhdHVyZS1tdWx0aS10b3VjaCIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX1JFUV9B QlNfUE9JTlRFUiAgICJyZXF1ZXN0LWFicy1wb2ludGVyIgorI2RlZmluZSBYRU5LQkRfRklFTERf UkVRX1JBV19QT0lOVEVSICAgInJlcXVlc3QtcmF3LXBvaW50ZXIiCisjZGVmaW5lIFhFTktCRF9G SUVMRF9SRVFfTVRPVUNIICAgICAgICAicmVxdWVzdC1tdWx0aS10b3VjaCIKKyNkZWZpbmUgWEVO S0JEX0ZJRUxEX1JJTkdfR1JFRiAgICAgICAgICJwYWdlLWdyZWYiCisjZGVmaW5lIFhFTktCRF9G SUVMRF9FVlRfQ0hBTk5FTCAgICAgICAiZXZlbnQtY2hhbm5lbCIKKyNkZWZpbmUgWEVOS0JEX0ZJ RUxEX1dJRFRIICAgICAgICAgICAgICJ3aWR0aCIKKyNkZWZpbmUgWEVOS0JEX0ZJRUxEX0hFSUdI VCAgICAgICAgICAgICJoZWlnaHQiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9NVF9XSURUSCAgICAg ICAgICAibXVsdGktdG91Y2gtd2lkdGgiCisjZGVmaW5lIFhFTktCRF9GSUVMRF9NVF9IRUlHSFQg ICAgICAgICAibXVsdGktdG91Y2gtaGVpZ2h0IgorI2RlZmluZSBYRU5LQkRfRklFTERfTVRfTlVN X0NPTlRBQ1RTICAgIm11bHRpLXRvdWNoLW51bS1jb250YWN0cyIKKyNkZWZpbmUgWEVOS0JEX0ZJ RUxEX1VOSVFVRV9JRCAgICAgICAgICJ1bmlxdWUtaWQiCisKKy8qIE9CU09MRVRFLCBub3QgcmVj b21tZW5kZWQgZm9yIHVzZSAqLworI2RlZmluZSBYRU5LQkRfRklFTERfUklOR19SRUYgICAgICAg ICAgInBhZ2UtcmVmIgorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBEZXNjcmlwdGlv biBvZiB0aGUgcHJvdG9jb2wgYmV0d2VlbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXIuCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEtdmly dHVhbCBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAorICogZWFjaCBvdGhlciB1c2luZyBhIHNoYXJl ZCBwYWdlIGFuZCBhbiBldmVudCBjaGFubmVsLgorICogU2hhcmVkIHBhZ2UgY29udGFpbnMgYSBy aW5nIHdpdGggZXZlbnQgc3RydWN0dXJlcy4KKyAqCisgKiBBbGwgcmVzZXJ2ZWQgZmllbGRzIGlu IHRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgMC4KKyAqCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZCB0byBmcm9udGVuZCBldmVu dHMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZyb250ZW5kcyBzaG91bGQgaWdub3Jl IHVua25vd24gaW4gZXZlbnRzLgorICogQWxsIGV2ZW50IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBs ZW5ndGggKDQwIG9jdGV0cykKKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRl cjoKKyAqCisgKiAgICAgICAgICAwICAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgdHlwZSAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHR5 cGUgLSB1aW50OF90LCBldmVudCBjb2RlLCBYRU5LQkRfVFlQRV8/Pz8KKyAqCisgKgorICogUG9p bnRlciByZWxhdGl2ZSBtb3ZlbWVudCBldmVudAorICogICAgICAgICAwICAgICAgICAgICAgICAg IDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICBfVFlQRV9NT1RJT04gIHwgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbF94ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlbF95ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxfeiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiByZWxfeCAtIGludDMy X3QsIHJlbGF0aXZlIFggbW90aW9uCisgKiByZWxfeSAtIGludDMyX3QsIHJlbGF0aXZlIFkgbW90 aW9uCisgKiByZWxfeiAtIGludDMyX3QsIHJlbGF0aXZlIFogbW90aW9uICh3aGVlbCkKKyAqLwor CitzdHJ1Y3QgeGVua2JkX21vdGlvbgoreworICAgIHVpbnQ4X3QgdHlwZTsKKyAgICBpbnQzMl90 IHJlbF94OworICAgIGludDMyX3QgcmVsX3k7CisgICAgaW50MzJfdCByZWxfejsKK307CisKKy8q CisgKiBLZXkgZXZlbnQgKGluY2x1ZGVzIHBvaW50ZXIgYnV0dG9ucykKKyAqICAgICAgICAgMCAg ICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAg b2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgX1RZUEVfS0VZICAgICB8ICAgICBwcmVzc2Vk ICAgIHwgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWNvZGUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEy CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHByZXNzZWQgLSB1aW50OF90 LCAxIGlmIHByZXNzZWQ7IDAgb3RoZXJ3aXNlCisgKiBrZXljb2RlIC0gdWludDMyX3QsIEtFWV8q IGZyb20gbGludXgvaW5wdXQuaAorICovCisKK3N0cnVjdCB4ZW5rYmRfa2V5Cit7CisgICAgdWlu dDhfdCB0eXBlOworICAgIHVpbnQ4X3QgcHJlc3NlZDsKKyAgICB1aW50MzJfdCBrZXljb2RlOwor fTsKKworLyoKKyAqIFBvaW50ZXIgYWJzb2x1dGUgcG9zaXRpb24gZXZlbnQKKyAqICAgICAgICAg MCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAg ICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgX1RZUEVfUE9TICAgICB8ICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfeCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYnNfeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVsX3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgor ICogYWJzX3ggLSBpbnQzMl90LCBhYnNvbHV0ZSBYIHBvc2l0aW9uIChpbiBGQiBwaXhlbHMpCisg KiBhYnNfeSAtIGludDMyX3QsIGFic29sdXRlIFkgcG9zaXRpb24gKGluIEZCIHBpeGVscykKKyAq IHJlbF96IC0gaW50MzJfdCwgcmVsYXRpdmUgWiBtb3Rpb24gKHdoZWVsKQorICovCisKK3N0cnVj dCB4ZW5rYmRfcG9zaXRpb24KK3sKKyAgICB1aW50OF90IHR5cGU7CisgICAgaW50MzJfdCBhYnNf eDsKKyAgICBpbnQzMl90IGFic195OworICAgIGludDMyX3QgcmVsX3o7Cit9OworCisvKgorICog TXVsdGktdG91Y2ggZXZlbnQgYW5kIGl0cyBzdWItdHlwZXMKKyAqCisgKiBBbGwgbXVsdGktdG91 Y2ggZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6CisgKgorICogICAgICAgICAwICAg ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgICBldmVudF90eXBl ICAgfCAgIGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogZXZlbnRfdHlwZSAt IHVudDhfdCwgbXVsdGktdG91Y2ggZXZlbnQgc3ViLXR5cGUsIFhFTktCRF9NVF9FVl8/Pz8KKyAq IGNvbnRhY3RfaWQgLSB1bnQ4X3QsIElEIG9mIHRoZSBjb250YWN0CisgKgorICogVG91Y2ggaW50 ZXJhY3Rpb25zIGNhbiBjb25zaXN0IG9mIG9uZSBvciBtb3JlIGNvbnRhY3RzLgorICogRm9yIGVh Y2ggY29udGFjdCwgYSBzZXJpZXMgb2YgZXZlbnRzIGlzIGdlbmVyYXRlZCwgc3RhcnRpbmcKKyAq IHdpdGggYSBkb3duIGV2ZW50LCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgbW90aW9uIGV2ZW50 cywKKyAqIGFuZCBlbmRpbmcgd2l0aCBhbiB1cCBldmVudC4gRXZlbnRzIHJlbGF0aW5nIHRvIHRo ZSBzYW1lCisgKiBjb250YWN0IHBvaW50IGNhbiBiZSBpZGVudGlmaWVkIGJ5IHRoZSBJRCBvZiB0 aGUgc2VxdWVuY2U6IGNvbnRhY3QgSUQuCisgKiBDb250YWN0IElEIG1heSBiZSByZXVzZWQgYWZ0 ZXIgWEVOS0JEX01UX0VWX1VQIGV2ZW50IGFuZAorICogaXMgaW4gdGhlIFswOyBYRU5LQkRfRklF TERfTlVNX0NPTlRBQ1RTIC0gMV0gcmFuZ2UuCisgKgorICogRm9yIGZ1cnRoZXIgaW5mb3JtYXRp b24gcGxlYXNlIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gV2F5bGFuZCBbMV0sCisgKiBMaW51 eCBbMl0gYW5kIFdpbmRvd3MgWzNdIG11bHRpLXRvdWNoIHN1cHBvcnQuCisgKgorICogWzFdIGh0 dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvd2F5bGFuZC93YXlsYW5kL3RyZWUvcHJvdG9jb2wv d2F5bGFuZC54bWwKKyAqIFsyXSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9Eb2N1bWVudGF0 aW9uL2lucHV0L211bHRpLXRvdWNoLXByb3RvY29sLnR4dAorICogWzNdIGh0dHBzOi8vbXNkbi5t aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvamoxNTE1NjQodj12cy44NSkuYXNweAorICoKKyAq CisgKiBNdWx0aS10b3VjaCBkb3duIGV2ZW50IC0gc2VudCB3aGVuIGEgbmV3IHRvdWNoIGlzIG1h ZGU6IHRvdWNoIGlzIGFzc2lnbmVkCisgKiBhIHVuaXF1ZSBjb250YWN0IElELCBzZW50IHdpdGgg dGhpcyBhbmQgY29uc2VxdWVudCBldmVudHMgcmVsYXRlZAorICogdG8gdGhpcyB0b3VjaC4KKyAq ICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAg ICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgX1RZUEVfTVRPVUNIICB8 ICAgX01UX0VWX0RPV04gIHwgICBjb250YWN0X2lkICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfeCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWJzX3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKgorICogYWJzX3ggLSBpbnQzMl90LCBhYnNvbHV0ZSBYIHBvc2l0aW9uLCBpbiBwaXhl bHMKKyAqIGFic195IC0gaW50MzJfdCwgYWJzb2x1dGUgWSBwb3NpdGlvbiwgaW4gcGl4ZWxzCisg KgorICogTXVsdGktdG91Y2ggY29udGFjdCByZWxlYXNlIGV2ZW50CisgKiAgICAgICAgIDAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9j dGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgIF9UWVBFX01UT1VDSCAgfCAgX01UX0VWX1VQICAg ICB8ICAgY29udGFjdF9pZCAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAq IE11bHRpLXRvdWNoIG1vdGlvbiBldmVudAorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEg ICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9NT1RJT04gfCAgIGNvbnRhY3Rf aWQgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFic194ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfeSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAy MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBhYnNfeCAtIGludDMyX3Qs IGFic29sdXRlIFggcG9zaXRpb24sIGluIHBpeGVscywKKyAqIGFic195IC0gaW50MzJfdCwgYWJz b2x1dGUgWSBwb3NpdGlvbiwgaW4gcGl4ZWxzLAorICoKKyAqIE11bHRpLXRvdWNoIGlucHV0IHN5 bmNocm9uaXphdGlvbiBldmVudCAtIHNob3dzIGVuZCBvZiBhIHNldCBvZiBldmVudHMKKyAqIHdo aWNoIGxvZ2ljYWxseSBiZWxvbmcgdG9nZXRoZXIuCisgKiAgICAgICAgIDAgICAgICAgICAgICAg ICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgIF9UWVBFX01UT1VDSCAgfCAgX01UX0VWX1NZTiAgICB8ICAgY29u dGFjdF9pZCAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIE11bHRpLXRv dWNoIHNoYXBlIGV2ZW50IC0gdG91Y2ggcG9pbnQncyBzaGFwZSBoYXMgY2hhbmdlZCBpdHMgc2hh cGUuCisgKiBTaGFwZSBpcyBhcHByb3hpbWF0ZWQgYnkgYW4gZWxsaXBzZSB0aHJvdWdoIHRoZSBt YWpvciBhbmQgbWlub3IgYXhpcworICogbGVuZ3RoczogbWFqb3IgaXMgdGhlIGxvbmdlciBkaWFt ZXRlciBvZiB0aGUgZWxsaXBzZSBhbmQgbWlub3IgaXMgdGhlCisgKiBzaG9ydGVyIG9uZS4gQ2Vu dGVyIG9mIHRoZSBlbGxpcHNlIGlzIHJlcG9ydGVkIHZpYQorICogWEVOS0JEX01UX0VWX0RPV04v WEVOS0JEX01UX0VWX01PVElPTiBldmVudHMuCisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAg MSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgIF9UWVBFX01UT1VDSCAgfCAgX01UX0VWX1NIQVBFICB8ICAgY29udGFj dF9pZCAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFqb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgNDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIG1ham9yIC0gdW50MzJf dCwgbGVuZ3RoIG9mIHRoZSBtYWpvciBheGlzLCBwaXhlbHMKKyAqIG1pbm9yIC0gdW50MzJfdCwg bGVuZ3RoIG9mIHRoZSBtaW5vciBheGlzLCBwaXhlbHMKKyAqCisgKiBNdWx0aS10b3VjaCBvcmll bnRhdGlvbiBldmVudCAtIHRvdWNoIHBvaW50J3Mgc2hhcGUgaGFzIGNoYW5nZWQKKyAqIGl0cyBv cmllbnRhdGlvbjogY2FsY3VsYXRlZCBhcyBhIGNsb2Nrd2lzZSBhbmdsZSBiZXR3ZWVuIHRoZSBt YWpvciBheGlzCisgKiBvZiB0aGUgZWxsaXBzZSBhbmQgcG9zaXRpdmUgWSBheGlzIGluIGRlZ3Jl ZXMsIFstMTgwOyArMTgwXS4KKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgX1RZUEVfTVRPVUNIICB8ICBfTVRfRVZfT1JJRU5UIHwgICBjb250YWN0X2lkICAgfCAg ICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgb3JpZW50YXRpb24gICAgICAgICAgIHwgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBvcmll bnRhdGlvbiAtIGludDE2X3QsIGNsb2Nrd2lzZSBhbmdsZSBvZiB0aGUgbWFqb3IgYXhpcworICov CisKK3N0cnVjdCB4ZW5rYmRfbXRvdWNoIHsKKyAgICB1aW50OF90IHR5cGU7ICAgICAgICAgICAg LyogWEVOS0JEX1RZUEVfTVRPVUNIICovCisgICAgdWludDhfdCBldmVudF90eXBlOyAgICAgIC8q IFhFTktCRF9NVF9FVl8/Pz8gKi8KKyAgICB1aW50OF90IGNvbnRhY3RfaWQ7CisgICAgdWludDhf dCByZXNlcnZlZFs1XTsgICAgIC8qIHJlc2VydmVkIGZvciB0aGUgZnV0dXJlIHVzZSAqLworICAg IHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludDMyX3QgYWJzX3g7ICAg LyogYWJzb2x1dGUgWCBwb3NpdGlvbiwgcGl4ZWxzICovCisgICAgICAgICAgICBpbnQzMl90IGFi c195OyAgIC8qIGFic29sdXRlIFkgcG9zaXRpb24sIHBpeGVscyAqLworICAgICAgICB9IHBvczsK KyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IG1ham9yOyAgLyogbGVuZ3Ro IG9mIHRoZSBtYWpvciBheGlzLCBwaXhlbHMgKi8KKyAgICAgICAgICAgIHVpbnQzMl90IG1pbm9y OyAgLyogbGVuZ3RoIG9mIHRoZSBtaW5vciBheGlzLCBwaXhlbHMgKi8KKyAgICAgICAgfSBzaGFw ZTsKKyAgICAgICAgaW50MTZfdCBvcmllbnRhdGlvbjsgLyogY2xvY2t3aXNlIGFuZ2xlIG9mIHRo ZSBtYWpvciBheGlzICovCisgICAgfSB1OworfTsKKworI2RlZmluZSBYRU5LQkRfSU5fRVZFTlRf U0laRSA0MAorCit1bmlvbiB4ZW5rYmRfaW5fZXZlbnQKK3sKKyAgICB1aW50OF90IHR5cGU7Cisg ICAgc3RydWN0IHhlbmtiZF9tb3Rpb24gbW90aW9uOworICAgIHN0cnVjdCB4ZW5rYmRfa2V5IGtl eTsKKyAgICBzdHJ1Y3QgeGVua2JkX3Bvc2l0aW9uIHBvczsKKyAgICBzdHJ1Y3QgeGVua2JkX210 b3VjaCBtdG91Y2g7CisgICAgY2hhciBwYWRbWEVOS0JEX0lOX0VWRU5UX1NJWkVdOworfTsKKwor LyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg RnJvbnRlbmQgdG8gYmFja2VuZCBldmVudHMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq IE91dCBldmVudHMgbWF5IGJlIHNlbnQgb25seSB3aGVuIHJlcXVlc3RlZCBieSBiYWNrZW5kLCBh bmQgcmVjZWlwdAorICogb2YgYW4gdW5rbm93biBvdXQgZXZlbnQgaXMgYW4gZXJyb3IuCisgKiBO byBvdXQgZXZlbnRzIGN1cnJlbnRseSBkZWZpbmVkLgorCisgKiBBbGwgZXZlbnQgcGFja2V0cyBo YXZlIHRoZSBzYW1lIGxlbmd0aCAoNDAgb2N0ZXRzKQorICogQWxsIGV2ZW50IHBhY2tldHMgaGF2 ZSBjb21tb24gaGVhZGVyOgorICogICAgICAgICAgMCAgICAgICAgIG9jdGV0CisgKiArLS0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgIHR5cGUgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0t LS0rCisgKiB0eXBlIC0gdWludDhfdCwgZXZlbnQgY29kZQorICovCisKKyNkZWZpbmUgWEVOS0JE X09VVF9FVkVOVF9TSVpFIDQwCisKK3VuaW9uIHhlbmtiZF9vdXRfZXZlbnQKK3sKKyAgICB1aW50 OF90IHR5cGU7CisgICAgY2hhciBwYWRbWEVOS0JEX09VVF9FVkVOVF9TSVpFXTsKK307CisKKy8q CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo YXJlZCBwYWdlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisjZGVmaW5lIFhFTktCRF9J Tl9SSU5HX1NJWkUgMjA0OAorI2RlZmluZSBYRU5LQkRfSU5fUklOR19MRU4gKFhFTktCRF9JTl9S SU5HX1NJWkUgLyBYRU5LQkRfSU5fRVZFTlRfU0laRSkKKyNkZWZpbmUgWEVOS0JEX0lOX1JJTkdf T0ZGUyAxMDI0CisjZGVmaW5lIFhFTktCRF9JTl9SSU5HKHBhZ2UpIFwKKyAgICAoKHVuaW9uIHhl bmtiZF9pbl9ldmVudCAqKSgoY2hhciAqKShwYWdlKSArIFhFTktCRF9JTl9SSU5HX09GRlMpKQor I2RlZmluZSBYRU5LQkRfSU5fUklOR19SRUYocGFnZSwgaWR4KSBcCisgICAgKFhFTktCRF9JTl9S SU5HKChwYWdlKSlbKGlkeCkgJSBYRU5LQkRfSU5fUklOR19MRU5dKQorCisjZGVmaW5lIFhFTktC RF9PVVRfUklOR19TSVpFIDEwMjQKKyNkZWZpbmUgWEVOS0JEX09VVF9SSU5HX0xFTiAoWEVOS0JE X09VVF9SSU5HX1NJWkUgLyBYRU5LQkRfT1VUX0VWRU5UX1NJWkUpCisjZGVmaW5lIFhFTktCRF9P VVRfUklOR19PRkZTIChYRU5LQkRfSU5fUklOR19PRkZTICsgWEVOS0JEX0lOX1JJTkdfU0laRSkK KyNkZWZpbmUgWEVOS0JEX09VVF9SSU5HKHBhZ2UpIFwKKyAgICAoKHVuaW9uIHhlbmtiZF9vdXRf ZXZlbnQgKikoKGNoYXIgKikocGFnZSkgKyBYRU5LQkRfT1VUX1JJTkdfT0ZGUykpCisjZGVmaW5l IFhFTktCRF9PVVRfUklOR19SRUYocGFnZSwgaWR4KSBcCisgICAgKFhFTktCRF9PVVRfUklORygo cGFnZSkpWyhpZHgpICUgWEVOS0JEX09VVF9SSU5HX0xFTl0pCisKK3N0cnVjdCB4ZW5rYmRfcGFn ZQoreworICAgIHVpbnQzMl90IGluX2NvbnMsIGluX3Byb2Q7CisgICAgdWludDMyX3Qgb3V0X2Nv bnMsIG91dF9wcm9kOworfTsKKworI2VuZGlmIC8qIFhFTl9QVUJMSUNfSU9fS0JESUZfSCAqLwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL25ldGlmLmggYi9pbmNsdWRl L2h3L3hlbi9pbnRlcmZhY2UvaW8vbmV0aWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5mNGEyOGE0M2IxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ody94ZW4v aW50ZXJmYWNlL2lvL25ldGlmLmgKQEAgLTAsMCArMSwxMDEwIEBACisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBuZXRpZi5oCisgKgorICogVW5pZmllZCBuZXR3b3JrLWRldmljZSBJL08gaW50 ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cisg KiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh bmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu CisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO VCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChj KSAyMDAzLTIwMDQsIEtlaXIgRnJhc2VyCisgKi8KKworI2lmbmRlZiBYRU5fUFVCTElDX0lPX05F VElGX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT19ORVRJRl9ICisKKyNpbmNsdWRlICJyaW5nLmgi CisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqIE9sZGVyIGltcGxlbWVudGF0 aW9uIG9mIFhlbiBuZXR3b3JrIGZyb250ZW5kIC8gYmFja2VuZCBoYXMgYW4KKyAqIGltcGxpY2l0 IGRlcGVuZGVuY3kgb24gdGhlIE1BWF9TS0JfRlJBR1MgYXMgdGhlIG1heGltdW0gbnVtYmVyIG9m CisgKiByaW5nIHNsb3RzIGEgc2tiIGNhbiB1c2UuIE5ldGZyb250IC8gbmV0YmFjayBtYXkgbm90 IHdvcmsgYXMKKyAqIGV4cGVjdGVkIHdoZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgaGF2ZSBkaWZm ZXJlbnQgTUFYX1NLQl9GUkFHUy4KKyAqCisgKiBBIGJldHRlciBhcHByb2FjaCBpcyB0byBhZGQg bWVjaGFuaXNtIGZvciBuZXRmcm9udCAvIG5ldGJhY2sgdG8KKyAqIG5lZ290aWF0ZSB0aGlzIHZh bHVlLiBIb3dldmVyIHdlIGNhbm5vdCBmaXggYWxsIHBvc3NpYmxlCisgKiBmcm9udGVuZHMsIHNv IHdlIG5lZWQgdG8gZGVmaW5lIGEgdmFsdWUgd2hpY2ggc3RhdGVzIHRoZSBtaW5pbXVtCisgKiBz bG90cyBiYWNrZW5kIG11c3Qgc3VwcG9ydC4KKyAqCisgKiBUaGUgbWluaW11bSB2YWx1ZSBkZXJp dmVzIGZyb20gb2xkZXIgTGludXgga2VybmVsJ3MgTUFYX1NLQl9GUkFHUworICogKDE4KSwgd2hp Y2ggaXMgcHJvdmVkIHRvIHdvcmsgd2l0aCBtb3N0IGZyb250ZW5kcy4gQW55IG5ldyBiYWNrZW5k CisgKiB3aGljaCBkb2Vzbid0IG5lZ290aWF0ZSB3aXRoIGZyb250ZW5kIHNob3VsZCBleHBlY3Qg ZnJvbnRlbmQgdG8KKyAqIHNlbmQgYSB2YWxpZCBwYWNrZXQgdXNpbmcgc2xvdHMgdXAgdG8gdGhp cyB2YWx1ZS4KKyAqLworI2RlZmluZSBYRU5fTkVUSUZfTlJfU0xPVFNfTUlOIDE4CisKKy8qCisg KiBOb3RpZmljYXRpb25zIGFmdGVyIGVucXVldWluZyBhbnkgdHlwZSBvZiBtZXNzYWdlIHNob3Vs ZCBiZSBjb25kaXRpb25hbCBvbgorICogdGhlIGFwcHJvcHJpYXRlIHJlcV9ldmVudCBvciByc3Bf ZXZlbnQgZmllbGQgaW4gdGhlIHNoYXJlZCByaW5nLgorICogSWYgdGhlIGNsaWVudCBzZW5kcyBu b3RpZmljYXRpb24gZm9yIHJ4IHJlcXVlc3RzIHRoZW4gaXQgc2hvdWxkIHNwZWNpZnkKKyAqIGZl YXR1cmUgJ2ZlYXR1cmUtcngtbm90aWZ5JyB2aWEgeGVuYnVzLiBPdGhlcndpc2UgdGhlIGJhY2tl bmQgd2lsbCBhc3N1bWUKKyAqIHRoYXQgaXQgY2Fubm90IHNhZmVseSBxdWV1ZSBwYWNrZXRzIChh cyBpdCBtYXkgbm90IGJlIGtpY2tlZCB0byBzZW5kIHRoZW0pLgorICovCisKKy8qCisgKiAiZmVh dHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIgaXMgaW50cm9kdWNlZCB0byBzZXBhcmF0ZSBndWVz dCBUWAorICogYW5kIFJYIG5vdGlmaWNhdGlvbi4gQmFja2VuZCBlaXRoZXIgZG9lc24ndCBzdXBw b3J0IHRoaXMgZmVhdHVyZSBvcgorICogYWR2ZXJ0aXNlcyBpdCB2aWEgeGVuc3RvcmUgYXMgMCAo ZGlzYWJsZWQpIG9yIDEgKGVuYWJsZWQpLgorICoKKyAqIFRvIG1ha2UgdXNlIG9mIHRoaXMgZmVh dHVyZSwgZnJvbnRlbmQgc2hvdWxkIGFsbG9jYXRlIHR3byBldmVudAorICogY2hhbm5lbHMgZm9y IFRYIGFuZCBSWCwgYWR2ZXJ0aXNlIHRoZW0gdG8gYmFja2VuZCBhcworICogImV2ZW50LWNoYW5u ZWwtdHgiIGFuZCAiZXZlbnQtY2hhbm5lbC1yeCIgcmVzcGVjdGl2ZWx5LiBJZiBmcm9udGVuZAor ICogZG9lc24ndCB3YW50IHRvIHVzZSB0aGlzIGZlYXR1cmUsIGl0IGp1c3Qgd3JpdGVzICJldmVu dC1jaGFubmVsIgorICogbm9kZSBhcyBiZWZvcmUuCisgKi8KKworLyoKKyAqIE11bHRpcGxlIHRy YW5zbWl0IGFuZCByZWNlaXZlIHF1ZXVlczoKKyAqIElmIHN1cHBvcnRlZCwgdGhlIGJhY2tlbmQg d2lsbCB3cml0ZSB0aGUga2V5ICJtdWx0aS1xdWV1ZS1tYXgtcXVldWVzIiB0bworICogdGhlIGRp cmVjdG9yeSBmb3IgdGhhdCB2aWYsIGFuZCBzZXQgaXRzIHZhbHVlIHRvIHRoZSBtYXhpbXVtIHN1 cHBvcnRlZAorICogbnVtYmVyIG9mIHF1ZXVlcy4KKyAqIEZyb250ZW5kcyB0aGF0IGFyZSBhd2Fy ZSBvZiB0aGlzIGZlYXR1cmUgYW5kIHdpc2ggdG8gdXNlIGl0IGNhbiB3cml0ZSB0aGUKKyAqIGtl eSAibXVsdGktcXVldWUtbnVtLXF1ZXVlcyIsIHNldCB0byB0aGUgbnVtYmVyIHRoZXkgd2lzaCB0 byB1c2UsIHdoaWNoCisgKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgbm8gbW9yZSB0 aGFuIHRoZSB2YWx1ZSByZXBvcnRlZCBieSB0aGUgYmFja2VuZAorICogaW4gIm11bHRpLXF1ZXVl LW1heC1xdWV1ZXMiLgorICoKKyAqIFF1ZXVlcyByZXBsaWNhdGUgdGhlIHNoYXJlZCByaW5ncyBh bmQgZXZlbnQgY2hhbm5lbHMuCisgKiAiZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyIgbWF5 IG9wdGlvbmFsbHkgYmUgdXNlZCB3aGVuIHVzaW5nCisgKiBtdWx0aXBsZSBxdWV1ZXMsIGJ1dCBp cyBub3QgbWFuZGF0b3J5LgorICoKKyAqIEVhY2ggcXVldWUgY29uc2lzdHMgb2Ygb25lIHNoYXJl ZCByaW5nIHBhaXIsIGkuZS4gdGhlcmUgbXVzdCBiZSB0aGUgc2FtZQorICogbnVtYmVyIG9mIHR4 IGFuZCByeCByaW5ncy4KKyAqCisgKiBGb3IgZnJvbnRlbmRzIHJlcXVlc3RpbmcganVzdCBvbmUg cXVldWUsIHRoZSB1c3VhbCBldmVudC1jaGFubmVsIGFuZAorICogcmluZy1yZWYga2V5cyBhcmUg d3JpdHRlbiBhcyBiZWZvcmUsIHNpbXBsaWZ5aW5nIHRoZSBiYWNrZW5kIHByb2Nlc3NpbmcKKyAq IHRvIGF2b2lkIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gYSBmcm9udGVuZCB0aGF0IGRvZXNuJ3Qg dW5kZXJzdGFuZCB0aGUKKyAqIG11bHRpLXF1ZXVlIGZlYXR1cmUsIGFuZCBvbmUgdGhhdCBkb2Vz LCBidXQgcmVxdWVzdGVkIG9ubHkgb25lIHF1ZXVlLgorICoKKyAqIEZyb250ZW5kcyByZXF1ZXN0 aW5nIHR3byBvciBtb3JlIHF1ZXVlcyBtdXN0IG5vdCB3cml0ZSB0aGUgdG9wbGV2ZWwKKyAqIGV2 ZW50LWNoYW5uZWwgKG9yIGV2ZW50LWNoYW5uZWwte3R4LHJ4fSkgYW5kIHt0eCxyeH0tcmluZy1y ZWYga2V5cywKKyAqIGluc3RlYWQgd3JpdGluZyB0aG9zZSBrZXlzIHVuZGVyIHN1Yi1rZXlzIGhh dmluZyB0aGUgbmFtZSAicXVldWUtTiIgd2hlcmUKKyAqIE4gaXMgdGhlIGludGVnZXIgSUQgb2Yg dGhlIHF1ZXVlIGZvciB3aGljaCB0aG9zZSBrZXlzIGJlbG9uZy4gUXVldWVzCisgKiBhcmUgaW5k ZXhlZCBmcm9tIHplcm8uIEZvciBleGFtcGxlLCBhIGZyb250ZW5kIHdpdGggdHdvIHF1ZXVlcyBh bmQgc3BsaXQKKyAqIGV2ZW50IGNoYW5uZWxzIG11c3Qgd3JpdGUgdGhlIGZvbGxvd2luZyBzZXQg b2YgcXVldWUtcmVsYXRlZCBrZXlzOgorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uvdmlm LzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcyA9ICIyIgorICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92aWYvMC9xdWV1ZS0wID0gIiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVl dWUtMC90eC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtdHgwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdmlmLzAvcXVldWUtMC9yeC1yaW5nLXJlZiA9ICI8cmluZy1yZWYtcngwPiIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVudC1jaGFubmVsLXR4ID0gIjxl dnRjaG4tdHgwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVu dC1jaGFubmVsLXJ4ID0gIjxldnRjaG4tcngwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmlmLzAvcXVldWUtMSA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZpZi8wL3F1ZXVl LTEvdHgtcmluZy1yZWYgPSAiPHJpbmctcmVmLXR4MT4iCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZpZi8wL3F1ZXVlLTEvcngtcmluZy1yZWYgPSAiPHJpbmctcmVmLXJ4MSIKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVudC1jaGFubmVsLXR4ID0gIjxldnRj aG4tdHgxPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVudC1j aGFubmVsLXJ4ID0gIjxldnRjaG4tcngxPiIKKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgaW5jb25z aXN0ZW5jeSBpbiB0aGUgWGVuU3RvcmUgZGF0YSwgdGhlIGJhY2tlbmQgbWF5CisgKiBjaG9vc2Ug bm90IHRvIGNvbm5lY3QgYW55IHF1ZXVlcywgaW5zdGVhZCB0cmVhdGluZyB0aGUgcmVxdWVzdCBh cyBhbgorICogZXJyb3IuIFRoaXMgaW5jbHVkZXMgc2NlbmFyaW9zIHdoZXJlIG1vcmUgKG9yIGZl d2VyKSBxdWV1ZXMgd2VyZQorICogcmVxdWVzdGVkIHRoYW4gdGhlIGZyb250ZW5kIHByb3ZpZGVk IGRldGFpbHMgZm9yLgorICoKKyAqIE1hcHBpbmcgb2YgcGFja2V0cyB0byBxdWV1ZXMgaXMgY29u c2lkZXJlZCB0byBiZSBhIGZ1bmN0aW9uIG9mIHRoZQorICogdHJhbnNtaXR0aW5nIHN5c3RlbSAo YmFja2VuZCBvciBmcm9udGVuZCkgYW5kIGlzIG5vdCBuZWdvdGlhdGVkCisgKiBiZXR3ZWVuIHRo ZSB0d28uIEd1ZXN0cyBhcmUgZnJlZSB0byB0cmFuc21pdCBwYWNrZXRzIG9uIGFueSBxdWV1ZQor ICogdGhleSBjaG9vc2UsIHByb3ZpZGVkIGl0IGhhcyBiZWVuIHNldCB1cCBjb3JyZWN0bHkuIEd1 ZXN0cyBtdXN0IGJlCisgKiBwcmVwYXJlZCB0byByZWNlaXZlIHBhY2tldHMgb24gYW55IHF1ZXVl IHRoZXkgaGF2ZSByZXF1ZXN0ZWQgYmUgc2V0IHVwLgorICovCisKKy8qCisgKiAiZmVhdHVyZS1u by1jc3VtLW9mZmxvYWQiIHNob3VsZCBiZSB1c2VkIHRvIHR1cm4gSVB2NCBUQ1AvVURQIGNoZWNr c3VtCisgKiBvZmZsb2FkIG9mZiBvciBvbi4gSWYgaXQgaXMgbWlzc2luZyB0aGVuIHRoZSBmZWF0 dXJlIGlzIGFzc3VtZWQgdG8gYmUgb24uCisgKiAiZmVhdHVyZS1pcHY2LWNzdW0tb2ZmbG9hZCIg c2hvdWxkIGJlIHVzZWQgdG8gdHVybiBJUHY2IFRDUC9VRFAgY2hlY2tzdW0KKyAqIG9mZmxvYWQg b24gb3Igb2ZmLiBJZiBpdCBpcyBtaXNzaW5nIHRoZW4gdGhlIGZlYXR1cmUgaXMgYXNzdW1lZCB0 byBiZSBvZmYuCisgKi8KKworLyoKKyAqICJmZWF0dXJlLWdzby10Y3B2NCIgYW5kICJmZWF0dXJl LWdzby10Y3B2NiIgYWR2ZXJ0aXNlIHRoZSBjYXBhYmlsaXR5IHRvCisgKiBoYW5kbGUgbGFyZ2Ug VENQIHBhY2tldHMgKGluIElQdjQgb3IgSVB2NiBmb3JtIHJlc3BlY3RpdmVseSkuIE5laXRoZXIK KyAqIGZyb250ZW5kcyBub3IgYmFja2VuZHMgYXJlIGFzc3VtZWQgdG8gYmUgY2FwYWJsZSB1bmxl c3MgdGhlIGZsYWdzIGFyZQorICogcHJlc2VudC4KKyAqLworCisvKgorICogImZlYXR1cmUtbXVs dGljYXN0LWNvbnRyb2wiIGFuZCAiZmVhdHVyZS1keW5hbWljLW11bHRpY2FzdC1jb250cm9sIgor ICogYWR2ZXJ0aXNlIHRoZSBjYXBhYmlsaXR5IHRvIGZpbHRlciBldGhlcm5ldCBtdWx0aWNhc3Qg cGFja2V0cyBpbiB0aGUKKyAqIGJhY2tlbmQuIElmIHRoZSBmcm9udGVuZCB3aXNoZXMgdG8gdGFr ZSBhZHZhbnRhZ2Ugb2YgdGhpcyBmZWF0dXJlIHRoZW4KKyAqIGl0IG1heSBzZXQgInJlcXVlc3Qt bXVsdGljYXN0LWNvbnRyb2wiLiBJZiB0aGUgYmFja2VuZCBvbmx5IGFkdmVydGlzZXMKKyAqICJm ZWF0dXJlLW11bHRpY2FzdC1jb250cm9sIiB0aGVuICJyZXF1ZXN0LW11bHRpY2FzdC1jb250cm9s IiBtdXN0IGJlIHNldAorICogYmVmb3JlIHRoZSBmcm9udGVuZCBtb3ZlcyBpbnRvIHRoZSBjb25u ZWN0ZWQgc3RhdGUuIFRoZSBiYWNrZW5kIHdpbGwKKyAqIHNhbXBsZSB0aGUgdmFsdWUgb24gdGhp cyBzdGF0ZSB0cmFuc2l0aW9uIGFuZCBhbnkgc3Vic2VxdWVudCBjaGFuZ2UgaW4KKyAqIHZhbHVl IHdpbGwgaGF2ZSBubyBlZmZlY3QuIEhvd2V2ZXIsIGlmIHRoZSBiYWNrZW5kIGFsc28gYWR2ZXJ0 aXNlcworICogImZlYXR1cmUtZHluYW1pYy1tdWx0aWNhc3QtY29udHJvbCIgdGhlbiAicmVxdWVz dC1tdWx0aWNhc3QtY29udHJvbCIKKyAqIG1heSBiZSBzZXQgYnkgdGhlIGZyb250ZW5kIGF0IGFu eSB0aW1lLiBJbiB0aGlzIGNhc2UsIHRoZSBiYWNrZW5kIHdpbGwKKyAqIHdhdGNoIHRoZSB2YWx1 ZSBhbmQgcmUtc2FtcGxlIG9uIHdhdGNoIGV2ZW50cy4KKyAqCisgKiBJZiB0aGUgc2FtcGxlZCB2 YWx1ZSBvZiAicmVxdWVzdC1tdWx0aWNhc3QtY29udHJvbCIgaXMgc2V0IHRoZW4gdGhlCisgKiBi YWNrZW5kIHRyYW5zbWl0IHNpZGUgc2hvdWxkIG5vIGxvbmdlciBmbG9vZCBtdWx0aWNhc3QgcGFj a2V0cyB0byB0aGUKKyAqIGZyb250ZW5kLCBpdCBzaG91bGQgaW5zdGVhZCBkcm9wIGFueSBtdWx0 aWNhc3QgcGFja2V0IHRoYXQgZG9lcyBub3QKKyAqIG1hdGNoIGluIGEgZmlsdGVyIGxpc3QuCisg KiBUaGUgbGlzdCBpcyBhbWVuZGVkIGJ5IHRoZSBmcm9udGVuZCBieSBzZW5kaW5nIGR1bW15IHRy YW5zbWl0IHJlcXVlc3RzCisgKiBjb250YWluaW5nIFhFTl9ORVRJRl9FWFRSQV9UWVBFX01DQVNU X3tBREQsREVMfSBleHRyYS1pbmZvIGZyYWdtZW50cyBhcworICogc3BlY2lmaWVkIGJlbG93Lgor ICogTm90ZSB0aGF0IHRoZSBmaWx0ZXIgbGlzdCBtYXkgYmUgYW1lbmRlZCBldmVuIGlmIHRoZSBz YW1wbGVkIHZhbHVlIG9mCisgKiAicmVxdWVzdC1tdWx0aWNhc3QtY29udHJvbCIgaXMgbm90IHNl dCwgaG93ZXZlciB0aGUgZmlsdGVyIHNob3VsZCBvbmx5CisgKiBiZSBhcHBsaWVkIGlmIGl0IGlz IHNldC4KKyAqLworCisvKgorICogQ29udHJvbCByaW5nCisgKiA9PT09PT09PT09PT0KKyAqCisg KiBTb21lIGZlYXR1cmVzLCBzdWNoIGFzIGhhc2hpbmcgKGRldGFpbGVkIGJlbG93KSwgcmVxdWly ZSBhCisgKiBzaWduaWZpY2FudCBhbW91bnQgb2Ygb3V0LW9mLWJhbmQgZGF0YSB0byBiZSBwYXNz ZWQgZnJvbSBmcm9udGVuZCB0bworICogYmFja2VuZC4gVXNlIG9mIHhlbnN0b3JlIGlzIG5vdCBz dWl0YWJsZSBmb3IgbGFyZ2UgcXVhbnRpdGllcyBvZiBkYXRhCisgKiBiZWNhdXNlIG9mIHF1b3Rh IGxpbWl0YXRpb25zIGFuZCBzbyBhIGRlZGljYXRlZCAnY29udHJvbCByaW5nJyBpcyB1c2VkLgor ICogVGhlIGFiaWxpdHkgb2YgdGhlIGJhY2tlbmQgdG8gdXNlIGEgY29udHJvbCByaW5nIGlzIGFk dmVydGlzZWQgYnkKKyAqIHNldHRpbmc6CisgKgorICogL2xvY2FsL2RvbWFpbi9YL2JhY2tlbmQv PGRvbWlkPi88dmlmPi9mZWF0dXJlLWN0cmwtcmluZyA9ICIxIgorICoKKyAqIFRoZSBmcm9udGVu ZCBwcm92aWRlcyBhIGNvbnRyb2wgcmluZyB0byB0aGUgYmFja2VuZCBieSBzZXR0aW5nOgorICoK KyAqIC9sb2NhbC9kb21haW4vPGRvbWlkPi9kZXZpY2UvdmlmLzx2aWY+L2N0cmwtcmluZy1yZWYg PSA8Z3JlZj4KKyAqIC9sb2NhbC9kb21haW4vPGRvbWlkPi9kZXZpY2UvdmlmLzx2aWY+L2V2ZW50 LWNoYW5uZWwtY3RybCA9IDxwb3J0PgorICoKKyAqIHdoZXJlIDxncmVmPiBpcyB0aGUgZ3JhbnQg cmVmZXJlbmNlIG9mIHRoZSBzaGFyZWQgcGFnZSB1c2VkIHRvCisgKiBpbXBsZW1lbnQgdGhlIGNv bnRyb2wgcmluZyBhbmQgPHBvcnQ+IGlzIGFuIGV2ZW50IGNoYW5uZWwgdG8gYmUgdXNlZAorICog YXMgYSBtYWlsYm94IGludGVycnVwdC4gVGhlc2Uga2V5cyBtdXN0IGJlIHNldCBiZWZvcmUgdGhl IGZyb250ZW5kCisgKiBtb3ZlcyBpbnRvIHRoZSBjb25uZWN0ZWQgc3RhdGUuCisgKgorICogVGhl IGNvbnRyb2wgcmluZyB1c2VzIGEgZml4ZWQgcmVxdWVzdC9yZXNwb25zZSBtZXNzYWdlIHNpemUg YW5kIGlzCisgKiBiYWxhbmNlZCAoaS5lLiBvbmUgcmVxdWVzdCB0byBvbmUgcmVzcG9uc2UpLCBz byBvcGVyYXRpb25hbGx5IGl0IGlzIG11Y2gKKyAqIHRoZSBzYW1lIGFzIGEgdHJhbnNtaXQgb3Ig cmVjZWl2ZSByaW5nLgorICogTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRoYXQg cmVzcG9uc2VzIGFyZSBpc3N1ZWQgaW4gdGhlIHNhbWUKKyAqIG9yZGVyIGFzIHJlcXVlc3RzLgor ICovCisKKy8qCisgKiBIYXNoIHR5cGVzCisgKiA9PT09PT09PT09CisgKgorICogRm9yIHRoZSBw dXJwb3NlcyBvZiB0aGUgZGVmaW5pdGlvbnMgYmVsb3csICdQYWNrZXRbXScgaXMgYW4gYXJyYXkg b2YKKyAqIG9jdGV0cyBjb250YWluaW5nIGFuIElQIHBhY2tldCB3aXRob3V0IG9wdGlvbnMsICdB cnJheVtYLi5ZXScgbWVhbnMgYQorICogc3ViLWFycmF5IG9mICdBcnJheScgY29udGFpbmluZyBi eXRlcyBYIHRocnUgWSBpbmNsdXNpdmUsIGFuZCAnKycgaXMKKyAqIHVzZWQgdG8gaW5kaWNhdGUg Y29uY2F0ZW5hdGlvbiBvZiBhcnJheXMuCisgKi8KKworLyoKKyAqIEEgaGFzaCBjYWxjdWxhdGVk IG92ZXIgYW4gSVAgdmVyc2lvbiA0IGhlYWRlciBhcyBmb2xsb3dzOgorICoKKyAqIEJ1ZmZlclsw Li44XSA9IFBhY2tldFsxMi4uMTVdIChzb3VyY2UgYWRkcmVzcykgKworICogICAgICAgICAgICAg ICAgUGFja2V0WzE2Li4xOV0gKGRlc3RpbmF0aW9uIGFkZHJlc3MpCisgKgorICogUmVzdWx0ID0g SGFzaChCdWZmZXIsIDgpCisgKi8KKyNkZWZpbmUgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9J UFY0IDAKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjQgXAorICAgICgxIDw8 IF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNCkKKworLyoKKyAqIEEgaGFzaCBjYWxjdWxh dGVkIG92ZXIgYW4gSVAgdmVyc2lvbiA0IGhlYWRlciBhbmQgVENQIGhlYWRlciBhcworICogZm9s bG93czoKKyAqCisgKiBCdWZmZXJbMC4uMTJdID0gUGFja2V0WzEyLi4xNV0gKHNvdXJjZSBhZGRy ZXNzKSArCisgKiAgICAgICAgICAgICAgICAgUGFja2V0WzE2Li4xOV0gKGRlc3RpbmF0aW9uIGFk ZHJlc3MpICsKKyAqICAgICAgICAgICAgICAgICBQYWNrZXRbMjAuLjIxXSAoc291cmNlIHBvcnQp ICsKKyAqICAgICAgICAgICAgICAgICBQYWNrZXRbMjIuLjIzXSAoZGVzdGluYXRpb24gcG9ydCkK KyAqCisgKiBSZXN1bHQgPSBIYXNoKEJ1ZmZlciwgMTIpCisgKi8KKyNkZWZpbmUgX1hFTl9ORVRJ Rl9DVFJMX0hBU0hfVFlQRV9JUFY0X1RDUCAxCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hf VFlQRV9JUFY0X1RDUCBcCisgICAgKDEgPDwgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY0 X1RDUCkKKworLyoKKyAqIEEgaGFzaCBjYWxjdWxhdGVkIG92ZXIgYW4gSVAgdmVyc2lvbiA2IGhl YWRlciBhcyBmb2xsb3dzOgorICoKKyAqIEJ1ZmZlclswLi4zMl0gPSBQYWNrZXRbOC4uMjNdICAo c291cmNlIGFkZHJlc3MgKSArCisgKiAgICAgICAgICAgICAgICAgUGFja2V0WzI0Li4zOV0gKGRl c3RpbmF0aW9uIGFkZHJlc3MpCisgKgorICogUmVzdWx0ID0gSGFzaChCdWZmZXIsIDMyKQorICov CisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNiAyCisjZGVmaW5lIFhFTl9O RVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY2IFwKKyAgICAoMSA8PCBfWEVOX05FVElGX0NUUkxfSEFT SF9UWVBFX0lQVjYpCisKKy8qCisgKiBBIGhhc2ggY2FsY3VsYXRlZCBvdmVyIGFuIElQIHZlcnNp b24gNiBoZWFkZXIgYW5kIFRDUCBoZWFkZXIgYXMKKyAqIGZvbGxvd3M6CisgKgorICogQnVmZmVy WzAuLjM2XSA9IFBhY2tldFs4Li4yM10gIChzb3VyY2UgYWRkcmVzcykgKworICogICAgICAgICAg ICAgICAgIFBhY2tldFsyNC4uMzldIChkZXN0aW5hdGlvbiBhZGRyZXNzKSArCisgKiAgICAgICAg ICAgICAgICAgUGFja2V0WzQwLi40MV0gKHNvdXJjZSBwb3J0KSArCisgKiAgICAgICAgICAgICAg ICAgUGFja2V0WzQyLi40M10gKGRlc3RpbmF0aW9uIHBvcnQpCisgKgorICogUmVzdWx0ID0gSGFz aChCdWZmZXIsIDM2KQorICovCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBW Nl9UQ1AgMworI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1AgXAorICAg ICgxIDw8IF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1ApCisKKy8qCisgKiBIYXNo IGFsZ29yaXRobXMKKyAqID09PT09PT09PT09PT09PQorICovCisKKyNkZWZpbmUgWEVOX05FVElG X0NUUkxfSEFTSF9BTEdPUklUSE1fTk9ORSAwCisKKy8qCisgKiBUb2VwbGl0eiBoYXNoOgorICov CisKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFTSF9BTEdPUklUSE1fVE9FUExJVFogMQorCisv KgorICogQ29udHJvbCByZXF1ZXN0cyAoc3RydWN0IHhlbl9uZXRpZl9jdHJsX3JlcXVlc3QpCisg KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisg KiBBbGwgcmVxdWVzdHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKyAqCisgKiAgICAwICAg ICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgICBpZCAg ICAgfCAgIHR5cGUgICAgfCAgICAgICAgIGRhdGFbMF0gICAgICAgfAorICogKy0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgICAgICAgIGRhdGFb MV0gICAgICAgfCAgICAgICAgIGRhdGFbMl0gICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGlkOiB0aGUgcmVxdWVzdCBp ZGVudGlmaWVyLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiB0eXBlOiB0aGUgdHlwZSBvZiByZXF1 ZXN0IChzZWUgYmVsb3cpCisgKiBkYXRhW106IGFueSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUg cmVxdWVzdCAoZGV0ZXJtaW5lZCBieSB0eXBlKQorICovCisKK3N0cnVjdCB4ZW5fbmV0aWZfY3Ry bF9yZXF1ZXN0IHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50MTZfdCB0eXBlOworCisjZGVm aW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfSU5WQUxJRCAgICAgICAgICAgICAgIDAKKyNkZWZpbmUg WEVOX05FVElGX0NUUkxfVFlQRV9HRVRfSEFTSF9GTEFHUyAgICAgICAgMQorI2RlZmluZSBYRU5f TkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0ZMQUdTICAgICAgICAyCisjZGVmaW5lIFhFTl9ORVRJ Rl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZICAgICAgICAgIDMKKyNkZWZpbmUgWEVOX05FVElGX0NU UkxfVFlQRV9HRVRfSEFTSF9NQVBQSU5HX1NJWkUgNAorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9U WVBFX1NFVF9IQVNIX01BUFBJTkdfU0laRSA1CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVf U0VUX0hBU0hfTUFQUElORyAgICAgIDYKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9TRVRf SEFTSF9BTEdPUklUSE0gICAgNworI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9HUkVG X01BUFBJTkdfU0laRSA4CisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfQUREX0dSRUZfTUFQ UElORyAgICAgIDkKKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfVFlQRV9ERUxfR1JFRl9NQVBQSU5H ICAgICAxMAorCisgICAgdWludDMyX3QgZGF0YVszXTsKK307CisKKy8qCisgKiBDb250cm9sIHJl c3BvbnNlcyAoc3RydWN0IHhlbl9uZXRpZl9jdHJsX3Jlc3BvbnNlKQorICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiBBbGwgcmVzcG9u c2VzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgKgorICogICAgMCAgICAgMSAgICAgMiAg ICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgICAgaWQgICAgIHwgICB0eXBl ICAgIHwgICAgICAgICBzdGF0dXMgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHwgICAgICAgICBkYXRhICAgICAgICAgIHwK KyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiBpZDogdGhlIGNvcnJlc3BvbmRp bmcgcmVxdWVzdCBpZGVudGlmaWVyCisgKiB0eXBlOiB0aGUgdHlwZSBvZiB0aGUgY29ycmVzcG9u ZGluZyByZXF1ZXN0CisgKiBzdGF0dXM6IHRoZSBzdGF0dXMgb2YgcmVxdWVzdCBwcm9jZXNzaW5n CisgKiBkYXRhOiBhbnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlc3BvbnNlIChkZXRlcm1p bmVkIGJ5IHR5cGUgYW5kCisgKiAgICAgICBzdGF0dXMpCisgKi8KKworc3RydWN0IHhlbl9uZXRp Zl9jdHJsX3Jlc3BvbnNlIHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50MTZfdCB0eXBlOwor ICAgIHVpbnQzMl90IHN0YXR1czsKKworI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VD Q0VTUyAgICAgICAgICAgMAorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBP UlRFRCAgICAgMQorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVU RVIgMgorI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XICAgMwor CisgICAgdWludDMyX3QgZGF0YTsKK307CisKKy8qCisgKiBTdGF0aWMgR3JhbnRzIChzdHJ1Y3Qg eGVuX25ldGlmX2dyZWYpCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisgKgorICogQSBmcm9udGVuZCBtYXkgcHJvdmlkZSBhIGZpeGVkIHNldCBvZiBncmFudCByZWZl cmVuY2VzIHRvIGJlIG1hcHBlZCBvbgorICogdGhlIGJhY2tlbmQuIFRoZSBtZXNzYWdlIG9mIHR5 cGUgWEVOX05FVElGX0NUUkxfVFlQRV9BRERfR1JFRl9NQVBQSU5HCisgKiBwcmlvciBpdHMgdXNh Z2UgaW4gdGhlIGNvbW1hbmQgcmluZyBhbGxvd3MgZm9yIGNyZWF0aW9uIG9mIHRoZXNlIG1hcHBp bmdzLgorICogVGhlIGJhY2tlbmQgd2lsbCBtYWludGFpbiBhIGZpeGVkIGFtb3VudCBvZiB0aGVz ZSBtYXBwaW5ncy4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9HUkVGX01BUFBJTkdf U0laRSBsZXRzIGEgZnJvbnRlbmQgcXVlcnkgaG93IG1hbnkKKyAqIG9mIHRoZXNlIG1hcHBpbmdz IGNhbiBiZSBrZXB0LgorICoKKyAqIEVhY2ggZW50cnkgaW4gdGhlIFhFTl9ORVRJRl9DVFJMX1RZ UEVfe0FERCxERUx9X0dSRUZfTUFQUElORyBpbnB1dCB0YWJsZSBoYXMKKyAqIHRoZSBmb2xsb3dp bmcgZm9ybWF0OgorICoKKyAqICAgIDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAg IDYgICAgIDcgIG9jdGV0CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rCisgKiB8IGdyYW50IHJlZiAgICAgICAgICAgICB8ICBmbGFncyAgICB8ICBz dGF0dXMgICB8CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rCisgKgorICogZ3JhbnQgcmVmOiBncmFudCByZWZlcmVuY2UgKElOKQorICogZmxhZ3M6 IGZsYWdzIGRlc2NyaWJpbmcgdGhlIGNvbnRyb2wgb3BlcmF0aW9uIChJTikKKyAqIHN0YXR1czog WEVOX05FVElGX0NUUkxfU1RBVFVTXyogKE9VVCkKKyAqCisgKiAnc3RhdHVzJyBpcyBhbiBvdXRw dXQgcGFyYW1ldGVyIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgdG8gYmUgc2V0IHRvIHplcm8KKyAq IHByaW9yIHRvIGl0cyB1c2FnZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIG1lc3NhZ2Vz LgorICovCisKK3N0cnVjdCB4ZW5fbmV0aWZfZ3JlZiB7CisgICAgICAgZ3JhbnRfcmVmX3QgcmVm OworICAgICAgIHVpbnQxNl90IGZsYWdzOworCisjZGVmaW5lIF9YRU5fTkVUSUZfQ1RSTEZfR1JF Rl9yZWFkb25seSAgICAwCisjZGVmaW5lIFhFTl9ORVRJRl9DVFJMRl9HUkVGX3JlYWRvbmx5ICAg ICgxVTw8X1hFTl9ORVRJRl9DVFJMRl9HUkVGX3JlYWRvbmx5KQorCisgICAgICAgdWludDE2X3Qg c3RhdHVzOworfTsKKworLyoKKyAqIENvbnRyb2wgbWVzc2FnZXMKKyAqID09PT09PT09PT09PT09 PT0KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0FMR09SSVRITQorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQg YnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUgZGVzaXJlZCBoYXNoIGFsZ29yaXRobS4KKyAqCisg KiBSZXF1ZXN0OgorICoKKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFT SF9BTEdPUklUSE0KKyAqICBkYXRhWzBdID0gYSBYRU5fTkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRI TV8qIHZhbHVlCisgKiAgZGF0YVsxXSA9IDAKKyAqICBkYXRhWzJdID0gMAorICoKKyAqIFJlc3Bv bnNlOgorICoKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRF RCAgICAgLSBPcGVyYXRpb24gbm90CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NU UkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gVGhlIGFsZ29yaXRobSBpcyBub3QKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0 ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAg LSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICoKKyAqIE5PVEU6IFNldHRpbmcgZGF0YVswXSB0byBY RU5fTkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRITV9OT05FIGRpc2FibGVzCisgKiAgICAgICBoYXNo aW5nIGFuZCB0aGUgYmFja2VuZCBpcyBmcmVlIHRvIGNob29zZSBob3cgaXQgc3RlZXJzIHBhY2tl dHMKKyAqICAgICAgIHRvIHF1ZXVlcyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyKS4K KyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX0ZMQUdTCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9u dGVuZCB0byBxdWVyeSB0aGUgdHlwZXMgb2YgaGFzaCBzdXBwb3J0ZWQgYnkKKyAqIHRoZSBiYWNr ZW5kLgorICoKKyAqIFJlcXVlc3Q6CisgKgorICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9U WVBFX0dFVF9IQVNIX0ZMQUdTCisgKiAgZGF0YVswXSA9IDAKKyAqICBkYXRhWzFdID0gMAorICog IGRhdGFbMl0gPSAwCisgKgorICogUmVzcG9uc2U6CisgKgorICogIHN0YXR1cyA9IFhFTl9ORVRJ Rl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEIC0gT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQKKyAq ICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAtIE9wZXJhdGlv biBzdWNjZXNzZnVsCisgKiAgZGF0YSAgID0gc3VwcG9ydGVkIGhhc2ggdHlwZXMgKGlmIG9wZXJh dGlvbiB3YXMgc3VjY2Vzc2Z1bCkKKyAqCisgKiBOT1RFOiBBIHZhbGlkIGhhc2ggYWxnb3JpdGht IG11c3QgYmUgc2VsZWN0ZWQgYmVmb3JlIHRoaXMgb3BlcmF0aW9uIGNhbgorICogICAgICAgc3Vj Y2VlZC4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0ZMQUdTCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBpcyBzZW50IGJ5IHRo ZSBmcm9udGVuZCB0byBzZXQgdGhlIHR5cGVzIG9mIGhhc2ggdGhhdCB0aGUgYmFja2VuZAorICog c2hvdWxkIGNhbGN1bGF0ZS4gKFNlZSBhYm92ZSBmb3IgaGFzaCB0eXBlIGRlZmluaXRpb25zKS4K KyAqIE5vdGUgdGhhdCB0aGUgJ21heGltYWwnIHR5cGUgb2YgaGFzaCBzaG91bGQgYWx3YXlzIGJl IGNob3Nlbi4gRm9yCisgKiBleGFtcGxlLCBpZiB0aGUgZnJvbnRlbmQgc2V0cyBib3RoIElQVjQg YW5kIElQVjRfVENQIGhhc2ggdHlwZXMgdGhlbgorICogdGhlIGxhdHRlciBoYXNoIHR5cGUgc2hv dWxkIGJlIGNhbGN1bGF0ZWQgZm9yIGFueSBUQ1AgcGFja2V0IGFuZCB0aGUKKyAqIGZvcm1lciBv bmx5IGNhbGN1bGF0ZWQgZm9yIG5vbi1UQ1AgcGFja2V0cy4KKyAqCisgKiBSZXF1ZXN0OgorICoK KyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9GTEFHUworICogIGRh dGFbMF0gPSBiaXR3aXNlIE9SIG9mIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV8qIHZhbHVlcwor ICogIGRhdGFbMV0gPSAwCisgKiAgZGF0YVsyXSA9IDAKKyAqCisgKiBSZXNwb25zZToKKyAqCisg KiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3Bl cmF0aW9uIG5vdAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19J TlZBTElEX1BBUkFNRVRFUiAtIE9uZSBvciBtb3JlIGZsYWcKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBpbnZhbGlkIG9yCisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z dXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAg ICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICogIGRhdGEgICA9IDAKKyAqCisgKiBOT1RF OiBBIHZhbGlkIGhhc2ggYWxnb3JpdGhtIG11c3QgYmUgc2VsZWN0ZWQgYmVmb3JlIHRoaXMgb3Bl cmF0aW9uIGNhbgorICogICAgICAgc3VjY2VlZC4KKyAqICAgICAgIEFsc28sIHNldHRpbmcgZGF0 YVswXSB0byB6ZXJvIGRpc2FibGVzIGhhc2hpbmcgYW5kIHRoZSBiYWNrZW5kCisgKiAgICAgICBp cyBmcmVlIHRvIGNob29zZSBob3cgaXQgc3RlZXJzIHBhY2tldHMgdG8gcXVldWVzLgorICoKKyAq IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0 IHRoZSBrZXkgb2YgdGhlIGhhc2ggaWYgdGhlIGFsZ29yaXRobQorICogcmVxdWlyZXMgaXQuIChT ZWUgaGFzaCBhbGdvcml0aG1zIGFib3ZlKS4KKyAqCisgKiBSZXF1ZXN0OgorICoKKyAqICB0eXBl ICAgID0gWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9LRVkKKyAqICBkYXRhWzBdID0gZ3Jh bnQgcmVmZXJlbmNlIG9mIHBhZ2UgY29udGFpbmluZyB0aGUga2V5IChhc3N1bWVkIHRvCisgKiAg ICAgICAgICAgIHN0YXJ0IGF0IGJlZ2lubmluZyBvZiBncmFudCkKKyAqICBkYXRhWzFdID0gc2l6 ZSBvZiBrZXkgaW4gb2N0ZXRzCisgKiAgZGF0YVsyXSA9IDAKKyAqCisgKiBSZXNwb25zZToKKyAq CisgKiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0g T3BlcmF0aW9uIG5vdAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN1cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19JTlZBTElEX1BBUkFNRVRFUiAtIEtleSBzaXplIGlzIGludmFsaWQKKyAqICAgICAgICAgICBY RU5fTkVUSUZfQ1RSTF9TVEFUVVNfQlVGRkVSX09WRVJGTE9XICAgLSBLZXkgc2l6ZSBpcyBsYXJn ZXIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGFuIHRoZSBiYWNrZW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3VwcG9ydHMKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9T VEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICogIGRhdGEg ICA9IDAKKyAqCisgKiBOT1RFOiBBbnkga2V5IG9jdGV0cyBub3Qgc3BlY2lmaWVkIGFyZSBhc3N1 bWVkIHRvIGJlIHplcm8gKHRoZSBrZXkKKyAqICAgICAgIGlzIGFzc3VtZWQgdG8gYmUgZW1wdHkg YnkgZGVmYXVsdCkgYW5kIHNwZWNpZnlpbmcgYSBuZXcga2V5CisgKiAgICAgICBpbnZhbGlkYXRl cyBhbnkgcHJldmlvdXMga2V5LCBoZW5jZSBzcGVjaWZ5aW5nIGEga2V5IHNpemUgb2YKKyAqICAg ICAgIHplcm8gd2lsbCBjbGVhciB0aGUga2V5ICh3aGljaCBlbnN1cmVzIHRoYXQgdGhlIGNhbGN1 bGF0ZWQgaGFzaAorICogICAgICAgd2lsbCBhbHdheXMgYmUgemVybykuCisgKiAgICAgICBUaGUg bWF4aW11bSBzaXplIG9mIGtleSBpcyBhbGdvcml0aG0gYW5kIGJhY2tlbmQgc3BlY2lmaWMsIGJ1 dAorICogICAgICAgaXMgYWxzbyBsaW1pdGVkIGJ5IHRoZSBzaW5nbGUgZ3JhbnQgcmVmZXJlbmNl LgorICogICAgICAgVGhlIGdyYW50IHJlZmVyZW5jZSBtYXkgYmUgcmVhZC1vbmx5IGFuZCBtdXN0 IHJlbWFpbiB2YWxpZCB1bnRpbAorICogICAgICAgdGhlIHJlc3BvbnNlIGhhcyBiZWVuIHByb2Nl c3NlZC4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX01BUFBJTkdfU0laRQor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlz IGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHF1ZXJ5IHRoZSBtYXhpbXVtIHNpemUgb2YgbWFw cGluZworICogdGFibGUgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kLiBUaGUgc2l6ZSBpcyBzcGVj aWZpZWQgaW4gdGVybXMgb2YKKyAqIHRhYmxlIGVudHJpZXMuCisgKgorICogUmVxdWVzdDoKKyAq CisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfTUFQUElOR19TSVpF CisgKiAgZGF0YVswXSA9IDAKKyAqICBkYXRhWzFdID0gMAorICogIGRhdGFbMl0gPSAwCisgKgor ICogUmVzcG9uc2U6CisgKgorICogIHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1Rf U1VQUE9SVEVEIC0gT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVU SUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsCisgKiAg ZGF0YSAgID0gbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBhbGxvd2VkIGluIHRoZSBtYXBwaW5n IHRhYmxlCisgKiAgICAgICAgICAgKGlmIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCkgb3IgemVy byBpZiBhIG1hcHBpbmcgdGFibGUgaXMKKyAqICAgICAgICAgICBub3Qgc3VwcG9ydGVkIChpLmUu IGhhc2ggbWFwcGluZyBpcyBkb25lIG9ubHkgYnkgbW9kdWxhcgorICogICAgICAgICAgIGFyaXRo bWV0aWMpLgorICoKKyAqIFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElOR19TSVpF CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBp cyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBzZXQgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBtYXBw aW5nCisgKiB0YWJsZSB0byBiZSB1c2VkIGJ5IHRoZSBiYWNrZW5kLiBUaGUgc2l6ZSBpcyBzcGVj aWZpZWQgaW4gdGVybXMgb2YKKyAqIHRhYmxlIGVudHJpZXMuCisgKiBBbnkgcHJldmlvdXMgdGFi bGUgaXMgaW52YWxpZGF0ZWQgYnkgdGhpcyBtZXNzYWdlIGFuZCBhbnkgbmV3IHRhYmxlCisgKiBp cyBhc3N1bWVkIHRvIGJlIHplcm8gZmlsbGVkLgorICoKKyAqIFJlcXVlc3Q6CisgKgorICogIHR5 cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX01BUFBJTkdfU0laRQorICogIGRh dGFbMF0gPSBudW1iZXIgb2YgZW50cmllcyBpbiBtYXBwaW5nIHRhYmxlCisgKiAgZGF0YVsxXSA9 IDAKKyAqICBkYXRhWzJdID0gMAorICoKKyAqIFJlc3BvbnNlOgorICoKKyAqICBzdGF0dXMgPSBY RU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24gbm90Cisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw cG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1F VEVSIC0gVGFibGUgc2l6ZSBpcyBpbnZhbGlkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxf U1RBVFVTX1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqICBkYXRh ICAgPSAwCisgKgorICogTk9URTogU2V0dGluZyBkYXRhWzBdIHRvIDAgbWVhbnMgdGhhdCBoYXNo IG1hcHBpbmcgc2hvdWxkIGJlIGRvbmUKKyAqICAgICAgIHVzaW5nIG1vZHVsYXIgYXJpdGhtZXRp Yy4KKyAqCisgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX01BUFBJTkcKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0 aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSBjb250ZW50IG9mIHRoZSB0YWJsZSBtYXBwaW5nCisgKiBo YXNoIHZhbHVlIHRvIHF1ZXVlIG51bWJlci4gVGhlIGJhY2tlbmQgc2hvdWxkIGNhbGN1bGF0ZSB0 aGUgaGFzaCBmcm9tCisgKiB0aGUgcGFja2V0IGhlYWRlciwgdXNlIGl0IGFzIGFuIGluZGV4IGlu dG8gdGhlIHRhYmxlIChtb2R1bG8gdGhlIHNpemUKKyAqIG9mIHRoZSB0YWJsZSkgYW5kIHRoZW4g c3RlZXIgdGhlIHBhY2tldCB0byB0aGUgcXVldWUgbnVtYmVyIGZvdW5kIGF0CisgKiB0aGF0IGlu ZGV4LgorICoKKyAqIFJlcXVlc3Q6CisgKgorICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9U WVBFX1NFVF9IQVNIX01BUFBJTkcKKyAqICBkYXRhWzBdID0gZ3JhbnQgcmVmZXJlbmNlIG9mIHBh Z2UgY29udGFpbmluZyB0aGUgbWFwcGluZyAoc3ViLSl0YWJsZQorICogICAgICAgICAgICAoYXNz dW1lZCB0byBzdGFydCBhdCBiZWdpbm5pbmcgb2YgZ3JhbnQpCisgKiAgZGF0YVsxXSA9IHNpemUg b2YgKHN1Yi0pdGFibGUgaW4gZW50cmllcworICogIGRhdGFbMl0gPSBvZmZzZXQsIGluIGVudHJp ZXMsIG9mIHN1Yi10YWJsZSB3aXRoaW4gb3ZlcmFsbCB0YWJsZQorICoKKyAqIFJlc3BvbnNlOgor ICoKKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAg LSBPcGVyYXRpb24gbm90CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3VwcG9ydGVkCisgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RB VFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gVGFibGUgc2l6ZSBvciBjb250ZW50CisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW52YWxpZAor ICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19CVUZGRVJfT1ZFUkZMT1cgICAtIFRh YmxlIHNpemUgaXMgbGFyZ2VyCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgYmFja2VuZAorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzCisgKiAgICAgICAgICAg WEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nl c3NmdWwKKyAqICBkYXRhICAgPSAwCisgKgorICogTk9URTogVGhlIG92ZXJhbGwgdGFibGUgaGFz IHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICoKKyAqICAgICAgICAgIDAgICAgIDEgICAgIDIgICAg IDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgIG9jdGV0CisgKiAgICAgICArLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiAgICAgICB8ICAgICAgIG1h cHBpbmdbMF0gICAgICB8ICAgICAgIG1hcHBpbmdbMV0gICAgICB8CisgKiAgICAgICArLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgKiAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAg ICAgICArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisg KiAgICAgICB8ICAgICAgbWFwcGluZ1tOLTJdICAgICB8ICAgICAgbWFwcGluZ1tOLTFdICAgICB8 CisgKiAgICAgICArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0rCisgKgorICogICAgICAgd2hlcmUgTiBpcyBzcGVjaWZpZWQgYnkgYSBYRU5fTkVUSUZfQ1RS TF9UWVBFX1NFVF9IQVNIX01BUFBJTkdfU0laRQorICogICAgICAgbWVzc2FnZSBhbmQgZWFjaCAg bWFwcGluZyBtdXN0IHNwZWNpZmllcyBhIHF1ZXVlIGJldHdlZW4gMCBhbmQKKyAqICAgICAgICJt dWx0aS1xdWV1ZS1udW0tcXVldWVzIiAoc2VlIGFib3ZlKS4KKyAqICAgICAgIFRoZSBiYWNrZW5k IG1heSBzdXBwb3J0IGEgbWFwcGluZyB0YWJsZSBsYXJnZXIgdGhhbiBjYW4gYmUKKyAqICAgICAg IG1hcHBlZCBieSBhIHNpbmdsZSBncmFudCByZWZlcmVuY2UuIFRodXMgc3ViLXRhYmxlcyB3aXRo aW4gYQorICogICAgICAgbGFyZ2VyIHRhYmxlIGNhbiBiZSBpbmRpdmlkdWFsbHkgc2V0IGJ5IHNl bmRpbmcgbXVsdGlwbGUgbWVzc2FnZXMKKyAqICAgICAgIHdpdGggZGlmZmVyaW5nIG9mZnNldCB2 YWx1ZXMuIFNwZWNpZnlpbmcgYSBuZXcgc3ViLXRhYmxlIGRvZXMgbm90CisgKiAgICAgICBpbnZh bGlkYXRlIGFueSB0YWJsZSBkYXRhIG91dHNpZGUgdGhhdCByYW5nZS4KKyAqICAgICAgIFRoZSBn cmFudCByZWZlcmVuY2UgbWF5IGJlIHJlYWQtb25seSBhbmQgbXVzdCByZW1haW4gdmFsaWQgdW50 aWwKKyAqICAgICAgIHRoZSByZXNwb25zZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisgKgorICogWEVO X05FVElGX0NUUkxfVFlQRV9HRVRfR1JFRl9NQVBQSU5HX1NJWkUKKyAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhpcyBpcyBzZW50IGJ5IHRoZSBm cm9udGVuZCB0byBmZXRjaCB0aGUgbnVtYmVyIG9mIGdyZWZzIHRoYXQgY2FuIGJlIGtlcHQKKyAq IG1hcHBlZCBpbiB0aGUgYmFja2VuZC4KKyAqCisgKiBSZXF1ZXN0OgorICoKKyAqICB0eXBlICAg ID0gWEVOX05FVElGX0NUUkxfVFlQRV9HRVRfR1JFRl9NQVBQSU5HX1NJWkUKKyAqICBkYXRhWzBd ID0gcXVldWUgaW5kZXggKGFzc3VtZWQgMCBmb3Igc2luZ2xlIHF1ZXVlKQorICogIGRhdGFbMV0g PSAwCisgKiAgZGF0YVsyXSA9IDAKKyAqCisgKiBSZXNwb25zZToKKyAqCisgKiAgc3RhdHVzID0g WEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdAor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1 cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFN RVRFUiAtIFRoZSBxdWV1ZSBpbmRleCBpcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBvZiByYW5nZQorICogICAgICAgICAgIFhFTl9O RVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVs CisgKiAgZGF0YSAgID0gbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBhbGxvd2VkIGluIHRoZSBn cmVmIG1hcHBpbmcgdGFibGUKKyAqICAgICAgICAgICAoaWYgb3BlcmF0aW9uIHdhcyBzdWNjZXNz ZnVsKSBvciB6ZXJvIGlmIGl0IGlzIG5vdCBzdXBwb3J0ZWQuCisgKgorICogWEVOX05FVElGX0NU UkxfVFlQRV9BRERfR1JFRl9NQVBQSU5HCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIGZvciBiYWNrZW5k IHRvIG1hcCBhIGxpc3Qgb2YgZ3JhbnQKKyAqIHJlZmVyZW5jZXMuCisgKgorICogUmVxdWVzdDoK KyAqCisgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfQUREX0dSRUZfTUFQUElORwor ICogIGRhdGFbMF0gPSBxdWV1ZSBpbmRleAorICogIGRhdGFbMV0gPSBncmFudCByZWZlcmVuY2Ug b2YgcGFnZSBjb250YWluaW5nIHRoZSBtYXBwaW5nIGxpc3QKKyAqICAgICAgICAgICAgKHIvdyBh bmQgYXNzdW1lZCB0byBzdGFydCBhdCBiZWdpbm5pbmcgb2YgcGFnZSkKKyAqICBkYXRhWzJdID0g c2l6ZSBvZiBsaXN0IGluIGVudHJpZXMKKyAqCisgKiBSZXNwb25zZToKKyAqCisgKiAgc3RhdHVz ID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5v dAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1cHBvcnRlZAorICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BB UkFNRVRFUiAtIE9wZXJhdGlvbiBmYWlsZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9T VEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1bAorICoKKyAqIE5P VEU6IEVhY2ggZW50cnkgaW4gdGhlIGlucHV0IHRhYmxlIGhhcyB0aGUgZm9ybWF0IG91dGxpbmVk CisgKiAgICAgICBpbiBzdHJ1Y3QgeGVuX25ldGlmX2dyZWYuCisgKiAgICAgICBDb250cmFyeSB0 byBYRU5fTkVUSUZfQ1RSTF9UWVBFX0RFTF9HUkVGX01BUFBJTkcsIHRoZSBzdHJ1Y3QKKyAqICAg ICAgIHhlbl9uZXRpZl9ncmVmICdzdGF0dXMnIGZpZWxkIGlzIG5vdCB1c2VkIGFuZCB0aGVyZWZv cmUgdGhlIHJlc3BvbnNlCisgKiAgICAgICAnc3RhdHVzJyBkZXRlcm1pbmVzIHRoZSBzdWNjZXNz IG9mIHRoaXMgb3BlcmF0aW9uLiBJbiBjYXNlIG9mCisgKiAgICAgICBmYWlsdXJlIG5vbmUgb2Yg Z3JhbnRzIG1hcHBpbmdzIGdldCBhZGRlZCBpbiB0aGUgYmFja2VuZC4KKyAqCisgKiBYRU5fTkVU SUZfQ1RSTF9UWVBFX0RFTF9HUkVGX01BUFBJTkcKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgZm9yIGJh Y2tlbmQgdG8gdW5tYXAgYSBsaXN0IG9mIGdyYW50CisgKiByZWZlcmVuY2VzLgorICoKKyAqIFJl cXVlc3Q6CisgKgorICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0RFTF9HUkVGX01B UFBJTkcKKyAqICBkYXRhWzBdID0gcXVldWUgaW5kZXgKKyAqICBkYXRhWzFdID0gZ3JhbnQgcmVm ZXJlbmNlIG9mIHBhZ2UgY29udGFpbmluZyB0aGUgbWFwcGluZyBsaXN0CisgKiAgICAgICAgICAg IChyL3cgYW5kIGFzc3VtZWQgdG8gc3RhcnQgYXQgYmVnaW5uaW5nIG9mIHBhZ2UpCisgKiAgZGF0 YVsyXSA9IHNpemUgb2YgbGlzdCBpbiBlbnRyaWVzCisgKgorICogUmVzcG9uc2U6CisgKgorICog IHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJh dGlvbiBub3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdXBwb3J0ZWQKKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5W QUxJRF9QQVJBTUVURVIgLSBPcGVyYXRpb24gZmFpbGVkCisgKiAgICAgICAgICAgWEVOX05FVElG X0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAq ICBkYXRhICAgPSBudW1iZXIgb2YgZW50cmllcyB0aGF0IHdlcmUgdW5tYXBwZWQKKyAqCisgKiBO T1RFOiBFYWNoIGVudHJ5IGluIHRoZSBpbnB1dCB0YWJsZSBoYXMgdGhlIGZvcm1hdCBvdXRsaW5l ZCBpbiBzdHJ1Y3QKKyAqICAgICAgIHhlbl9uZXRpZl9ncmVmLgorICogICAgICAgVGhlIHN0cnVj dCB4ZW5fbmV0aWZfZ3JlZiAnc3RhdHVzJyBmaWVsZCBkZXRlcm1pbmVzIGlmIHRoZSBlbnRyeQor ICogICAgICAgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgorICogICAgICAgVGhlIGVudHJpZXMg dXNlZCBhcmUgb25seSB0aGUgb25lcyByZXByZXNlbnRpbmcgZ3JhbnQgcmVmZXJlbmNlcyB0aGF0 CisgKiAgICAgICB3ZXJlIHByZXZpb3VzbHkgdGhlIHN1YmplY3Qgb2YgYSBYRU5fTkVUSUZfQ1RS TF9UWVBFX0FERF9HUkVGX01BUFBJTkcKKyAqICAgICAgIG9wZXJhdGlvbi4gQW55IG90aGVyIGVu dHJpZXMgd2lsbCBoYXZlIHRoZWlyIHN0YXR1cyBzZXQgdG8KKyAqICAgICAgIFhFTl9ORVRJRl9D VFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiB1cG9uIGNvbXBsZXRpb24uCisgKi8KKworREVG SU5FX1JJTkdfVFlQRVMoeGVuX25ldGlmX2N0cmwsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg eGVuX25ldGlmX2N0cmxfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fbmV0 aWZfY3RybF9yZXNwb25zZSk7CisKKy8qCisgKiBHdWVzdCB0cmFuc21pdAorICogPT09PT09PT09 PT09PT0KKyAqCisgKiBUaGlzIGlzIHRoZSAnd2lyZScgZm9ybWF0IGZvciB0cmFuc21pdCAoZnJv bnRlbmQgLT4gYmFja2VuZCkgcGFja2V0czoKKyAqCisgKiAgRnJhZ21lbnQgMTogbmV0aWZfdHhf cmVxdWVzdF90ICAtIGZsYWdzID0gTkVUVFhGXyoKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZSA9IHRvdGFsIHBhY2tldCBzaXplCisgKiBbRXh0cmEgMTogbmV0aWZf ZXh0cmFfaW5mb190XSAgICAtIChvbmx5IGlmIGZyYWdtZW50IDEgZmxhZ3MgaW5jbHVkZQorICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUVFhGX2V4dHJhX2luZm8pCisg KiAgLi4uCisgKiBbRXh0cmEgTjogbmV0aWZfZXh0cmFfaW5mb190XSAgICAtIChvbmx5IGlmIGV4 dHJhIE4tMSBmbGFncyBpbmNsdWRlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYRU5fTkVUSUZfRVhUUkFfTU9SRSkKKyAqICAuLi4KKyAqICBGcmFnbWVudCBOOiBuZXRp Zl90eF9yZXF1ZXN0X3QgIC0gKG9ubHkgaWYgZnJhZ21lbnQgTi0xIGZsYWdzIGluY2x1ZGUKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFRYRl9tb3JlX2RhdGEgLSBm bGFncyBvbiBwcmVjZWRpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4dHJhcyBhcmUgbm90IHJlbGV2YW50IGhlcmUpCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZsYWdzID0gMAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplID0gZnJhZ21lbnQgc2l6ZQorICoKKyAqIE5PVEU6CisgKgorICogVGhpcyBmb3Jt YXQgc2xpZ2h0bHkgaXMgZGlmZmVyZW50IGZyb20gdGhhdCB1c2VkIGZvciByZWNlaXZlCisgKiAo YmFja2VuZCAtPiBmcm9udGVuZCkgcGFja2V0cy4gU3BlY2lmaWNhbGx5LCBpbiBhIG11bHRpLWZy YWdtZW50CisgKiBwYWNrZXQgdGhlIGFjdHVhbCBzaXplIG9mIGZyYWdtZW50IDEgY2FuIG9ubHkg YmUgZGV0ZXJtaW5lZCBieQorICogc3VidHJhY3RpbmcgdGhlIHNpemVzIG9mIGZyYWdtZW50cyAy Li5OIGZyb20gdGhlIHRvdGFsIHBhY2tldCBzaXplLgorICoKKyAqIFJpbmcgc2xvdCBzaXplIGlz IDEyIG9jdGV0cywgaG93ZXZlciBub3QgYWxsIHJlcXVlc3QvcmVzcG9uc2UKKyAqIHN0cnVjdHMg dXNlIHRoZSBmdWxsIHNpemUuCisgKgorICogdHggcmVxdWVzdCBkYXRhIChuZXRpZl90eF9yZXF1 ZXN0X3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAg ICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICog Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCBn cmFudCByZWYgICAgICAgICAgICAgfCBvZmZzZXQgICAgfCBmbGFncyAgICAgfAorICogKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCBpZCAgICAg ICAgfCBzaXplICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIGdy YW50IHJlZjogUmVmZXJlbmNlIHRvIGJ1ZmZlciBwYWdlLgorICogb2Zmc2V0OiBPZmZzZXQgd2l0 aGluIGJ1ZmZlciBwYWdlLgorICogZmxhZ3M6IE5FVFRYRl8qLgorICogaWQ6IHJlcXVlc3QgaWRl bnRpZmllciwgZWNob2VkIGluIHJlc3BvbnNlLgorICogc2l6ZTogcGFja2V0IHNpemUgaW4gYnl0 ZXMuCisgKgorICogdHggcmVzcG9uc2UgKG5ldGlmX3R4X3Jlc3BvbnNlX3QpCisgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAgICAwICAgICAxICAgICAyICAgICAz ICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCBpZCAgICAgICAgfCBzdGF0dXMgICAg fCB1bnVzZWQgICAgICAgICAgICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCB1bnVzZWQgICAgICAgICAgICAgICAgfAorICog Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIGlkOiByZWZsZWN0cyBpZCBpbiB0cmFu c21pdCByZXF1ZXN0CisgKiBzdGF0dXM6IE5FVElGX1JTUF8qCisgKgorICogR3Vlc3QgcmVjZWl2 ZQorICogPT09PT09PT09PT09PQorICoKKyAqIFRoaXMgaXMgdGhlICd3aXJlJyBmb3JtYXQgZm9y IHJlY2VpdmUgKGJhY2tlbmQgLT4gZnJvbnRlbmQpIHBhY2tldHM6CisgKgorICogIEZyYWdtZW50 IDE6IG5ldGlmX3J4X3JlcXVlc3RfdCAgLSBmbGFncyA9IE5FVFJYRl8qCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBmcmFnbWVudCBzaXplCisgKiBbRXh0cmEg MTogbmV0aWZfZXh0cmFfaW5mb190XSAgICAtIChvbmx5IGlmIGZyYWdtZW50IDEgZmxhZ3MgaW5j bHVkZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUUlhGX2V4dHJh X2luZm8pCisgKiAgLi4uCisgKiBbRXh0cmEgTjogbmV0aWZfZXh0cmFfaW5mb190XSAgICAtIChv bmx5IGlmIGV4dHJhIE4tMSBmbGFncyBpbmNsdWRlCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5fTkVUSUZfRVhUUkFfTU9SRSkKKyAqICAuLi4KKyAqICBGcmFnbWVu dCBOOiBuZXRpZl9yeF9yZXF1ZXN0X3QgIC0gKG9ubHkgaWYgZnJhZ21lbnQgTi0xIGZsYWdzIGlu Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFJYRl9tb3Jl X2RhdGEgLSBmbGFncyBvbiBwcmVjZWRpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4dHJhcyBhcmUgbm90IHJlbGV2YW50IGhlcmUpCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMAorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplID0gZnJhZ21lbnQgc2l6ZQorICoKKyAqIE5PVEU6CisgKgorICog VGhpcyBmb3JtYXQgc2xpZ2h0bHkgaXMgZGlmZmVyZW50IGZyb20gdGhhdCB1c2VkIGZvciB0cmFu c21pdAorICogKGZyb250ZW5kIC0+IGJhY2tlbmQpIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaW4g YSBtdWx0aS1mcmFnbWVudAorICogcGFja2V0IHRoZSBzaXplIG9mIHRoZSBwYWNrZXQgY2FuIG9u bHkgYmUgZGV0ZXJtaW5lZCBieSBzdW1taW5nIHRoZQorICogc2l6ZXMgb2YgZnJhZ21lbnRzIDEu Lk4uCisgKgorICogUmluZyBzbG90IHNpemUgaXMgOCBvY3RldHMuCisgKgorICogcnggcmVxdWVz dCAobmV0aWZfcnhfcmVxdWVzdF90KQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqICAgIDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcg IG9jdGV0CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0rCisgKiB8IGlkICAgICAgICB8IHBhZCAgICAgICB8IGdyZWYgICAgICAgICAgICAgICAgICB8 CisgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisg KgorICogaWQ6IHJlcXVlc3QgaWRlbnRpZmllciwgZWNob2VkIGluIHJlc3BvbnNlLgorICogZ3Jl ZjogcmVmZXJlbmNlIHRvIGluY29taW5nIGdyYW50ZWQgZnJhbWUuCisgKgorICogcnggcmVzcG9u c2UgKG5ldGlmX3J4X3Jlc3BvbnNlX3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiAgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAg ICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tKworICogfCBpZCAgICAgICAgfCBvZmZzZXQgICAgfCBmbGFncyAgICAgfCBzdGF0dXMg ICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t KworICoKKyAqIGlkOiByZWZsZWN0cyBpZCBpbiByZWNlaXZlIHJlcXVlc3QKKyAqIG9mZnNldDog b2Zmc2V0IGluIHBhZ2Ugb2Ygc3RhcnQgb2YgcmVjZWl2ZWQgcGFja2V0CisgKiBmbGFnczogTkVU UlhGXyoKKyAqIHN0YXR1czogLXZlOiBORVRJRl9SU1BfKjsgK3ZlOiBSeCdlZCBwa3Qgc2l6ZS4K KyAqCisgKiBOT1RFOiBIaXN0b3JpY2FsbHksIHRvIHN1cHBvcnQgR1NPIG9uIHRoZSBmcm9udGVu ZCByZWNlaXZlIHNpZGUsIExpbnV4CisgKiAgICAgICBuZXRmcm9udCBkb2VzIG5vdCBtYWtlIHVz ZSBvZiB0aGUgcnggcmVzcG9uc2UgaWQgKGJlY2F1c2UsIGFzCisgKiAgICAgICBkZXNjcmliZWQg YmVsb3csIGV4dHJhIGluZm8gc3RydWN0dXJlcyBvdmVybGF5IHRoZSBpZCBmaWVsZCkuCisgKiAg ICAgICBJbnN0ZWFkIGl0IGFzc3VtZXMgdGhhdCByZXNwb25zZXMgYWx3YXlzIGFwcGVhciBpbiB0 aGUgc2FtZSByaW5nCisgKiAgICAgICBzbG90IGFzIHRoZWlyIGNvcnJlc3BvbmRpbmcgcmVxdWVz dC4gVGh1cywgdG8gbWFpbnRhaW4KKyAqICAgICAgIGNvbXBhdGliaWxpdHksIGJhY2tlbmRzIG11 c3QgbWFrZSBzdXJlIHRoaXMgaXMgdGhlIGNhc2UuCisgKgorICogRXh0cmEgSW5mbworICogPT09 PT09PT09PQorICoKKyAqIENhbiBiZSBwcmVzZW50IGlmIGluaXRpYWwgcmVxdWVzdCBvciByZXNw b25zZSBoYXMgTkVUe1QsUn1YRl9leHRyYV9pbmZvLAorICogb3IgcHJldmlvdXMgZXh0cmEgcmVx dWVzdCBoYXMgWEVOX05FVElGX0VYVFJBX01PUkUuCisgKgorICogVGhlIHN0cnVjdCB0aGVyZWZv cmUgbmVlZHMgdG8gZml0IGludG8gZWl0aGVyIGEgdHggb3Igcnggc2xvdCBhbmQKKyAqIGlzIHRo ZXJlZm9yZSBsaW1pdGVkIHRvIDggb2N0ZXRzLgorICoKKyAqIE5PVEU6IEJlY2F1c2UgZXh0cmEg aW5mbyBkYXRhIG92ZXJsYXlzIHRoZSB1c3VhbCByZXF1ZXN0L3Jlc3BvbnNlCisgKiAgICAgICBz dHJ1Y3R1cmVzLCB0aGVyZSBpcyBubyBpZCBpbmZvcm1hdGlvbiBpbiB0aGUgb3Bwb3NpdGUgZGly ZWN0aW9uLgorICogICAgICAgU28sIGlmIGFuIGV4dHJhIGluZm8gb3ZlcmxheXMgYW4gcnggcmVz cG9uc2UgdGhlIGZyb250ZW5kIGNhbgorICogICAgICAgYXNzdW1lIHRoYXQgaXQgaXMgaW4gdGhl IHNhbWUgcmluZyBzbG90IGFzIHRoZSByZXF1ZXN0IHRoYXQgd2FzCisgKiAgICAgICBjb25zdW1l ZCB0byBtYWtlIHRoZSBzbG90IGF2YWlsYWJsZSwgYW5kIHRoZSBiYWNrZW5kIG11c3QgZW5zdXJl CisgKiAgICAgICB0aGlzIGFzc3VtcHRpb24gaXMgdHJ1ZS4KKyAqCisgKiBleHRyYSBpbmZvIChu ZXRpZl9leHRyYV9pbmZvX3QpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogR2VuZXJhbCBmb3JtYXQ6CisgKgorICogICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAg NCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHx0eXBlIHxmbGFnc3wgdHlwZSBzcGVjaWZpYyBk YXRhICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSsKKyAqIHwgcGFkZGluZyBmb3IgdHggICAgICAgIHwKKyAqICstLS0t LSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBYRU5fTkVUSUZfRVhUUkFfVFlQRV8q CisgKiBmbGFnczogWEVOX05FVElGX0VYVFJBX0ZMQUdfKgorICogcGFkZGluZyBmb3IgdHg6IHBy ZXNlbnQgb25seSBpbiB0aGUgdHggY2FzZSBkdWUgdG8gOCBvY3RldCBsaW1pdAorICogICAgICAg ICAgICAgICAgIGZyb20gcnggY2FzZS4gTm90IHNob3duIGluIHR5cGUgc3BlY2lmaWMgZW50cmll cworICogICAgICAgICAgICAgICAgIGJlbG93LgorICoKKyAqIFhFTl9ORVRJRl9FWFRSQV9UWVBF X0dTTzoKKyAqCisgKiAgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAg ICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tKworICogfHR5cGUgfGZsYWdzfCBzaXplICAgICAgfHR5cGUgfCBwYWQgfCBmZWF0dXJl cyAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0t KworICoKKyAqIHR5cGU6IE11c3QgYmUgWEVOX05FVElGX0VYVFJBX1RZUEVfR1NPCisgKiBmbGFn czogWEVOX05FVElGX0VYVFJBX0ZMQUdfKgorICogc2l6ZTogTWF4aW11bSBwYXlsb2FkIHNpemUg b2YgZWFjaCBzZWdtZW50LiBGb3IgZXhhbXBsZSwKKyAqICAgICAgIGZvciBUQ1AgdGhpcyBpcyBq dXN0IHRoZSBwYXRoIE1TUy4KKyAqIHR5cGU6IFhFTl9ORVRJRl9HU09fVFlQRV8qOiBUaGlzIGRl dGVybWluZXMgdGhlIHByb3RvY29sIG9mCisgKiAgICAgICB0aGUgcGFja2V0IGFuZCBhbnkgZXh0 cmEgZmVhdHVyZXMgcmVxdWlyZWQgdG8gc2VnbWVudCB0aGUKKyAqICAgICAgIHBhY2tldCBwcm9w ZXJseS4KKyAqIGZlYXR1cmVzOiBFTl9ORVRJRl9HU09fRkVBVF8qOiBUaGlzIHNwZWNpZmllcyBh bnkgZXh0cmEgR1NPCisgKiAgICAgICAgICAgZmVhdHVyZXMgcmVxdWlyZWQgdG8gcHJvY2VzcyB0 aGlzIHBhY2tldCwgc3VjaCBhcyBFQ04KKyAqICAgICAgICAgICBzdXBwb3J0IGZvciBUQ1B2NC4K KyAqCisgKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF97QURELERFTH06CisgKgorICogICAg MCAgICAgMSAgICAgMiAgICAgMyAgICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKKyAqICst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqIHx0eXBl IHxmbGFnc3wgYWRkciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAqCisgKiB0eXBlOiBN dXN0IGJlIFhFTl9ORVRJRl9FWFRSQV9UWVBFX01DQVNUX3tBREQsREVMfQorICogZmxhZ3M6IFhF Tl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIGFkZHI6IGFkZHJlc3MgdG8gYWRkL3JlbW92ZQorICoK KyAqIFhFTl9ORVRJRl9FWFRSQV9UWVBFX0hBU0g6CisgKgorICogQSBiYWNrZW5kIHRoYXQgc3Vw cG9ydHMgdGVvcGxpdHogaGFzaGluZyBpcyBhc3N1bWVkIHRvIGFjY2VwdAorICogdGhpcyB0eXBl IG9mIGV4dHJhIGluZm8gaW4gdHJhbnNtaXQgcGFja2V0cy4KKyAqIEEgZnJvbnRlbmQgdGhhdCBl bmFibGVzIGhhc2hpbmcgaXMgYXNzdW1lZCB0byBhY2NlcHQKKyAqIHRoaXMgdHlwZSBvZiBleHRy YSBpbmZvIGluIHJlY2VpdmUgcGFja2V0cy4KKyAqCisgKiAgICAwICAgICAxICAgICAyICAgICAz ICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfHR5cGUgfGZsYWdzfGh0eXBlfCBhbGcg fExTQiAtLS0tIHZhbHVlIC0tLS0gTVNCfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIHR5cGU6IE11c3QgYmUgWEVOX05FVElGX0VY VFJBX1RZUEVfSEFTSAorICogZmxhZ3M6IFhFTl9ORVRJRl9FWFRSQV9GTEFHXyoKKyAqIGh0eXBl OiBIYXNoIHR5cGUgKG9uZSBvZiBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFXyogLSBzZWUgYWJv dmUpCisgKiBhbGc6IFRoZSBhbGdvcml0aG0gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGhhc2ggKG9u ZSBvZgorICogICAgICBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfQUxHT1JJVEhNXyogLSBzZWUg YWJvdmUpCisgKiB2YWx1ZTogSGFzaCB2YWx1ZQorICovCisKKy8qIFByb3RvY29sIGNoZWNrc3Vt IGZpZWxkIGlzIGJsYW5rIGluIHRoZSBwYWNrZXQgKGhhcmR3YXJlIG9mZmxvYWQpPyAqLworI2Rl ZmluZSBfTkVUVFhGX2NzdW1fYmxhbmsgICAgICgwKQorI2RlZmluZSAgTkVUVFhGX2NzdW1fYmxh bmsgICAgICgxVTw8X05FVFRYRl9jc3VtX2JsYW5rKQorCisvKiBQYWNrZXQgZGF0YSBoYXMgYmVl biB2YWxpZGF0ZWQgYWdhaW5zdCBwcm90b2NvbCBjaGVja3N1bS4gKi8KKyNkZWZpbmUgX05FVFRY Rl9kYXRhX3ZhbGlkYXRlZCAoMSkKKyNkZWZpbmUgIE5FVFRYRl9kYXRhX3ZhbGlkYXRlZCAoMVU8 PF9ORVRUWEZfZGF0YV92YWxpZGF0ZWQpCisKKy8qIFBhY2tldCBjb250aW51ZXMgaW4gdGhlIG5l eHQgcmVxdWVzdCBkZXNjcmlwdG9yLiAqLworI2RlZmluZSBfTkVUVFhGX21vcmVfZGF0YSAgICAg ICgyKQorI2RlZmluZSAgTkVUVFhGX21vcmVfZGF0YSAgICAgICgxVTw8X05FVFRYRl9tb3JlX2Rh dGEpCisKKy8qIFBhY2tldCB0byBiZSBmb2xsb3dlZCBieSBleHRyYSBkZXNjcmlwdG9yKHMpLiAq LworI2RlZmluZSBfTkVUVFhGX2V4dHJhX2luZm8gICAgICgzKQorI2RlZmluZSAgTkVUVFhGX2V4 dHJhX2luZm8gICAgICgxVTw8X05FVFRYRl9leHRyYV9pbmZvKQorCisjZGVmaW5lIFhFTl9ORVRJ Rl9NQVhfVFhfU0laRSAweEZGRkYKK3N0cnVjdCBuZXRpZl90eF9yZXF1ZXN0IHsKKyAgICBncmFu dF9yZWZfdCBncmVmOworICAgIHVpbnQxNl90IG9mZnNldDsKKyAgICB1aW50MTZfdCBmbGFnczsK KyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50MTZfdCBzaXplOworfTsKK3R5cGVkZWYgc3RydWN0 IG5ldGlmX3R4X3JlcXVlc3QgbmV0aWZfdHhfcmVxdWVzdF90OworCisvKiBUeXBlcyBvZiBuZXRp Zl9leHRyYV9pbmZvIGRlc2NyaXB0b3JzLiAqLworI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQ RV9OT05FICAgICAgKDApICAvKiBOZXZlciB1c2VkIC0gaW52YWxpZCAqLworI2RlZmluZSBYRU5f TkVUSUZfRVhUUkFfVFlQRV9HU08gICAgICAgKDEpICAvKiB1LmdzbyAqLworI2RlZmluZSBYRU5f TkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF9BREQgKDIpICAvKiB1Lm1jYXN0ICovCisjZGVmaW5lIFhF Tl9ORVRJRl9FWFRSQV9UWVBFX01DQVNUX0RFTCAoMykgIC8qIHUubWNhc3QgKi8KKyNkZWZpbmUg WEVOX05FVElGX0VYVFJBX1RZUEVfSEFTSCAgICAgICg0KSAgLyogdS5oYXNoICovCisjZGVmaW5l IFhFTl9ORVRJRl9FWFRSQV9UWVBFX01BWCAgICAgICAoNSkKKworLyogbmV0aWZfZXh0cmFfaW5m b190IGZsYWdzLiAqLworI2RlZmluZSBfWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAoMCkKKyNk ZWZpbmUgWEVOX05FVElGX0VYVFJBX0ZMQUdfTU9SRSAgKDFVPDxfWEVOX05FVElGX0VYVFJBX0ZM QUdfTU9SRSkKKworLyogR1NPIHR5cGVzICovCisjZGVmaW5lIFhFTl9ORVRJRl9HU09fVFlQRV9O T05FICAgICAgICAgKDApCisjZGVmaW5lIFhFTl9ORVRJRl9HU09fVFlQRV9UQ1BWNCAgICAgICAg KDEpCisjZGVmaW5lIFhFTl9ORVRJRl9HU09fVFlQRV9UQ1BWNiAgICAgICAgKDIpCisKKy8qCisg KiBUaGlzIHN0cnVjdHVyZSBuZWVkcyB0byBmaXQgd2l0aGluIGJvdGggbmV0aWZfdHhfcmVxdWVz dF90IGFuZAorICogbmV0aWZfcnhfcmVzcG9uc2VfdCBmb3IgY29tcGF0aWJpbGl0eS4KKyAqLwor c3RydWN0IG5ldGlmX2V4dHJhX2luZm8geworICAgIHVpbnQ4X3QgdHlwZTsKKyAgICB1aW50OF90 IGZsYWdzOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQx Nl90IHNpemU7CisgICAgICAgICAgICB1aW50OF90IHR5cGU7CisgICAgICAgICAgICB1aW50OF90 IHBhZDsKKyAgICAgICAgICAgIHVpbnQxNl90IGZlYXR1cmVzOworICAgICAgICB9IGdzbzsKKyAg ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWRkcls2XTsKKyAgICAgICAgfSBt Y2FzdDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdHlwZTsKKyAgICAg ICAgICAgIHVpbnQ4X3QgYWxnb3JpdGhtOworICAgICAgICAgICAgdWludDhfdCB2YWx1ZVs0XTsK KyAgICAgICAgfSBoYXNoOworICAgICAgICB1aW50MTZfdCBwYWRbM107CisgICAgfSB1OworfTsK K3R5cGVkZWYgc3RydWN0IG5ldGlmX2V4dHJhX2luZm8gbmV0aWZfZXh0cmFfaW5mb190OworCitz dHJ1Y3QgbmV0aWZfdHhfcmVzcG9uc2UgeworICAgIHVpbnQxNl90IGlkOworICAgIGludDE2X3Qg IHN0YXR1czsKK307Cit0eXBlZGVmIHN0cnVjdCBuZXRpZl90eF9yZXNwb25zZSBuZXRpZl90eF9y ZXNwb25zZV90OworCitzdHJ1Y3QgbmV0aWZfcnhfcmVxdWVzdCB7CisgICAgdWludDE2X3QgICAg aWQ7ICAgICAgICAvKiBFY2hvZWQgaW4gcmVzcG9uc2UgbWVzc2FnZS4gICAgICAgICovCisgICAg dWludDE2X3QgICAgcGFkOworICAgIGdyYW50X3JlZl90IGdyZWY7Cit9OwordHlwZWRlZiBzdHJ1 Y3QgbmV0aWZfcnhfcmVxdWVzdCBuZXRpZl9yeF9yZXF1ZXN0X3Q7CisKKy8qIFBhY2tldCBkYXRh IGhhcyBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHByb3RvY29sIGNoZWNrc3VtLiAqLworI2RlZmlu ZSBfTkVUUlhGX2RhdGFfdmFsaWRhdGVkICgwKQorI2RlZmluZSAgTkVUUlhGX2RhdGFfdmFsaWRh dGVkICgxVTw8X05FVFJYRl9kYXRhX3ZhbGlkYXRlZCkKKworLyogUHJvdG9jb2wgY2hlY2tzdW0g ZmllbGQgaXMgYmxhbmsgaW4gdGhlIHBhY2tldCAoaGFyZHdhcmUgb2ZmbG9hZCk/ICovCisjZGVm aW5lIF9ORVRSWEZfY3N1bV9ibGFuayAgICAgKDEpCisjZGVmaW5lICBORVRSWEZfY3N1bV9ibGFu ayAgICAgKDFVPDxfTkVUUlhGX2NzdW1fYmxhbmspCisKKy8qIFBhY2tldCBjb250aW51ZXMgaW4g dGhlIG5leHQgcmVxdWVzdCBkZXNjcmlwdG9yLiAqLworI2RlZmluZSBfTkVUUlhGX21vcmVfZGF0 YSAgICAgICgyKQorI2RlZmluZSAgTkVUUlhGX21vcmVfZGF0YSAgICAgICgxVTw8X05FVFJYRl9t b3JlX2RhdGEpCisKKy8qIFBhY2tldCB0byBiZSBmb2xsb3dlZCBieSBleHRyYSBkZXNjcmlwdG9y KHMpLiAqLworI2RlZmluZSBfTkVUUlhGX2V4dHJhX2luZm8gICAgICgzKQorI2RlZmluZSAgTkVU UlhGX2V4dHJhX2luZm8gICAgICgxVTw8X05FVFJYRl9leHRyYV9pbmZvKQorCisvKiBQYWNrZXQg aGFzIEdTTyBwcmVmaXguIERlcHJlY2F0ZWQgYnV0IGluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5 ICovCisjZGVmaW5lIF9ORVRSWEZfZ3NvX3ByZWZpeCAgICAgKDQpCisjZGVmaW5lICBORVRSWEZf Z3NvX3ByZWZpeCAgICAgKDFVPDxfTkVUUlhGX2dzb19wcmVmaXgpCisKK3N0cnVjdCBuZXRpZl9y eF9yZXNwb25zZSB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDE2X3Qgb2Zmc2V0OworICAg IHVpbnQxNl90IGZsYWdzOworICAgIGludDE2X3QgIHN0YXR1czsKK307Cit0eXBlZGVmIHN0cnVj dCBuZXRpZl9yeF9yZXNwb25zZSBuZXRpZl9yeF9yZXNwb25zZV90OworCisvKgorICogR2VuZXJh dGUgbmV0aWYgcmluZyBzdHJ1Y3R1cmVzIGFuZCB0eXBlcy4KKyAqLworCitERUZJTkVfUklOR19U WVBFUyhuZXRpZl90eCwgc3RydWN0IG5ldGlmX3R4X3JlcXVlc3QsIHN0cnVjdCBuZXRpZl90eF9y ZXNwb25zZSk7CitERUZJTkVfUklOR19UWVBFUyhuZXRpZl9yeCwgc3RydWN0IG5ldGlmX3J4X3Jl cXVlc3QsIHN0cnVjdCBuZXRpZl9yeF9yZXNwb25zZSk7CisKKyNkZWZpbmUgTkVUSUZfUlNQX0RS T1BQRUQgICAgICAgICAtMgorI2RlZmluZSBORVRJRl9SU1BfRVJST1IgICAgICAgICAgIC0xCisj ZGVmaW5lIE5FVElGX1JTUF9PS0FZICAgICAgICAgICAgIDAKKy8qIE5vIHJlc3BvbnNlOiB1c2Vk IGZvciBhdXhpbGlhcnkgcmVxdWVzdHMgKGUuZy4sIG5ldGlmX2V4dHJhX2luZm9fdCkuICovCisj ZGVmaW5lIE5FVElGX1JTUF9OVUxMICAgICAgICAgICAgIDEKKworI2VuZGlmCmRpZmYgLS1naXQg YS9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vcHJvdG9jb2xzLmggYi9pbmNsdWRlL2h3L3hl bi9pbnRlcmZhY2UvaW8vcHJvdG9jb2xzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uM2QxY2FjMzIyYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcveGVuL2lu dGVyZmFjZS9pby9wcm90b2NvbHMuaApAQCAtMCwwICsxLDQyIEBACisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBwcm90b2NvbHMuaAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MDgsIEtlaXIgRnJhc2VyCisgKi8KKworI2lmbmRlZiBYRU5fUFJPVE9DT0xTX0gKKyNkZWZpbmUg WEVOX1BST1RPQ09MU19ICisKKyNkZWZpbmUgWEVOX0lPX1BST1RPX0FCSV9YODZfMzIgICAgICJ4 ODZfMzItYWJpIgorI2RlZmluZSBYRU5fSU9fUFJPVE9fQUJJX1g4Nl82NCAgICAgIng4Nl82NC1h YmkiCisjZGVmaW5lIFhFTl9JT19QUk9UT19BQklfQVJNICAgICAgICAiYXJtLWFiaSIKKworI2lm IGRlZmluZWQoX19pMzg2X18pCisjIGRlZmluZSBYRU5fSU9fUFJPVE9fQUJJX05BVElWRSBYRU5f SU9fUFJPVE9fQUJJX1g4Nl8zMgorI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorIyBkZWZpbmUg WEVOX0lPX1BST1RPX0FCSV9OQVRJVkUgWEVOX0lPX1BST1RPX0FCSV9YODZfNjQKKyNlbGlmIGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyMgZGVmaW5lIFhFTl9JT19Q Uk9UT19BQklfTkFUSVZFIFhFTl9JT19QUk9UT19BQklfQVJNCisjZWxzZQorIyBlcnJvciBhcmNo IGZpeHVwIG5lZWRlZCBoZXJlCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRl L2h3L3hlbi9pbnRlcmZhY2UvaW8veGVuYnVzLmggYi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2Uv aW8veGVuYnVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTNkMjZj NTFjZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby94ZW5i dXMuaApAQCAtMCwwICsxLDcwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHhlbmJ1cy5o CisgKgorICogWGVuYnVzIHByb3RvY29sIGRldGFpbHMuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg Y29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4g Tk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHly aWdodCAoQykgMjAwNSBYZW5Tb3VyY2UgTHRkLgorICovCisKKyNpZm5kZWYgWEVOX1BVQkxJQ19J T19YRU5CVVNfSAorI2RlZmluZSBYRU5fUFVCTElDX0lPX1hFTkJVU19ICisKKy8qCisgKiBUaGUg c3RhdGUgb2YgZWl0aGVyIGVuZCBvZiB0aGUgWGVuYnVzLCBpLmUuIHRoZSBjdXJyZW50IGNvbW11 bmljYXRpb24KKyAqIHN0YXR1cyBvZiBpbml0aWFsaXNhdGlvbiBhY3Jvc3MgdGhlIGJ1cy4gIFN0 YXRlcyBoZXJlIGltcGx5IG5vdGhpbmcgYWJvdXQKKyAqIHRoZSBzdGF0ZSBvZiB0aGUgY29ubmVj dGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBrZXJuZWwncyBkZXZpY2UKKyAqIGxheWVy cy4KKyAqLworZW51bSB4ZW5idXNfc3RhdGUgeworICAgIFhlbmJ1c1N0YXRlVW5rbm93biAgICAg ICA9IDAsCisKKyAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgPSAxLAorCisgICAgLyoKKyAg ICAgKiBJbml0V2FpdDogRmluaXNoZWQgZWFybHkgaW5pdGlhbGlzYXRpb24gYnV0IHdhaXRpbmcg Zm9yIGluZm9ybWF0aW9uCisgICAgICogZnJvbSB0aGUgcGVlciBvciBob3RwbHVnIHNjcmlwdHMu CisgICAgICovCisgICAgWGVuYnVzU3RhdGVJbml0V2FpdCAgICAgID0gMiwKKworICAgIC8qCisg ICAgICogSW5pdGlhbGlzZWQ6IFdhaXRpbmcgZm9yIGEgY29ubmVjdGlvbiBmcm9tIHRoZSBwZWVy LgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQgICA9IDMsCisKKyAgICBYZW5i dXNTdGF0ZUNvbm5lY3RlZCAgICAgPSA0LAorCisgICAgLyoKKyAgICAgKiBDbG9zaW5nOiBUaGUg ZGV2aWNlIGlzIGJlaW5nIGNsb3NlZCBkdWUgdG8gYW4gZXJyb3Igb3IgYW4gdW5wbHVnIGV2ZW50 LgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlQ2xvc2luZyAgICAgICA9IDUsCisKKyAgICBYZW5i dXNTdGF0ZUNsb3NlZCAgICAgICAgPSA2LAorCisgICAgLyoKKyAgICAgKiBSZWNvbmZpZ3VyaW5n OiBUaGUgZGV2aWNlIGlzIGJlaW5nIHJlY29uZmlndXJlZC4KKyAgICAgKi8KKyAgICBYZW5idXNT dGF0ZVJlY29uZmlndXJpbmcgPSA3LAorCisgICAgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQgID0g OAorfTsKK3R5cGVkZWYgZW51bSB4ZW5idXNfc3RhdGUgWGVuYnVzU3RhdGU7CisKKyNlbmRpZiAv KiBYRU5fUFVCTElDX0lPX1hFTkJVU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi94 ZW5fY29tbW9uLmggYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKaW5kZXggOWE4MTU1ZTE3 Mi4uMDUwNGI0MzY1OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCisr KyBiL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaApAQCAtMTIsNyArMTIsNyBAQAogCiAjaW5j bHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbnN0b3JlLmg+Ci0jaW5jbHVkZSA8eGVuL2lv L3hlbmJ1cy5oPgorI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8veGVuYnVzLmgiCiAKICNp bmNsdWRlICJody9ody5oIgogI2luY2x1ZGUgImh3L3hlbi94ZW4uaCIKLS0gCkFudGhvbnkgUEVS QVJECgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==