Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkr6X-00FwII-IM for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Mar 2024 19:51:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rkr6V-002iZI-GO for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Mar 2024 19:51:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkr6U-002iZ9-Kj for pgsql-hackers@lists.postgresql.org; Thu, 14 Mar 2024 19:51:03 +0000 Received: from mgamail.intel.com ([198.175.65.19]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkr6P-004X4d-F9 for pgsql-hackers@lists.postgresql.org; Thu, 14 Mar 2024 19:51:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710445857; x=1741981857; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=ehzze0bACDuSwdZwOiVI1QnG7fP8G6rPR4odZc3fjVU=; b=djOw6ogEjpAt5nmIJOxcHhA+W7ouhBBdEBxtc+p1OafzIgWy10FiibOe 9TsmtAiV5ap62Mqz095HkWP7gP/WLwBIQeDzbtjMKddcmmYSub5LBW35l TWqOYm+d/7dTxL4HcvX21IkAAcqxK6ZsLmQfgIXkqGH+BUt+QxKveNyBh VM8FrwFsHqEXnzCXy1herjmYfeLNXTImONXtEbmFCQdghNgXLOwR4uYHd LXFjTrn4zNtjTCKpeNPcDdb6h635tNs6e5MKsBnEi3s3sLoGUtmYXexWY TPLnGC1Opk40t55nTzt9DGWJJgxzzdObNhZCPMY1yNKMYiIHf8czDz25f g==; X-IronPort-AV: E=McAfee;i="6600,9927,11013"; a="5157317" X-IronPort-AV: E=Sophos;i="6.07,126,1708416000"; d="scan'208,223";a="5157317" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 12:50:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,126,1708416000"; d="scan'208,223";a="12437079" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa009.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Mar 2024 12:50:53 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 14 Mar 2024 12:50:52 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 14 Mar 2024 12:50:52 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 14 Mar 2024 12:50:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l73J1IgG0vpSQapdJIlWgC0lFN9sMaOnkT2JCwlzHf0+OF1IuhLbE752rBVAA2I7+4/1qOmkNgtrjMVrp/Qey5T++CV1O7jT6yvrcKDyiGUr0cSv4MS8/tEG/Tos7N5RrBv6ftkntkLO3zvvPATIW8DUcPh+VCstZMPAEFpy/LeY+QsVVsqWEy4IHU88dXLqEoXxZN3ev40FUbBrgeuUMzM8uNOpmy+6rpZHGOUtiBg27G6Z5C4Z2bBk34cbf0x/7n+gL4oRJj5k3uTyxYeyBhWoHpXjnFsgJsJO8zC2+ivoNkvoRdkHxKZhhXFyexRuX/+15KaBVmZrHs3rQFHyTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jSbFQPJDY1KNfY+PsL76dj/EhVFoTqv6ZggLWXW8p0s=; b=gR3exia2nlC4n906YiGtQwEEN2rXSxR/iZVofPwXea6UEWbpv125dOprPajj8G5faNBzs0hWcAK5s+ihsPXIdolmI822S27aYNqgBoZh++v/JwOdkHlhfbLqLd3ODGwb5GlNVU6FnVFjACZIcLfmhj5mdyG9gUluAEvVx5gj/hmjFrisg3Qg6RLG4VoTXda2IAZiWNcCedv0fAzW1xCv5XjDtaStq7bWgTpMXphcrKEa7NgXY0N8Bc004RnUP5714nHrNBSCewgxT+dHAl25ls28rlPJ1bo6y45uMPKZjd+MOQwcY0lSQbc6VC6q+9ALe/Ui0rZ0nMwvkp4XFdJG6g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BL1PR11MB5304.namprd11.prod.outlook.com (2603:10b6:208:316::20) by DS0PR11MB7623.namprd11.prod.outlook.com (2603:10b6:8:142::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.15; Thu, 14 Mar 2024 19:50:47 +0000 Received: from BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c936:ecdc:757e:1a4b]) by BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c936:ecdc:757e:1a4b%5]) with mapi id 15.20.7386.017; Thu, 14 Mar 2024 19:50:47 +0000 From: "Amonson, Paul D" To: Nathan Bossart CC: Andres Freund , Alvaro Herrera , "Shankaran, Akash" , Noah Misch , Tom Lane , "Matthias van de Meent" , "pgsql-hackers@lists.postgresql.org" Subject: RE: Popcount optimization using AVX512 Thread-Topic: Popcount optimization using AVX512 Thread-Index: AdoNliAXaie8RHrzTICrAiLVKKiYCgAsQKyAALaJTAAAAQ7nAAAAxSWAAAGNHgAAA/mZgAAeFdGAAZKQbBAAAw6egA3NuLcAAAvVM4ACbQuxsAAhlXkAAHPWMbAAAkOrAACYCUjgAAMc3wABvefW4AD8TV6wADf+AoAAmWkVgACOpocAAAl+RwAAJXNxYAAA1VoAAABadxAAZi2hAAAIeekAAMiJepAACPYvAAAbpMKQ Date: Thu, 14 Mar 2024 19:50:46 +0000 Message-ID: References: <20240301214457.GA3024365@nathanxps13> <20240304222118.GB3367383@nathanxps13> <20240305163730.GA3479896@nathanxps13> <20240307173318.GA455851@nathanxps13> <20240307213600.GA563369@nathanxps13> <20240312013436.GA1787866@nathanxps13> In-Reply-To: <20240312013436.GA1787866@nathanxps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR11MB5304:EE_|DS0PR11MB7623:EE_ x-ms-office365-filtering-correlation-id: 644fa84c-e1e3-4baf-b750-08dc44600ae3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gUIT6uzrCfQ9Q2Bqbx9HQxSjkocztSIm9dnkizRirPbGGIZnHc70l/oo8v7Fd7dZgTmj5lkFF7h99/MKe1J+USNbR7ptxP7gmx0jN6+a6xeBLr4O9o8cJf3Gocpev5M/dbAOV8ygd9bn3xqlf3ZSWXW5LuovHQTIgaiB3phgbCXgq7NFiAFN5CMV4M5aIb6bu+Un4A+LT+M9s626ZwcU5GaUrdtW2zeEqIxjoEaeafB173VZ1xeKjV3KrNHHCeO9yovNF3wuKlAxMtjKTGe+6U77LMdoQ7Bj8w9aTIjsDJlVtPSBhae3N1GJpinFXr5eBuFTWSuVPO2h7XG25WWjWfYdqOwkFm1Wk76Ocwgq9Nhdrxv6+G+t3QixluxTTJbR16vriCczHQB50i5ZB0FOh0GeAETizFL6VgIz1trXvEB2hSIDhtPkaJGClznkwzVPL3I762MKklZBvKL/HM9MIctYUAhtUrrOibciZa4Bl3rRdC/iYV3lE3euZInABN8MpaV64HC+hkDseb6isgmEbj/mHdF1G3sVIJGNy2x7mO4zpW9iF1dH8Bs4JXjSPUNNn+UWdMSoi1cjYvX/eqIrblHz2ci/JllOCuLY5svZ2sYVRlhE7ILHO2/1LW8EeWyi/yULl/zhKvuaIqE7stI8GAWObj/J7H/6IQB29a16V5883TItmNdRHmxFgilzh5kI1Pkpf1vTQaqju47hDlkww9upQcoWslnNNdpHpKsJGDE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5304.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(376005)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?DJywAuY71hP4Q0lnaNSi99+bm07sXFVxHCqzFFsEnb/fmu/QKz1MzSD+pdoW?= =?us-ascii?Q?SEIXJ9tuZ+VczA6lCNE2slCN58ygG3JAkt9g1zPXfXJNjKbg0MG00Ebw11iP?= =?us-ascii?Q?P2Nb33RlXamjAVtzreFUQbbNJvk9V6z+bg9cfWYptwnSkk9xUjZKoRtw29fm?= =?us-ascii?Q?5abR0G41tWnzMAPVpjbgAmMe0dUAUeysofPRmvkX8taHuBApxEuozDnpEsTj?= =?us-ascii?Q?5gTlmd1WToRv8PvMPqydOFEcqlqhmYxoQwj7NJoVAl4tN8EAhFvgf2+M2aO7?= =?us-ascii?Q?Z5QrPm46rZu7vixuGJt5JjD8Du60CaWkRYgDsyXe58H0SsAA6WZ0924vFZHf?= =?us-ascii?Q?dpDAaz5++2q27iZ+NLHXXnA5MtRNZ1PbtmQeubE3XznzdYeVIr5JMELubjXC?= =?us-ascii?Q?F0piwikzxstchKsopc8UYsdP+eOCtcJiPfkvslsOdycwxEohU4vopCukG4d4?= =?us-ascii?Q?o+48vKI2VV1PWq5RIbzo4QfneQmOcIlUhsKVwy5DxTDGPOqVPp7QADd1f7z2?= =?us-ascii?Q?Fo4xhsBzbnUczmmSzvBtfr+SA0AXNR1xznTuBZkSSP1F5tc7/Ud4yY2kTwJA?= =?us-ascii?Q?urQgQmA+1vD9ln30UqgvxI6vgsPI/eJ1gKwA52EhwDTGva9a9dV/DLvERm4+?= =?us-ascii?Q?kD1lV3L87ywTShDRE6pYFHBCAGEKowmmwtn1OYbPzeSdnfIBdwrmKDEE/V/2?= =?us-ascii?Q?d9TNNhZTjE9OLAS8RYgixuuoauQdM6kPGKW7rG45xZyOi2vuCQzG8tGFtWZ0?= =?us-ascii?Q?Qd9eRJ6i00C9Fn4gsRT3Od0qCRyGfs+CoHPCswo7+92L/hVUV52WxTaq4JXR?= =?us-ascii?Q?/W9q3IcxI2Af+VXCxVfdDqkOnqrAeH68kkNr27k4ogPNJfnliA25isFjzhlB?= =?us-ascii?Q?/bg0rM2+4rs11Hq5l6Qm7UYyaCf19AvX6F69hsDJ6YSyk9E3wZp0jgs+/yAs?= =?us-ascii?Q?lLIEkLZmBEGPQGLcAqIGpYV22cqWi7HInGC4UdX8J/ql7onTK5tRMtbPRGwm?= =?us-ascii?Q?u8IB4MCw5uMw0WZEFc0NIuOEulACuRtgZv8A7rlR+E41le6ZbhNqJ/g7hDyB?= =?us-ascii?Q?h7NzBfZ9PMDmFWoFzKe44WCsOawr9/sZmuYxPwR8L4vL1p9Wd8GX0vhjO1ka?= =?us-ascii?Q?Dyh+rSwXiGJ0dkjroK0TJ3QHOGG6CcMbONV7v+lwmfO+W8VWVPwIwXjCJvUp?= =?us-ascii?Q?j0fBu9AQ1Kx7npbLZLh9IErz6BHh5aFMnCFXqhVBIjLkvtJEgQHjuhrZ8lh3?= =?us-ascii?Q?9W01NCzEtAszPcWMk0JK68DMeikHEekkHdts8fyqiUH8lAU9Fz/iYB90SOIm?= =?us-ascii?Q?XUMWl+UJyJMh+miXnGdpjL3rGV4ezVqnp535RN3Pf2mU/ib+yMdjdQfrxLzl?= =?us-ascii?Q?QTz+/DSqJfkS5wMa2fzu0r/yWMt23piwFFf4WvmwXLA5rNNp35Y+Fpmb0g6p?= =?us-ascii?Q?2UY7/j/k/nW/RXcO3hQS36ViemVi6VgjDrtVCPOspefjgmavinvoubKb6Ysh?= =?us-ascii?Q?Aertai0xsUe90PSCM+5ap2bLSWssxE3Y4UJwL0P8sO4X8cmuBx4GPqoHOrtj?= =?us-ascii?Q?yj1f/vpTqcFjtfRgqRYI+8q7MOXfgZBLEgjDHDgI?= Content-Type: multipart/mixed; boundary="_003_BL1PR11MB53042473B7B53B96E43648A7DC292BL1PR11MB5304namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5304.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 644fa84c-e1e3-4baf-b750-08dc44600ae3 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2024 19:50:46.9395 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1tkwkw2pfxhBG+ym2GEoB/mNeLyjvMIzw3o7FW0twplXMfGVlRMJ+Cq+Cac178sPseuGZoWPNsIG3+E7q/7wiLSKyW/EM7gDE5QPJnhIWOU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7623 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_BL1PR11MB53042473B7B53B96E43648A7DC292BL1PR11MB5304namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Nathan Bossart > Sent: Monday, March 11, 2024 6:35 PM > To: Amonson, Paul D > Thanks. There's no need to wait to post the AVX portion. I recommend us= ing > "git format-patch" to construct the patch set for the lists. After exploring git format-patch command I think I understand what you need= . Attached. =20 > > What exactly do you suggest here? I am happy to always call either > > pg_popcount32() or pg_popcount64() with the understanding that it may > > not be optimal, but I do need to know which to use. >=20 > I'm recommending that we don't change any of the code in the pg_popcount(= ) > function (which is renamed to pg_popcount_slow() in your v6 patch). If > pointers are 8 or more bytes, we'll try to process the buffer in 64-bit c= hunks. > Else, we'll try to process it in 32-bit chunks. Any remaining bytes will= be > processed one-by-one. Ok, we are on the same page now. :) It is already fixed that way in the re= factor patch #1. As for new performance numbers: I just ran a full suite like I did earlier = in the process. My latest results an equivalent to a pgbench scale factor 1= 0 DB with the target column having varying column widths and appropriate ra= ndom data are 1.2% improvement with a 2.2% Margin of Error at a 98% confide= nce level. Still seeing improvement and no regressions. As stated in the previous separate chain I updated the code removing the ex= tra "extern" keywords. Thanks, Paul --_003_BL1PR11MB53042473B7B53B96E43648A7DC292BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v8-0001-Refactor-POPCNT-code-refactored-for-future-accelerat.patch" Content-Description: v8-0001-Refactor-POPCNT-code-refactored-for-future-accelerat.patch Content-Disposition: attachment; filename="v8-0001-Refactor-POPCNT-code-refactored-for-future-accelerat.patch"; size=8605; creation-date="Wed, 13 Mar 2024 19:59:31 GMT"; modification-date="Thu, 14 Mar 2024 19:50:46 GMT" Content-Transfer-Encoding: base64 RnJvbSA1NzI1NjQxMmNlMTFiMDA2YWQzODNmYzY4OWEwZmQyODcxNjYzMmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGludGVsLmNv bT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxMTo1Njo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBbUmVmYWN0b3JdIFBPUENOVCBjb2RlIHJlZmFjdG9yZWQgZm9yIGZ1dHVyZSBhY2NlbGVy YXRpb24KIG9mIHRoZSBmdW5jdGlvbi4KClNpZ25lZC1vZmYtYnk6IFBhdWwgQW1vbnNvbiA8cGF1 bC5kLmFtb25zb25AaW50ZWwuY29tPgotLS0KIHNyYy9wb3J0L01ha2VmaWxlICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvcG9ydC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL3BvcnQvcGdfYml0dXRpbHMuYyAgICAgICAgICAgIHwgMTI0ICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogc3JjL3BvcnQvcGdfcG9wY250X2Nob29zZS5jICAgICAgIHwgIDk3ICsr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvcG9ydC9wZ19wb3BjbnRfeDg2XzY0X2FjY2VsLmMg fCAgNTUgKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwg MTIwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wb3J0L3BnX3BvcGNudF9j aG9vc2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wb3J0L3BnX3BvcGNudF94ODZfNjRfYWNj ZWwuYwoKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L01ha2VmaWxlIGIvc3JjL3BvcnQvTWFrZWZpbGUK aW5kZXggZGNjODczN2U2OC4uMTJjNTZiMGJhNyAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvTWFrZWZp bGUKKysrIGIvc3JjL3BvcnQvTWFrZWZpbGUKQEAgLTQ0LDYgKzQ0LDggQEAgT0JKUyA9IFwKIAlu b2Jsb2NrLm8gXAogCXBhdGgubyBcCiAJcGdfYml0dXRpbHMubyBcCisJcGdfcG9wY250X2Nob29z ZS5vIFwKKwlwZ19wb3BjbnRfeDg2XzY0X2FjY2VsLm8gXAogCXBnX3N0cm9uZ19yYW5kb20ubyBc CiAJcGdjaGVja2Rpci5vIFwKIAlwZ21rZGlycC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L21l c29uLmJ1aWxkIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQKaW5kZXggOTJiNTkzZTZlZi4uZWQ4ODI4 YzczOSAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVzb24uYnVpbGQKKysrIGIvc3JjL3BvcnQvbWVz b24uYnVpbGQKQEAgLTcsNiArNyw4IEBAIHBncG9ydF9zb3VyY2VzID0gWwogICAnbm9ibG9jay5j JywKICAgJ3BhdGguYycsCiAgICdwZ19iaXR1dGlscy5jJywKKyAgJ3BnX3BvcGNudF9jaG9vc2Uu YycsCisgICdwZ19wb3BjbnRfeDg2XzY0X2FjY2VsLmMnLAogICAncGdfc3Ryb25nX3JhbmRvbS5j JywKICAgJ3BnY2hlY2tkaXIuYycsCiAgICdwZ21rZGlycC5jJywKZGlmZiAtLWdpdCBhL3NyYy9w b3J0L3BnX2JpdHV0aWxzLmMgYi9zcmMvcG9ydC9wZ19iaXR1dGlscy5jCmluZGV4IDY0MGE4OTU2 MWEuLmQ4YjA0NWQwYTQgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2JpdHV0aWxzLmMKKysrIGIv c3JjL3BvcnQvcGdfYml0dXRpbHMuYwpAQCAtMTIsMTMgKzEyLDYgQEAKICAqLwogI2luY2x1ZGUg ImMuaCIKIAotI2lmZGVmIEhBVkVfX0dFVF9DUFVJRAotI2luY2x1ZGUgPGNwdWlkLmg+Ci0jZW5k aWYKLSNpZmRlZiBIQVZFX19DUFVJRAotI2luY2x1ZGUgPGludHJpbi5oPgotI2VuZGlmCi0KICNp bmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAKIApAQCAtMTAzLDEyMyArOTYsMTQgQEAgY29u c3QgdWludDggcGdfbnVtYmVyX29mX29uZXNbMjU2XSA9IHsKIAk0LCA1LCA1LCA2LCA1LCA2LCA2 LCA3LCA1LCA2LCA2LCA3LCA2LCA3LCA3LCA4CiB9OwogCi1zdGF0aWMgaW50CXBnX3BvcGNvdW50 MzJfc2xvdyh1aW50MzIgd29yZCk7Ci1zdGF0aWMgaW50CXBnX3BvcGNvdW50NjRfc2xvdyh1aW50 NjQgd29yZCk7Ci0KLSNpZmRlZiBUUllfUE9QQ05UX0ZBU1QKLXN0YXRpYyBib29sIHBnX3BvcGNv dW50X2F2YWlsYWJsZSh2b2lkKTsKLXN0YXRpYyBpbnQJcGdfcG9wY291bnQzMl9jaG9vc2UodWlu dDMyIHdvcmQpOwotc3RhdGljIGludAlwZ19wb3Bjb3VudDY0X2Nob29zZSh1aW50NjQgd29yZCk7 Ci1zdGF0aWMgaW50CXBnX3BvcGNvdW50MzJfZmFzdCh1aW50MzIgd29yZCk7Ci1zdGF0aWMgaW50 CXBnX3BvcGNvdW50NjRfZmFzdCh1aW50NjQgd29yZCk7Ci0KLWludAkJCSgqcGdfcG9wY291bnQz MikgKHVpbnQzMiB3b3JkKSA9IHBnX3BvcGNvdW50MzJfY2hvb3NlOwotaW50CQkJKCpwZ19wb3Bj b3VudDY0KSAodWludDY0IHdvcmQpID0gcGdfcG9wY291bnQ2NF9jaG9vc2U7Ci0jZW5kaWYJCQkJ CQkJLyogVFJZX1BPUENOVF9GQVNUICovCi0KLSNpZmRlZiBUUllfUE9QQ05UX0ZBU1QKLQotLyoK LSAqIFJldHVybiB0cnVlIGlmIENQVUlEIGluZGljYXRlcyB0aGF0IHRoZSBQT1BDTlQgaW5zdHJ1 Y3Rpb24gaXMgYXZhaWxhYmxlLgotICovCi1zdGF0aWMgYm9vbAotcGdfcG9wY291bnRfYXZhaWxh YmxlKHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLQotI2lm IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKQotCV9fZ2V0X2NwdWlkKDEsICZleHhbMF0sICZleHhb MV0sICZleHhbMl0sICZleHhbM10pOwotI2VsaWYgZGVmaW5lZChIQVZFX19DUFVJRCkKLQlfX2Nw dWlkKGV4eCwgMSk7Ci0jZWxzZQotI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFi bGUKLSNlbmRpZgotCi0JcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8qIFBPUENO VCAqLwotfQotCi0vKgotICogVGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhlIGZpcnN0 IGNhbGwgdG8gcGdfcG9wY291bnQzMiBldGMuCi0gKiBUaGV5IGRldGVjdCB3aGV0aGVyIHdlIGNh biB1c2UgdGhlIGFzbSBpbXBsZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCi0gKiB0aGUgZnVuY3Rp b24gcG9pbnRlcnMgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIGFyZSByb3V0ZWQgZGlyZWN0bHkg dG8KLSAqIHRoZSBjaG9zZW4gaW1wbGVtZW50YXRpb24uCi0gKi8KLXN0YXRpYyBpbnQKLXBnX3Bv cGNvdW50MzJfY2hvb3NlKHVpbnQzMiB3b3JkKQotewotCWlmIChwZ19wb3Bjb3VudF9hdmFpbGFi bGUoKSkKLQl7Ci0JCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX2Zhc3Q7Ci0JCXBnX3Bv cGNvdW50NjQgPSBwZ19wb3Bjb3VudDY0X2Zhc3Q7Ci0JfQotCWVsc2UKLQl7Ci0JCXBnX3BvcGNv dW50MzIgPSBwZ19wb3Bjb3VudDMyX3Nsb3c7Ci0JCXBnX3BvcGNvdW50NjQgPSBwZ19wb3Bjb3Vu dDY0X3Nsb3c7Ci0JfQotCi0JcmV0dXJuIHBnX3BvcGNvdW50MzIod29yZCk7Ci19Ci0KLXN0YXRp YyBpbnQKLXBnX3BvcGNvdW50NjRfY2hvb3NlKHVpbnQ2NCB3b3JkKQotewotCWlmIChwZ19wb3Bj b3VudF9hdmFpbGFibGUoKSkKLQl7Ci0JCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX2Zh c3Q7Ci0JCXBnX3BvcGNvdW50NjQgPSBwZ19wb3Bjb3VudDY0X2Zhc3Q7Ci0JfQotCWVsc2UKLQl7 Ci0JCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX3Nsb3c7Ci0JCXBnX3BvcGNvdW50NjQg PSBwZ19wb3Bjb3VudDY0X3Nsb3c7Ci0JfQotCi0JcmV0dXJuIHBnX3BvcGNvdW50NjQod29yZCk7 Ci19Ci0KLS8qCi0gKiBwZ19wb3Bjb3VudDMyX2Zhc3QKLSAqCQlSZXR1cm4gdGhlIG51bWJlciBv ZiAxIGJpdHMgc2V0IGluIHdvcmQKLSAqLwotc3RhdGljIGludAotcGdfcG9wY291bnQzMl9mYXN0 KHVpbnQzMiB3b3JkKQotewotI2lmZGVmIF9NU0NfVkVSCi0JcmV0dXJuIF9fcG9wY250KHdvcmQp OwotI2Vsc2UKLQl1aW50MzIJCXJlczsKLQotX19hc21fXyBfX3ZvbGF0aWxlX18oIiBwb3BjbnRs ICUxLCUwXG4iOiI9cSIocmVzKToicm0iKHdvcmQpOiJjYyIpOwotCXJldHVybiAoaW50KSByZXM7 Ci0jZW5kaWYKLX0KLQotLyoKLSAqIHBnX3BvcGNvdW50NjRfZmFzdAotICoJCVJldHVybiB0aGUg bnVtYmVyIG9mIDEgYml0cyBzZXQgaW4gd29yZAotICovCi1zdGF0aWMgaW50Ci1wZ19wb3Bjb3Vu dDY0X2Zhc3QodWludDY0IHdvcmQpCi17Ci0jaWZkZWYgX01TQ19WRVIKLQlyZXR1cm4gX19wb3Bj bnQ2NCh3b3JkKTsKLSNlbHNlCi0JdWludDY0CQlyZXM7Ci0KLV9fYXNtX18gX192b2xhdGlsZV9f KCIgcG9wY250cSAlMSwlMFxuIjoiPXEiKHJlcyk6InJtIih3b3JkKToiY2MiKTsKLQlyZXR1cm4g KGludCkgcmVzOwotI2VuZGlmCi19Ci0KLSNlbmRpZgkJCQkJCQkvKiBUUllfUE9QQ05UX0ZBU1Qg Ki8KLQoraW50CXBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCk7CitpbnQJcGdfcG9wY291 bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKTsKIAogLyoKICAqIHBnX3BvcGNvdW50MzJfc2xvdwogICoJ CVJldHVybiB0aGUgbnVtYmVyIG9mIDEgYml0cyBzZXQgaW4gd29yZAogICovCi1zdGF0aWMgaW50 CitpbnQKIHBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCkKIHsKICNpZmRlZiBIQVZFX19C VUlMVElOX1BPUENPVU5UCkBAIC0yNDEsNyArMTI1LDcgQEAgcGdfcG9wY291bnQzMl9zbG93KHVp bnQzMiB3b3JkKQogICogcGdfcG9wY291bnQ2NF9zbG93CiAgKgkJUmV0dXJuIHRoZSBudW1iZXIg b2YgMSBiaXRzIHNldCBpbiB3b3JkCiAgKi8KLXN0YXRpYyBpbnQKK2ludAogcGdfcG9wY291bnQ2 NF9zbG93KHVpbnQ2NCB3b3JkKQogewogI2lmZGVmIEhBVkVfX0JVSUxUSU5fUE9QQ09VTlQKZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3BvcGNudF9jaG9vc2UuYyBiL3NyYy9wb3J0L3BnX3BvcGNu dF9jaG9vc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44OWZjZjI2 MDljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3BvcnQvcGdfcG9wY250X2Nob29zZS5jCkBAIC0w LDAgKzEsOTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BvcGNudF9jaG9vc2Uu YworICoJICBGb3IgRkFTVCBvcGVyYXRpb25zLCB0aGVzZSBtZXRob2RzIGRvIHJ1bnRpbWUgY2hl Y2tzIGFuZCBzZXQgdGhlCisgKiAgICBhcHByb3ByaWF0ZSBmdW5jdGlvbiBwb2ludGVycy4KKyAq CisgKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvcG9ydC9wZ19wb3BjbnRf Y2hvb3NlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgImMuaCIKKwor I2lmZGVmIEhBVkVfX0dFVF9DUFVJRAorI2luY2x1ZGUgPGNwdWlkLmg+CisjZW5kaWYKKyNpZmRl ZiBIQVZFX19DUFVJRAorI2luY2x1ZGUgPGludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJw b3J0L3BnX2JpdHV0aWxzLmgiCisKKworLyogSW4gcGdfYml0dXRpbHMuYyBmaWxlICovCitpbnQJ cGdfcG9wY291bnQzMl9zbG93KHVpbnQzMiB3b3JkKTsKK2ludAlwZ19wb3Bjb3VudDY0X3Nsb3co dWludDY0IHdvcmQpOworCisjaWZkZWYgVFJZX1BPUENOVF9GQVNUCitzdGF0aWMgYm9vbCBwZ19w b3Bjb3VudF9hdmFpbGFibGUodm9pZCk7CitzdGF0aWMgaW50CXBnX3BvcGNvdW50MzJfY2hvb3Nl KHVpbnQzMiB3b3JkKTsKK3N0YXRpYyBpbnQJcGdfcG9wY291bnQ2NF9jaG9vc2UodWludDY0IHdv cmQpOworCisvKiBJbiBwZ19wb3BjbnRfKl9hY2NlbCBzb3VyY2UgZmlsZS4gKi8KK2ludAlwZ19w b3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpOworaW50CXBnX3BvcGNvdW50NjRfZmFzdCh1aW50 NjQgd29yZCk7CisKK2ludAkJCSgqcGdfcG9wY291bnQzMikgKHVpbnQzMiB3b3JkKSA9IHBnX3Bv cGNvdW50MzJfY2hvb3NlOworaW50CQkJKCpwZ19wb3Bjb3VudDY0KSAodWludDY0IHdvcmQpID0g cGdfcG9wY291bnQ2NF9jaG9vc2U7CisjZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICov CisKKyNpZmRlZiBUUllfUE9QQ05UX0ZBU1QKKworLyoKKyAqIFJldHVybiB0cnVlIGlmIENQVUlE IGluZGljYXRlcyB0aGF0IHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gaXMgYXZhaWxhYmxlLgorICov CitzdGF0aWMgYm9vbAorcGdfcG9wY291bnRfYXZhaWxhYmxlKHZvaWQpCit7CisJdW5zaWduZWQg aW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKworI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlE KQorCV9fZ2V0X2NwdWlkKDEsICZleHhbMF0sICZleHhbMV0sICZleHhbMl0sICZleHhbM10pOwor I2VsaWYgZGVmaW5lZChIQVZFX19DUFVJRCkKKwlfX2NwdWlkKGV4eCwgMSk7CisjZWxzZQorI2Vy cm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUKKyNlbmRpZgorCisJcmV0dXJuIChl eHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8qIFBPUENOVCAqLworfQorCisvKgorICogVGhlc2Ug ZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhlIGZpcnN0IGNhbGwgdG8gcGdfcG9wY291bnQzMiBl dGMuCisgKiBUaGV5IGRldGVjdCB3aGV0aGVyIHdlIGNhbiB1c2UgdGhlIGFzbSBpbXBsZW1lbnRh dGlvbnMsIGFuZCByZXBsYWNlCisgKiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgc28gdGhhdCBzdWJz ZXF1ZW50IGNhbGxzIGFyZSByb3V0ZWQgZGlyZWN0bHkgdG8KKyAqIHRoZSBjaG9zZW4gaW1wbGVt ZW50YXRpb24uCisgKi8KK3N0YXRpYyB2b2lkIHNldHVwX2Z1bmN0aW9uX3BvaW50ZXJzKCkKK3sK KwlpZiAocGdfcG9wY291bnRfYXZhaWxhYmxlKCkpCisJeworCQlwZ19wb3Bjb3VudDMyID0gcGdf cG9wY291bnQzMl9mYXN0OworCQlwZ19wb3Bjb3VudDY0ID0gcGdfcG9wY291bnQ2NF9mYXN0Owor CX0KKwllbHNlCisJeworCQlwZ19wb3Bjb3VudDMyID0gcGdfcG9wY291bnQzMl9zbG93OworCQlw Z19wb3Bjb3VudDY0ID0gcGdfcG9wY291bnQ2NF9zbG93OworCX0KK30KKworc3RhdGljIGludAor cGdfcG9wY291bnQzMl9jaG9vc2UodWludDMyIHdvcmQpCit7CisJc2V0dXBfZnVuY3Rpb25fcG9p bnRlcnMoKTsKKwlyZXR1cm4gcGdfcG9wY291bnQzMih3b3JkKTsKK30KKworc3RhdGljIGludAor cGdfcG9wY291bnQ2NF9jaG9vc2UodWludDY0IHdvcmQpCit7CisJc2V0dXBfZnVuY3Rpb25fcG9p bnRlcnMoKTsKKwlyZXR1cm4gcGdfcG9wY291bnQ2NCh3b3JkKTsKK30KKyNlbmRpZgkJCQkJCQkv KiBUUllfUE9QQ05UX0ZBU1QgKi8KZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3BvcGNudF94ODZf NjRfYWNjZWwuYyBiL3NyYy9wb3J0L3BnX3BvcGNudF94ODZfNjRfYWNjZWwuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yZTliMmVlNzc0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3BvcnQvcGdfcG9wY250X3g4Nl82NF9hY2NlbC5jCkBAIC0wLDAgKzEsNTUgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BvcGNudF94ODZfNjRfYWNjZWwuYworICoJICBG YXN0IFBPUENOVCBtZXRob2RzIGZvciB4ODZfNjQuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5 LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL3BvcnQvcGdfcG9wY250X3g4Nl82NF9hY2NlbC5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJjLmgiCisKKyNpbmNsdWRlICJwb3J0L3Bn X2JpdHV0aWxzLmgiCisKK2ludCBwZ19wb3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpOworaW50 IHBnX3BvcGNvdW50NjRfZmFzdCh1aW50NjQgd29yZCk7CisKKyNpZmRlZiBUUllfUE9QQ05UX0ZB U1QKKy8qCisgKiBwZ19wb3Bjb3VudDMyX2Zhc3QKKyAqCQlSZXR1cm4gdGhlIG51bWJlciBvZiAx IGJpdHMgc2V0IGluIHdvcmQKKyAqLworaW50CitwZ19wb3Bjb3VudDMyX2Zhc3QodWludDMyIHdv cmQpCit7CisjaWZkZWYgX01TQ19WRVIKKwlyZXR1cm4gX19wb3BjbnQod29yZCk7CisjZWxzZQor CXVpbnQzMgkJcmVzOworCitfX2FzbV9fIF9fdm9sYXRpbGVfXygiIHBvcGNudGwgJTEsJTBcbiI6 Ij1xIihyZXMpOiJybSIod29yZCk6ImNjIik7CisJcmV0dXJuIChpbnQpIHJlczsKKyNlbmRpZgor fQorCisvKgorICogcGdfcG9wY291bnQ2NF9mYXN0CisgKgkJUmV0dXJuIHRoZSBudW1iZXIgb2Yg MSBiaXRzIHNldCBpbiB3b3JkCisgKi8KK2ludAorcGdfcG9wY291bnQ2NF9mYXN0KHVpbnQ2NCB3 b3JkKQoreworI2lmZGVmIF9NU0NfVkVSCisJcmV0dXJuIF9fcG9wY250NjQod29yZCk7CisjZWxz ZQorCXVpbnQ2NAkJcmVzOworCitfX2FzbV9fIF9fdm9sYXRpbGVfXygiIHBvcGNudHEgJTEsJTBc biI6Ij1xIihyZXMpOiJybSIod29yZCk6ImNjIik7CisJcmV0dXJuIChpbnQpIHJlczsKKyNlbmRp ZgorfQorCisjZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCi0tIAoyLjM0LjEKCg== --_003_BL1PR11MB53042473B7B53B96E43648A7DC292BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v8-0002-Feat-Add-AVX-512-POPCNT-support-initial-checkin.patch" Content-Description: v8-0002-Feat-Add-AVX-512-POPCNT-support-initial-checkin.patch Content-Disposition: attachment; filename="v8-0002-Feat-Add-AVX-512-POPCNT-support-initial-checkin.patch"; size=25137; creation-date="Wed, 13 Mar 2024 19:59:31 GMT"; modification-date="Thu, 14 Mar 2024 19:50:46 GMT" Content-Transfer-Encoding: base64 RnJvbSA2N2E4ODdkOGZlOGJlMzg5YzcwOWZkYzg3YjE5NmNkMmFkNWQyYmY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGludGVsLmNv bT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxMjo0OTo1NyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg Mi8yXSBbRmVhdF0gQWRkIEFWWC01MTIgUE9QQ05UIHN1cHBvcnQgaW5pdGlhbCBjaGVja2luLgoK U2lnbmVkLW9mZi1ieTogUGF1bCBBbW9uc29uIDxwYXVsLmQuYW1vbnNvbkBpbnRlbC5jb20+Ci0t LQogY29uZmlnL2MtY29tcGlsZXIubTQgICAgICAgICAgICAgIHwgIDM3ICsrKysrKwogY29uZmln dXJlICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysK IG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICA3MiArKysrKysrKysrKwogc3Jj L01ha2VmaWxlLmdsb2JhbC5pbiAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BnX2Nv bmZpZy5oLmluICAgICAgICB8ICAxMiArKwogc3JjL2luY2x1ZGUvcG9ydC9wZ19iaXR1dGlscy5o ICAgIHwgIDEwICstCiBzcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkICAgICAgICAgfCAgIDEgKwog c3JjL3BvcnQvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9wb3J0L21lc29u LmJ1aWxkICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL3BvcnQvcGdfYml0dXRpbHMuYyAgICAg ICAgICAgIHwgICA5ICstCiBzcmMvcG9ydC9wZ19wb3BjbnRfY2hvb3NlLmMgICAgICAgfCAgNjcg KysrKysrKysrLQogc3JjL3BvcnQvcGdfcG9wY250X3g4Nl82NF9hY2NlbC5jIHwgIDM2ICsrKysr LQogMTMgZmlsZXMgY2hhbmdlZCwgNDk0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbmZpZy9jLWNvbXBpbGVyLm00IGIvY29uZmlnL2MtY29tcGlsZXIubTQK aW5kZXggMzI2OGE3ODBiYi4uNTRmNzQxNWU1YSAxMDA2NDQKLS0tIGEvY29uZmlnL2MtY29tcGls ZXIubTQKKysrIGIvY29uZmlnL2MtY29tcGlsZXIubTQKQEAgLTY5NCwzICs2OTQsNDAgQEAgaWYg dGVzdCB4IiRBY19jYWNoZXZhciIgPSB4InllcyI7IHRoZW4KIGZpCiB1bmRlZmluZShbQWNfY2Fj aGV2YXJdKWRubAogXSkjIFBHQUNfTE9PTkdBUkNIX0NSQzMyQ19JTlRSSU5TSUNTCisKKyMgUEdB Q19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1MKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIENoZWNrIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgeDg2XzY0IEFWWDUxMiBQT1BD TlQgaW5zdHJ1Y3Rpb25zIHVzaW5nCisjIGludHJpbnNpY3MgdXNlZCBpbiBDUFVJRCBmZWF0dXJl cyBBVlg1MTJGIGFuZCBBVlg1MTJWUE9QQ05URFEuCisjCisjIE9wdGlvbmFsIGNvbXBpbGVyIGZs YWdzIGNhbiBiZSBwYXNzZWQgYXMgYXJndW1lbnQgKGUuZy4gLW1hdng1MTJ2cG9wY250ZHEpLgor IyBJZiB0aGUgaW50cmluc2ljcyBhcmUgc3VwcG9ydGVkIHRoZW4gcGdhY19hdng1MTJfcG9wY250 X2ludHJpbnNpY3MgYW5kCisjIENGTEFHU19BVlg1MTJfUE9QQ05UIGFyZSBzZXQuCitBQ19ERUZV TihbUEdBQ19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1NdLAorW2RlZmluZShbQWNfY2FjaGV2YXJd LCBbQVNfVFJfU0goW3BnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzXyQxXSldKWRubAor QUNfQ0FDSEVfQ0hFQ0soW2ZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPSQxXSwg W0FjX2NhY2hldmFyXSwKK1twZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iJHBnYWNf c2F2ZV9DRkxBR1MgJDEiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVk ZSA8aW1taW50cmluLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+ CisjaW5jbHVkZSA8c3RyaW5nLmg+XSwKKyAgW2NvbnN0IHVpbnQ2NF90ICpidWYgPSBtYWxsb2Mo KHNpemVfdCk2NCk7CisgICB1aW50NjRfdCBwb3BjbnQgPSAwOworICAgX19tNTEyaSBhY2N1bXVs YXRvciA9IF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCk7CisgICBjb25zdCBfX201MTJpIHYgPSBfbW01 MTJfbG9hZHVfc2k1MTIoKGNvbnN0IF9fbTUxMmkgKilidWYpOworICAgY29uc3QgX19tNTEyaSBw ID0gX21tNTEyX3BvcGNudF9lcGk2NCh2KTsKKyAgIG1lbXNldChidWYsIDAsIDY0KTsKKyAgIGFj Y3VtdWxhdG9yID0gX21tNTEyX2FkZF9lcGk2NChhY2N1bXVsYXRvciwgcCk7CisgICBwb3BjbnQg PSBfbW01MTJfcmVkdWNlX2FkZF9lcGk2NChhY2N1bXVsYXRvcik7CisgICAvKiByZXR1cm4gY29t cHV0ZWQgdmFsdWUsIHRvIHByZXZlbnQgdGhlIGFib3ZlIGJlaW5nIG9wdGltaXplZCBhd2F5ICov CisgICByZXR1cm4gcG9wY250ID09IDA7XSldLAorICBbQWNfY2FjaGV2YXI9eWVzXSwKKyAgW0Fj X2NhY2hldmFyPW5vXSkKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiXSkKK2lmIHRlc3QgeCIk QWNfY2FjaGV2YXIiID0geCJ5ZXMiOyB0aGVuCisgIENGTEFHU19BVlg1MTJfUE9QQ05UPSIkMSIK KyAgcGdhY19hdng1MTJfcG9wY250X2ludHJpbnNpY3M9eWVzCitmaQordW5kZWZpbmUoW0FjX2Nh Y2hldmFyXSlkbmwKK10pIyBQR0FDX0FWWDUxMl9QT1BDTlRfSU5UUklOU0lDUwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRl eCAzNmZlZWFmYmIyLi4wZmJmYzdjNzhmIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29u ZmlndXJlCkBAIC02NDcsNiArNjQ3LDcgQEAgTVNHRk1UX0ZMQUdTCiBNU0dGTVQKIFBHX0NSQzMy Q19PQkpTCiBDRkxBR1NfQ1JDCitDRkxBR1NfQVZYNTEyX1BPUENOVAogTElCT0JKUwogT1BFTlNT TAogWlNURApAQCAtMTc0MDQsNiArMTc0MDUsNDEgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9f R0VUX0NQVUlEIDEiID4+Y29uZmRlZnMuaAogCiBmaQogCisjIENoZWNrIGZvciB4ODYgY3B1aWRf Y291bnQgaW5zdHJ1Y3Rpb24KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIF9fZ2V0X2NwdWlkX2NvdW50IiA+JjUKKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciBfX2dldF9jcHVpZF9jb3VudC4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X19nZXRf Y3B1aWRfY291bnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv KiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3B1aWQuaD4KK2ludAorbWFpbiAoKQor ewordW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKyAgX19nZXRfY3B1aWRfY291 bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7CisKKyAgOworICBy ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g OgorICBwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQ9InllcyIKK2Vsc2UKKyAgcGdhY19jdl9fZ2V0 X2NwdWlkX2NvdW50PSJubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkK K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19j dl9fZ2V0X2NwdWlkX2NvdW50IiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9fZ2V0X2NwdWlkX2Nv dW50IiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50IiA9IHgieWVz IjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX19HRVRfQ1BVSURfQ09VTlQgMSIgPj5j b25mZGVmcy5oCisKK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIF9fY3B1aWQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9f Y3B1aWQuLi4gIiA+JjY7IH0KIGlmICR7cGdhY19jdl9fY3B1aWQrOn0gZmFsc2U7IHRoZW4gOgpA QCAtMTc0MzgsNiArMTc0NzQsMTc1IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfX0NQVUlEIDEi ID4+Y29uZmRlZnMuaAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBfX2NwdWlkZXgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIF9fY3B1aWRleC4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X19jcHVpZGV4Kzp9IGZhbHNl OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq LworI2luY2x1ZGUgPGludHJpbi5oPgoraW50CittYWluICgpCit7Cit1bnNpZ25lZCBpbnQgZXh4 WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZGV4KGV4eFswXSwgNywgMCk7CisKKyAg OworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7 IHRoZW4gOgorICBwZ2FjX2N2X19jcHVpZGV4PSJ5ZXMiCitlbHNlCisgIHBnYWNfY3ZfX2NwdWlk ZXg9Im5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg XAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X19jcHVpZGV4 IiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9fY3B1aWRleCIgPiY2OyB9CitpZiB0ZXN0IHgiJHBn YWNfY3ZfX2NwdWlkZXgiID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVf X0NQVUlERVggMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9faW1taW50cmluIiA+JjUKKyRhc19lY2hv X24gImNoZWNraW5nIGZvciBfX2ltbWludHJpbi4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X19p bW1pbnRyaW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor ZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBl bmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8aW1taW50cmluLmg+CitpbnQKK21haW4gKCkK K3sKKy8qIERvbid0IGV4Y2x1ZGUgY29kZSBzbyBhZGRlZCByZXR1cm4uICovCisgICAgcmV0dXJu IDE3MDE7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGlu ayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X19pbW1pbnRyaW49InllcyIKK2Vsc2UKKyAg cGdhY19jdl9faW1taW50cmluPSJubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4 dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk cGdhY19jdl9faW1taW50cmluIiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9faW1taW50cmluIiA+ JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9faW1taW50cmluIiA9IHgieWVzIjsgdGhlbgorCisk YXNfZWNobyAiI2RlZmluZSBIQVZFX19JTU1JTlRSSU4gMSIgPj5jb25mZGVmcy5oCisKK2ZpCisK KyMgQ2hlY2sgZm9yIEludGVsIEFWWDUxMiBpbnRyaW5zaWNzIHRvIGRvIFBPUENOVCBjYWxjdWxh dGlvbnMuCisjCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPSIgPiY1CiskYXNfZWNob19u ICJjaGVja2luZyBmb3IgX21tNTEyX3BvcGNudF9lcGk2NCB3aXRoIENGTEFHUz0uLi4gIiA+JjY7 IH0KK2lmICR7cGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNpY3NfKzp9IGZhbHNlOyB0aGVu IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgcGdhY19zYXZlX0NGTEFH Uz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTICIKK2NhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs dWRlIDxpbW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIu aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KK2ludAorbWFpbiAoKQoreworY29uc3QgdWludDY0X3Qg KmJ1ZiA9IG1hbGxvYygoc2l6ZV90KTY0KTsKKyAgIHVpbnQ2NF90IHBvcGNudCA9IDA7CisgICBf X201MTJpIGFjY3VtdWxhdG9yID0gX21tNTEyX3NldHplcm9fc2k1MTIoKTsKKyAgIGNvbnN0IF9f bTUxMmkgdiA9IF9tbTUxMl9sb2FkdV9zaTUxMigoY29uc3QgX19tNTEyaSAqKWJ1Zik7CisgICBj b25zdCBfX201MTJpIHAgPSBfbW01MTJfcG9wY250X2VwaTY0KHYpOworICAgbWVtc2V0KGJ1Ziwg MCwgNjQpOworICAgYWNjdW11bGF0b3IgPSBfbW01MTJfYWRkX2VwaTY0KGFjY3VtdWxhdG9yLCBw KTsKKyAgIHBvcGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KGFjY3VtdWxhdG9yKTsKKyAg IC8qIHJldHVybiBjb21wdXRlZCB2YWx1ZSwgdG8gcHJldmVudCB0aGUgYWJvdmUgYmVpbmcgb3B0 aW1pemVkIGF3YXkgKi8KKyAgIHJldHVybiBwb3BjbnQgPT0gMDsKKyAgOworICByZXR1cm4gMDsK K30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2Fj X2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc189eWVzCitlbHNlCisgIHBnYWNfY3ZfYXZ4NTEy X3BvcGNudF9pbnRyaW5zaWNzXz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0 CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNp Y3NfIiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNpY3NfIiA+ JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNpY3NfIiA9IHgi eWVzIjsgdGhlbgorICBDRkxBR1NfQVZYNTEyX1BPUENOVD0iIgorICBwZ2FjX2F2eDUxMl9wb3Bj bnRfaW50cmluc2ljcz15ZXMKK2ZpCisKK2lmIHRlc3QgeCIkcGdhY19hdng1MTJfcG9wY250X2lu dHJpbnNpY3MiICE9IHgieWVzIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdT PS1tYXZ4NTEydnBvcGNudGRxIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfbW01MTJf cG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPS1tYXZ4NTEydnBvcGNudGRxLi4uICIgPiY2OyB9Citp ZiAke3BnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzX19tYXZ4NTEydnBvcGNudGRxKzp9 IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgcGdh Y19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIC1tYXZ4NTEy dnBvcGNudGRxIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2luY2x1ZGUg PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgoraW50 CittYWluICgpCit7Citjb25zdCB1aW50NjRfdCAqYnVmID0gbWFsbG9jKChzaXplX3QpNjQpOwor ICAgdWludDY0X3QgcG9wY250ID0gMDsKKyAgIF9fbTUxMmkgYWNjdW11bGF0b3IgPSBfbW01MTJf c2V0emVyb19zaTUxMigpOworICAgY29uc3QgX19tNTEyaSB2ID0gX21tNTEyX2xvYWR1X3NpNTEy KChjb25zdCBfX201MTJpICopYnVmKTsKKyAgIGNvbnN0IF9fbTUxMmkgcCA9IF9tbTUxMl9wb3Bj bnRfZXBpNjQodik7CisgICBtZW1zZXQoYnVmLCAwLCA2NCk7CisgICBhY2N1bXVsYXRvciA9IF9t bTUxMl9hZGRfZXBpNjQoYWNjdW11bGF0b3IsIHApOworICAgcG9wY250ID0gX21tNTEyX3JlZHVj ZV9hZGRfZXBpNjQoYWNjdW11bGF0b3IpOworICAgLyogcmV0dXJuIGNvbXB1dGVkIHZhbHVlLCB0 byBwcmV2ZW50IHRoZSBhYm92ZSBiZWluZyBvcHRpbWl6ZWQgYXdheSAqLworICAgcmV0dXJuIHBv cGNudCA9PSAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9s aW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNz X19tYXZ4NTEydnBvcGNudGRxPXllcworZWxzZQorICBwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50 cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgorZmkKK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9hdng1MTJfcG9wY250X2lu dHJpbnNpY3NfX21hdng1MTJ2cG9wY250ZHEiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X2F2eDUx Ml9wb3BjbnRfaW50cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcSIgPiY2OyB9CitpZiB0ZXN0IHgi JHBnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzX19tYXZ4NTEydnBvcGNudGRxIiA9IHgi eWVzIjsgdGhlbgorICBDRkxBR1NfQVZYNTEyX1BPUENOVD0iLW1hdng1MTJ2cG9wY250ZHEiCisg IHBnYWNfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzPXllcworZmkKKworCiskYXNfZWNobyAiI2Rl ZmluZSBIQVZFX19BVlg1MTJfUE9QQ05UIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKICMgQ2hl Y2sgZm9yIEludGVsIFNTRSA0LjIgaW50cmluc2ljcyB0byBkbyBDUkMgY2FsY3VsYXRpb25zLgog IwogIyBGaXJzdCBjaGVjayBpZiB0aGUgX21tX2NyYzMyX3U4IGFuZCBfbW1fY3JjMzJfdTY0IGlu dHJpbnNpY3MgY2FuIGJlIHVzZWQKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy ZS5hYwppbmRleCA1N2Y3MzQ4NzllLi4zYzc0MWQ0NTdkIDEwMDY0NAotLS0gYS9jb25maWd1cmUu YWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yMDUyLDYgKzIwNTIsMTggQEAgaWYgdGVzdCB4IiRw Z2FjX2N2X19nZXRfY3B1aWQiID0geCJ5ZXMiOyB0aGVuCiAgIEFDX0RFRklORShIQVZFX19HRVRf Q1BVSUQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2dldF9jcHVpZC5dKQogZmkKIAor IyBDaGVjayBmb3IgeDg2IGNwdWlkX2NvdW50IGluc3RydWN0aW9uCitBQ19DQUNIRV9DSEVDSyhb Zm9yIF9fZ2V0X2NwdWlkX2NvdW50XSwgW3BnYWNfY3ZfX2dldF9jcHVpZF9jb3VudF0sCitbQUNf TElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGNwdWlkLmg+XSwKKyAgW1t1 bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZF9jb3VudCg3 LCAwLCAmZXh4WzBdLCAmZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKKyAgXV0pXSwKKyAgW3Bn YWNfY3ZfX2dldF9jcHVpZF9jb3VudD0ieWVzIl0sCisgIFtwZ2FjX2N2X19nZXRfY3B1aWRfY291 bnQ9Im5vIl0pXSkKK2lmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50IiA9IHgieWVz IjsgdGhlbgorICBBQ19ERUZJTkUoSEFWRV9fR0VUX0NQVUlEX0NPVU5ULCAxLCBbRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWQuXSkKK2ZpCisKIEFDX0NBQ0hFX0NIRUNLKFtmb3Ig X19jcHVpZF0sIFtwZ2FjX2N2X19jcHVpZF0sCiBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJP R1JBTShbI2luY2x1ZGUgPGludHJpbi5oPl0sCiAgIFtbdW5zaWduZWQgaW50IGV4eFs0XSA9IHsw LCAwLCAwLCAwfTsKQEAgLTIwNjMsNiArMjA3NSwzOCBAQCBpZiB0ZXN0IHgiJHBnYWNfY3ZfX2Nw dWlkIiA9IHgieWVzIjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9fQ1BVSUQsIDEsIFtEZWZpbmUg dG8gMSBpZiB5b3UgaGF2ZSBfX2NwdWlkLl0pCiBmaQogCitBQ19DQUNIRV9DSEVDSyhbZm9yIF9f Y3B1aWRleF0sIFtwZ2FjX2N2X19jcHVpZGV4XSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19Q Uk9HUkFNKFsjaW5jbHVkZSA8aW50cmluLmg+XSwKKyAgW1t1bnNpZ25lZCBpbnQgZXh4WzRdID0g ezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZGV4KGV4eFswXSwgNywgMCk7CisgIF1dKV0sCisg IFtwZ2FjX2N2X19jcHVpZGV4PSJ5ZXMiXSwKKyAgW3BnYWNfY3ZfX2NwdWlkZXg9Im5vIl0pXSkK K2lmIHRlc3QgeCIkcGdhY19jdl9fY3B1aWRleCIgPSB4InllcyI7IHRoZW4KKyAgQUNfREVGSU5F KEhBVkVfX0NQVUlERVgsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2NwdWlkZXguXSkK K2ZpCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgX19pbW1pbnRyaW5dLCBbcGdhY19jdl9faW1taW50 cmluXSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8aW1taW50 cmluLmg+XSwKKyAgW1svKiBEb24ndCBleGNsdWRlIGNvZGUgc28gYWRkZWQgcmV0dXJuLiAqLwor ICAgIHJldHVybiAxNzAxOworICBdXSldLAorICBbcGdhY19jdl9faW1taW50cmluPSJ5ZXMiXSwK KyAgW3BnYWNfY3ZfX2ltbWludHJpbj0ibm8iXSldKQoraWYgdGVzdCB4IiRwZ2FjX2N2X19pbW1p bnRyaW4iID0geCJ5ZXMiOyB0aGVuCisgIEFDX0RFRklORShIQVZFX19JTU1JTlRSSU4sIDEsIFtE ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBpbW1pbnRyaW4uXSkKK2ZpCisKKyMgQ2hlY2sgZm9yIElu dGVsIEFWWDUxMiBpbnRyaW5zaWNzIHRvIGRvIFBPUENOVCBjYWxjdWxhdGlvbnMuCisjCitQR0FD X0FWWDUxMl9QT1BDTlRfSU5UUklOU0lDUyhbXSkKK2lmIHRlc3QgeCIkcGdhY19hdng1MTJfcG9w Y250X2ludHJpbnNpY3MiICE9IHgieWVzIjsgdGhlbgorICBQR0FDX0FWWDUxMl9QT1BDTlRfSU5U UklOU0lDUyhbLW1hdng1MTJ2cG9wY250ZHFdKQorICBBQ19ERUZJTkUoSEFWRV9fQVZYNTEyX1BP UENOVCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGNwdQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIEFWWDUxMiBQT1BDTlQuXSkKK2ZpCitBQ19T VUJTVChDRkxBR1NfQVZYNTEyX1BPUENOVCkKKwogIyBDaGVjayBmb3IgSW50ZWwgU1NFIDQuMiBp bnRyaW5zaWNzIHRvIGRvIENSQyBjYWxjdWxhdGlvbnMuCiAjCiAjIEZpcnN0IGNoZWNrIGlmIHRo ZSBfbW1fY3JjMzJfdTggYW5kIF9tbV9jcmMzMl91NjQgaW50cmluc2ljcyBjYW4gYmUgdXNlZApk aWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA4NTc4OGY5ZGQ4Li4z OTQ4MGI0MjUxIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAt MTc3Myw2ICsxNzczLDM3IEBAIGVsaWYgY2MubGlua3MoJycnCiBlbmRpZgogCiAKK2lmIGNjLmxp bmtzKCcnJworICAgICNpbmNsdWRlIDxjcHVpZC5oPgorICAgIGludCBtYWluKGludCBhcmcsIGNo YXIgKiphcmd2KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAw LCAwfTsKKyAgICAgICAgX19nZXRfY3B1aWRfY291bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwg JmV4eFsyXSwgJmV4eFszXSk7CisgICAgfQorICAgICcnJywgbmFtZTogJ19fZ2V0X2NwdWlkX2Nv dW50JywKKyAgICBhcmdzOiB0ZXN0X2NfYXJncykKKyAgY2RhdGEuc2V0KCdIQVZFX19HRVRfQ1BV SURfQ09VTlQnLCAxKQorZWxpZiBjYy5saW5rcygnJycKKyAgICAjaW5jbHVkZSA8aW50cmluLmg+ CisgICAgaW50IG1haW4oaW50IGFyZywgY2hhciAqKmFyZ3YpCisgICAgeworICAgICAgICB1bnNp Z25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICAgICAgICBfX2NwdWlkZXgoZXh4LCA3 LCAwKTsKKyAgICB9CisgICAgJycnLCBuYW1lOiAnX19jcHVpZGV4JywKKyAgICBhcmdzOiB0ZXN0 X2NfYXJncykKKyAgY2RhdGEuc2V0KCdIQVZFX19DUFVJREVYJywgMSkKK2VuZGlmCisKKworIyBD aGVjayBmb3IgaGVhZGVyIGltbWludHJpbi5oCitpZiBjYy5oYXNfaGVhZGVyKCdpbW1pbnRyaW4u aCcsCisgICAgaW5jbHVkZV9kaXJlY3RvcmllczogcG9zdGdyZXNfaW5jLCBhcmdzOiB0ZXN0X2Nf YXJncykKKyAgY2RhdGEuc2V0KCdIQVZFX19JTU1JTlRSSU4nLCAxLAorICAgICAgICAgICAgZGVz Y3JpcHRpb246ICdEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgaW1taW50cmluLmggaGVhZGVy IGZpbGUuJykKK2VuZGlmCisKKwogIyBEZWZlbmQgYWdhaW5zdCBjbGFuZyBiZWluZyB1c2VkIG9u IHg4Ni0zMiB3aXRob3V0IFNTRTIgZW5hYmxlZC4gIEFzIGN1cnJlbnQKICMgdmVyc2lvbnMgb2Yg Y2xhbmcgZG8gbm90IHVuZGVyc3RhbmQgLWZleGNlc3MtcHJlY2lzaW9uPXN0YW5kYXJkLCB0aGUg dXNlIG9mCiAjIHg4NyBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGxlYWRzIHRvIHByb2JsZW1z IGxpa2UgaXNpbmYgcG9zc2libHkgcmV0dXJuaW5nCkBAIC0yMTQ3LDYgKzIxNzgsNDcgQEAgZWxp ZiBob3N0X2NwdSA9PSAncHBjJyBvciBob3N0X2NwdSA9PSAncHBjNjQnCiBlbmRpZgogCiAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBBVlggNTEyIFBPUENOVCBJbnRyaW5zaWMgY2hlY2sKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaGF2ZV9hdng1 MTJfcG9wY250ID0gZmFsc2UKK2NmbGFnc19hdng1MTJfcG9wY250ID0gW10KK2lmIGhvc3RfY3B1 ID09ICd4ODZfNjQnCisgIHRlc3RfZmxhZ3MgPSBbJy1tYXZ4NTEydnBvcGNudGRxJ10KKyAgaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgICAgdGVzdF9mbGFncyA9IFsnL2FyY2g6QVZYNTEy J10KKyAgZW5kaWYKKyAgcHJvZyA9ICcnJworICAgICAgI2luY2x1ZGUgPGltbWludHJpbi5oPgor ICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICAg ICAgI2luY2x1ZGUgPHN0cmluZy5oPgorICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICB7Cisg ICAgICAgIGNvbnN0IHVpbnQ2NF90ICpidWYgPSBtYWxsb2MoKHNpemVfdCk2NCk7CisgICAgICAg IHVpbnQ2NF90IHBvcGNudCA9IDA7CisgICAgICAgIF9fbTUxMmkgYWNjdW11bGF0b3IgPSBfbW01 MTJfc2V0emVyb19zaTUxMigpOworICAgICAgICBjb25zdCBfX201MTJpIHYgPSBfbW01MTJfbG9h ZHVfc2k1MTIoKGNvbnN0IF9fbTUxMmkgKilidWYpOworICAgICAgICBjb25zdCBfX201MTJpIHAg PSBfbW01MTJfcG9wY250X2VwaTY0KHYpOworICAgICAgICBtZW1zZXQoYnVmLCAwLCA2NCk7Cisg ICAgICAgIGFjY3VtdWxhdG9yID0gX21tNTEyX2FkZF9lcGk2NChhY2N1bXVsYXRvciwgcCk7Cisg ICAgICAgIHBvcGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KGFjY3VtdWxhdG9yKTsKKyAg ICAgICAgLyogcmV0dXJuIGNvbXB1dGVkIHZhbHVlLCB0byBwcmV2ZW50IHRoZSBhYm92ZSBiZWlu ZyBvcHRpbWl6ZWQgYXdheSAqLworICAgICAgICByZXR1cm4gcG9wY250ID09IDA7CisgICAgICB9 JycnCisgIGlmIGNjLmxpbmtzKHByb2csIG5hbWU6ICdfbW01MTJfKiBtZXRob2RzIHdpdGggLW1h dng1MTJ2cG9wY250ZHEgZmxhZy4nLAorICAgICAgICAgICAgICBhcmdzOiB0ZXN0X2NfYXJncyAr IHRlc3RfZmxhZ3MpCisgICAgaGF2ZV9hdng1MTJfcG9wY250ID0gdHJ1ZQorICAgIGNkYXRhLnNl dCgnVVNFX0FWWDUxMl9QT1BDTlRfV0lUSF9SVU5USU1FX0NIRUNLJywgMSkKKyAgICBjZGF0YS5z ZXQoJ0hBVkVfX0FWWDUxMl9QT1BDTlQnLCAxKQorICAgIGNmbGFnc19hdng1MTJfcG9wY250ID0g dGVzdF9mbGFncworICBlbHNlCisgICAgaGF2ZV9hdng1MTJfcG9wY250ID0gZmFsc2UKKyAgICBj ZGF0YS5zZXQoJ1VTRV9BVlg1MTJfUE9QQ05UX1dJVEhfUlVOVElNRV9DSEVDSycsIDEpCisgICAg Y2ZsYWdzX2F2eDUxMl9wb3BjbnQgPSBbXQorICBlbmRpZiAjIGNvbXBpbGUvbGluayB0ZXN0Citl bmRpZiAjIGhvc3RfY3B1IGNoZWNrCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIExpYnJhcnkgLyBPUyB0ZXN0cwpk aWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtlZmlsZS5nbG9iYWwu aW4KaW5kZXggOGIzZjhjMjRlMC4uMDg5ZjQ5YjdmMyAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxl Lmdsb2JhbC5pbgorKysgYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCkBAIC0yNjMsNiArMjYzLDcg QEAgQ1hYRkxBR1NfU0xfTU9EVUxFID0gQENYWEZMQUdTX1NMX01PRFVMRUAKIENGTEFHU19VTlJP TExfTE9PUFMgPSBAQ0ZMQUdTX1VOUk9MTF9MT09QU0AKIENGTEFHU19WRUNUT1JJWkUgPSBAQ0ZM QUdTX1ZFQ1RPUklaRUAKIENGTEFHU19DUkMgPSBAQ0ZMQUdTX0NSQ0AKK0NGTEFHU19BVlg1MTJf UE9QQ05UID0gQENGTEFHU19BVlg1MTJfUE9QQ05UQAogUEVSTUlUX0RFQ0xBUkFUSU9OX0FGVEVS X1NUQVRFTUVOVCA9IEBQRVJNSVRfREVDTEFSQVRJT05fQUZURVJfU1RBVEVNRU5UQAogQ1hYRkxB R1MgPSBAQ1hYRkxBR1NACiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu IGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggNTkxZTFjYTNkZi4uZTRkNTZkZWU3 OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1 ZGUvcGdfY29uZmlnLmguaW4KQEAgLTU1NSw2ICs1NTUsMTggQEAKIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIF9fY3B1aWQuICovCiAjdW5kZWYgSEFWRV9fQ1BVSUQKIAorLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWRfY291bnQuICovCisjdW5kZWYgSEFWRV9fR0VUX0NQ VUlEX0NPVU5UCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIF9fZ2V0X2NwdWlkZXguICov CisjdW5kZWYgSEFWRV9fR0VUX0NQVUlERVgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg IGltbWludHJpbi4gKi8KKyN1bmRlZiBIQVZFX19JTU1JTlRSSU4KKworLyogRGVmaW5lIHRvIDEg aWYgeW91IGhhdmUgQVZYNTEyLiAqLworI3VuZGVmIEhBVkVfX0FWWDUxMl9QT1BDTlQKKwogLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWQuICovCiAjdW5kZWYgSEFWRV9fR0VU X0NQVUlECiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaCBiL3Ny Yy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaAppbmRleCA0NmJmNGYwMTAzLi5jYzQyY2U0OWM5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcG9ydC9wZ19iaXR1dGlscy5oCkBAIC0zMDAsMTkgKzMwMCwxOSBAQCBwZ19jZWlsX2xv ZzJfNjQodWludDY0IG51bSkKIAogI2lmZGVmIFRSWV9QT1BDTlRfRkFTVAogLyogQXR0ZW1wdCB0 byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiwgYnV0IHBlcmZvcm0gYSBydW50aW1lIGNoZWNr IGZpcnN0ICovCi1leHRlcm4gUEdETExJTVBPUlQgaW50ICgqcGdfcG9wY291bnQzMikgKHVpbnQz MiB3b3JkKTsKLWV4dGVybiBQR0RMTElNUE9SVCBpbnQgKCpwZ19wb3Bjb3VudDY0KSAodWludDY0 IHdvcmQpOwotCitleHRlcm4gUEdETExJTVBPUlQgaW50CSgqcGdfcG9wY291bnQzMikgKHVpbnQz MiB3b3JkKTsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQJKCpwZ19wb3Bjb3VudDY0KSAodWludDY0 IHdvcmQpOworZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ2NCAoKnBnX3BvcGNvdW50KSAoY29uc3Qg Y2hhciAqYnVmLCBpbnQgYnl0ZXMpOwogI2Vsc2UKIC8qIFVzZSBhIHBvcnRhYmxlIGltcGxlbWVu dGF0aW9uIC0tIG5vIG5lZWQgZm9yIGEgZnVuY3Rpb24gcG9pbnRlci4gKi8KIGV4dGVybiBpbnQJ cGdfcG9wY291bnQzMih1aW50MzIgd29yZCk7CiBleHRlcm4gaW50CXBnX3BvcGNvdW50NjQodWlu dDY0IHdvcmQpOwogCi0jZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCi0KIC8qIENv dW50IHRoZSBudW1iZXIgb2Ygb25lLWJpdHMgaW4gYSBieXRlIGFycmF5ICovCiBleHRlcm4gdWlu dDY0IHBnX3BvcGNvdW50KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAorI2VuZGlmCQkJ CQkJCS8qIFRSWV9QT1BDTlRfRkFTVCAqLworCiAvKgogICogUm90YXRlIHRoZSBiaXRzIG9mICJ3 b3JkIiB0byB0aGUgcmlnaHQvbGVmdCBieSBuIGJpdHMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9t YWtlZmlsZXMvbWVzb24uYnVpbGQgYi9zcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkCmluZGV4IGIw ZjQxNzhiM2QuLmVlMzY0NzI4MmUgMTAwNjQ0Ci0tLSBhL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVp bGQKKysrIGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZApAQCAtMTAwLDYgKzEwMCw3IEBAIHBn eHNfa3YgPSB7CiAgICAgJyAnLmpvaW4oY2ZsYWdzX25vX2RlY2xfYWZ0ZXJfc3RhdGVtZW50KSwK IAogICAnQ0ZMQUdTX0NSQyc6ICcgJy5qb2luKGNmbGFnc19jcmMpLAorICAnQ0ZMQUdTX0FWWDUx Ml9QT1BDTlQnOiAnICcuam9pbihjZmxhZ3NfYXZ4NTEyX3BvcGNudCksCiAgICdDRkxBR1NfVU5S T0xMX0xPT1BTJzogJyAnLmpvaW4odW5yb2xsX2xvb3BzX2NmbGFncyksCiAgICdDRkxBR1NfVkVD VE9SSVpFJzogJyAnLmpvaW4odmVjdG9yaXplX2NmbGFncyksCiAKZGlmZiAtLWdpdCBhL3NyYy9w b3J0L01ha2VmaWxlIGIvc3JjL3BvcnQvTWFrZWZpbGUKaW5kZXggMTJjNTZiMGJhNy4uMGI3Njky NjMwMSAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvTWFrZWZpbGUKKysrIGIvc3JjL3BvcnQvTWFrZWZp bGUKQEAgLTg5LDYgKzg5LDExIEBAIHBnX2NyYzMyY19zc2U0Mi5vOiBDRkxBR1MrPSQoQ0ZMQUdT X0NSQykKIHBnX2NyYzMyY19zc2U0Ml9zaGxpYi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKIHBn X2NyYzMyY19zc2U0Ml9zcnYubzogQ0ZMQUdTKz0kKENGTEFHU19DUkMpCiAKKyMgTmV3ZXIgSW50 ZWwgcHJvY2Vzc29ycyBjYW4gdXNlIEFWWC01MTIgUE9QQ05UIENhcGFiaWxpdGllcyAoMDEvMzAv MjAyNCkKK3BnX3BvcGNudF94ODZfNjRfYWNjZWwubzogQ0ZMQUdTKz0kKENGTEFHU19BVlg1MTJf UE9QQ05UKQorcGdfcG9wY250X3g4Nl82NF9hY2NlbF9zaGxpYi5vOiBDRkxBR1MrPSQoQ0ZMQUdT X0FWWDUxMl9QT1BDTlQpCitwZ19wb3BjbnRfeDg2XzY0X2FjY2VsX3Nydi5vOiBDRkxBR1MrPSQo Q0ZMQUdTX0FWWDUxMl9QT1BDTlQpCisKICMgYWxsIHZlcnNpb25zIG9mIHBnX2NyYzMyY19hcm12 OC5vIG5lZWQgQ0ZMQUdTX0NSQwogcGdfY3JjMzJjX2FybXY4Lm86IENGTEFHUys9JChDRkxBR1Nf Q1JDKQogcGdfY3JjMzJjX2FybXY4X3NobGliLm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQpkaWZm IC0tZ2l0IGEvc3JjL3BvcnQvbWVzb24uYnVpbGQgYi9zcmMvcG9ydC9tZXNvbi5idWlsZAppbmRl eCBlZDg4MjhjNzM5Li5kNzkzMDY3MmNiIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9tZXNvbi5idWls ZAorKysgYi9zcmMvcG9ydC9tZXNvbi5idWlsZApAQCAtOCw3ICs4LDYgQEAgcGdwb3J0X3NvdXJj ZXMgPSBbCiAgICdwYXRoLmMnLAogICAncGdfYml0dXRpbHMuYycsCiAgICdwZ19wb3BjbnRfY2hv b3NlLmMnLAotICAncGdfcG9wY250X3g4Nl82NF9hY2NlbC5jJywKICAgJ3BnX3N0cm9uZ19yYW5k b20uYycsCiAgICdwZ2NoZWNrZGlyLmMnLAogICAncGdta2RpcnAuYycsCkBAIC04Niw2ICs4NSw3 IEBAIHJlcGxhY2VfZnVuY3NfcG9zID0gWwogICBbJ3BnX2NyYzMyY19zc2U0MicsICdVU0VfU1NF NDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSycsICdjcmMnXSwKICAgWydwZ19jcmMzMmNfc3Nl NDJfY2hvb3NlJywgJ1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCiAgIFsn cGdfY3JjMzJjX3NiOCcsICdVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSyddLAor ICBbJ3BnX3BvcGNudF94ODZfNjRfYWNjZWwnLCAnVVNFX0FWWDUxMl9QT1BDTlRfV0lUSF9SVU5U SU1FX0NIRUNLJywgJ2F2eDUxMiddLAogCiAgICMgYXJtIC8gYWFyY2g2NAogICBbJ3BnX2NyYzMy Y19hcm12OCcsICdVU0VfQVJNVjhfQ1JDMzJDJ10sCkBAIC0xMDAsOCArMTAwLDggQEAgcmVwbGFj ZV9mdW5jc19wb3MgPSBbCiAgIFsncGdfY3JjMzJjX3NiOCcsICdVU0VfU0xJQ0lOR19CWV84X0NS QzMyQyddLAogXQogCi1wZ3BvcnRfY2ZsYWdzID0geydjcmMnOiBjZmxhZ3NfY3JjfQotcGdwb3J0 X3NvdXJjZXNfY2ZsYWdzID0geydjcmMnOiBbXX0KK3BncG9ydF9jZmxhZ3MgPSB7J2NyYyc6IGNm bGFnc19jcmMsICdhdng1MTInOiBjZmxhZ3NfYXZ4NTEyX3BvcGNudH0KK3BncG9ydF9zb3VyY2Vz X2NmbGFncyA9IHsnY3JjJzogW10sICdhdng1MTInOiBbXX0KIAogZm9yZWFjaCBmIDogcmVwbGFj ZV9mdW5jc19uZWcKICAgZnVuYyA9IGYuZ2V0KDApCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19i aXR1dGlscy5jIGIvc3JjL3BvcnQvcGdfYml0dXRpbHMuYwppbmRleCBkOGIwNDVkMGE0Li4yMmM1 MWMxNjc5IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19iaXR1dGlscy5jCisrKyBiL3NyYy9wb3J0 L3BnX2JpdHV0aWxzLmMKQEAgLTk4LDYgKzk4LDcgQEAgY29uc3QgdWludDggcGdfbnVtYmVyX29m X29uZXNbMjU2XSA9IHsKIAogaW50CXBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCk7CiBp bnQJcGdfcG9wY291bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKTsKK3VpbnQ2NCBwZ19wb3Bjb3VudF9z bG93KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAogLyoKICAqIHBnX3BvcGNvdW50MzJf c2xvdwpAQCAtMTcwLDYgKzE3MSwxMiBAQCBwZ19wb3Bjb3VudDY0KHVpbnQ2NCB3b3JkKQogCXJl dHVybiBwZ19wb3Bjb3VudDY0X3Nsb3cod29yZCk7CiB9CiAKK3VpbnQ2NAorcGdfcG9wY291bnQo Y29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCit7CisJcmV0dXJuIHBnX3BvcGNvdW50X3Nsb3co YnVmLCBieXRlcyk7Cit9CisKICNlbmRpZgkJCQkJCQkvKiAhVFJZX1BPUENOVF9GQVNUICovCiAK IC8qCkBAIC0xNzcsNyArMTg0LDcgQEAgcGdfcG9wY291bnQ2NCh1aW50NjQgd29yZCkKICAqCQlS ZXR1cm5zIHRoZSBudW1iZXIgb2YgMS1iaXRzIGluIGJ1ZgogICovCiB1aW50NjQKLXBnX3BvcGNv dW50KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKQorcGdfcG9wY291bnRfc2xvdyhjb25zdCBj aGFyICpidWYsIGludCBieXRlcykKIHsKIAl1aW50NjQJCXBvcGNudCA9IDA7CiAKZGlmZiAtLWdp dCBhL3NyYy9wb3J0L3BnX3BvcGNudF9jaG9vc2UuYyBiL3NyYy9wb3J0L3BnX3BvcGNudF9jaG9v c2UuYwppbmRleCA4OWZjZjI2MDljLi5hYzEzNDQ0MTVkIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9w Z19wb3BjbnRfY2hvb3NlLmMKKysrIGIvc3JjL3BvcnQvcGdfcG9wY250X2Nob29zZS5jCkBAIC0y NiwxOCArMjYsMjMgQEAKIC8qIEluIHBnX2JpdHV0aWxzLmMgZmlsZSAqLwogaW50CXBnX3BvcGNv dW50MzJfc2xvdyh1aW50MzIgd29yZCk7CiBpbnQJcGdfcG9wY291bnQ2NF9zbG93KHVpbnQ2NCB3 b3JkKTsKK3VpbnQ2NCBwZ19wb3Bjb3VudF9zbG93KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVz KTsKIAogI2lmZGVmIFRSWV9QT1BDTlRfRkFTVAogc3RhdGljIGJvb2wgcGdfcG9wY291bnRfYXZh aWxhYmxlKHZvaWQpOworc3RhdGljIGJvb2wgcGdfcG9wY291bnQ1MTJfYXZhaWxhYmxlKHZvaWQp Owogc3RhdGljIGludAlwZ19wb3Bjb3VudDMyX2Nob29zZSh1aW50MzIgd29yZCk7CiBzdGF0aWMg aW50CXBnX3BvcGNvdW50NjRfY2hvb3NlKHVpbnQ2NCB3b3JkKTsKK3N0YXRpYyB1aW50NjQJcGdf cG9wY291bnRfY2hvb3NlKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAogLyogSW4gcGdf cG9wY250XypfYWNjZWwgc291cmNlIGZpbGUuICovCiBpbnQJcGdfcG9wY291bnQzMl9mYXN0KHVp bnQzMiB3b3JkKTsKIGludAlwZ19wb3Bjb3VudDY0X2Zhc3QodWludDY0IHdvcmQpOwordWludDY0 IHBnX3BvcGNvdW50X2Zhc3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwogCiBpbnQJCQko KnBnX3BvcGNvdW50MzIpICh1aW50MzIgd29yZCkgPSBwZ19wb3Bjb3VudDMyX2Nob29zZTsKIGlu dAkJCSgqcGdfcG9wY291bnQ2NCkgKHVpbnQ2NCB3b3JkKSA9IHBnX3BvcGNvdW50NjRfY2hvb3Nl OwordWludDY0ICAgICAgKCpwZ19wb3Bjb3VudCkgKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVz KSA9IHBnX3BvcGNvdW50X2Nob29zZTsKICNlbmRpZgkJCQkJCQkvKiBUUllfUE9QQ05UX0ZBU1Qg Ki8KIAogI2lmZGVmIFRSWV9QT1BDTlRfRkFTVApAQCAtNjEsNiArNjYsNTIgQEAgcGdfcG9wY291 bnRfYXZhaWxhYmxlKHZvaWQpCiAJcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8q IFBPUENOVCAqLwogfQogCisvKgorICogUmV0dXJuIHRydWUgaWYgQ1BVSUQgaW5kaWNhdGVzIHRo YXQgdGhlIEFWWDUxMl9QT1BDTlQgaW5zdHJ1Y3Rpb24gaXMKKyAqIGF2YWlsYWJsZS4gVGhpcyBp cyBzaW1pbGFyIHRvIHRoZSBtZXRob2QgYWJvdmU7IHNlZQorICogaHR0cHM6Ly9lbi53aWtpcGVk aWEub3JnL3dpa2kvQ1BVSUQjRUFYPTcsX0VDWD0wOl9FeHRlbmRlZF9GZWF0dXJlcworICoKKyAq IEZpbmFsbHksIHdlIG1ha2Ugc3VyZSB0aGUgeGdldGJ2IHJlc3VsdCBpcyBjb25zaXN0ZW50IHdp dGggdGhlIENQVUlECisgKiByZXN1bHRzLgorICovCitzdGF0aWMgYm9vbAorcGdfcG9wY291bnQ1 MTJfYXZhaWxhYmxlKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAw fTsKKworCS8qIENoZWNrIGZvciBBVlg1MTJWUE9QQ05URFEgYW5kIEFWWDUxMkYgKi8KKyNpZiBk ZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKKwlfX2dldF9jcHVpZF9jb3VudCg3LCAwLCAm ZXh4WzBdLCAmZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9f Q1BVSURFWCkKKwlfX2NwdWlkZXgoZXh4LCA3LCAwKTsKKyNlbmRpZgorCisJaWYgKChleHhbMl0g JiAoMHgwMDAwNDAwMCkpICE9IDAgJiYgKGV4eFsxXSAmICgweDAwMDEwMDAwKSkgIT0gMCkKKwl7 CisgICAgICAgIC8qCisgICAgICAgICAqIENQVUlEIHN1Y2NlZWRlZCwgZG9lcyB0aGUgY3VycmVu dCBydW5uaW5nIE9TIHN1cHBvcnQgdGhlCisgICAgICAgICAqIFpNTSByZWdpc3RlcnMgd2hpY2gg YXJlIHJlcXVpcmVkIGZvciBBVlg1MTI/IFRoaXMgY2hlY2sgaXMKKyAgICAgICAgICogcmVxdWly ZWQgdG8gbWFrZSBzdXJlIGFuIG9sZCBPUyBvbiBhIG5ldyBDUFUgaXMgY29ycmVjdGx5CisgICAg ICAgICAqIGNoZWNrZWQgb3IgYSBWTSBoeXBlcnZpc29yIGlzIG5vdCBleGNsdWRpbmcgQVZYNTEy IFpNTQorICAgICAgICAgKiBzdXBwb3J0IGluIHRoZSBWTTsgc2VlICI1LjEuOSBEZXRlY3Rpb24g b2YgQVZYIEluc3RydWN0aW9ucyIKKyAgICAgICAgICogaHR0cHM6Ly93d3cuaW50ZWwuY29tL2Nv bnRlbnQvd3d3L3VzL2VuL2NvbnRlbnQtZGV0YWlscy82NzE0ODgvaW50ZWwtNjQtYW5kLWlhLTMy LWFyY2hpdGVjdHVyZXMtb3B0aW1pemF0aW9uLXJlZmVyZW5jZS1tYW51YWwtdm9sdW1lLTEuaHRt bAorICAgICAgICAgKi8KKyAgICAgICAgdWludDY0IHhjciA9IDA7CisjaWZkZWYgX01TQ19WRVIK KyAgICAgICAgdWludDY0IGhpZ2hsb3cgPSBfeGdldGJ2KHhjcik7CisKKyAgICAgICAgcmV0dXJu IChoaWdobG93ICYgMHhFMCkgIT0gMDsKKyNlbHNlCisgICAgICAgIHVpbnQzMiBoaWdoOworICAg ICAgICB1aW50MzIgbG93OworCisgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Z2V0YnZc dFxuIiA6ICI9YSIobG93KSwgIj1kIihoaWdoKSA6ICJjIih4Y3IpKTsKKyAgICAgICAgcmV0dXJu IChsb3cgJiAweEUwKSAhPSAwOworI2VuZGlmCisgICAgfSAvKiBQT1BDTlQgNTEyICovCisgICAg cmV0dXJuIGZhbHNlOworfQorCiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24g dGhlIGZpcnN0IGNhbGwgdG8gcGdfcG9wY291bnQzMiBldGMuCiAgKiBUaGV5IGRldGVjdCB3aGV0 aGVyIHdlIGNhbiB1c2UgdGhlIGFzbSBpbXBsZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCkBAIC02 OSwxNSArMTIwLDIzIEBAIHBnX3BvcGNvdW50X2F2YWlsYWJsZSh2b2lkKQogICovCiBzdGF0aWMg dm9pZCBzZXR1cF9mdW5jdGlvbl9wb2ludGVycygpCiB7Ci0JaWYgKHBnX3BvcGNvdW50X2F2YWls YWJsZSgpKQorCWlmIChwZ19wb3Bjb3VudDUxMl9hdmFpbGFibGUoKSkKIAl7CiAJCXBnX3BvcGNv dW50MzIgPSBwZ19wb3Bjb3VudDMyX2Zhc3Q7CiAJCXBnX3BvcGNvdW50NjQgPSBwZ19wb3Bjb3Vu dDY0X2Zhc3Q7CisJCXBnX3BvcGNvdW50ID0gcGdfcG9wY291bnRfZmFzdDsKKwl9CisJZWxzZSBp ZiAocGdfcG9wY291bnRfYXZhaWxhYmxlKCkpCisJeworCQlwZ19wb3Bjb3VudDMyID0gcGdfcG9w Y291bnQzMl9mYXN0OworCQlwZ19wb3Bjb3VudDY0ID0gcGdfcG9wY291bnQ2NF9mYXN0OworCQlw Z19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X3Nsb3c7CiAJfQogCWVsc2UKIAl7CiAJCXBnX3BvcGNv dW50MzIgPSBwZ19wb3Bjb3VudDMyX3Nsb3c7CiAJCXBnX3BvcGNvdW50NjQgPSBwZ19wb3Bjb3Vu dDY0X3Nsb3c7CisJCXBnX3BvcGNvdW50ID0gcGdfcG9wY291bnRfc2xvdzsKIAl9CiB9CiAKQEAg LTk0LDQgKzE1MywxMCBAQCBwZ19wb3Bjb3VudDY0X2Nob29zZSh1aW50NjQgd29yZCkKIAlzZXR1 cF9mdW5jdGlvbl9wb2ludGVycygpOwogCXJldHVybiBwZ19wb3Bjb3VudDY0KHdvcmQpOwogfQor CitzdGF0aWMgdWludDY0CitwZ19wb3Bjb3VudF9jaG9vc2UoY29uc3QgY2hhciogYnVmLCBpbnQg Ynl0ZXMpIHsKKwlzZXR1cF9mdW5jdGlvbl9wb2ludGVycygpOworCXJldHVybiBwZ19wb3Bjb3Vu dChidWYsIGJ5dGVzKTsKK30KICNlbmRpZgkJCQkJCQkvKiBUUllfUE9QQ05UX0ZBU1QgKi8KZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3BvcGNudF94ODZfNjRfYWNjZWwuYyBiL3NyYy9wb3J0L3Bn X3BvcGNudF94ODZfNjRfYWNjZWwuYwppbmRleCAyZTliMmVlNzc0Li5lY2MwN2FmZDM3IDEwMDY0 NAotLS0gYS9zcmMvcG9ydC9wZ19wb3BjbnRfeDg2XzY0X2FjY2VsLmMKKysrIGIvc3JjL3BvcnQv cGdfcG9wY250X3g4Nl82NF9hY2NlbC5jCkBAIC0xNCw4ICsxNCwxNCBAQAogCiAjaW5jbHVkZSAi cG9ydC9wZ19iaXR1dGlscy5oIgogCisjaWYgZGVmaW5lZChIQVZFX19JTU1JTlRSSU4pCisjaW5j bHVkZSA8aW1taW50cmluLmg+CisjZW5kaWYKKwogaW50IHBnX3BvcGNvdW50MzJfZmFzdCh1aW50 MzIgd29yZCk7CiBpbnQgcGdfcG9wY291bnQ2NF9mYXN0KHVpbnQ2NCB3b3JkKTsKK3VpbnQ2NCBw Z19wb3Bjb3VudF9mYXN0KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKK3VpbnQ2NCBwZ19w b3Bjb3VudF9zbG93KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAogI2lmZGVmIFRSWV9Q T1BDTlRfRkFTVAogLyoKQEAgLTUyLDQgKzU4LDMyIEBAIF9fYXNtX18gX192b2xhdGlsZV9fKCIg cG9wY250cSAlMSwlMFxuIjoiPXEiKHJlcyk6InJtIih3b3JkKToiY2MiKTsKICNlbmRpZgogfQog Ci0jZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCisvKgorICogVXNlIEFWWC01MTIg SW50cmluc2ljcyBmb3Igc3VwcG9ydGVkIEludGVsIENQVXMgb3IgZmFsbCBiYWNrIHRoZSB0aGUg c29mdHdhcmUKKyAqIGxvb3AgaW4gcGdfYnVudXRpbHMuYyBhbmQgdXNlIHRoZSBiZXN0IDMyIG9y IDY0IGJpdCBmYXN0IG1ldGhvZHMuIElmIG5vIGZhc3QKKyAqIG1ldGhvZHMgYXJlIHVzZWQgdGhp cyB3aWxsIGZhbGwgYmFjayB0byBfX2J1aWx0aW5fKiBvciBwdXJlIHNvZnR3YXJlLgorICovCit1 aW50NjQKK3BnX3BvcGNvdW50X2Zhc3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCit7Cisg ICAgdWludDY0IHBvcGNudCA9IDA7CisgI2lmIGRlZmluZWQoSEFWRV9fSU1NSU5UUklOKSAmJiBI QVZFX19BVlg1MTJfUE9QQ05UID09IDEKKyAgIF9fbTUxMmkgYWNjdW11bGF0b3IgPSBfbW01MTJf c2V0emVyb19zaTUxMigpOworCisgICAgd2hpbGUgKGJ5dGVzID49IDY0KQorICAgIHsKKyAgICAg ICAgY29uc3QgX19tNTEyaSB2ID0gX21tNTEyX2xvYWR1X3NpNTEyKChjb25zdCBfX201MTJpICop YnVmKTsKKyAgICAgICAgY29uc3QgX19tNTEyaSBwID0gX21tNTEyX3BvcGNudF9lcGk2NCh2KTsK KworICAgICAgICBhY2N1bXVsYXRvciA9IF9tbTUxMl9hZGRfZXBpNjQoYWNjdW11bGF0b3IsIHAp OworICAgICAgICBieXRlcyAtPSA2NDsKKyAgICAgICAgYnVmICs9IDY0OworICAgIH0KKworICAg IHBvcGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KGFjY3VtdWxhdG9yKTsKKyNlbmRpZiAJ CQkJLyogZGVmaW5lZChIQVZFX19JTU1JTlRSSU4pICYmIEhBVkVfX0FWWDUxMl9QT1BDTlQgPT0g MSAqLworCisgICAgLyogUHJvY2VzcyBhbnkgcmVtYWluaW5nIGJ5dGVzICovCisgICAgcmV0dXJu IHBvcGNudCArIHBnX3BvcGNvdW50X3Nsb3coYnVmLCBieXRlcyk7Cit9CisjZW5kaWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBUUllfUE9QQ05UX0ZBU1QgKi8KLS0gCjIuMzQuMQoK --_003_BL1PR11MB53042473B7B53B96E43648A7DC292BL1PR11MB5304namp_--