From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B5FD845BD7; Fri, 25 Oct 2024 21:34:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4C68E40264; Fri, 25 Oct 2024 21:34:33 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 4CEDB4021F for ; Fri, 25 Oct 2024 21:34:32 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49PANj5i009266 for ; Fri, 25 Oct 2024 12:34:31 -0700 Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 42g9hk90ag-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 25 Oct 2024 12:34:31 -0700 (PDT) Received: from m0045851.ppops.net (m0045851.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 49PJRNgo015482 for ; Fri, 25 Oct 2024 12:34:31 -0700 Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 42g9hk90af-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 25 Oct 2024 12:34:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MALQclSBFsYwVl9aptIE0OvNfSBWoX+jA2Fru32XHMQlkyf/0VewhFGIFEDxBZvg3irefPN+979imRNlncCscxyUfpJ5Zc5yc2cCAUtH69SGze8VmPcNl7wfll+IHWuXg1yse+XAhzuXb7KfsWGEJbHtYriQE+shomGYpSQAAA64rLUDMudF64qgt9NRKGLX2f4rENG0SuSOMhbCGjulLNfMQblJbu9QVWwi8oz+lnp4MVYt9Cphu4D5tR0kVrz18ptAJj9VFo2WbEETq8YUJiPPKhmqxXc4+BD2MznDro8TB+22ZiccMVvG4tDymzADn77H/xAuX/34yxT2qj+yWA== 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=+H5iOOK+nEnRpAebCNjp7s4iqzamhcOoLF0z0Et1a4w=; b=WElY1hFJfNXEmVIBtTGnyRHF/qaLWOv46S8mYeQu11tcnIphJYvH+kEqIiqifkaDNjN4JXRJUW3fDcvWwUg+vmF7GXKksVi/4ASH4qlz3LF+M21J+INC0Ub5x1cxja+l4zYHUHsoa1I30VEciaLMCNv+k72y+xJAD4mCEg2bZ3Tb3RJxuOJaqMxNiokoT9CaeaRCeb5xuXgRRGTXEXsDyI6T5FErIrWmh36Q+pG7K8pQoxFmdq+8z174Rin0Xrlmvbuy8O0PNh7xqnZOTRkUH3ipA5SlGULsOzWCkmYX4v5nINGFKfHkm0F19qxraFzww0k1Ce2YlVkUX3Lc4bGRRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+H5iOOK+nEnRpAebCNjp7s4iqzamhcOoLF0z0Et1a4w=; b=P2aMd6pqqfytvFrq0MuWQGAg+Feq5U5X+8ZwywpqtNiiKJsn96jDGOAyFGpapy6GVmiygGTlxQIAM1IApRfysArisqc03M6NKF/Fs9KMVbfx6eFPk2gZMcMNUJtsuqjp8gOH0LRzISQS0k29ho0+vBWns+d3jcW+XDn4AbbfAOE= Received: from CO6PR18MB4484.namprd18.prod.outlook.com (2603:10b6:5:359::9) by PH0PR18MB3926.namprd18.prod.outlook.com (2603:10b6:510:25::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23; Fri, 25 Oct 2024 19:34:28 +0000 Received: from CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::3c98:dd36:4897:a51d]) by CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::3c98:dd36:4897:a51d%4]) with mapi id 15.20.8093.018; Fri, 25 Oct 2024 19:34:28 +0000 From: Akhil Goyal To: Hanxiao Li , "dev@dpdk.org" CC: "wang.yong19@zte.com.cn" Subject: RE: [EXTERNAL] [PATCH v15 14/21] crypto/zsda: introduce key expansion code Thread-Topic: [EXTERNAL] [PATCH v15 14/21] crypto/zsda: introduce key expansion code Thread-Index: AQHbJuiXdP+jnzWNRk29mFQQqfIoBbKX14HQ Date: Fri, 25 Oct 2024 19:34:28 +0000 Message-ID: References: <20241025140845.2291138-2-li.hanxiao@zte.com.cn> <20241025141105.2291251-1-li.hanxiao@zte.com.cn> <20241025141105.2291251-13-li.hanxiao@zte.com.cn> In-Reply-To: <20241025141105.2291251-13-li.hanxiao@zte.com.cn> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO6PR18MB4484:EE_|PH0PR18MB3926:EE_ x-ms-office365-filtering-correlation-id: 503f7f73-6c03-4a73-6559-08dcf52c0aa1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?ZjdzNWphamlFNzFKVnZ3NjEwZ010ZzBGZWdDeWZiS080dDdtOFZ0bXhOdDlU?= =?utf-8?B?S3BYVkZhV1d2UFp1WmFjNGVhNE9taWxyOHZNZ0I5WVBWeXVqTThyc0llRi9v?= =?utf-8?B?c2R3Y053TkhmaGxMZldrenkxTG5YMmVjcEUyR0JJajhZWlU1clV4SDJCeEFL?= =?utf-8?B?UDJnRG5FdzRraGRXeFF5OFB0T1VXYUJ3NUhvby9SVW5VczdJUlFvaU1yeXpY?= =?utf-8?B?YThrblRLNzNocUExTk1BZi9JSllENzhyL21wNGVjTGNJWEpIYXpIWGRnYlor?= =?utf-8?B?dXpwWHVXU2w1UFE0cVpaOXBpRm1ISmZYVlk3U1pja1dMeERWVExZbWJTVUNj?= =?utf-8?B?OXZTNzRRMkp2c09HVlgyV3BWVEthcHBZZm51YkFYb0NxTlhWeHIxVDBUWWVE?= =?utf-8?B?Ykw4N1RBT3p2c0VhL0pRQUpZZDRBaGNXVHVTWlAxN3BScFZCVzIvYUJVNFBQ?= =?utf-8?B?UkFqc3ZiblZBcmNobmtBRG5Dd2hvdkw1QjhzZ3ppRXlxRXVNeEdoNEF6aTdx?= =?utf-8?B?ODQ4R0N4OXFSWGd1TG5HOGV1OVgrNHNkM0lQdEQzY0hkYlBpNnY0WDVncEdM?= =?utf-8?B?SVl4ME9UN1V3cjAxTzJ2VmMrRzRHMlZhdGxMcHBoV1QvL3p4N2pnUGQ1UU90?= =?utf-8?B?ZFVXdmFkWC9jbWdsaG9GWDlUY2VaVTdTSHpyMzNYQlZYVmpYeE5maHlxWHYx?= =?utf-8?B?MzZZV1lTcVJ3dDBrak9LbGlVZkFFRnFBMzdmQjg0TVpIU0hIejc1SHVFUGYw?= =?utf-8?B?OVRTMldaRjVQcE1TalliTXdjSzJGVFhrSDVDTmo3Ny9qNmJwUjNmamdadzZH?= =?utf-8?B?R25PT2V5eU8rWTBRWGMyUlVaQmRyMFRmeVZyOEp5RXM0dU5kOUFOSVRxdW1L?= =?utf-8?B?RWZOdnBIU29xUDg5MXZCck1KeWM1VFhnZTNWc2pQN1MwQ1dRbndmZ3lNTHNK?= =?utf-8?B?enBzS1NmZ0pXUldmd0YzRGk0cUFJSDZSZkY4NHdvdFMwSSthYzM2dmxYQlpF?= =?utf-8?B?cURzeGlxc1NDZngveVlUMHNrRm95bDBjUlNFaU4rcEpkNU9yVmpJdTVMSzVm?= =?utf-8?B?NlpvMXZOeU16dU9CN2pJZ1dYaGhNbVdRZHE1NGpKbkFueFRURmlEYzJPT0R4?= =?utf-8?B?REMxN2RyVVd5MjVhcGNvaE51c3psS1FJVnhjdnlMUDhabm9CZEJHL05mbFpC?= =?utf-8?B?dmhsM0dxZFVsTzFUVEN6OC9oc0dwcktoR2s1aFY2RTNlVGs2L3JJRkZOZnhZ?= =?utf-8?B?MlBvaDhMY2pQVWwrbUN6azV3MEtTQm43aUNUT215UDZEa3Y0K2dLclV1ckcv?= =?utf-8?B?TXI4cjBpL2x2S3VjelhlemtDSHJGaGJjS3BrTURoTW55TktPS0J2ZzM3UkE5?= =?utf-8?B?YnpIV0sxMlUyWTJEeVNSKzk0dkZ1V01ndnREbkdleStoS1FEU0ovSHd3WFV6?= =?utf-8?B?Rk91MFdxMC82REJ6TUExSmNFU0RKR0ErRkEyZFNLcWE3eEFDbVFJakRrYXBs?= =?utf-8?B?dSt2dWFnbFJuV1JaMERyY3crMkl2SkJXN0xWUVhRMGNXZUYvK2Y5bHdqeWFV?= =?utf-8?B?d3BpbG1RY29wU3gxY3NOWUV1Sk04ekhsZFFkVTdUcWtrODNFOFo1TnMxZ0RR?= =?utf-8?B?MjNzTjE5YXh0bEhrZk13NWpSUUc3SVlCYWgwMEFKeGpqbXZucGQ5QktxSGFv?= =?utf-8?B?OHd6K2o2NWhES1pyS0dFZ1YzYlNMd0JXeG50ZTZlWjB3Qkh6LzRSVXhKOXpC?= =?utf-8?Q?rk859e9uUiE1YL/mOXshDJsPpLodnq65c8JaA9N?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB4484.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OVRBY05OU3JYVkwvL0gyRHZ6RVNlRU1ENWxvWkhaankzL3VIQWF5WXhyc2Rr?= =?utf-8?B?SjNmZmxHUFVDYnVkYWVRSld0QnZQU0ZCNDNpY1lLRENhNTdvM1dlQUlyQ0d6?= =?utf-8?B?OXRVSllXWlgxQXM1VENtd3RicEd0OTEvOU9pOGhQLzBGZTBJUFZxU2lkeDBP?= =?utf-8?B?SThMamJNSlUzc2NzaGlVOFRDbTA4bURiclBBUk9QaDh0TldnRFZsRDNUQVl2?= =?utf-8?B?aVU3RWxvdG5HdjQxMzBlaEZ2WjZEMkdod21hTkZDeXlhQ2dHWnFkOUpPUnZh?= =?utf-8?B?WWZVQ0cwM2c1TXA4WDhJcTUreXpiNTFUOGJHaHJrTW51cnorNDd6RjJRK3Yy?= =?utf-8?B?aXFMVzloM3NQVzZEcHR1dUJVT3R4QVZEYUg5dkVBUC9nNDlJSVRDUEpFTG52?= =?utf-8?B?VEZ4aUZTdmJZTThzQWlHRlh3ajBodmc3bnJkWWVLbW85aWIzU1JlNXp2c3pz?= =?utf-8?B?c3RLL0g5azBTeGpwQXB3cGliMjVkZUdKTUdPdUJoRjJUMjJEMDkrdzBRMkRH?= =?utf-8?B?RUJ3SEh0RGpLWXRFckpTd0ZSVTJrRHBrN1VtaXB6ZDl6aC8vNXh1S1MxUCtw?= =?utf-8?B?RTF4MmFGRHpRSitVL1lZTDlMMTg0OHBybGQyRjBlT0RwWHpPYjlwWVlyNzdP?= =?utf-8?B?aHY0TysyZzVlR3I4RlNyelNua0JRWHVHMWxLd2JhYjFtNmF4K01LeEExdEgw?= =?utf-8?B?REk0S0lOSmhQODRpOGI2dnpjaG1Nb013cGNSRi8vRWs1STBISUJQUGN5STJt?= =?utf-8?B?c3ZIUzh4WkdnaUMyVDQ0RFZwMThrVFNaMHNZN2k1MzVMVWRrdkV0S1BIb2JZ?= =?utf-8?B?Z3AxbG1wR2xCeVlTOUVGVzhmV3l1NHlzVDE2OS8xNndrRmk1QURQZFpMeFJu?= =?utf-8?B?aE1LcDNlVDIwY1E3a3l2UlFJeFFlbVNwd0U5UEFHNFI5MUVodEdnQ0NWV0Vh?= =?utf-8?B?TG01MDB1V0luNXR6VXVpaVgxNWR1ZkpJZE85d3lvY3d3eWVNeFYzTzQzdlgw?= =?utf-8?B?UFlaV2xXTlp4SVJyZTIvUjdzTnRCSmVKL1AzMXZnaXNQQmN1NWdVMDZSQjl4?= =?utf-8?B?K255OXlXNW5WS21lbEZxbHEyY0VZNEdPZHhJVmlVeTdJZm1FN1Q1blBIc0Z4?= =?utf-8?B?dVNhS0ozREd6N2x5em9jRi9FL3hjMDBmemE5WDlYY291ajFNWXRhV2lwV1lO?= =?utf-8?B?WnR6WC8vdFRyYnF4WE5pS1VLSmVUTk1GbENjNm54SXoydHNjZFJEbEdyWm1I?= =?utf-8?B?VGFoa2E3aWRUb09LZ2VkZGUrQWYwVXpTa1JvN2QzRnBqMlhkcHRNVS9ubEtN?= =?utf-8?B?dlFlWktCSmRpU2IvcmRBRjZYSnlLYVVTSXFqR2JoMS9pemhKTDNONndpdHc0?= =?utf-8?B?azVURW5EVDdCN3p4ZlA4bGdCRWxOZWkwK2JoS09mc0kvbG5hQmI3Q3BiYk92?= =?utf-8?B?ZWVXeUZZQUJwUlU2ZEtDQURwVGNEejdNUU1EVkNna3NSdUFtSGFxd282VTR1?= =?utf-8?B?MVJ3WllPR1JLWm15UnRRcGMvTkdpMjlWOHdyYnFlYjZHb1l3d2QycnZZSjRT?= =?utf-8?B?cnFnMVNUNENiODNabEpXRkZmYzlpQ1BsckRVSG9MTVlwT1FqRVNFRnFaSXFX?= =?utf-8?B?V2lTOERjRUo5UUlyQVRlVC8yMWQ2cDdBVHkzQlZtZ3IvampDZS8xYUoxMm5q?= =?utf-8?B?WmJDdEFiTks4RWUrYzZpMW1TU0xqVVd1MmEweVJnOUV3WkxBYXpKV3VTSC9Z?= =?utf-8?B?LzBhZXpjU3BMQzBaWWJ4dlFDUFZGM2JHbWROYy96ZVJMWTRRbUJ0RzVwK0Rv?= =?utf-8?B?Q2N4WFVGY2I0eVdKL05aQU1DaG1hYkhTdXE0dXZHY0dEeEdDQ2JBeUcrVVJQ?= =?utf-8?B?a1ZUeTBiRmo2T3Q3NlgwUk1oV1doYkxUeHpXb3FENjh0ems0NDlMd3FJNUJu?= =?utf-8?B?bjZqL2cvU2F1bGwwbjNjT2pUTHJFT3BPTGlUdVpUUzNKenhjUURNdHRNZ1dG?= =?utf-8?B?QU44OCtWZy9HMjVMYlE5UjVkaTIwZGt1eFUwSWJXeUhpT3FqTjZIcmE1cUdY?= =?utf-8?B?Qk9sUUxZd2VCVlZRaENoQTBWYk5RSHY4dllRem9FVTVtem9GLzRMN1ZieXBT?= =?utf-8?Q?E54c=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4484.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 503f7f73-6c03-4a73-6559-08dcf52c0aa1 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Oct 2024 19:34:28.5288 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Vvh8vGKejpNlsx+TSi4HLVxubzJ1rNH8FQRGOnY4KqivHg5TSEL/q0w5BUM8us6Ttv/l3l//c5kkw4rg5CLAIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3926 X-Proofpoint-GUID: KJ1U9OynDO-9cqBXDxE3gnb2_lwUofHe X-Proofpoint-ORIG-GUID: gM6PaZUTcOSAkc73Kho7k6d5JPzIw2l5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBJbnRyb2R1Y2Uga2V5IGV4cGFuc2lvbiBjb2RlIGZvciB6c2RhIHN5bSBkcml2ZXJzLg0KPiAN Cj4gU2lnbmVkLW9mZi1ieTogSGFueGlhbyBMaSA8bGkuaGFueGlhb0B6dGUuY29tLmNuPg0KPiAt LS0NCj4gIGRyaXZlcnMvY29tbW9uL3pzZGEvbWVzb24uYnVpbGQgICAgICAgIHwgIDE1ICstDQo+ ICBkcml2ZXJzL2NyeXB0by96c2RhL3pzZGFfc3ltX3Nlc3Npb24uYyB8IDI4MSArKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICBkcml2ZXJzL2NyeXB0by96c2RhL3pzZGFfc3ltX3Nlc3Npb24u aCB8ICAgOSArDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jcnlwdG8venNkYS96c2RhX3N5 bV9zZXNzaW9uLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2NyeXB0by96c2RhL3pz ZGFfc3ltX3Nlc3Npb24uaA0KDQoNCkRvIG5vdCB1c2UgY2FtZWwgY2FzZS4NCkV2ZXJ5IHZhcmlh YmxlIHNob3VsZCBiZSBpbiBsb3dlciBjYXNlLg0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y29tbW9uL3pzZGEvbWVzb24uYnVpbGQNCj4gYi9kcml2ZXJzL2NvbW1vbi96c2RhL21lc29uLmJ1 aWxkDQo+IGluZGV4IDMxOGFkYjFmZDcuLjljZTAxYTk2ZmMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvY29tbW9uL3pzZGEvbWVzb24uYnVpbGQNCj4gKysrIGIvZHJpdmVycy9jb21tb24venNkYS9t ZXNvbi5idWlsZA0KPiBAQCAtNyw3ICs3LDcgQEAgaWYgaXNfd2luZG93cw0KPiAgICAgIHN1YmRp cl9kb25lKCkNCj4gIGVuZGlmDQo+IA0KPiAtZGVwcyArPSBbJ2J1c19wY2knLCAnbWJ1ZicsICdj b21wcmVzc2RldiddDQo+ICtkZXBzICs9IFsnYnVzX3BjaScsJ21idWYnLCAnY29tcHJlc3NkZXYn LCAnY3J5cHRvZGV2J10NCj4gIHNvdXJjZXMgKz0gZmlsZXMoDQo+ICAgICAgICAgICd6c2RhX2xv Z3MuYycsDQo+ICAgICAgICAgICd6c2RhX2NvbW1vbi5jJywNCj4gQEAgLTI0LDMgKzI0LDE2IEBA IGlmIHpzZGFfY29tcHJlc3MNCj4gICAgICAgICAgc291cmNlcyArPSBmaWxlcyhqb2luX3BhdGhz KHpzZGFfY29tcHJlc3NfcmVscGF0aCwgZikpDQo+ICAgICAgZW5kZm9yZWFjaA0KPiAgZW5kaWYN Cj4gKw0KPiArenNkYV9jcnlwdG8gPSB0cnVlDQo+ICt6c2RhX2NyeXB0b19wYXRoID0gJ2NyeXB0 by96c2RhJw0KPiArenNkYV9jcnlwdG9fcmVscGF0aCA9ICcuLi8uLi8nICsgenNkYV9jcnlwdG9f cGF0aA0KPiAraWYgenNkYV9jcnlwdG8NCj4gKyAgICBsaWJjcnlwdG8gPSBkZXBlbmRlbmN5KCds aWJjcnlwdG8nLCByZXF1aXJlZDogZmFsc2UsIG1ldGhvZDogJ3BrZy1jb25maWcnKQ0KPiArICAg IGZvcmVhY2ggZjogWyd6c2RhX3N5bV9zZXNzaW9uLmMnXQ0KPiArICAgICAgICBzb3VyY2VzICs9 IGZpbGVzKGpvaW5fcGF0aHMoenNkYV9jcnlwdG9fcmVscGF0aCwgZikpDQo+ICsgICAgZW5kZm9y ZWFjaA0KPiArICAgIGRlcHMgKz0gWydzZWN1cml0eSddDQoNCldoeSBzZWN1cml0eT8NCg0KPiAr ICAgIGV4dF9kZXBzICs9IGxpYmNyeXB0bw0KDQpXaHkgbGliY3J5cHRvPw0KSXQgaXMgSFcgYWNj ZWxlcmF0ZWQsIHJpZ2h0PyBTbyB3aHkgdXNpbmcgc3cgbGliIGZvciBjcnlwdG8/DQoNCj4gKyAg ICBjZmxhZ3MgKz0gWyctREJVSUxEX1pTREFfU1lNJ10NCj4gK2VuZGlmDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2NyeXB0by96c2RhL3pzZGFfc3ltX3Nlc3Npb24uYw0KPiBiL2RyaXZlcnMvY3J5 cHRvL3pzZGEvenNkYV9zeW1fc2Vzc2lvbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAuLmRkYjZiNmE2MmYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL2NyeXB0by96c2RhL3pzZGFfc3ltX3Nlc3Npb24uYw0KPiBAQCAtMCwwICsxLDI4MSBAQA0K PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJp Z2h0KGMpIDIwMjQgWlRFIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImNy eXB0b2Rldl9wbWQuaCINCj4gKw0KPiArI2luY2x1ZGUgInpzZGFfY29tbW9uLmgiDQo+ICsjaW5j bHVkZSAienNkYV9zeW1fc2Vzc2lvbi5oIg0KPiArDQo+ICsvKioqKioqKioqKioqKioqKiBBRVMg S0VZIEVYUEFOU0lPTiAqKioqKioqKioqKioqKioqLw0KPiArLyoqDQo+ICsgKiBBRVMgUy1ib3hl cw0KPiArICogU2JveCB0YWJsZTogOGJpdHMgaW5wdXQgY29udmVydCB0byA4Yml0cyBvdXRwdXQN Cj4gKyAqKi8NCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc19zYm94WzI1Nl0gPSB7 DQo+ICsgICAgLyogMCAgICAgMSAgICAyICAgICAgMyAgICAgNCAgICA1ICAgICA2ICAgICA3ICAg ICAgOCAgICA5ICAgICBBICAgICAgQg0KPiArICAgICAqIEMgICAgIEQgICAgRSAgICAgRg0KPiAr ICAgICAqLw0KPiArICAgIDB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYs IDB4YzUsIDB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsDQo+ICsgICAgMHhmZSwgMHhkNywgMHhhYiwg MHg3NiwgMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCwNCj4g KyAgICAweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwLCAweGI3 LCAweGZkLCAweDkzLCAweDI2LA0KPiArICAgIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MsIDB4MzQs IDB4YTUsIDB4ZTUsIDB4ZjEsIDB4NzEsIDB4ZDgsIDB4MzEsIDB4MTUsDQo+ICsgICAgMHgwNCwg MHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YSwgMHgwNywgMHgxMiwgMHg4 MCwgMHhlMiwNCj4gKyAgICAweGViLCAweDI3LCAweGIyLCAweDc1LCAweDA5LCAweDgzLCAweDJj LCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwLA0KPiArICAgIDB4NTIsIDB4M2IsIDB4ZDYs IDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQsIDB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsDQo+ ICsgICAgMHgyMCwgMHhmYywgMHhiMSwgMHg1YiwgMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0 YSwgMHg0YywgMHg1OCwgMHhjZiwNCj4gKyAgICAweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQz LCAweDRkLCAweDMzLCAweDg1LCAweDQ1LCAweGY5LCAweDAyLCAweDdmLA0KPiArICAgIDB4NTAs IDB4M2MsIDB4OWYsIDB4YTgsIDB4NTEsIDB4YTMsIDB4NDAsIDB4OGYsIDB4OTIsIDB4OWQsIDB4 MzgsIDB4ZjUsDQo+ICsgICAgMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhm MywgMHhkMiwgMHhjZCwgMHgwYywgMHgxMywgMHhlYywNCj4gKyAgICAweDVmLCAweDk3LCAweDQ0 LCAweDE3LCAweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczLA0K PiArICAgIDB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgsIDB4 NDYsIDB4ZWUsIDB4YjgsIDB4MTQsDQo+ICsgICAgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYiwgMHhl MCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YywNCj4gKyAgICAweGMy LCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5LCAweGU3LCAweGM4LCAw eDM3LCAweDZkLA0KPiArICAgIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTksIDB4NmMsIDB4NTYsIDB4 ZjQsIDB4ZWEsIDB4NjUsIDB4N2EsIDB4YWUsIDB4MDgsDQo+ICsgICAgMHhiYSwgMHg3OCwgMHgy NSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNiwgMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwN Cj4gKyAgICAweDRiLCAweGJkLCAweDhiLCAweDhhLCAweDcwLCAweDNlLCAweGI1LCAweDY2LCAw eDQ4LCAweDAzLCAweGY2LCAweDBlLA0KPiArICAgIDB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4 ODYsIDB4YzEsIDB4MWQsIDB4OWUsIDB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsDQo+ICsgICAgMHg2 OSwgMHhkOSwgMHg4ZSwgMHg5NCwgMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwg MHgyOCwgMHhkZiwNCj4gKyAgICAweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAw eDQyLCAweDY4LCAweDQxLCAweDk5LCAweDJkLCAweDBmLA0KPiArICAgIDB4YjAsIDB4NTQsIDB4 YmIsIDB4MTZ9Ow0KPiArDQo+ICsvKioNCj4gKyAqIFRoZSByb3VuZCBjb25zdGFudCB3b3JkIGFy cmF5LCBSY29uW2ldDQo+ICsgKg0KPiArICogRnJvbSBXaWtpcGVkaWEncyBhcnRpY2xlIG9uIHRo ZSBSaWpuZGFlbCBrZXkgc2NoZWR1bGUgQA0KPiArICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn L3dpa2kvUmlqbmRhZWxfa2V5X3NjaGVkdWxlI1Jjb24NCj4gDQo+ICAiT25seQ0KPiB0aGUgZmly c3Qgc29tZQ0KPiArICogb2YgdGhlc2UgY29uc3RhbnRzIGFyZSBhY3R1YWxseSB1c2VkIOKAkyB1 cCB0byByY29uWzEwXSBmb3IgQUVTLTEyOCAoYXMgMTENCj4gKyAqIHJvdW5kIGtleXMgYXJlIG5l ZWRlZCksIHVwIHRvIHJjb25bOF0gZm9yIEFFUy0xOTIsIHVwIHRvIHJjb25bN10gZm9yIEFFUy0y NTYuDQo+ICsgKiByY29uWzBdIGlzIG5vdCB1c2VkIGluIEFFUyBhbGdvcml0aG0uIg0KPiArICov DQo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBSY29uWzExXSA9IHsweDhkLCAweDAxLCAw eDAyLCAweDA0LCAweDA4LCAweDEwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAw eDQwLCAweDgwLCAweDFiLCAweDM2fTsNCj4gKw0KPiArI2RlZmluZSBHRVRfQUVTX1NCT1hfVkFM KG51bSkgKGFlc19zYm94WyhudW0pXSkNCj4gKw0KPiArLyoqKioqKioqKioqKioqKiogU000IEtF WSBFWFBBTlNJT04gKioqKioqKioqKioqKioqKi8NCj4gKy8qDQo+ICsgKiAzMi1iaXQgaW50ZWdl ciBtYW5pcHVsYXRpb24gbWFjcm9zIChiaWcgZW5kaWFuKQ0KPiArICovDQo+ICsjaWZuZGVmIEdF VF9VTE9OR19CRQ0KPiArI2RlZmluZSBHRVRfVUxPTkdfQkUobiwgYiwgaSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICAgICAgKG4pID0gKCh1bnNpZ25lZCBpbnQpKGIpWyhpKV0gPDwgMjQpIHwg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAoKHVuc2lnbmVkIGlu dCkoYilbKGkpICsgMV0gPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAg ICAgICAgICgodW5zaWduZWQgaW50KShiKVsoaSkgKyAyXSA8PCA4KSB8ICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpKGIpWyhpKSArIDNdKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKyNlbmRpZg0KPiArDQo+ ICsjaWZuZGVmIFBVVF9VTE9OR19CRQ0KPiArI2RlZmluZSBQVVRfVUxPTkdfQkUobiwgYiwgaSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgKGIpWyhpKV0gPSAodW5zaWduZWQgY2hhciko KG4pID4+IDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAoYilbKGkp ICsgMV0gPSAodW5zaWduZWQgY2hhcikoKG4pID4+IDE2KTsgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICAgIChiKVsoaSkgKyAyXSA9ICh1bnNpZ25lZCBjaGFyKSgobikgPj4gOCk7ICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgKGIpWyhpKSArIDNdID0gKHVuc2lnbmVk IGNoYXIpKChuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKyNl bmRpZg0KDQpZb3UgY2FuIHVzZSBydGVfIEFQSXMgaW4gbGliL2VhbC9pbmNsdWRlL2dlbmVyaWMv cnRlX2J5dGVvcmRlci5oDQoNCg0KPiArDQo+ICsvKioNCj4gKyAqcm90YXRlIHNoaWZ0IGxlZnQg bWFyY28gZGVmaW5pdGlvbg0KPiArICoNCj4gKyAqKi8NCj4gKyNkZWZpbmUgU0hMKHgsIG4pICAo KCh4KSYweEZGRkZGRkZGKSA8PCBuKQ0KPiArI2RlZmluZSBST1RMKHgsIG4pIChTSEwoKHgpLCBu KSB8ICgoeCkgPj4gKDMyIC0gbikpKQ0KPiArDQo+ICsvKioNCj4gKyAqIFNNNCBTLWJveGVzDQo+ ICsgKiBTYm94IHRhYmxlOiA4Yml0cyBpbnB1dCBjb252ZXJ0IHRvIDggYml0ZzI4OHMgb3V0cHV0 DQo+ICsgKiovDQo+ICtzdGF0aWMgdW5zaWduZWQgY2hhciBzbTRfc2JveFsxNl1bMTZdID0gew0K PiArICAgIHsweGQ2LCAweDkwLCAweGU5LCAweGZlLCAweGNjLCAweGUxLCAweDNkLCAweGI3LCAw eDE2LCAweGI2LCAweDE0LCAweGMyLA0KPiArICAgICAweDI4LCAweGZiLCAweDJjLCAweDA1fSwN Cj4gKyAgICB7MHgyYiwgMHg2NywgMHg5YSwgMHg3NiwgMHgyYSwgMHhiZSwgMHgwNCwgMHhjMywg MHhhYSwgMHg0NCwgMHgxMywgMHgyNiwNCj4gKyAgICAgMHg0OSwgMHg4NiwgMHgwNiwgMHg5OX0s DQo+ICsgICAgezB4OWMsIDB4NDIsIDB4NTAsIDB4ZjQsIDB4OTEsIDB4ZWYsIDB4OTgsIDB4N2Es IDB4MzMsIDB4NTQsIDB4MGIsIDB4NDMsDQo+ICsgICAgIDB4ZWQsIDB4Y2YsIDB4YWMsIDB4NjJ9 LA0KPiArICAgIHsweGU0LCAweGIzLCAweDFjLCAweGE5LCAweGM5LCAweDA4LCAweGU4LCAweDk1 LCAweDgwLCAweGRmLCAweDk0LCAweGZhLA0KPiArICAgICAweDc1LCAweDhmLCAweDNmLCAweGE2 fSwNCj4gKyAgICB7MHg0NywgMHgwNywgMHhhNywgMHhmYywgMHhmMywgMHg3MywgMHgxNywgMHhi YSwgMHg4MywgMHg1OSwgMHgzYywgMHgxOSwNCj4gKyAgICAgMHhlNiwgMHg4NSwgMHg0ZiwgMHhh OH0sDQo+ICsgICAgezB4NjgsIDB4NmIsIDB4ODEsIDB4YjIsIDB4NzEsIDB4NjQsIDB4ZGEsIDB4 OGIsIDB4ZjgsIDB4ZWIsIDB4MGYsIDB4NGIsDQo+ICsgICAgIDB4NzAsIDB4NTYsIDB4OWQsIDB4 MzV9LA0KPiArICAgIHsweDFlLCAweDI0LCAweDBlLCAweDVlLCAweDYzLCAweDU4LCAweGQxLCAw eGEyLCAweDI1LCAweDIyLCAweDdjLCAweDNiLA0KPiArICAgICAweDAxLCAweDIxLCAweDc4LCAw eDg3fSwNCj4gKyAgICB7MHhkNCwgMHgwMCwgMHg0NiwgMHg1NywgMHg5ZiwgMHhkMywgMHgyNywg MHg1MiwgMHg0YywgMHgzNiwgMHgwMiwgMHhlNywNCj4gKyAgICAgMHhhMCwgMHhjNCwgMHhjOCwg MHg5ZX0sDQo+ICsgICAgezB4ZWEsIDB4YmYsIDB4OGEsIDB4ZDIsIDB4NDAsIDB4YzcsIDB4Mzgs IDB4YjUsIDB4YTMsIDB4ZjcsIDB4ZjIsIDB4Y2UsDQo+ICsgICAgIDB4ZjksIDB4NjEsIDB4MTUs IDB4YTF9LA0KPiArICAgIHsweGUwLCAweGFlLCAweDVkLCAweGE0LCAweDliLCAweDM0LCAweDFh LCAweDU1LCAweGFkLCAweDkzLCAweDMyLCAweDMwLA0KPiArICAgICAweGY1LCAweDhjLCAweGIx LCAweGUzfSwNCj4gKyAgICB7MHgxZCwgMHhmNiwgMHhlMiwgMHgyZSwgMHg4MiwgMHg2NiwgMHhj YSwgMHg2MCwgMHhjMCwgMHgyOSwgMHgyMywgMHhhYiwNCj4gKyAgICAgMHgwZCwgMHg1MywgMHg0 ZSwgMHg2Zn0sDQo+ICsgICAgezB4ZDUsIDB4ZGIsIDB4MzcsIDB4NDUsIDB4ZGUsIDB4ZmQsIDB4 OGUsIDB4MmYsIDB4MDMsIDB4ZmYsIDB4NmEsIDB4NzIsDQo+ICsgICAgIDB4NmQsIDB4NmMsIDB4 NWIsIDB4NTF9LA0KPiArICAgIHsweDhkLCAweDFiLCAweGFmLCAweDkyLCAweGJiLCAweGRkLCAw eGJjLCAweDdmLCAweDExLCAweGQ5LCAweDVjLCAweDQxLA0KPiArICAgICAweDFmLCAweDEwLCAw eDVhLCAweGQ4fSwNCj4gKyAgICB7MHgwYSwgMHhjMSwgMHgzMSwgMHg4OCwgMHhhNSwgMHhjZCwg MHg3YiwgMHhiZCwgMHgyZCwgMHg3NCwgMHhkMCwgMHgxMiwNCj4gKyAgICAgMHhiOCwgMHhlNSwg MHhiNCwgMHhiMH0sDQo+ICsgICAgezB4ODksIDB4NjksIDB4OTcsIDB4NGEsIDB4MGMsIDB4OTYs IDB4NzcsIDB4N2UsIDB4NjUsIDB4YjksIDB4ZjEsIDB4MDksDQo+ICsgICAgIDB4YzUsIDB4NmUs IDB4YzYsIDB4ODR9LA0KPiArICAgIHsweDE4LCAweGYwLCAweDdkLCAweGVjLCAweDNhLCAweGRj LCAweDRkLCAweDIwLCAweDc5LCAweGVlLCAweDVmLCAweDNlLA0KPiArICAgICAweGQ3LCAweGNi LCAweDM5LCAweDQ4fSwNCj4gK307DQo+ICsNCj4gKy8qIFN5c3RlbSBwYXJhbWV0ZXIgKi8NCj4g K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgRktbNF0gPSB7MHhhM2IxYmFjNiwgMHg1NmFhMzM1 MCwgMHg2NzdkOTE5NywNCj4gKyAgICAgICAgICAgICAgICAgICAweGIyNzAyMmRjfTsNCj4gKw0K PiArLyogZml4ZWQgcGFyYW1ldGVyICovDQo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IENL WzMyXSA9IHsNCj4gKyAgICAweDAwMDcwZTE1LCAweDFjMjMyYTMxLCAweDM4M2Y0NjRkLCAweDU0 NWI2MjY5LCAweDcwNzc3ZTg1LA0KPiAweDhjOTM5YWExLA0KPiArICAgIDB4YThhZmI2YmQsIDB4 YzRjYmQyZDksIDB4ZTBlN2VlZjUsIDB4ZmMwMzBhMTEsIDB4MTgxZjI2MmQsIDB4MzQzYjQyNDks DQo+ICsgICAgMHg1MDU3NWU2NSwgMHg2YzczN2E4MSwgMHg4ODhmOTY5ZCwgMHhhNGFiYjJiOSwg MHhjMGM3Y2VkNSwgMHhkY2UzZWFmMSwNCj4gKyAgICAweGY4ZmYwNjBkLCAweDE0MWIyMjI5LCAw eDMwMzczZTQ1LCAweDRjNTM1YTYxLCAweDY4NmY3NjdkLCAweDg0OGI5Mjk5LA0KPiArICAgIDB4 YTBhN2FlYjUsIDB4YmNjM2NhZDEsIDB4ZDhkZmU2ZWQsIDB4ZjRmYjAyMDksIDB4MTAxNzFlMjUs IDB4MmMzMzNhNDEsDQo+ICsgICAgMHg0ODRmNTY1ZCwgMHg2NDZiNzI3OX07DQo+ICsNCj4gKy8q DQo+ICsgKiBwcml2YXRlIGZ1bmN0aW9uOg0KPiArICogbG9vayB1cCBpbiBTTTQgUy1ib3hlcyBh bmQgZ2V0IHRoZSByZWxhdGVkIHZhbHVlLg0KPiArICogYXJnczogICAgW2luXSBpbmNoOiAweDAw fjB4RkYgKDggYml0cyB1bnNpZ25lZCB2YWx1ZSkuDQo+ICsgKi8NCj4gK3N0YXRpYyB1bnNpZ25l ZCBjaGFyDQo+ICtzbTRTYm94KHVuc2lnbmVkIGNoYXIgaW5jaCkNCj4gK3sNCj4gKyAgICB1bnNp Z25lZCBjaGFyICpwVGFibGUgPSAodW5zaWduZWQgY2hhciAqKXNtNF9zYm94Ow0KPiArICAgIHVu c2lnbmVkIGNoYXIgcmV0VmFsID0gKHVuc2lnbmVkIGNoYXIpKHBUYWJsZVtpbmNoXSk7DQo+ICsg ICAgcmV0dXJuIHJldFZhbDsNCj4gK30NCj4gKw0KPiArLyogcHJpdmF0ZSBmdW5jdGlvbjoNCj4g KyAqIENhbGN1bGF0aW5nIHJvdW5kIGVuY3J5cHRpb24ga2V5Lg0KPiArICogYXJnczogICAgW2lu XSBrYToga2EgaXMgYSAzMiBiaXRzIHVuc2lnbmVkIHZhbHVlOw0KPiArICogcmV0dXJuOiAgc2tb aV06IGl7MCwxLDIsMywuLi4zMX0uDQo+ICsgKi8NCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQNCj4g K3NtNENhbGNpUksodW5zaWduZWQgaW50IGthKQ0KDQpzbTRfY2FsY2lfcmsNCg0KPiArew0KPiAr ICAgIHVuc2lnbmVkIGludCBiYiA9IDA7DQo+ICsgICAgdW5zaWduZWQgaW50IHJrID0gMDsNCj4g KyAgICB1bnNpZ25lZCBjaGFyIGFbNF07DQo+ICsgICAgdW5zaWduZWQgY2hhciBiWzRdOw0KPiAr DQo+ICsgICAgUFVUX1VMT05HX0JFKGthLCBhLCAwKQ0KPiArICAgIGJbMF0gPSBzbTRTYm94KGFb MF0pOw0KPiArICAgIGJbMV0gPSBzbTRTYm94KGFbMV0pOw0KPiArICAgIGJbMl0gPSBzbTRTYm94 KGFbMl0pOw0KPiArICAgIGJbM10gPSBzbTRTYm94KGFbM10pOw0KDQpzbTRfc2JveCgpDQoNCj4g KyAgICBHRVRfVUxPTkdfQkUoYmIsIGIsIDApDQo+ICsgICAgcmsgPSBiYiBeIChST1RMKGJiLCAx MykpIF4gKFJPVEwoYmIsIDIzKSk7DQo+ICsgICAgcmV0dXJuIHJrOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgdm9pZA0KPiArenNkYV9zbTRfa2V5X2V4cGFuc2lvbih1bnNpZ25lZCBpbnQgU0tbMzJd LCBjb25zdCB1aW50OF90IGtleVsxNl0pDQo+ICt7DQo+ICsgICAgdW5zaWduZWQgaW50IE1LWzRd Ow0KPiArICAgIHVuc2lnbmVkIGludCBrWzM2XTsNCj4gKyAgICB1bnNpZ25lZCBpbnQgaSA9IDA7 DQo+ICsNCj4gKyAgICBHRVRfVUxPTkdfQkUoTUtbMF0sIGtleSwgMCk7DQo+ICsgICAgR0VUX1VM T05HX0JFKE1LWzFdLCBrZXksIDQpOw0KPiArICAgIEdFVF9VTE9OR19CRShNS1syXSwga2V5LCA4 KTsNCj4gKyAgICBHRVRfVUxPTkdfQkUoTUtbM10sIGtleSwgMTIpOw0KPiArICAgIGtbMF0gPSBN S1swXSBeIEZLWzBdOw0KPiArICAgIGtbMV0gPSBNS1sxXSBeIEZLWzFdOw0KPiArICAgIGtbMl0g PSBNS1syXSBeIEZLWzJdOw0KPiArICAgIGtbM10gPSBNS1szXSBeIEZLWzNdOw0KPiArICAgIGZv ciAoOyBpIDwgMzI7IGkrKykgew0KPiArICAgICAgICBrW2kgKyA0XSA9IGtbaV0gXg0KPiArICAg ICAgICAgICAgICAgKHNtNENhbGNpUksoa1tpICsgMV0gXiBrW2kgKyAyXSBeIGtbaSArIDNdIF4g Q0tbaV0pKTsNCj4gKyAgICAgICAgU0tbaV0gPSBrW2kgKyA0XTsNCj4gKyAgICB9DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICt1MzJfdG9fdTgodWludDMyX3QgKnVfaW50MzJfdF9kYXRh LCB1aW50OF90ICp1OF9kYXRhKQ0KPiArew0KPiArICAgICoodThfZGF0YSArIDApID0gKCgqdV9p bnQzMl90X2RhdGEgJiAweEZGMDAwMDAwKSA+PiAyNCkgJiAoMHhGRik7DQo+ICsgICAgKih1OF9k YXRhICsgMSkgPSAoKCp1X2ludDMyX3RfZGF0YSAmIDB4MDBGRjAwMDApID4+IDE2KSAmICgweEZG KTsNCj4gKyAgICAqKHU4X2RhdGEgKyAyKSA9ICgoKnVfaW50MzJfdF9kYXRhICYgMHgwMDAwRkYw MCkgPj4gOCkgJiAoMHhGRik7DQo+ICsgICAgKih1OF9kYXRhICsgMykgPSAoKnVfaW50MzJfdF9k YXRhICYgMHgwMDAwMDBGRik7DQo+ICt9DQoNCldpbGwgdGhpcyBub3Qgd29yaz8NCnU4X2RhdGEg PSAodWludDhfdCAqKSB1X2ludDMyX3RfZGF0YTsNCg0KDQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ ICt6c2RhX2Flc19rZXlfZXhwYW5zaW9uKHVpbnQ4X3QgKnJvdW5kX2tleSwgdWludDMyX3Qgcm91 bmRfbnVtLA0KPiArICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqa2V5LCB1aW50MzJfdCBr ZXlfbGVuKQ0KPiArew0KPiArICAgIHVpbnQzMl90IGksIGosIGssIG5rLCBucjsNCj4gKyAgICB1 aW50OF90IHRlbXBhWzRdOw0KPiArDQo+ICsgICAgbmsgPSBrZXlfbGVuID4+IDI7DQo+ICsgICAg bnIgPSByb3VuZF9udW07DQo+ICsNCj4gKyAgICAvKiBUaGUgZmlyc3Qgcm91bmQga2V5IGlzIHRo ZSBrZXkgaXRzZWxmLiAqLw0KPiArICAgIGZvciAoaSA9IDA7IGkgPCBuazsgKytpKSB7DQo+ICsg ICAgICAgIHJvdW5kX2tleVsoaSAqIDQpICsgMF0gPSBrZXlbKGkgKiA0KSArIDBdOw0KPiArDQo+ ICsgICAgICAgIHJvdW5kX2tleVsoaSAqIDQpICsgMV0gPSBrZXlbKGkgKiA0KSArIDFdOw0KPiAr DQo+ICsgICAgICAgIHJvdW5kX2tleVsoaSAqIDQpICsgMl0gPSBrZXlbKGkgKiA0KSArIDJdOw0K PiArICAgICAgICByb3VuZF9rZXlbKGkgKiA0KSArIDNdID0ga2V5WyhpICogNCkgKyAzXTsNCj4g KyAgICB9DQo+ICsNCj4gKyAgICAvKiBBbGwgb3RoZXIgcm91bmQga2V5cyBhcmUgZm91bmQgZnJv bSB0aGUgcHJldmlvdXMgcm91bmQga2V5cy4gKi8NCj4gKyAgICBmb3IgKGkgPSBuazsgaSA8ICg0 ICogKG5yICsgMSkpOyArK2kpIHsNCj4gKyAgICAgICAgayA9IChpIC0gMSkgKiA0Ow0KPiArICAg ICAgICB0ZW1wYVswXSA9IHJvdW5kX2tleVtrICsgMF07DQo+ICsgICAgICAgIHRlbXBhWzFdID0g cm91bmRfa2V5W2sgKyAxXTsNCj4gKyAgICAgICAgdGVtcGFbMl0gPSByb3VuZF9rZXlbayArIDJd Ow0KPiArICAgICAgICB0ZW1wYVszXSA9IHJvdW5kX2tleVtrICsgM107DQo+ICsNCj4gKyAgICAg ICAgaWYgKChuayAhPSAwKSAmJiAoKGkgJSBuaykgPT0gMCkpIHsNCj4gKyAgICAgICAgICAgIC8q IFRoaXMgZnVuY3Rpb24gc2hpZnRzIHRoZSA0IGJ5dGVzIGluIGEgd29yZCB0byB0aGUNCj4gKyAg ICAgICAgICAgICAqIGxlZnQgb25jZS4gW2EwLGExLGEyLGEzXSBiZWNvbWVzIFthMSxhMixhMyxh MF0NCj4gKyAgICAgICAgICAgICAqIEZ1bmN0aW9uIFJvdFdvcmQoKQ0KPiArICAgICAgICAgICAg ICovDQo+ICsgICAgICAgICAgICB7DQo+ICsgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCB1 OHRtcCA9IHRlbXBhWzBdOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgdGVtcGFbMF0gPSB0ZW1w YVsxXTsNCj4gKyAgICAgICAgICAgICAgICB0ZW1wYVsxXSA9IHRlbXBhWzJdOw0KPiArICAgICAg ICAgICAgICAgIHRlbXBhWzJdID0gdGVtcGFbM107DQo+ICsgICAgICAgICAgICAgICAgdGVtcGFb M10gPSB1OHRtcDsNCj4gKyAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgLyogU3Vi V29yZCgpIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGZvdXItYnl0ZSBpbnB1dA0KPiArICAg ICAgICAgICAgICogd29yZCBhbmQgYXBwbGllcyB0aGUgUy1ib3ggdG8gZWFjaCBvZiB0aGUgZm91 ciBieXRlcw0KPiArICAgICAgICAgICAgICogdG8gcHJvZHVjZSBhbiBvdXRwdXQgd29yZC4gRnVu Y3Rpb24gU3Vid29yZCgpDQo+ICsgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgIHsNCj4g KyAgICAgICAgICAgICAgICB0ZW1wYVswXSA9IEdFVF9BRVNfU0JPWF9WQUwodGVtcGFbMF0pOw0K PiArICAgICAgICAgICAgICAgIHRlbXBhWzFdID0gR0VUX0FFU19TQk9YX1ZBTCh0ZW1wYVsxXSk7 DQo+ICsgICAgICAgICAgICAgICAgdGVtcGFbMl0gPSBHRVRfQUVTX1NCT1hfVkFMKHRlbXBhWzJd KTsNCj4gKyAgICAgICAgICAgICAgICB0ZW1wYVszXSA9IEdFVF9BRVNfU0JPWF9WQUwodGVtcGFb M10pOw0KPiArICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICB0ZW1wYVswXSA9IHRl bXBhWzBdIF4gUmNvbltpIC8gbmtdOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgaWYg KG5rID09IDgpIHsNCj4gKyAgICAgICAgICAgIGlmICgoaSAlIG5rKSA9PSA0KSB7DQo+ICsgICAg ICAgICAgICAgICAgLyogRnVuY3Rpb24gU3Vid29yZCgpICovDQo+ICsgICAgICAgICAgICAgICAg ew0KPiArICAgICAgICAgICAgICAgICAgICB0ZW1wYVswXSA9IEdFVF9BRVNfU0JPWF9WQUwodGVt cGFbMF0pOw0KPiArICAgICAgICAgICAgICAgICAgICB0ZW1wYVsxXSA9IEdFVF9BRVNfU0JPWF9W QUwodGVtcGFbMV0pOw0KPiArICAgICAgICAgICAgICAgICAgICB0ZW1wYVsyXSA9IEdFVF9BRVNf U0JPWF9WQUwodGVtcGFbMl0pOw0KPiArICAgICAgICAgICAgICAgICAgICB0ZW1wYVszXSA9IEdF VF9BRVNfU0JPWF9WQUwodGVtcGFbM10pOw0KPiArICAgICAgICAgICAgICAgIH0NCj4gKyAgICAg ICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIGogPSBpICogNDsNCj4gKyAg ICAgICAgayA9IChpIC0gbmspICogNDsNCj4gKyAgICAgICAgcm91bmRfa2V5W2ogKyAwXSA9IHJv dW5kX2tleVtrICsgMF0gXiB0ZW1wYVswXTsNCj4gKyAgICAgICAgcm91bmRfa2V5W2ogKyAxXSA9 IHJvdW5kX2tleVtrICsgMV0gXiB0ZW1wYVsxXTsNCj4gKyAgICAgICAgcm91bmRfa2V5W2ogKyAy XSA9IHJvdW5kX2tleVtrICsgMl0gXiB0ZW1wYVsyXTsNCj4gKyAgICAgICAgcm91bmRfa2V5W2og KyAzXSA9IHJvdW5kX2tleVtrICsgM10gXiB0ZW1wYVszXTsNCj4gKyAgICB9DQo+ICt9DQoNCg0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8venNkYS96c2RhX3N5bV9zZXNzaW9uLmgNCj4g Yi9kcml2ZXJzL2NyeXB0by96c2RhL3pzZGFfc3ltX3Nlc3Npb24uaA0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4xNTg5N2IxYWFmDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZHJpdmVycy9jcnlwdG8venNkYS96c2RhX3N5bV9zZXNzaW9uLmgNCj4gQEAgLTAs MCArMSw5IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ ICsgKiBDb3B5cmlnaHQoYykgMjAyNCBaVEUgQ29ycG9yYXRpb24NCj4gKyAqLw0KPiArDQo+ICsj aWZuZGVmIF9aU0RBX1NZTV9TRVNTSU9OX0hfDQo+ICsjZGVmaW5lIF9aU0RBX1NZTV9TRVNTSU9O X0hfDQo+ICsNCj4gKw0KPiArI2VuZGlmIC8qIF9aU0RBX1NZTV9TRVNTSU9OX0hfICovDQpObyBw b2ludCBvZiBhZGRpbmcgdGhlIGVtcHR5IGZpbGUgaGVyZSB3aGljaCBoYXMgbm8gcmVsZXZhbmNl IGluIHRoZSBjdXJyZW50IHBhdGNoLg0KTW92ZSBpdCB0byBuZXh0IHBhdGNoIHdoaWNoIHdoaWNo IHVzZXMgdGhpcyBmaWxlLg0K