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 Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8C0EFC61DE4 for ; Mon, 31 Aug 2026 01:24:14 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x0qkq-0002yL-V2; Sun, 30 Aug 2026 21:24:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x0qkp-0002xz-7R; Sun, 30 Aug 2026 21:24:07 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x0qkm-0000b2-RL; Sun, 30 Aug 2026 21:24:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1788139444; x=1819675444; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+i8rf2L6NCTpN8Ny0MS7SYS5LZKcGfPLChlrtHqvQmY=; b=q5kX0YjaGaOV3LuGTkDHPh/nTChThXk1FLXc/hRNBKKj8h6VKgb1eCwR mh6ZBytrY+y7NbubR7jN7nIDQp6X8xbCA5hbbr7K299NAoGbe4mn5qua/ 8MbJo2rU93ViHHzv1sMwTcJk7S2N3E5qjCxKrvtNz1JEjecs0CR4Z+RP0 77NZG5zTfji+y5r7cmXOddZeyo2LKuAsV4pT0l/XvNnN/jLRAb41MhjEJ GOMIbVUCwr3MNlacr7+9yhR0rGuw620O4os0sNoZWnckAs4rFQPiICLMJ KaCXDgxt8MouOZ2PGZEu/FG4DFfM0UennCC58pNmmbsw5SeQ5h4eJ+lf4 w==; X-CSE-ConnectionGUID: RqIRH7pGTxatzDJhz3pPnQ== X-CSE-MsgGUID: N0c29/c8SaKfC59CofZrUg== X-IronPort-AV: E=Sophos;i="6.25,252,1779120000"; d="scan'208";a="154366108" Received: from mail-westusazon11010064.outbound.protection.outlook.com (HELO BYAPR05CU005.outbound.protection.outlook.com) ([52.101.85.64]) by ob1.hgst.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 Aug 2026 09:24:01 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PBITiSBB2Pg22L8Omfjdr0DSkbMSsvsUrU0r+0woEclFXDiHvphY7ySVFsfcRFCBW2IJr/wB4KaZLpE74NkQPNrRl2p+t3PAmICpruYDrLBkcMt4K2Iizmzxtz632GTZbsNF5vC89uP3CxOhtoMDe2j8LAofXD9Gi4o81M+qo00UVJFWzSzq18IdqJkG7sQ0kADpNHnLBjelRqdAiUYUyxzGuYG/30dvgUOAx1iDFufCQhLf7XUFzAW4wNan9R1/AkDCzGwJXq7mn3uxAjiNL2zVrb34mWeMQyNd2kjV7T2SYLKqC2CI3SqOEXqNPYmWR/DzqsW6w0QwxW/qcdFECw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=+i8rf2L6NCTpN8Ny0MS7SYS5LZKcGfPLChlrtHqvQmY=; b=s8pO6UMvBkoVHcFx31zykLDlZ4xH7EQ/hyWs8NhKQstS9plZQSIdtKIWh3arw9jNrEMtYaP03Lziv8/RlLTRiZ2Zb57nR2OSz/GGbbsNh+eTihQ4Scpv4U997Cy408vwuynKhqwLR6Y2VcK+CSodXc1o4iEY7Lk9iLFdykHhbMtENdbk3dsG524pTGnEm/0jlnUFMmIeOrwy37T7iy92tRT2SI5rE1ThstepBGYtLDokbbF2q7cF79SC9LeIsNrYpYvXQuG9XvUYYZAducxbj55oAmCKG/F8EA+rftkmWNkRjifu9BhJAgP9Ejmwnc2lbKVCvT7tCDKgUxG/5FANQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+i8rf2L6NCTpN8Ny0MS7SYS5LZKcGfPLChlrtHqvQmY=; b=DN8sx+fAQu7DgA9aYxOYjvRXqTK4DVLKlW4lqfi9MoR9l/mHbiDbOzsA0iwSwLHii6cFtKhq7T0Y8pPMcH8ReDXsZkb9p1RT+8iOnNqHdpcJlW1sVrf+vEWojVxkGrpQvi1wuj2ZAoESxuxqlwKr7GUOZUFyb8AWHLIrREKqmLs= Received: from BY1PR04MB9561.namprd04.prod.outlook.com (2603:10b6:a03:5b6::11) by IA3PR04MB9402.namprd04.prod.outlook.com (2603:10b6:208:505::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Mon, 31 Aug 2026 01:24:00 +0000 Received: from BY1PR04MB9561.namprd04.prod.outlook.com ([fe80::3869:e494:2fa8:9888]) by BY1PR04MB9561.namprd04.prod.outlook.com ([fe80::3869:e494:2fa8:9888%5]) with mapi id 15.21.0360.008; Mon, 31 Aug 2026 01:24:00 +0000 From: Alistair Francis To: "alex.bennee@linaro.org" , "daniel.barboza@oss.qualcomm.com" , "pbonzini@redhat.com" , "joel@jms.id.au" CC: "npiggin@gmail.com" , "mpe@kernel.org" , "portias@oss.tenstorrent.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" , "peter.maydell@linaro.org" , "chao.liu@processmission.com" , "asrinivasan@oss.tenstorrent.com" , "qemu-riscv@nongnu.org" , "zhiwei_liu@linux.alibaba.com" , "liwei1518@gmail.com" Subject: Re: [PATCH 09/12] tests/tcg/multiarch: Fix vectorisation of memory test Thread-Topic: [PATCH 09/12] tests/tcg/multiarch: Fix vectorisation of memory test Thread-Index: AQHdNeJ7xrZ8JKfPMUax+OTBl83GU7a3YwaA Date: Mon, 31 Aug 2026 01:24:00 +0000 Message-ID: References: <20260827050953.67184-1-joel@jms.id.au> <20260827050953.67184-10-joel@jms.id.au> In-Reply-To: <20260827050953.67184-10-joel@jms.id.au> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.60.2 (by Flathub.org) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wdc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY1PR04MB9561:EE_|IA3PR04MB9402:EE_ x-ms-office365-filtering-correlation-id: 1a23770d-947f-45ef-b548-08df06fe890b wdcipoutbound: EOP-TRUE x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|19092799006|376014|7416014|23010399003|1800799024|10070799003|366016|38070700021|10067099003|4143699003|11063799006|56012099006|22082099003|18002099003; x-microsoft-antispam-message-info: yA2lFj2EPJT2f6dgtyQwhDr0nKqmGEbe5I4royAyhhfbhubD2E7FT+LSHGLWMj751MP7k67ZC8jfs0TqZ5M01kRYIRgPCXTVBH5nRRotqX6ikMhOg7OM6eqxwzkfIQXQcwYy4ggf8dFPStDUnLPHEqSJyzNeGV+HMuVxta7wOF6XwUH9bRPlWsdc35/3taadb/KAD+AHvo+eyhZ5z0eb3otyX4sLdHSsmvy6pmuqYSWE2Wpz/+6cd1ezhN780JY+NyxRH0f7OyCiWW8w+dOyoqK0uo71gVdg4SFE5wI8ovW8LTY4CIWvDPLvKQDHd8D2+SNCgWqm9MogWq9dI2rf7KXb3e1U2jd8uIS34t895YcyfQ5Z1vRrC3a8Iw1jjAPx8HPneCFVgTigheeWvqaKTqsQ0aZsg/rvr+Auwxaf/EYCqtTbkU/tHtNTLvILu0X3UQ+d3OrBVW7u/Go14lIEOizbEnTrl5iMgkmN/1C0vq50I4arlSYJAKA6/gd4lF85NRc6N1BWDKYf3DQudlNjBlTi8m8JPnJezvb9lizq7VtFiimXmw7EQDcKizkxx4VxMuQ2GRJ/lpKBf3ZAtHkmojrE5+ehARmU28DLFJPFYiuudqSq7tcMUdHzGo0Yv9Q4cNEY5FJCnTSchNfcgdIcTXrWmLaslzmUCMF4mOdSTV+al96C+aIwoOG02Gr2OZCied2PiBvtKZLEfiKhdSuJIQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY1PR04MB9561.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(19092799006)(376014)(7416014)(23010399003)(1800799024)(10070799003)(366016)(38070700021)(10067099003)(4143699003)(11063799006)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aytBUlp5WlVVVnU1RUcvVWRHNmJ3aGo2dkFrQTNFTzVYcWdmay9Ua0FUNWJh?= =?utf-8?B?MzNLd241eUpxU2t0YnZhZkZmR09rTUxVOEZ6YnhmK3VoZTVJc3FvR0pWWUdS?= =?utf-8?B?N1F1alVVRUFkUGtaRzJ5NUJibGVKd1dmWnk2bVhJTldEdjl4V3ZGUCt5QlRh?= =?utf-8?B?ejh3UjBvTSt1NXRiSnNFckwyQ2dvaG9qemkwekQwY3pJSmtoZTNaSGF5RlVk?= =?utf-8?B?Y1JYdFZidThNczRrTzNJbDdMMVVSZFJTK1gyZHVLMzBTRWp1eGZMSEZKMVVu?= =?utf-8?B?amdaZytpNnlaTnRBdmNWU3VoenJNeXVKZmlac3QzVDAvdTNBSG1PajkvM3Rz?= =?utf-8?B?WE1kKzhwWU0rZysrWlhnWG16RUlDVWgvcEo2Y1VBTmMwSVdhUWhKWjUvamhy?= =?utf-8?B?YlJkZFI5UHB1ME5vMEdCcmliS040U1hTUFhOMHhDMVBFNFE4OUdNLzdwU3Ir?= =?utf-8?B?Z3JFczVVcVFoQmR0UE5QR09TQWVnSSs5WkdFc0M4bExTZUJ1ZGUzRlNpTWM5?= =?utf-8?B?ZDVnWnRma1RCZVRwVVVDaHZDdGNtL3gwckJtY1pkVU5IeG9wSEVTZUM4YkVi?= =?utf-8?B?Mzg0ak8yUjZFNUN3cW1FZUZwYWJsaEEyMXptWlNtVW53YVZ4aDJJSlVUUnpz?= =?utf-8?B?Z2FQQmxlT2FPMGh3OXBEd3VrRUlKTjdNSDBlcDBMdkg3Sm11NjVRczc4ZzdQ?= =?utf-8?B?TldrVWdWeG92WExBRTlqbXFxL3V3aTZ0LzRvQ3hTaDA4dE56dCs3UWJhRXJH?= =?utf-8?B?Zm5mQkdjTGxUWERzRmpHVm5wN3BrSVJ3aWZGV29tUm50RkVRTUpYRkF0N3FM?= =?utf-8?B?YllROXJ2U3lpN3Y2RzFkU2h5M0krdWJwV201Z3ZWN25RMVpweE9pOUMvOFN0?= =?utf-8?B?NS9DRmFXRWZrNmdkM2N2QjM3VTA1Y0VVYnp5TjM1TVNRRFQyS3pIMWpZZ1VY?= =?utf-8?B?ZGhxNUtyMzFtakthZUI3TXVjN0hrbVRWL1hJb1RhUVNtV1NYSzhTdTdmWDZj?= =?utf-8?B?NHh1U3pLWkNPcms1c2hEV3UwVDZ4dU5UdDg3dXMzQjNqemVLUjdURjJCdjFm?= =?utf-8?B?UWNseTM3SHZGVHZXN3JLRFJLRTJIcFRkNUZGeUN0S1ZOdmpkaGpvOVU3Vkdn?= =?utf-8?B?Z3BBOC9IcDkxb1UvU2VtbnQycjlRUEMwcnJzLzhxZCtoZm5uUFFaTVd1aUJ3?= =?utf-8?B?VE5BNG9YTzFqbkExYjhHZlJRQ3FBdDVWSEpEVlA1bjhkemVoL2FFZzF4MDkv?= =?utf-8?B?TnZWK0xaK2c5VUVHTmFIbGVibi9BYXh4WDZ0QnFKc3NIZmFkcWNRSHMrNkVH?= =?utf-8?B?VzBpaUNzbWJwM0dZOHRJNGtXajVQMlBIbUppeFdjRHVxRFJUVUowYjg0VUE1?= =?utf-8?B?L1JXbTU5VThFQUs1a1Bmb2p0UGxyMmRoMFczZHdUTTVzTnY2eW5DU2dIMTRK?= =?utf-8?B?a20xZWtJWWdtZkZPakRKbVBSKzRLem9KQWdFMXFRRjAydmFpWmZ6QVcwMzRW?= =?utf-8?B?TTVlV2tDejFvZE5JdkZyenIrZDg3c29UQzd0Q0FHWjM1Um5jcUgrVUNDd3hE?= =?utf-8?B?VmU2bmd1QjdLeFg3dk1MSGFENm14U2FXVTJXT3hFU2RFZ0I3NEt3UTIvNm01?= =?utf-8?B?QVRvYi9jTk03ZEJ6QlhFMU42VTZmS0VJeGZZMk1jdFAwNTFkcDlxV1hsbXNI?= =?utf-8?B?eVpFRDMrNjhGYUhSQkpwV3IvbHlHTHY0V3F2ZjhDby9vbjIwN2JEQWdUM3NK?= =?utf-8?B?U0UxdEUxNTRPZjE0aTNZUWVjcGQzbGZqa0Q4UFpKZDFpNTg2Q0U1V0U2QktS?= =?utf-8?B?eURLY0N4SWpVUXJzMUFjbnRYWGhHd0xqOXdmOU4yMWpRK0dSR3BOdmhPcGtD?= =?utf-8?B?cGtBcGhFRDBobkhHeGNHbExaYW9rblFXNytWemQrTTQ0R3lMaThpLzlOS1FO?= =?utf-8?B?U3RMczVZRlduYitVamVzbGFnRFIrSGNuR3ZFdmdwTU9mNHFZdGF2VE5aZGpQ?= =?utf-8?B?NkZaVDhac0hHY05ObTVLak0raTJJUnJCME1BcVdWby9kVm54dDQ0NFc1L0Rs?= =?utf-8?B?OXFxSGMxRzB3TWVrZnA1SktXdzk2SnRoN1N0MDIxZi9MT20yRlNLREZ3d0F3?= =?utf-8?B?SFNqNGtKbXRMZGRicVh5bmdWZUN3L2o5S0luZGxGaFduem1WU1VTVmZGczQ3?= =?utf-8?B?UG93TXIrSm1NV09SV0VLNCtKdExrMnRZdFNiWG9uMkRlcFUyaUN5UjhubkZT?= =?utf-8?B?SkRLS0s5WDBQeVpwdk9EVHljN2N6dnpxNzQ3R3BWYnlaM3l6ZkFGYTZIalZV?= =?utf-8?B?aTNVU1hXVm1iUWxzTmtwTmhMK1J2OExLeUQyMUpqMnBkNXpPcWEwK0lGS3VR?= =?utf-8?Q?eZZwGXDDORBDpUsuSo5yS7qs4L7RKQk4TyZnwSiMmcXzT?= x-ms-exchange-antispam-messagedata-1: 5BDfkWkHNzLbwU++egLxTs1LNXX0KngGfDI= Content-Type: text/plain; charset="utf-8" Content-ID: <69E61F125CCB2249802219277B501EFA@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: eWLogmM85YNsocSc045hk1IPwMVtHet/5gKg3soJnh5A2zEnZ9dkZTu1a2FFEEcukbjWj8BdaRBRa89KJpQOFkGVUOKo4WrKihlMlec5FZm4Yw9iGX3zsDcPViWVF3U7rs68SGn7nYgv4sRb5Q7ZV953lZdT8vURsgG118qt+9iGqlseDaEzBGlLjr+TcGnb+rdGA0/7pRyc+xhlKWzfTEKfsGFM0ug7v2uKP66u8OYEH+UKcMvSIp1EgoNlXTT9OxeC8C4ddNRu8P/51qeWJ/Mv+zyk8GMJFQdkNnrRLgHmzmTuz5Yv0zhEZuMSr7H11CjOu8sdEjfyxztteX0CyQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Pm5qlkDuhMHeJVn2gIu3PUkY5yNuizR1hy55WaH5MwsoPwMgUJvdIKjlxxaX3Wg2wXlY53M7aiyYnHdmeYRyLYiUk6fejGNebl/glgSGVD0B3TIgSqfEX4/zLqab9jsxkcSL8E/X7U//tu4n09fp//FbpRwT6oeR5lBMea2QwShJhMxpUE99s+BufouRjhZgG3v3TpeHzCaMZuhCSMzvLKoGT4Edi7rYn5xfZfdhmvH5KxXrBi0MyvBrdcutNnDVhcgqFDiv4h2CqThphWznlLS0tXVtvi1460NEFoCmA0/xDMCNAQ8STyjqr1UA6lmEySYCMjwPU2cEpB5x1R7CRHgSkH88V9CKhjkD8+qlK3HYIPmblECTwmOlTDqVrQArfE9aDvfTBBOw6NYMRtwMk+nzW/YUz5BkaX7qYKcklEoqc82TJ6+V0ZBVjE4ifCYusq2m4U/yMZY6ZvLSOOly9NSm6AduXdHa+6yuseSEJZX+TYU0zq0USxpm0MeLNvp/4Ri5McXbedirkGnaBLLtpasB2Rbgdv7uFkKV7n4JVPztc3wCR5CNmZ5OPCJA42fXDz0ynRHiEN0X9rkE8S6WF3hqsW5i2XHDGIf1nCjG6LQB/FI7xooo9QEQAbOTgZZW X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY1PR04MB9561.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a23770d-947f-45ef-b548-08df06fe890b X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2026 01:24:00.0309 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 54MP2piB4X/d/GVQ9ClxfbLbkqr6J5h8qwlLRrdhm1kk99xROo3B6BWoJE2j5Y+ibsK4ilcvWL1U0Lspt1gRLNg2iBuJe/Iq7cmdgunr1ac= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR04MB9402 Received-SPF: pass client-ip=68.232.141.245; envelope-from=prvs=696fae14a=Alistair.Francis@wdc.com; helo=esa1.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org Sender: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org T24gVGh1LCAyMDI2LTA4LTI3IGF0IDE0OjM5ICswOTMwLCBKb2VsIFN0YW5sZXkgd3JvdGU6Cj4g Q29tcGlsZXJzIGFyZSBub3QgYWJsZSB0byB2ZWN0b3Jpc2UgdGhlIGxvYWQgYW5kIHN0b3JlIGxv b3BzLgo+IEJ1aWxkaW5nCj4gd2l0aCAtZm9wdC1pbmZvLXZlYy1taXNzZWQgd2l0aCBnY2MgMTYu MToKPiAKPiDCoCBtaXNzZWQ6IHN0YXRlbWVudCBjbG9iYmVycyBtZW1vcnk6IG1sX3ByaW50ZiAo Ii4iKTsKPiAKPiBUaGlzIGNhbiBiZSBmaXhlZCBieSBkb2luZyB0aGUgcHJpbnRmIGFmdGVyIHRo ZSBsb29wcy4KPiAKPiBBbHNvLCBhdXRvdmVjdG9yaXNhdGlvbiBkb2Vzbid0IGxpa2UgbW9yZSB0 aGFuIG9uZSBpZiBzdGF0ZW1lbnQgaW4KPiB0aGUKPiBsb29wOgo+IAo+IMKgIG1pc3NlZDogbm90 IHZlY3Rvcml6ZWQ6IHVuc3VwcG9ydGVkIGNvbnRyb2wgZmxvdyBpbiBsb29wLgo+IAo+IEJ5IGNv bWJpbmluZyB0aGVtIGludG8gdGVybmFyeSBzdGF0ZW1lbnRzIGFuZCBvbmUgaWYsIHRoZSBsb29w cyBhcmUKPiBhYmxlCj4gdG8gYmUgdmVjdG9yaXNlZCB3aXRoIGJvdGggbG9hZHMgYW5kIHN0b3Jl cy4KPiAKPiBUaGUgdHJhZGUgb2ZmIGlzIHRoZSBkb3RzIGFyZSBnb25lLCBhbmQgdGhlIHRlc3Rz IG5vIGxvbmdlciByZXBvcnQKPiBmaW5lCj4gZ3JhaW5lZCBtaXNjb21wYXJlcy4gQSBmYWlsdXJl IGRvZXMgcmVwb3J0IHRoZSBudW1iZXIgb2YgYmFkIGVsZW1lbnRzCj4gaW4KPiBhIGZhaWxpbmcg dGVzdCBsb29wLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEpvZWwgU3RhbmxleSA8am9lbEBqbXMuaWQu YXU+CgpBY2tlZC1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29t PgoKQWxpc3RhaXIKCj4gLS0tCj4gwqB0ZXN0cy90Y2cvbXVsdGlhcmNoL3N5c3RlbS9tZW1vcnku YyB8IDExMyArKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+IC0tCj4gwqAxIGZpbGUgY2hhbmdl ZCwgNTAgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rl c3RzL3RjZy9tdWx0aWFyY2gvc3lzdGVtL21lbW9yeS5jCj4gYi90ZXN0cy90Y2cvbXVsdGlhcmNo L3N5c3RlbS9tZW1vcnkuYwo+IGluZGV4IDc1MDhmNmI5MTZkMC4uNmVlYjczODM0M2FiIDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL3RjZy9tdWx0aWFyY2gvc3lzdGVtL21lbW9yeS5jCj4gKysrIGIvdGVz dHMvdGNnL211bHRpYXJjaC9zeXN0ZW0vbWVtb3J5LmMKPiBAQCAtNDIsOSArNDIsNiBAQCBzdGF0 aWMgdm9pZCBwZG90KGludCBjb3VudCwgYm9vbCB3cml0ZSkKPiDCoMKgwqDCoCB9IGVsc2Ugewo+ IMKgwqDCoMKgwqDCoMKgwqAgdGVzdF9yZWFkX2NvdW50Kys7Cj4gwqDCoMKgwqAgfQo+IC3CoMKg wqAgaWYgKGNvdW50ICUgMTI4ID09IDApIHsKPiAtwqDCoMKgwqDCoMKgwqAgbWxfcHJpbnRmKCIu Iik7Cj4gLcKgwqDCoCB9Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gQEAgLTc3LDcgKzc0LDYgQEAgc3Rh dGljIHZvaWQgaW5pdF90ZXN0X2RhdGFfdTgoaW50IHVudXNlZF9vZmZzZXQpCj4gwqDCoMKgwqDC oMKgwqDCoCAqcHRyKysgPSBCWVRFX05FWFQoY291bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqAgcGRv dChpLCB0cnVlKTsKPiDCoMKgwqDCoCB9Cj4gLQo+IMKgwqDCoMKgIG1sX3ByaW50ZigiZG9uZSAl ZCBAICVwXG4iLCBpLCBwdHIpOwo+IMKgfQo+IMKgCj4gQEAgLTEyNyw3ICsxMjMsNiBAQCBzdGF0 aWMgdm9pZCByZXNldF9zdGFydF9kYXRhKGludCBvZmZzZXQpCj4gwqDCoMKgwqDCoMKgwqDCoCAq cHRyKysgPSAwOwo+IMKgwqDCoMKgwqDCoMKgwqAgcGRvdChpLCB0cnVlKTsKPiDCoMKgwqDCoCB9 Cj4gLQo+IMKgwqDCoMKgIG1sX3ByaW50ZigiZG9uZSAlZCBAICVwXG4iLCBpLCBwdHIpOwo+IMKg fQo+IMKgCj4gQEAgLTIwMyw3ICsxOTgsNyBAQCBzdGF0aWMgdm9pZCBpbml0X3Rlc3RfZGF0YV91 NjQoaW50IG9mZnNldCkKPiDCoHN0YXRpYyBib29sIHJlYWRfdGVzdF9kYXRhX3UxNihpbnQgb2Zm c2V0KQo+IMKgewo+IMKgwqDCoMKgIHVpbnQxNl90IHdvcmQsICpwdHIgPSAodWludDE2X3QgKikm dGVzdF9kYXRhW29mZnNldF07Cj4gLcKgwqDCoCBpbnQgaTsKPiArwqDCoMKgIGludCBpLCBiYWQg PSAwOwo+IMKgwqDCoMKgIGNvbnN0IGludCBtYXggPSAoVEVTVF9TSVpFIC0gb2Zmc2V0KSAvIHNp emVvZih3b3JkKTsKPiDCoAo+IMKgwqDCoMKgIG1sX3ByaW50ZigiUmVhZGluZyB1MTYgZnJvbSAl I2x4IChvZmZzZXQgJWQpOiIsIHB0ciwgb2Zmc2V0KTsKPiBAQCAtMjE0LDEyICsyMDksMTMgQEAg c3RhdGljIGJvb2wgcmVhZF90ZXN0X2RhdGFfdTE2KGludCBvZmZzZXQpCj4gwqDCoMKgwqDCoMKg wqDCoCBoaWdoID0gKHdvcmQgPj4gOCkgJiAweGZmOwo+IMKgwqDCoMKgwqDCoMKgwqAgbG93ID0g d29yZCAmIDB4ZmY7Cj4gwqDCoMKgwqDCoMKgwqDCoCBpZiAoaGlnaCA8IGxvdyAmJiBoaWdoICE9 IDApIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtbF9wcmludGYoIkVycm9yICVkIDwgJWRc biIsIGhpZ2gsIGxvdyk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBkb3Qo aSwgZmFsc2UpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhZCsrOwo+IMKgwqDCoMKgwqDC oMKgwqAgfQo+IC0KPiArwqDCoMKgIH0KPiArwqDCoMKgIHRlc3RfcmVhZF9jb3VudCArPSBtYXg7 Cj4gK8KgwqDCoCBpZiAoYmFkKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIG1sX3ByaW50ZigiRXJyb3I6 ICVkIGJhZCB1MTYgd29yZHNcbiIsIGJhZCk7Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxz ZTsKPiDCoMKgwqDCoCB9Cj4gwqDCoMKgwqAgbWxfcHJpbnRmKCJkb25lICVkIEAgJXBcbiIsIGks IHB0cik7Cj4gwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gQEAgLTIyOCw3ICsyMjQsNyBAQCBzdGF0 aWMgYm9vbCByZWFkX3Rlc3RfZGF0YV91MTYoaW50IG9mZnNldCkKPiDCoHN0YXRpYyBib29sIHJl YWRfdGVzdF9kYXRhX3UzMihpbnQgb2Zmc2V0KQo+IMKgewo+IMKgwqDCoMKgIHVpbnQzMl90IHdv cmQsICpwdHIgPSAodWludDMyX3QgKikmdGVzdF9kYXRhW29mZnNldF07Cj4gLcKgwqDCoCBpbnQg aTsKPiArwqDCoMKgIGludCBpLCBiYWQgPSAwOwo+IMKgwqDCoMKgIGNvbnN0IGludCBtYXggPSAo VEVTVF9TSVpFIC0gb2Zmc2V0KSAvIHNpemVvZih3b3JkKTsKPiDCoAo+IMKgwqDCoMKgIG1sX3By aW50ZigiUmVhZGluZyB1MzIgZnJvbSAlI2x4IChvZmZzZXQgJWQpOiIsIHB0ciwgb2Zmc2V0KTsK PiBAQCAtMjQ3LDIxICsyNDMsMTggQEAgc3RhdGljIGJvb2wgcmVhZF90ZXN0X2RhdGFfdTMyKGlu dCBvZmZzZXQpCj4gwqDCoMKgwqDCoMKgwqDCoCB6ZXJvcyArPSAoYjIgPT0gMCA/IDEgOiAwKTsK PiDCoMKgwqDCoMKgwqDCoMKgIHplcm9zICs9IChiMyA9PSAwID8gMSA6IDApOwo+IMKgwqDCoMKg wqDCoMKgwqAgemVyb3MgKz0gKGI0ID09IDAgPyAxIDogMCk7Cj4gLcKgwqDCoMKgwqDCoMKgIGlm ICh6ZXJvcyA+IDEpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtbF9wcmludGYoIkVycm9y IEAgJXAsIG1vcmUgemVyb3MgdGhhbiBleHBlY3RlZDogJWQsICVkLAo+ICVkLCAlZCIsCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdHIgLSAxLCBiMSwgYjIs IGIzLCBiNCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+IC3CoMKg wqDCoMKgwqDCoCB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoCBpZiAoKGIxIDwgYjIgJiYgYjEgIT0g MCkgfHwKPiArwqDCoMKgwqDCoMKgwqAgaWYgKHplcm9zID4gMSB8fAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChiMSA8IGIyICYmIGIxICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChiMiA8IGIzICYmIGIyICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChi MyA8IGI0ICYmIGIzICE9IDApKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWxfcHJpbnRm KCJFcnJvciAlZCwgJWQsICVkLCAlZCIsIGIxLCBiMiwgYjMsIGI0KTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRvdChpLCBmYWxzZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYmFkKys7Cj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4gwqDCoMKgwqAgfQo+ICvCoMKgwqAg dGVzdF9yZWFkX2NvdW50ICs9IG1heDsKPiArwqDCoMKgIGlmIChiYWQpIHsKPiArwqDCoMKgwqDC oMKgwqAgbWxfcHJpbnRmKCJFcnJvcjogJWQgYmFkIHUzMiB3b3Jkc1xuIiwgYmFkKTsKPiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ICvCoMKgwqAgfQo+IMKgwqDCoMKgIG1sX3ByaW50 ZigiZG9uZSAlZCBAICVwXG4iLCBpLCBwdHIpOwo+IMKgwqDCoMKgIHJldHVybiB0cnVlOwo+IMKg fQo+IEBAIC0yNzAsNyArMjYzLDcgQEAgc3RhdGljIGJvb2wgcmVhZF90ZXN0X2RhdGFfdTMyKGlu dCBvZmZzZXQpCj4gwqBzdGF0aWMgYm9vbCByZWFkX3Rlc3RfZGF0YV91NjQoaW50IG9mZnNldCkK PiDCoHsKPiDCoMKgwqDCoCB1aW50NjRfdCB3b3JkLCAqcHRyID0gKHVpbnQ2NF90ICopJnRlc3Rf ZGF0YVtvZmZzZXRdOwo+IC3CoMKgwqAgaW50IGk7Cj4gK8KgwqDCoCBpbnQgaSwgYmFkID0gMDsK PiDCoMKgwqDCoCBjb25zdCBpbnQgbWF4ID0gKFRFU1RfU0laRSAtIG9mZnNldCkgLyBzaXplb2Yo d29yZCk7Cj4gwqAKPiDCoMKgwqDCoCBtbF9wcmludGYoIlJlYWRpbmcgdTY0IGZyb20gJSNseCAo b2Zmc2V0ICVkKToiLCBwdHIsIG9mZnNldCk7Cj4gQEAgLTI5NywyNiArMjkwLDIyIEBAIHN0YXRp YyBib29sIHJlYWRfdGVzdF9kYXRhX3U2NChpbnQgb2Zmc2V0KQo+IMKgwqDCoMKgwqDCoMKgwqAg emVyb3MgKz0gKGI2ID09IDAgPyAxIDogMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoCB6ZXJvcyArPSAo YjcgPT0gMCA/IDEgOiAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgIHplcm9zICs9IChiOCA9PSAwID8g MSA6IDApOwo+IC3CoMKgwqDCoMKgwqDCoCBpZiAoemVyb3MgPiAxKSB7Cj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWxfcHJpbnRmKCJFcnJvciBAICVwLCBtb3JlIHplcm9zIHRoYW4gZXhwZWN0 ZWQ6ICVkLCAlZCwKPiAlZCwgJWQsICVkLCAlZCwgJWQsICVkIiwKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB0ciAtIDEsIGIxLCBiMiwgYjMsIGI0LCBiNSwg YjYsIGI3LCBiOCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+IC3C oMKgwqDCoMKgwqDCoCB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoCBpZiAoKGIxIDwgYjIgJiYgYjEg IT0gMCkgfHwKPiArwqDCoMKgwqDCoMKgwqAgaWYgKHplcm9zID4gMSB8fAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChiMSA8IGIyICYmIGIxICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIChiMiA8IGIzICYmIGIyICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChiMyA8IGI0ICYmIGIzICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChiNCA8 IGI1ICYmIGI0ICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChiNSA8IGI2ICYm IGI1ICE9IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChiNiA8IGI3ICYmIGI2ICE9 IDApIHx8Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChiNyA8IGI4ICYmIGI3ICE9IDApKSB7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWxfcHJpbnRmKCJFcnJvciAlZCwgJWQsICVkLCAl ZCwgJWQsICVkLCAlZCwgJWQiLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4KTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRvdChpLCBmYWxzZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYmFkKys7Cj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4gwqDCoMKgwqAgfQo+ICvCoMKgwqAg dGVzdF9yZWFkX2NvdW50ICs9IG1heDsKPiArwqDCoMKgIGlmIChiYWQpIHsKPiArwqDCoMKgwqDC oMKgwqAgbWxfcHJpbnRmKCJFcnJvcjogJWQgYmFkIHU2NCB3b3Jkc1xuIiwgYmFkKTsKPiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ICvCoMKgwqAgfQo+IMKgwqDCoMKgIG1sX3ByaW50 ZigiZG9uZSAlZCBAICVwXG4iLCBpLCBwdHIpOwo+IMKgwqDCoMKgIHJldHVybiB0cnVlOwo+IMKg fQo+IEBAIC0zNzQsMjggKzM2MywyNiBAQCBzdGF0aWMgYm9vbCBkb191bnNpZ25lZF90ZXN0KGlu aXRfdWZuIGZuKQo+IMKgc3RhdGljIGJvb2wgcmVhZF90ZXN0X2RhdGFfczgoaW50IG9mZnNldCwg Ym9vbCBuZWdfZmlyc3QpCj4gwqB7Cj4gwqDCoMKgwqAgaW50OF90ICpwdHIgPSAoaW50OF90ICop JnRlc3RfZGF0YVtvZmZzZXRdOwo+IC3CoMKgwqAgaW50IGk7Cj4gK8KgwqDCoCBpbnQgaSwgYmFk ID0gMDsKPiDCoMKgwqDCoCBjb25zdCBpbnQgbWF4ID0gKFRFU1RfU0laRSAtIG9mZnNldCkgLyAy Owo+IMKgCj4gwqDCoMKgwqAgbWxfcHJpbnRmKCJSZWFkaW5nIHM4IHBhaXJzIGZyb20gJSNseCAo b2Zmc2V0ICVkKToiLCBwdHIsCj4gb2Zmc2V0KTsKPiDCoAo+IMKgwqDCoMKgIGZvciAoaSA9IDA7 IGkgPCBtYXg7IGkrKykgewo+IMKgwqDCoMKgwqDCoMKgwqAgaW50MTZfdCBmaXJzdCwgc2Vjb25k Owo+IC3CoMKgwqDCoMKgwqDCoCBib29sIG9rOwo+IMKgwqDCoMKgwqDCoMKgwqAgZmlyc3QgPSAq cHRyKys7Cj4gwqDCoMKgwqDCoMKgwqDCoCBzZWNvbmQgPSAqcHRyKys7Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqAgaWYgKG5lZ19maXJzdCAmJiBmaXJzdCA8IDAgJiYgc2Vjb25kID4gMCkgewo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBkb3QoaSwgZmFsc2UpOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBkb3QoaSwgZmFsc2UpOwo+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKCFuZWdf Zmlyc3QgJiYgZmlyc3QgPiAwICYmIHNlY29uZCA8IDApIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwZG90KGksIGZhbHNlKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwZG90KGksIGZh bHNlKTsKPiAtwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBtbF9wcmludGYoIkVycm9yICVkICVjICVkXG4iLCBmaXJzdCwgbmVnX2ZpcnN0ID8gJzwnIDoK PiAnPicsIHNlY29uZCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoIShuZWdfZmlyc3QgPyAoZmlyc3QgPCAwICYmIHNlY29uZCA+ IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAo Zmlyc3QgPiAwICYmIHNlY29uZCA8IDApKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJh ZCsrOwo+IMKgwqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKgIH0KPiArwqDCoMKgIHRlc3RfcmVh ZF9jb3VudCArPSBtYXggKiAyOwo+ICvCoMKgwqAgaWYgKGJhZCkgewo+ICvCoMKgwqDCoMKgwqDC oCBtbF9wcmludGYoIkVycm9yOiAlZCBiYWQgczggcGFpcnNcbiIsIGJhZCk7Cj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiBmYWxzZTsKPiArwqDCoMKgIH0KPiDCoMKgwqDCoCBtbF9wcmludGYoImRv bmUgJWQgQCAlcFxuIiwgaSAqIDIsIHB0cik7Cj4gwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gwqB9 Cj4gQEAgLTQwMyw3ICszOTAsNyBAQCBzdGF0aWMgYm9vbCByZWFkX3Rlc3RfZGF0YV9zOChpbnQg b2Zmc2V0LCBib29sCj4gbmVnX2ZpcnN0KQo+IMKgc3RhdGljIGJvb2wgcmVhZF90ZXN0X2RhdGFf czE2KGludCBvZmZzZXQsIGJvb2wgbmVnX2ZpcnN0KQo+IMKgewo+IMKgwqDCoMKgIGludDE2X3Qg KnB0ciA9IChpbnQxNl90ICopJnRlc3RfZGF0YVtvZmZzZXRdOwo+IC3CoMKgwqAgaW50IGk7Cj4g K8KgwqDCoCBpbnQgaSwgYmFkID0gMDsKPiDCoMKgwqDCoCBjb25zdCBpbnQgbWF4ID0gKFRFU1Rf U0laRSAtIG9mZnNldCkgLyAoc2l6ZW9mKCpwdHIpKTsKPiDCoAo+IMKgwqDCoMKgIG1sX3ByaW50 ZigiUmVhZGluZyBzMTYgZnJvbSAlI2x4IChvZmZzZXQgJWQsICVzKToiLCBwdHIsCj4gQEAgLTQy MCwxNSArNDA3LDE1IEBAIHN0YXRpYyBib29sIHJlYWRfdGVzdF9kYXRhX3MxNihpbnQgb2Zmc2V0 LCBib29sCj4gbmVnX2ZpcnN0KQo+IMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBtYXg7IGkrKykg ewo+IMKgwqDCoMKgwqDCoMKgwqAgaW50MzJfdCBkYXRhID0gKnB0cisrOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgIGlmIChuZWdfZmlyc3QgJiYgZGF0YSA8IDApIHsKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwZG90KGksIGZhbHNlKTsKPiAtwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmICghbmVn X2ZpcnN0ICYmIGRhdGEgPiAwKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRvdChpLCBm YWxzZSk7Cj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbWxfcHJpbnRmKCJFcnJvciAlZCAlYyAwXG4iLCBkYXRhLCBuZWdfZmlyc3QgPyAnPCcgOgo+ ICc+Jyk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ICvCoMKgwqDC oMKgwqDCoCBpZiAoIShuZWdfZmlyc3QgPyBkYXRhIDwgMCA6IGRhdGEgPiAwKSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJhZCsrOwo+IMKgwqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKg IH0KPiArwqDCoMKgIHRlc3RfcmVhZF9jb3VudCArPSBtYXg7Cj4gK8KgwqDCoCBpZiAoYmFkKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgIG1sX3ByaW50ZigiRXJyb3I6ICVkIGJhZCBzMTYgd29yZHNcbiIs IGJhZCk7Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPiArwqDCoMKgIH0KPiDCoMKg wqDCoCBtbF9wcmludGYoImRvbmUgJWQgQCAlcFxuIiwgaSwgcHRyKTsKPiDCoMKgwqDCoCByZXR1 cm4gdHJ1ZTsKPiDCoH0KPiBAQCAtNDM2LDcgKzQyMyw3IEBAIHN0YXRpYyBib29sIHJlYWRfdGVz dF9kYXRhX3MxNihpbnQgb2Zmc2V0LCBib29sCj4gbmVnX2ZpcnN0KQo+IMKgc3RhdGljIGJvb2wg cmVhZF90ZXN0X2RhdGFfczMyKGludCBvZmZzZXQsIGJvb2wgbmVnX2ZpcnN0KQo+IMKgewo+IMKg wqDCoMKgIGludDMyX3QgKnB0ciA9IChpbnQzMl90ICopJnRlc3RfZGF0YVtvZmZzZXRdOwo+IC3C oMKgwqAgaW50IGk7Cj4gK8KgwqDCoCBpbnQgaSwgYmFkID0gMDsKPiDCoMKgwqDCoCBjb25zdCBp bnQgbWF4ID0gKFRFU1RfU0laRSAtIG9mZnNldCkgLyAoc2l6ZW9mKGludDMyX3QpKTsKPiDCoAo+ IMKgwqDCoMKgIG1sX3ByaW50ZigiUmVhZGluZyBzMzIgZnJvbSAlI2x4IChvZmZzZXQgJWQsICVz KToiLAo+IEBAIC00NTMsMTUgKzQ0MCwxNSBAQCBzdGF0aWMgYm9vbCByZWFkX3Rlc3RfZGF0YV9z MzIoaW50IG9mZnNldCwgYm9vbAo+IG5lZ19maXJzdCkKPiDCoMKgwqDCoCBmb3IgKGkgPSAwOyBp IDwgbWF4OyBpKyspIHsKPiDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgZGF0YSA9ICpwdHIrKzsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoCBpZiAobmVnX2ZpcnN0ICYmIGRhdGEgPCAwKSB7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRvdChpLCBmYWxzZSk7Cj4gLcKgwqDCoMKgwqDCoMKgIH0g ZWxzZSBpZiAoIW5lZ19maXJzdCAmJiBkYXRhID4gMCkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBkb3QoaSwgZmFsc2UpOwo+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG1sX3ByaW50ZigiRXJyb3IgJWQgJWMgMFxuIiwgZGF0YSwgbmVnX2Zp cnN0ID8gJzwnIDoKPiAnPicpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxz ZTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKCEobmVnX2ZpcnN0ID8gZGF0YSA8IDAgOiBkYXRhID4g MCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYWQrKzsKPiDCoMKgwqDCoMKgwqDCoMKg IH0KPiDCoMKgwqDCoCB9Cj4gK8KgwqDCoCB0ZXN0X3JlYWRfY291bnQgKz0gbWF4Owo+ICvCoMKg wqAgaWYgKGJhZCkgewo+ICvCoMKgwqDCoMKgwqDCoCBtbF9wcmludGYoIkVycm9yOiAlZCBiYWQg czMyIHdvcmRzXG4iLCBiYWQpOwo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gK8Kg wqDCoCB9Cj4gwqDCoMKgwqAgbWxfcHJpbnRmKCJkb25lICVkIEAgJXBcbiIsIGksIHB0cik7Cj4g wqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gwqB9Cg==