From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 27BA53858C39 for ; Wed, 13 Mar 2024 19:06:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 27BA53858C39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 27BA53858C39 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710356818; cv=pass; b=to3TRuVCKKS9rsnDtPINKlwGb41Osy0Y+6/rd+3Dve+qm9Oe6YXevTkFipHuumBBFFWymnx5lAGxEdRfAmy44kkqZ++O85BPBQrmowcgxu2tlOvuMzl967Mr6ZbyH1Z2Fdzoxb70cOFZkvGzKAcGhqV5XYolWQfNmp/dtCq1jxw= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710356818; c=relaxed/simple; bh=GkA/+BTbAEWN4aq8ydgEmrBgig8OWYn/jbOTgxEvzCc=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=oc7m14b8+w8xjgsW0TJv4GjhdKcRX8DkHFjyf+5qWHINP8QD/O/LZCOmmBhn214hMDqOcWw/2MpqqnQaGO9z9ynGGCntsRfvOQIUyHLhBgyjhfZEEhlI/hhhb5cdOOH1hhb/Ff27zeJqK99S9kMd05aDk/ukIVOprLfP7gpLGgM= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42DHx2Mo015075; Wed, 13 Mar 2024 19:06:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=GkA/+BTbAEWN4aq8ydgEmrBgig8OWYn/jbOTgxEvzCc=; b=LC7HQPlH5loDByn7XgOYqh/bNtJPQu5Z6sKeF6+qxgru4Ct6aEuRSvI2+vgjGEAybNZL aQBlrybdbYJnSrnp7uO906UCzdyTNq2yPK+VMorX2vWFFIVDGtkE+w8kOcLQfx2PhOXO DObqcugJZbYsQ1QhJZrlEzrU96cDV43H0jM2VUnx/FHbhz/ZJRbnc2voOWu5Y3MKBA3r nDubtnOgbpDvjm+5ig56AzeZoUDBCRzEY1rp+3eS50cHfjmNmZCMefYeItYvSxUG0dS+ ANRj+2g+evYhVuoL7RMXYTiWPm+tB9OI02r+ykWJF1vTAFIhrVpPmPwtGuqDrjLzjyDL AA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3wrftdhwtx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 13 Mar 2024 19:06:53 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 42DI3YRI009081; Wed, 13 Mar 2024 19:06:53 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3wre7fh3ur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 13 Mar 2024 19:06:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YpFvc8eb7I/5BX6p8ptnaveEURejH6vMXVcnVyoQncIBYcFX7xJQJzygRLix/nOEU1jzEy4xzqrPQia5wcLLk4QtyS8obHl1ugGakmxLA1jut0oKO2FG9mdVGla5/zEXwRzLT6mTvrBzg/yWzb5GtMACz9QnbJ40+JThzFwMH1ogr/08H8pBDO96f4bF1rwg+gJ4lm2M5QYVDR6SHF2mGf0O/Hwqs5kYCIjB99ZBwl6a+y7zP5Y8ifqSC+/vlne6zSS4u1F6maUJThD2HzciEHybVzBDoKai73xqdVNqJLMBxTK8mUFBJUJhMvI1nhCMUVJaBXmqZbrUfT9wHj/5EQ== 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=GkA/+BTbAEWN4aq8ydgEmrBgig8OWYn/jbOTgxEvzCc=; b=ZMPAxwpWYqi/e7hnshQv5gL3Y4NK5e1qvtQjQNQDhhyKxi6YyGTrJo5lGJRI7NQ1gj4zbzewgBnK0e4eGb3Ij6z1kMin4d6GW8KZbaRuAXBVFBUzB5+DviVcYgmLAhCG7DSlrz086S7VmSX7OlT2gxGj01q3dDYcxR2ex3X3ut9UfE/TIcOorm+nOKGC0FZ2nJD62JVTeQGIWZXCEgds11ehOYZ/3rvCt9CYY8FftdEL1YDkG0ZPAx4g+/D4K5DbfEZQve2Xy1sJNB+TlPa6ugPbKXExSu1FSfF41jPsihyynae4xMkg4EUDTn5klMua51+3nDLujHO2iEq/4YafdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GkA/+BTbAEWN4aq8ydgEmrBgig8OWYn/jbOTgxEvzCc=; b=kX1sRmxuMVaue5SM1pU29N04IihV7v1Jwdm5HfV6B3Qd00DEhUgqmsAsuPQktNhhu0i8obfExo41mpaXNbTBAsmPGCa61QHDkw7zAdQjiJ6on5quytPWTZRK/7L+ONlJZMr8TouUc9uf57w1vceW2eVOtEG7e8GPez4xOsSXHv0= Received: from CY8PR10MB6538.namprd10.prod.outlook.com (2603:10b6:930:5a::17) by IA1PR10MB7237.namprd10.prod.outlook.com (2603:10b6:208:3f7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.18; Wed, 13 Mar 2024 19:06:50 +0000 Received: from CY8PR10MB6538.namprd10.prod.outlook.com ([fe80::2dae:7852:9563:b4bc]) by CY8PR10MB6538.namprd10.prod.outlook.com ([fe80::2dae:7852:9563:b4bc%6]) with mapi id 15.20.7386.017; Wed, 13 Mar 2024 19:06:50 +0000 From: Qing Zhao To: Siddhesh Poyarekar CC: Joseph Myers , "richard.guenther@gmail.com" , "uecker@tugraz.at" , "keescook@chromium.org" , "isanbard@gmail.com" , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH v6 2/5] Convert references with "counted_by" attributes to/from .ACCESS_WITH_SIZE. Thread-Topic: [PATCH v6 2/5] Convert references with "counted_by" attributes to/from .ACCESS_WITH_SIZE. Thread-Index: AQHaYRD/Caua2Ui+6E+bOQh7AfgHbrEy67uAgANFSQA= Date: Wed, 13 Mar 2024 19:06:50 +0000 Message-ID: References: <20240216194723.391359-1-qing.zhao@oracle.com> <20240216194723.391359-3-qing.zhao@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3774.400.31) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY8PR10MB6538:EE_|IA1PR10MB7237:EE_ x-ms-office365-filtering-correlation-id: 014a96ae-3233-4cc4-ac33-08dc4390bced x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: usOQ2kcQlKiTxHvUIyF5Pdwkvyp0LDsDxYSmQZgNKl1mysfV6TbBhthMj+L0z9f5xxcNBwGSCDwahJtQlGXG9T7U7f3guFoVXfeIpgj4YBwh1h48UTEWeWIFDdjZODKdgZYDUjvtaWVMLJm0e00X2BJBBPHWXdToPLyOWn9d/ZhKnLV1JC5M4hGULI0cK0mXgZVVlDIYAJFqlzcUOJl5USAri6o8MzT6L6p+nJYEeb2YJ1xh/+g0l9keUKg7jnvgxBz3qHe7XKkMYmFGLop4EjO7IwiMfsfwZXFzwfZxhULae+dEoT1FMsk25zT9aEirRWUSc4x2bgL3gUSNlxddW+lla8F5+HboiGhv2VLPyv1GnBhX6ItEs7sTeV799M1iukMLxb99VrgsPLFiSLnD97A3CvookB+yjwlnnist3muBbbjFkJaMsf8ZRviEtaeKQEglW1oeI3dbo3Tfyzqtn28mkwpO47xBbp6VV4zon+X4RCLA3D97k4I6wR9TwBsOy67Txgtg00p55B4lgGoi+GJ03fxAcx7DqfTN/bPY61nSVYir/HbZCTSPNkC289T0xxU5P3p5WqoXCBiV8ZAG3QOIjjAffY+jx3i01KpKQz8jAW1uO7vCS9itbUSbleHRJX9GG7Gz5anPewwHokLI1eSc/Lj4e7+KY6F7Z6WtyCk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR10MB6538.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(1800799015)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ckNHZTRLSGE1UDF6aUErUjF2N3czU2w4MTVMM0M2WmdLWkVMaDRxaythZEx0?= =?utf-8?B?VkNhT0JibUtxZ3lpbFpOejdGYmZJOVZkVTdLcHlaNFdjRUdmZkxCeFpuQXov?= =?utf-8?B?V1g0Wm8zUUc0MWh2bGdYSWVKTzZlMWQ5blVEcmRyOGVKSHJEM0h4L1hmNUhM?= =?utf-8?B?Y2pROEpLelRjMXJ6eGduUE9aVHpXcFQycmE4dkhvUDVtbkpkUVNscnBKVEgw?= =?utf-8?B?M1FSaTZWOHZ1MjAwd1dYUjNmbnFJSlJZZUtoNDBXanhFc3dpVVNRK2NSb2pR?= =?utf-8?B?R0UyNzZ1bXMraHJkSDUvb3BKZkVDU1pvYXJwQ0VFcnczaUk2R2xGeXhjMXNM?= =?utf-8?B?Y0hYWnkvN1ZnVFlmMDFSU0JDUjRuRHcrUW5PbkYvbjVoUGpSRUZqY2NoczhP?= =?utf-8?B?UHlyeVVHNTBSU1h5MlNhQnBFUmxicG1teWVscmp2WWJIZW1wSnROYmU3S3Rw?= =?utf-8?B?KzdncldYY0dXT1FsOS9GTTh2bzNIWTZMMExKNTB2M0NGYUdJYWh4NG85elJB?= =?utf-8?B?U2UrR21HMWxlN2xMd0hscEd1b1JuSUtWajczeFNWT3c3TjU5ckduQ05GTURP?= =?utf-8?B?QkdxTjV3a3M0TWZBZVJVdmtSMUhhcTZyeWU2TzdDL0ZTMGF5aUJyUTNGTlFD?= =?utf-8?B?S1JWTGpEVTBqOEdSSWpDTEd3Y0RWWmdVVkNIQngvUG42OFlmZy9YNU1RQWN6?= =?utf-8?B?VEpMb2o2VTBwajBEL3RwUG5SZW1YTzVjeHptdTNBWll4UlRWb2Q0ZHZWZGRa?= =?utf-8?B?enRsUHA3dEM3L2xlam5jNG1BMExMYmdHQTdTUFl2NXZRSGRKRmR5aEJtMFpO?= =?utf-8?B?dFIzcG9iUkw1NmZkdVVjQTR6YzN4RnpOQ2dtaStVRTJxUW5nam05NnpUc0h3?= =?utf-8?B?MEJxVS83VXI2TW1xZTNpcnNtWmg1azRIdXZjeUF5YmtRS2NTaHd4VGZDQmRh?= =?utf-8?B?enRFYWNWeFo4b00wMUhnNXlxWFNRSUhZanpnRE1BZy9KNWxYNVUzOVh6am50?= =?utf-8?B?YW9YcHQ3aHFIcnA5ZVNhNDBUZnUxUTl5MVQ3YXhlcnZnajFMRGpVU3BZU1By?= =?utf-8?B?ZnhvUG50V1diRzMyd0dYSEI3c2xWbHpuWmZYZEpZSE56Si9BZDd1N2tsbnlT?= =?utf-8?B?QUcyN3M2SytlTVJsbnNXUVhiUU0zMzhQMTRQWFVMNktDUXlMTk44Y0w1MWhS?= =?utf-8?B?M3F4dDNwdmlIVkZDVDlCVWR1RjgzbjdHZzR0NGRxeGhjMUU2YjkrOWt5S2FR?= =?utf-8?B?dW9xOCs5bHJEdTJOOWtGKzdNdkpKTFlSMnR4WCtsaURtQmpEU3RwVWFyZXMy?= =?utf-8?B?d1VNU1FkNXdPZW5MNVJLQ3lKMUU2clRWSm5NQkRoUlJiRlBwTitNUTQ4TER1?= =?utf-8?B?K3o5a0MxMm9vdmZ4SW5lb1BXcGRpSU4ybmdnNmZOcElPNkJRNnV5NExwdnJB?= =?utf-8?B?ZDA5aHVtMVdSZEd2dml2azNMV3JXa0lzRnVJNWpFT3NUMDBSUUd3NEh2M1ZD?= =?utf-8?B?UVkzT3RnM0pvcjBtQW9mZ1NESVI1a1h1Wkg5MjFOTjJNdjg0dHkwTnQyVTJB?= =?utf-8?B?cGVReFBzVmRwNHRxMkZxaXo4RUN5ZlJDMjdlaHlFVUt2QUVhcWlJbU5jL0Vp?= =?utf-8?B?NDJTNVBTTE1UZjhqNDFrbGZ5S25LOURaK05uOGlhK3JFNWhtckhRWDVGenBs?= =?utf-8?B?bVNRRmxPKzRxOTdKZWVFalg0ZFJ5cUFweG9pa2FqQjhvOEdKV3lzVXJGWmVv?= =?utf-8?B?WnZGaHFHVDdMZnBUamJUK1Ric3BQdlNqQlhmeVc4MEtvMjV2Yld4VmJndk5u?= =?utf-8?B?S0ZjR3NZbjZmOW5lZjY5allxZXcwOUltN0t5VEZZeFVqcU8wTGdXeVFzY1ly?= =?utf-8?B?Y1NRUEorTzN6K24wanNWQ0h1bXdHWVBXRmsyYVlZZUREd1Q5ZlFoSmFhZXdL?= =?utf-8?B?WTZFUGw4dUJ3Ym1pbGZnYVl3ZG1aUE9HUURVM0VZVGJhR2xnNGJtNVowazRP?= =?utf-8?B?MndPSUZRWlFLdGFKd09RVlIrMlRqTVQ2REUvQzMxRkV2UzVsemVRRHB6ZU0y?= =?utf-8?B?a3RhcHJKdGhrUm5VL3RGS2JuRFBiZEp4ZHR5eFVnei9KUkZMbkNoMnpZZjRK?= =?utf-8?Q?K6SOCTuFaDI4d0NX+5biKjlts?= Content-Type: text/plain; charset="utf-8" Content-ID: <1CFC3D908F831045A9B00A7A79865453@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: b8awva2YLPe3Dgu02awVjF+z2/18YKnJEGgk66DAD2u+WoS0PfnLtZ/gTKAfqNM6JV5jA55GMZuqeo59lGxiWkParY7z6m68pnQLYwBHVdmERMlqvAOJ9LADJsfL4snwMHR0L+2p7XJa3CtAmMMaDKLp27KXHYkVDHJsO3jx1qJs++2vUjYDh8DsMxj0NDKnldC6OOksp0ADS/dn+WMolP258hoi8O7sOBsySQqoVK9vT6h0audqLASHs22dLT1dvslzy1UgKjIC9pOQxkbvQS4mwBExZefvk0KY+Fp0ouf4wKqFFUvOEFV9sKkmp9mo+SQV5IA6gg8S6Tsi8moijw4b4KRlQcjfVMXTgjbFykjmJgCMAtr/Kqc0rBKA6L3PSDpVby0ErVugOx5S2fmOtiozpLe+d/CwOHbpesSJLPfu2rUFr+cn2Wm/I4vBl2/GJ+JZ/NPW4qq4u5bo8J0ktYgyHK3YxDVLL5KOcNJ2xw9FCgxsdaDpqLidssrhl3bOi/aLNCGysy/mEvj34kR8Ud9x9Zj/Oe36hF657Utwln1Mzz+hi0Foc6xNbWuYEF5VxrQFnEDk4AxYKBZ3UhpkMKhrTDnpL8ctsbf12S+NqeU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR10MB6538.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 014a96ae-3233-4cc4-ac33-08dc4390bced X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2024 19:06:50.3372 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: MHMB/PrD3uBeSJzXkc8Gc3YoQ6iQ5teVr7aTA9gpsYk3h55WG5kL/5dm9VFlefmS9bzVwpdhYRYvBd6sed/crw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7237 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-13_09,2024-03-13_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 malwarescore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403130146 X-Proofpoint-ORIG-GUID: zIVkORgmtEKcq6Ky1CG7AJHjp8abGaac X-Proofpoint-GUID: zIVkORgmtEKcq6Ky1CG7AJHjp8abGaac X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gT24gTWFyIDExLCAyMDI0LCBhdCAxMzowOSwgU2lkZGhlc2ggUG95YXJla2FyIDxzaWRk aGVzaEBnb3RwbHQub3JnPiB3cm90ZToNCj4gDQo+IA0KPiANCj4gT24gMjAyNC0wMi0xNiAxNDo0 NywgUWluZyBaaGFvIHdyb3RlOg0KPj4gSW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoN Cj4+ICogVGhlIGRlZmluaXRpb24gb2YgdGhlIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiAuQUNDRVNT X1dJVEhfU0laRQ0KPj4gICBpbiBpbnRlcm5hbC1mbi5kZWYuDQo+PiAqIEMgRkUgY29udmVydHMg ZXZlcnkgcmVmZXJlbmNlIHRvIGEgRkFNIHdpdGggYSAiY291bnRlZF9ieSIgYXR0cmlidXRlDQo+ PiAgIHRvIGEgY2FsbCB0byB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gLkFDQ0VTU19XSVRIX1NJWkUu DQo+PiAgIChidWlsZF9jb21wb25lbnRfcmVmIGluIGNfdHlwZWNrLmNjKQ0KPj4gICBUaGlzIGlu Y2x1ZGVzIHRoZSBjYXNlIHdoZW4gdGhlIG9iamVjdCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBh bmQNCj4+ICAgaW5pdGlhbGl6ZWQuDQo+PiAgIEluIG9yZGVyIHRvIG1ha2UgdGhpcyB3b3JraW5n LCB0aGUgcm91dGluZXMgaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcF8xDQo+PiAgIGFuZCBv dXRwdXRfY29uc3RhbnQgaW4gdmFyYXNtLmNjIGFyZSB1cGRhdGVkIHRvIGhhbmRsZSBjYWxscyB0 bw0KPj4gICAuQUNDRVNTX1dJVEhfU0laRS4NCj4+ICAgKGluaXRpYWxpemVyX2NvbnN0YW50X3Zh bGlkX3BfMSBhbmQgb3V0cHV0X2NvbnN0YW50IGluIHZhcmFzbS5jKQ0KPj4gICBIb3dldmVyLCBm b3IgdGhlIHJlZmVyZW5jZSBpbnNpZGUgIm9mZnNldG9mIiwgdGhlICJjb3VudGVkX2J5IiBhdHRy aWJ1dGUgaXMNCj4+ICAgaWdub3JlZCBzaW5jZSBpdCdzIG5vdCB1c2VmdWwgYXQgYWxsLg0KPj4g ICAoY19wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uIGluIGMvYy1wYXJzZXIuY2MpDQo+PiAgIElu IGFkZHRpb24gdG8gIm9mZnNldG9mIiwgZm9yIHRoZSByZWZlcmVuY2UgaW5zaWRlIG9wZXJhdG9y ICJ0eXBlb2YiIGFuZA0KPj4gICAiYWxpZ25vZiIsIHdlIGlnbm9yZSBjb3VudGVkX2J5IGF0dHJp YnV0ZSB0b28uDQo+PiAgIFdoZW4gYnVpbGRpbmcgQUREUl9FWFBSIGZvciB0aGUgLkFDQ0VTU19X SVRIX1NJWkUgaW4gQyBGRSwNCj4+ICAgcmVwbGFjZSB0aGUgY2FsbCB3aXRoIGl0cyBmaXJzdCBh cmd1bWVudC4NCj4+ICogQ29udmVydCBldmVyeSBjYWxsIHRvIC5BQ0NFU1NfV0lUSF9TSVpFIHRv IGl0cyBmaXJzdCBhcmd1bWVudC4NCj4+ICAgKGV4cGFuZF9BQ0NFU1NfV0lUSF9TSVpFIGluIGlu dGVybmFsLWZuLmNjKQ0KPj4gKiBBZGp1c3QgYWxpYXMgYW5hbHlzaXMgdG8gZXhjbHVkZSB0aGUg bmV3IGludGVybmFsIGZyb20gY2xvYmJlcmluZyBhbnl0aGluZy4NCj4+ICAgKHJlZl9tYXliZV91 c2VkX2J5X2NhbGxfcF8xIGFuZCBjYWxsX21heV9jbG9iYmVyX3JlZl9wXzEgaW4gdHJlZS1zc2Et YWxpYXMuY2MpDQo+PiAqIEFkanVzdCBkZWFkIGNvZGUgZWxpbWluYXRpb24gdG8gZWxpbWluYXRl IHRoZSBjYWxsIHRvIC5BQ0NFU1NfV0lUSF9TSVpFIHdoZW4NCj4+ICAgaXQncyBMSFMgaXMgZWxp bWluYXRlZCBhcyBkZWFkIGNvZGUuDQo+PiAgIChlbGltaW5hdGVfdW5uZWNlc3Nhcnlfc3RtdHMg aW4gdHJlZS1zc2EtZGNlLmNjKQ0KPj4gKiBQcm92aWRlIHRoZSB1dGlsaXR5IHJvdXRpbmVzIHRv IGNoZWNrIHRoZSBjYWxsIGlzIC5BQ0NFU1NfV0lUSF9TSVpFIGFuZA0KPj4gICBnZXQgdGhlIHJl ZmVyZW5jZSBmcm9tIHRoZSBjYWxsIHRvIC5BQ0NFU1NfV0lUSF9TSVpFLg0KPj4gICAoaXNfYWNj ZXNzX3dpdGhfc2l6ZV9wIGFuZCBnZXRfcmVmX2Zyb21fYWNjZXNzX3dpdGhfc2l6ZSBpbiB0cmVl LmNjKQ0KPj4gZ2NjL2MvQ2hhbmdlTG9nOg0KPj4gCSogYy1wYXJzZXIuY2MgKGNfcGFyc2VyX3Bv c3RmaXhfZXhwcmVzc2lvbik6IElnbm9yZSB0aGUgY291bnRlZC1ieQ0KPj4gCWF0dHJpYnV0ZSB3 aGVuIGJ1aWxkX2NvbXBvbmVudF9yZWYgaW5zaWRlIG9mZnNldG9mIG9wZXJhdG9yLg0KPj4gCSog Yy10cmVlLmggKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBBZGQgb25lIG1vcmUgcGFyYW1ldGVyLg0K Pj4gCSogYy10eXBlY2suY2MgKGJ1aWxkX2NvdW50ZWRfYnlfcmVmKTogTmV3IGZ1bmN0aW9uLg0K Pj4gCShidWlsZF9hY2Nlc3Nfd2l0aF9zaXplX2Zvcl9jb3VudGVkX2J5KTogTmV3IGZ1bmN0aW9u Lg0KPj4gCShidWlsZF9jb21wb25lbnRfcmVmKTogQ2hlY2sgdGhlIGNvdW50ZWQtYnkgYXR0cmli dXRlIGFuZCBidWlsZA0KPj4gCWNhbGwgdG8gLkFDQ0VTU19XSVRIX1NJWkUuDQo+PiAJKGJ1aWxk X3VuYXJ5X29wKTogV2hlbiBidWlsZGluZyBBRERSX0VYUFIgZm9yDQo+PiAgICAgICAgIC5BQ0NF U1NfV0lUSF9TSVpFLCB1c2UgaXRzIGZpcnN0IGFyZ3VtZW50Lg0KPj4gICAgICAgICAobHZhbHVl X3ApOiBBY2NlcHQgY2FsbCB0byAuQUNDRVNTX1dJVEhfU0laRS4NCj4+IGdjYy9DaGFuZ2VMb2c6 DQo+PiAJKiBpbnRlcm5hbC1mbi5jYyAoZXhwYW5kX0FDQ0VTU19XSVRIX1NJWkUpOiBOZXcgZnVu Y3Rpb24uDQo+PiAJKiBpbnRlcm5hbC1mbi5kZWYgKEFDQ0VTU19XSVRIX1NJWkUpOiBOZXcgaW50 ZXJuYWwgZnVuY3Rpb24uDQo+PiAJKiB0cmVlLXNzYS1hbGlhcy5jYyAocmVmX21heWJlX3VzZWRf YnlfY2FsbF9wXzEpOiBTcGVjaWFsIGNhc2UNCj4+IAlJRk5fQUNDRVNTX1dJVEhfU0laRS4NCj4+ IAkoY2FsbF9tYXlfY2xvYmJlcl9yZWZfcF8xKTogU3BlY2lhbCBjYXNlIElGTl9BQ0NFU1NfV0lU SF9TSVpFLg0KPj4gCSogdHJlZS1zc2EtZGNlLmNjIChlbGltaW5hdGVfdW5uZWNlc3Nhcnlfc3Rt dHMpOiBFbGltaW5hdGUgdGhlIGNhbGwNCj4+IAl0byAuQUNDRVNTX1dJVEhfU0laRSB3aGVuIGl0 cyBMSFMgaXMgZGVhZC4NCj4+IAkqIHRyZWUuY2MgKHByb2Nlc3NfY2FsbF9vcGVyYW5kcyk6IEFk anVzdCBzaWRlIGVmZmVjdCBmb3IgZnVuY3Rpb24NCj4+IAkuQUNDRVNTX1dJVEhfU0laRS4NCj4+ IAkoaXNfYWNjZXNzX3dpdGhfc2l6ZV9wKTogTmV3IGZ1bmN0aW9uLg0KPj4gCShnZXRfcmVmX2Zy b21fYWNjZXNzX3dpdGhfc2l6ZSk6IE5ldyBmdW5jdGlvbi4NCj4+IAkqIHRyZWUuaCAoaXNfYWNj ZXNzX3dpdGhfc2l6ZV9wKTogTmV3IHByb3RvdHlwZS4NCj4+IAkoZ2V0X3JlZl9mcm9tX2FjY2Vz c193aXRoX3NpemUpOiBOZXcgcHJvdG90eXBlLg0KPj4gCSogdmFyYXNtLmNjIChpbml0aWFsaXpl cl9jb25zdGFudF92YWxpZF9wXzEpOiBIYW5kbGUgY2FsbCB0bw0KPj4gCS5BQ0NFU1NfV0lUSF9T SVpFLg0KPj4gCShvdXRwdXRfY29uc3RhbnQpOiBIYW5kbGUgY2FsbCB0byAuQUNDRVNTX1dJVEhf U0laRS4NCj4+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPj4gCSogZ2NjLmRnL2ZsZXgtYXJy YXktY291bnRlZC1ieS0yLmM6IE5ldyB0ZXN0Lg0KPj4gLS0tDQo+PiAgZ2NjL2MvYy1wYXJzZXIu Y2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstDQo+PiAgZ2NjL2MvYy10cmVl LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQo+PiAgZ2NjL2MvYy10 eXBlY2suY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrKysr KysrLQ0KPj4gIGdjYy9pbnRlcm5hbC1mbi5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAzNiArKysrKw0KPj4gIGdjYy9pbnRlcm5hbC1mbi5kZWYgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArDQo+PiAgLi4uL2djYy5kZy9mbGV4LWFycmF5LWNvdW50ZWQtYnktMi5jICAg ICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKw0KPj4gIGdjYy90cmVlLXNzYS1hbGlhcy5jYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+PiAgZ2NjL3RyZWUtc3NhLWRjZS5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+PiAgZ2NjL3RyZWUuY2MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICsrKy0NCj4+ICBnY2MvdHJlZS5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKysNCj4+ICBnY2MvdmFyYXNt LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysNCj4+ICAxMSBmaWxl cyBjaGFuZ2VkLCAzMzIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pDQo+PiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0y LmMNCj4+IGRpZmYgLS1naXQgYS9nY2MvYy9jLXBhcnNlci5jYyBiL2djYy9jL2MtcGFyc2VyLmNj DQo+PiBpbmRleCBjMzEzNDlkYWUyZmYuLmE2ZWQ1YWM0M2JiMSAxMDA2NDQNCj4+IC0tLSBhL2dj Yy9jL2MtcGFyc2VyLmNjDQo+PiArKysgYi9nY2MvYy9jLXBhcnNlci5jYw0KPj4gQEAgLTEwODUw LDkgKzEwODUwLDEyIEBAIGNfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbiAoY19wYXJzZXIgKnBh cnNlcikNCj4+ICAJICAgIGlmIChjX3BhcnNlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXIsIENQUF9O QU1FKSkNCj4+ICAJICAgICAgew0KPj4gIAkJY190b2tlbiAqY29tcF90b2sgPSBjX3BhcnNlcl9w ZWVrX3Rva2VuIChwYXJzZXIpOw0KPj4gKwkJLyogSWdub3JlIHRoZSBjb3VudGVkX2J5IGF0dHJp YnV0ZSBmb3IgcmVmZXJlbmNlIGluc2lkZQ0KPj4gKwkJICAgb2Zmc2V0b2Ygc2luY2UgdGhlIGlu Zm9ybWF0aW9uIGlzIG5vdCB1c2VmdWwgYXQgYWxsLiAgKi8NCj4+ICAJCW9mZnNldG9mX3JlZg0K Pj4gIAkJICA9IGJ1aWxkX2NvbXBvbmVudF9yZWYgKGxvYywgb2Zmc2V0b2ZfcmVmLCBjb21wX3Rv ay0+dmFsdWUsDQo+PiAtCQkJCQkgY29tcF90b2stPmxvY2F0aW9uLCBVTktOT1dOX0xPQ0FUSU9O KTsNCj4+ICsJCQkJCSBjb21wX3Rvay0+bG9jYXRpb24sIFVOS05PV05fTE9DQVRJT04sDQo+PiAr CQkJCQkgZmFsc2UpOw0KPj4gIAkJY19wYXJzZXJfY29uc3VtZV90b2tlbiAocGFyc2VyKTsNCj4+ ICAJCXdoaWxlIChjX3BhcnNlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXIsIENQUF9ET1QpDQo+PiAg CQkgICAgICAgfHwgY19wYXJzZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLA0KPj4gQEAgLTEwODc5 LDExICsxMDg4MiwxNCBAQCBjX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24gKGNfcGFyc2VyICpw YXJzZXIpDQo+PiAgCQkJICAgIGJyZWFrOw0KPj4gIAkJCSAgfQ0KPj4gIAkJCWNfdG9rZW4gKmNv bXBfdG9rID0gY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKTsNCj4+ICsJCQkvKiBJZ25vcmUg dGhlIGNvdW50ZWRfYnkgYXR0cmlidXRlIGZvciByZWZlcmVuY2UgaW5zaWRlDQo+PiArCQkJICAg b2Zmc2V0b2Ygc2luY2UgdGhlIGluZm9ybWF0aW9uIGlzIG5vdCB1c2VmdWwuICAqLw0KPj4gIAkJ CW9mZnNldG9mX3JlZg0KPj4gIAkJCSAgPSBidWlsZF9jb21wb25lbnRfcmVmIChsb2MsIG9mZnNl dG9mX3JlZiwNCj4+ICAJCQkJCQkgY29tcF90b2stPnZhbHVlLA0KPj4gIAkJCQkJCSBjb21wX3Rv ay0+bG9jYXRpb24sDQo+PiAtCQkJCQkJIFVOS05PV05fTE9DQVRJT04pOw0KPj4gKwkJCQkJCSBV TktOT1dOX0xPQ0FUSU9OLA0KPj4gKwkJCQkJCSBmYWxzZSk7DQo+PiAgCQkJY19wYXJzZXJfY29u c3VtZV90b2tlbiAocGFyc2VyKTsNCj4+ICAJCSAgICAgIH0NCj4+ICAJCSAgICBlbHNlDQo+PiBk aWZmIC0tZ2l0IGEvZ2NjL2MvYy10cmVlLmggYi9nY2MvYy9jLXRyZWUuaA0KPj4gaW5kZXggYzdj MjNlZGM0ODQwLi41OWI2OWNhNTRmMGYgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvYy9jLXRyZWUuaA0K Pj4gKysrIGIvZ2NjL2MvYy10cmVlLmgNCj4+IEBAIC03NzgsNyArNzc4LDcgQEAgZXh0ZXJuIHZv aWQgbWFya19leHBfcmVhZCAodHJlZSk7DQo+PiAgZXh0ZXJuIHRyZWUgY29tcG9zaXRlX3R5cGUg KHRyZWUsIHRyZWUpOw0KPj4gIGV4dGVybiB0cmVlIGxvb2t1cF9maWVsZCAodHJlZSwgdHJlZSk7 DQo+PiAgZXh0ZXJuIHRyZWUgYnVpbGRfY29tcG9uZW50X3JlZiAobG9jYXRpb25fdCwgdHJlZSwg dHJlZSwgbG9jYXRpb25fdCwNCj4+IC0JCQkJIGxvY2F0aW9uX3QpOw0KPj4gKwkJCQkgbG9jYXRp b25fdCwgYm9vbCA9IHRydWUpOw0KPj4gIGV4dGVybiB0cmVlIGJ1aWxkX2FycmF5X3JlZiAobG9j YXRpb25fdCwgdHJlZSwgdHJlZSk7DQo+PiAgZXh0ZXJuIHRyZWUgYnVpbGRfb21wX2FycmF5X3Nl Y3Rpb24gKGxvY2F0aW9uX3QsIHRyZWUsIHRyZWUsIHRyZWUpOw0KPj4gIGV4dGVybiB0cmVlIGJ1 aWxkX2V4dGVybmFsX3JlZiAobG9jYXRpb25fdCwgdHJlZSwgYm9vbCwgdHJlZSAqKTsNCj4+IGRp ZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jYyBiL2djYy9jL2MtdHlwZWNrLmNjDQo+PiBpbmRl eCBjZWFkMGEwNTUwNjguLmEyOWE3ZDdlYzAyOSAxMDA2NDQNCj4+IC0tLSBhL2djYy9jL2MtdHlw ZWNrLmNjDQo+PiArKysgYi9nY2MvYy9jLXR5cGVjay5jYw0KPj4gQEAgLTI1NDYsMTUgKzI1NDYs MTE2IEBAIHNob3VsZF9zdWdnZXN0X2RlcmVmX3AgKHRyZWUgZGF0dW1fdHlwZSkNCj4+ICAgICAg cmV0dXJuIGZhbHNlOw0KPj4gIH0NCj4+ICArLyogRm9yIGEgU1VCREFUVU0gZmllbGQgb2YgYSBz dHJ1Y3R1cmUgb3IgdW5pb24gREFUVU0sIGdlbmVyYXRlIGEgUkVGIHRvDQo+PiArICAgdGhlIG9i amVjdCB0aGF0IHJlcHJlc2VudHMgaXRzIGNvdW50ZWRfYnkgcGVyIHRoZSBhdHRyaWJ1dGUgY291 bnRlZF9ieQ0KPj4gKyAgIGF0dGFjaGVkIHRvIHRoaXMgZmllbGQgaWYgaXQncyBhIGZsZXhpYmxl IGFycmF5IG1lbWJlciBmaWVsZCwgb3RoZXJ3aXNlDQo+PiArICAgcmV0dXJuIE5VTExfVFJFRS4N Cj4+ICsgICBzZXQgQ09VTlRFRF9CWV9UWVBFIHRvIHRoZSBUWVBFIG9mIHRoZSBjb3VudGVkX2J5 IGZpZWxkLg0KPj4gKyAgIEZvciBleGFtcGxlLCBpZjoNCj4+ICsNCj4+ICsgICAgc3RydWN0IFAg ew0KPj4gKyAgICAgIGludCBrOw0KPj4gKyAgICAgIGludCB4W10gX19hdHRyaWJ1dGVfXyAoKGNv dW50ZWRfYnkgKGspKSk7DQo+PiArICAgIH0gKnA7DQo+PiArDQo+PiArICAgIGZvcjoNCj4+ICsg ICAgcC0+eA0KPj4gKw0KPj4gKyAgICB0aGUgcmVmIHRvIHRoZSBvYmplY3QgdGhhdCByZXByZXNl bnRzIGl0cyBlbGVtZW50IGNvdW50IHdpbGwgYmU6DQo+PiArDQo+PiArICAgICYocC0+aykNCj4+ ICsNCj4+ICsqLw0KPj4gK3N0YXRpYyB0cmVlDQo+PiArYnVpbGRfY291bnRlZF9ieV9yZWYgKHRy ZWUgZGF0dW0sIHRyZWUgc3ViZGF0dW0sIHRyZWUgKmNvdW50ZWRfYnlfdHlwZSkNCj4+ICt7DQo+ PiArICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGRhdHVtKTsNCj4+ICsgIGlmICghKGNfZmxleGli bGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoVFJFRV9UWVBFIChzdWJkYXR1bSkpKSkNCj4+ICsgICAg cmV0dXJuIE5VTExfVFJFRTsNCj4+ICsNCj4+ICsgIHRyZWUgYXR0cl9jb3VudGVkX2J5ID0gbG9v a3VwX2F0dHJpYnV0ZSAoImNvdW50ZWRfYnkiLA0KPj4gKwkJCQkJICAgREVDTF9BVFRSSUJVVEVT IChzdWJkYXR1bSkpOw0KPj4gKyAgdHJlZSBjb3VudGVkX2J5X3JlZiA9IE5VTExfVFJFRTsNCj4+ ICsgICpjb3VudGVkX2J5X3R5cGUgPSBOVUxMX1RSRUU7DQo+PiArICBpZiAoYXR0cl9jb3VudGVk X2J5KQ0KPj4gKyAgICB7DQo+PiArICAgICAgdHJlZSBmaWVsZF9pZCA9IFRSRUVfVkFMVUUgKFRS RUVfVkFMVUUgKGF0dHJfY291bnRlZF9ieSkpOw0KPj4gKyAgICAgIGNvdW50ZWRfYnlfcmVmDQo+ PiArCT0gYnVpbGRfY29tcG9uZW50X3JlZiAoVU5LTk9XTl9MT0NBVElPTiwNCj4+ICsJCQkgICAg ICAgZGF0dW0sIGZpZWxkX2lkLA0KPj4gKwkJCSAgICAgICBVTktOT1dOX0xPQ0FUSU9OLCBVTktO T1dOX0xPQ0FUSU9OKTsNCj4+ICsgICAgICBjb3VudGVkX2J5X3JlZiA9IGJ1aWxkX2ZvbGRfYWRk cl9leHByIChjb3VudGVkX2J5X3JlZik7DQo+PiArDQo+PiArICAgICAgLyogZ2V0IHRoZSBUWVBF IG9mIHRoZSBjb3VudGVkX2J5IGZpZWxkLiAgKi8NCj4+ICsgICAgICB0cmVlIGNvdW50ZWRfYnlf ZmllbGQgPSBsb29rdXBfZmllbGQgKHR5cGUsIGZpZWxkX2lkKTsNCj4+ICsgICAgICBnY2NfYXNz ZXJ0IChjb3VudGVkX2J5X2ZpZWxkKTsNCj4+ICsNCj4+ICsgICAgICBkbw0KPj4gKwl7DQo+PiAr CSAgKmNvdW50ZWRfYnlfdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9WQUxVRSAoY291bnRlZF9ieV9m aWVsZCkpOw0KPj4gKwkgIGNvdW50ZWRfYnlfZmllbGQgPSBUUkVFX0NIQUlOIChjb3VudGVkX2J5 X2ZpZWxkKTsNCj4+ICsJfQ0KPj4gKyAgICAgIHdoaWxlIChjb3VudGVkX2J5X2ZpZWxkKTsNCj4+ ICsgICAgfQ0KPj4gKyAgcmV0dXJuIGNvdW50ZWRfYnlfcmVmOw0KPj4gK30NCj4gDQo+IEJ1aWxk IHRoZSBzZWNvbmQgYXJnLCBpLmUuIHRoZSBhZGRyZXNzIG9mIHRoZSBjb3VudGVkX2J5IGZpZWxk LiAgT0suDQo+IA0KPj4gKw0KPj4gKy8qIEdpdmVuIGEgQ09NUE9ORU5UX1JFRiBSRUYgd2l0aCB0 aGUgbG9jYXRpb24gTE9DLCB0aGUgY29ycmVzcG9uZGluZw0KPj4gKyAgIENPVU5URURfQllfUkVG LCBhbmQgdGhlIENPVU5URURfQllfVFlQRSwgZ2VuZXJhdGUgYW4gSU5ESVJFQ1RfUkVGDQo+PiAr ICAgdG8gYSBjYWxsIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiAuQUNDRVNTX1dJVEhfU0laRS4N Cj4+ICsNCj4+ICsgICBSRUYNCj4+ICsNCj4+ICsgICB0bzoNCj4+ICsNCj4+ICsgICAoKi5BQ0NF U1NfV0lUSF9TSVpFIChSRUYsIENPVU5URURfQllfUkVGLCAxLCAoVFlQRV9PRl9TSVpFKTAsIC0x KSkNCj4+ICsNCj4+ICsgICBOT1RFOiBUaGUgcmV0dXJuIHR5cGUgb2YgdGhpcyBmdW5jdGlvbiBp cyB0aGUgUE9JTlRFUiB0eXBlIHBvaW50aW5nDQo+PiArICAgdG8gdGhlIG9yaWdpbmFsIGZsZXhp YmxlIGFycmF5IHR5cGUuDQo+PiArICAgVGhlbiB0aGUgdHlwZSBvZiB0aGUgSU5ESVJFQ1RfUkVG IGlzIHRoZSBvcmlnaW5hbCBmbGV4aWJsZSBhcnJheSB0eXBlLg0KPj4gKw0KPj4gKyAgIFRoZSB0 eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGEgUE9JTlRFUiB0 eXBlDQo+PiArICAgdG8gdGhlIG9yaWduYWwgZmxleGlibGUgYXJyYXkgdHlwZS4NCj4+ICsNCj4+ ICsgICBUaGUgNHRoIGFyZ3VtZW50IG9mIHRoZSBjYWxsIGlzIGEgY29uc3RhbnQgMCB3aXRoIHRo ZSBUWVBFIG9mIHRoZQ0KPj4gKyAgIG9iamVjdCBwb2ludGVkIGJ5IENPVU5URURfQllfUkVGLg0K Pj4gKw0KPj4gKyAgKi8NCj4+ICtzdGF0aWMgdHJlZQ0KPj4gK2J1aWxkX2FjY2Vzc193aXRoX3Np emVfZm9yX2NvdW50ZWRfYnkgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHJlZiwNCj4+ICsJCQkJICAg ICAgIHRyZWUgY291bnRlZF9ieV9yZWYsDQo+PiArCQkJCSAgICAgICB0cmVlIGNvdW50ZWRfYnlf dHlwZSkNCj4+ICt7DQo+PiArICBnY2NfYXNzZXJ0IChjX2ZsZXhpYmxlX2FycmF5X21lbWJlcl90 eXBlX3AgKFRSRUVfVFlQRSAocmVmKSkpOw0KPj4gKyAgLyogVGhlIHJlc3VsdCB0eXBlIG9mIHRo ZSBjYWxsIGlzIGEgcG9pbnRlciB0byB0aGUgZmxleGlibGUgYXJyYXkgdHlwZS4gICovDQo+PiAr ICB0cmVlIHJlc3VsdF90eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChUUkVFX1RZUEUgKHJlZikp Ow0KPj4gKw0KPj4gKyAgdHJlZSBjYWxsDQo+PiArICAgID0gYnVpbGRfY2FsbF9leHByX2ludGVy bmFsX2xvYyAobG9jLCBJRk5fQUNDRVNTX1dJVEhfU0laRSwNCj4+ICsJCQkJICAgIHJlc3VsdF90 eXBlLCA1LA0KPj4gKwkJCQkgICAgYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uIChsb2MsIHJl ZiksDQo+PiArCQkJCSAgICBjb3VudGVkX2J5X3JlZiwNCj4+ICsJCQkJICAgIGJ1aWxkX2ludF9j c3QgKGludGVnZXJfdHlwZV9ub2RlLCAxKSwNCj4+ICsJCQkJICAgIGJ1aWxkX2ludF9jc3QgKGNv dW50ZWRfYnlfdHlwZSwgMCksDQo+PiArCQkJCSAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5 cGVfbm9kZSwgLTEpKTsNCj4+ICsgIC8qIFdyYXAgdGhlIGNhbGwgd2l0aCBhbiBJTkRJUkVDVF9S RUYgd2l0aCB0aGUgZmxleGlibGUgYXJyYXkgdHlwZS4gICovDQo+PiArICBjYWxsID0gYnVpbGQx IChJTkRJUkVDVF9SRUYsIFRSRUVfVFlQRSAocmVmKSwgY2FsbCk7DQo+PiArICBTRVRfRVhQUl9M T0NBVElPTiAoY2FsbCwgbG9jKTsNCj4+ICsgIHJldHVybiBjYWxsOw0KPj4gK30NCj4+ICsNCj4+ ICAvKiBNYWtlIGFuIGV4cHJlc3Npb24gdG8gcmVmZXIgdG8gdGhlIENPTVBPTkVOVCBmaWVsZCBv ZiBzdHJ1Y3R1cmUgb3INCj4+ICAgICB1bmlvbiB2YWx1ZSBEQVRVTS4gIENPTVBPTkVOVCBpcyBh biBJREVOVElGSUVSX05PREUuICBMT0MgaXMgdGhlDQo+PiAgICAgbG9jYXRpb24gb2YgdGhlIENP TVBPTkVOVF9SRUYuICBDT01QT05FTlRfTE9DIGlzIHRoZSBsb2NhdGlvbg0KPj4gICAgIG9mIENP TVBPTkVOVC4gIEFSUk9XX0xPQyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IC0+IG9wZXJh bmQgaWYNCj4+IC0gICBpdCBpcyBmcm9tIC0+IG9wZXJhdG9yLiAgKi8NCj4+ICsgICBpdCBpcyBm cm9tIC0+IG9wZXJhdG9yLg0KPj4gKyAgIElmIEhBTkRMRV9DT1VOVEVEX0JZIGlzIHRydWUsIGNo ZWNrIHRoZSBjb3VudGVkX2J5IGF0dHJpYnV0ZSBhbmQgZ2VuZXJhdGUNCj4+ICsgICBjYWxsIHRv IC5BQ0NFU1NfV0lUSF9TSVpFLiBvdGhlcndpc2UsIGlnbm9yZSB0aGUgYXR0cmlidXRlLiAgKi8N Cj4+ICAgIHRyZWUNCj4+ICBidWlsZF9jb21wb25lbnRfcmVmIChsb2NhdGlvbl90IGxvYywgdHJl ZSBkYXR1bSwgdHJlZSBjb21wb25lbnQsDQo+PiAtCQkgICAgIGxvY2F0aW9uX3QgY29tcG9uZW50 X2xvYywgbG9jYXRpb25fdCBhcnJvd19sb2MpDQo+PiArCQkgICAgIGxvY2F0aW9uX3QgY29tcG9u ZW50X2xvYywgbG9jYXRpb25fdCBhcnJvd19sb2MsDQo+PiArCQkgICAgIGJvb2wgaGFuZGxlX2Nv dW50ZWRfYnkpDQo+PiAgew0KPj4gICAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChkYXR1bSk7DQo+ PiAgICBlbnVtIHRyZWVfY29kZSBjb2RlID0gVFJFRV9DT0RFICh0eXBlKTsNCj4+IEBAIC0yNjI2 LDcgKzI3MjcsMTMgQEAgYnVpbGRfY29tcG9uZW50X3JlZiAobG9jYXRpb25fdCBsb2MsIHRyZWUg ZGF0dW0sIHRyZWUgY29tcG9uZW50LA0KPj4gIAkgIGludCBxdWFsczsNCj4+ICAJICB0cmVlIHN1 YnR5cGU7DQo+PiAgCSAgYm9vbCB1c2VfZGF0dW1fcXVhbHM7DQo+PiAtDQo+PiArCSAgdHJlZSBj b3VudGVkX2J5X3R5cGUgPSBOVUxMX1RSRUU7DQo+PiArCSAgLyogRG8gbm90IGhhbmRsZSBjb3Vu dGVkX2J5IHdoZW4gaW4gdHlwZW9mIGFuZCBhbGlnbm9mIG9wZXJhdG9yLiAgKi8NCj4+ICsJICBo YW5kbGVfY291bnRlZF9ieSA9IGhhbmRsZV9jb3VudGVkX2J5ICYmICFpbl90eXBlb2YgJiYgIWlu X2FsaWdub2Y7DQo+PiArCSAgdHJlZSBjb3VudGVkX2J5X3JlZiA9IGhhbmRsZV9jb3VudGVkX2J5 DQo+PiArCQkJCT8gYnVpbGRfY291bnRlZF9ieV9yZWYgKGRhdHVtLCBzdWJkYXR1bSwNCj4+ICsJ CQkJCQkJJmNvdW50ZWRfYnlfdHlwZSkNCj4+ICsJCQkJOiBOVUxMX1RSRUU7DQo+PiAgCSAgaWYg KFRSRUVfVFlQRSAoc3ViZGF0dW0pID09IGVycm9yX21hcmtfbm9kZSkNCj4+ICAJICAgIHJldHVy biBlcnJvcl9tYXJrX25vZGU7DQo+PiAgQEAgLTI2NDUsNiArMjc1MiwxMiBAQCBidWlsZF9jb21w b25lbnRfcmVmIChsb2NhdGlvbl90IGxvYywgdHJlZSBkYXR1bSwgdHJlZSBjb21wb25lbnQsDQo+ PiAgCSAgcmVmID0gYnVpbGQzIChDT01QT05FTlRfUkVGLCBzdWJ0eXBlLCBkYXR1bSwgc3ViZGF0 dW0sDQo+PiAgCQkJTlVMTF9UUkVFKTsNCj4+ICAJICBTRVRfRVhQUl9MT0NBVElPTiAocmVmLCBs b2MpOw0KPj4gKw0KPj4gKwkgIGlmIChjb3VudGVkX2J5X3JlZikNCj4+ICsJICAgIHJlZiA9IGJ1 aWxkX2FjY2Vzc193aXRoX3NpemVfZm9yX2NvdW50ZWRfYnkgKGxvYywgcmVmLA0KPj4gKwkJCQkJ CQkgY291bnRlZF9ieV9yZWYsDQo+PiArCQkJCQkJCSBjb3VudGVkX2J5X3R5cGUpOw0KPj4gKw0K Pj4gIAkgIGlmIChUUkVFX1JFQURPTkxZIChzdWJkYXR1bSkNCj4+ICAJICAgICAgfHwgKHVzZV9k YXR1bV9xdWFscyAmJiBUUkVFX1JFQURPTkxZIChkYXR1bSkpKQ0KPj4gIAkgICAgVFJFRV9SRUFE T05MWSAocmVmKSA9IDE7DQo+PiBAQCAtNTA0OCw3ICs1MTYxLDExIEBAIGJ1aWxkX3VuYXJ5X29w IChsb2NhdGlvbl90IGxvY2F0aW9uLCBlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHhhcmcsDQo+ PiAgCSAgZ290byByZXR1cm5fYnVpbGRfdW5hcnlfb3A7DQo+PiAgCX0NCj4+ICAtICAgICAgLyog T3JkaW5hcnkgY2FzZTsgYXJnIGlzIGEgQ09NUE9ORU5UX1JFRiBvciBhIGRlY2wuICAqLw0KPj4g KyAgICAgIC8qIE9yZGluYXJ5IGNhc2U7IGFyZyBpcyBhIENPTVBPTkVOVF9SRUYgb3IgYSBkZWNs LG9yIGEgY2FsbCB0bw0KPj4gKwkgLkFDQ0VTU19XSVRIX1NJWkUuICAqLw0KPj4gKyAgICAgIGlm IChpc19hY2Nlc3Nfd2l0aF9zaXplX3AgKGFyZykpDQo+PiArCWFyZyA9IFRSRUVfT1BFUkFORCAo VFJFRV9PUEVSQU5EIChDQUxMX0VYUFJfQVJHIChhcmcsIDApLCAwKSwgMCk7DQo+PiArDQo+PiAg ICAgICAgYXJndHlwZSA9IFRSRUVfVFlQRSAoYXJnKTsNCj4+ICAgICAgICAgIC8qIElmIHRoZSBs dmFsdWUgaXMgY29uc3Qgb3Igdm9sYXRpbGUsIG1lcmdlIHRoYXQgaW50byB0aGUgdHlwZQ0KPj4g QEAgLTUxOTUsNiArNTMxMiw5IEBAIGx2YWx1ZV9wIChjb25zdF90cmVlIHJlZikNCj4+ICAgICAg Y2FzZSBCSU5EX0VYUFI6DQo+PiAgICAgICAgcmV0dXJuIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChy ZWYpKSA9PSBBUlJBWV9UWVBFOw0KPj4gICsgICAgY2FzZSBDQUxMX0VYUFI6DQo+PiArICAgICAg cmV0dXJuIGlzX2FjY2Vzc193aXRoX3NpemVfcCAocmVmKTsNCj4+ICsNCj4+ICAgICAgZGVmYXVs dDoNCj4+ICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiAgICAgIH0NCj4+IGRpZmYgLS1naXQgYS9n Y2MvaW50ZXJuYWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4+IGluZGV4IGEwN2YyNWYz YWVlMy4uMzMxZGZlNTc4NzliIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmNjDQo+ PiArKysgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4+IEBAIC0zMzkzLDYgKzMzOTMsNDIgQEAgZXhw YW5kX0RFRkVSUkVEX0lOSVQgKGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCkNCj4+ICAgICAgfQ0K Pj4gIH0NCj4+ICArLyogRXhwYW5kIHRoZSBJRk5fQUNDRVNTX1dJVEhfU0laRSBmdW5jdGlvbjoN Cj4+ICsgICBBQ0NFU1NfV0lUSF9TSVpFIChSRUZfVE9fT0JKLCBSRUZfVE9fU0laRSwgQ0xBU1Nf T0ZfU0laRSwNCj4+ICsJCSAgICAgVFlQRV9PRl9TSVpFLCBBQ0NFU1NfTU9ERSkNCj4+ICsgICB3 aGljaCByZXR1cm5zIHRoZSBSRUZfVE9fT0JKIHNhbWUgYXMgdGhlIDFzdCBhcmd1bWVudDsNCj4+ ICsNCj4+ICsgICAxc3QgYXJndW1lbnQgUkVGX1RPX09CSjogVGhlIHJlZmVyZW5jZSB0byB0aGUg b2JqZWN0Ow0KPj4gKyAgIDJuZCBhcmd1bWVudCBSRUZfVE9fU0laRTogVGhlIHJlZmVyZW5jZSB0 byB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0LA0KPj4gKyAgIDNyZCBhcmd1bWVudCBDTEFTU19PRl9T SVpFOiBUaGUgc2l6ZSByZWZlcmVuY2VkIGJ5IHRoZSBSRUZfVE9fU0laRSByZXByZXNlbnRzDQo+ PiArICAgICAwOiB1bmtub3duOw0KPj4gKyAgICAgMTogdGhlIG51bWJlciBvZiB0aGUgZWxlbWVu dHMgb2YgdGhlIG9iamVjdCB0eXBlOw0KPj4gKyAgICAgMjogdGhlIG51bWJlciBvZiBieXRlczsN Cj4gDQo+IElzIHRoZXJlIHZhbHVlIGluIGVtaXR0aW5nIEFDQ0VTU19XSVRIX1NJWkUgZm9yIENM QVNTX09GX1NJWkUgPT0gMCwgc2luY2UgaXQnbGwganVzdCBiZSBpZ25vcmVkPw0KWWVzLCB5b3Ug YXJlIHJpZ2h0LCBsb29rcyBsaWtlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSDigJx1bmtub3du 4oCdIHR5cGUuIA0KTWF5YmUgaXTigJlzIGJldHRlciB0byBjaGFuZ2UgdGhpcyBhcmd1bWVudCBh cyB0aGUgZm9sbG93aW5nOg0KDQorICAgM3JkIGFyZ3VtZW50IElTX1NJWkVfTlVNX0VMRU1FTlRT OiBUUlVFIGlmIHRoZSBzaXplIHJlZmVyZW5jZWQgYnkgdGhlIFJFRl9UT19TSVpFIHJlcHJlc2Vu dHMNCisgICAgICAgICB0aGUgbnVtYmVyIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgb2JqZWN0IHR5 cGU7IG90aGVyd2lzZSwgaXTigJlzIHRoZSBudW1iZXIgb2YgYnl0ZXMuDQoNClRoYW5rcy4NCg0K UWluZw0KDQo+IA0KPj4gKyAgIDR0aCBhcmd1bWVudCBUWVBFX09GX1NJWkU6IEEgY29uc3RhbnQg MCB3aXRoIHRoZSBUWVBFIG9mIHRoZSBvYmplY3QNCj4+ICsgICAgIHJlZmVkIGJ5IFJFRl9UT19T SVpFDQo+PiArICAgNXRoIGFyZ3VtZW50IEFDQ0VTU19NT0RFOg0KPj4gKyAgICAtMTogVW5rbm93 biBhY2Nlc3Mgc2VtYW50aWNzDQo+PiArICAgICAwOiBub25lDQo+PiArICAgICAxOiByZWFkX29u bHkNCj4+ICsgICAgIDI6IHdyaXRlX29ubHkNCj4+ICsgICAgIDM6IHJlYWRfd3JpdGUNCj4+ICsN Cj4+ICsgICBCb3RoIHRoZSByZXR1cm4gdHlwZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFy Z3VtZW50IG9mIHRoaXMNCj4+ICsgICBmdW5jdGlvbiBoYXZlIGJlZW4gY29udmVydGVkIGZyb20g dGhlIGluY29tcGxldGUgYXJyYXkgdHlwZSB0bw0KPj4gKyAgIHRoZSBjb3JyZXNwb25kaW5nIHBv aW50ZXIgdHlwZS4NCj4+ICsNCj4+ICsgICBGb3IgZWFjaCBjYWxsIHRvIGEgLkFDQ0VTU19XSVRI X1NJWkUsIHJlcGxhY2UgaXQgd2l0aCBpdHMgMXN0IGFyZ3VtZW50LiAgKi8NCj4+ICtzdGF0aWMg dm9pZA0KPj4gK2V4cGFuZF9BQ0NFU1NfV0lUSF9TSVpFIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0 bXQpDQo+PiArew0KPj4gKyAgdHJlZSBsaHMgPSBnaW1wbGVfY2FsbF9saHMgKHN0bXQpOw0KPj4g KyAgdHJlZSByZWZfdG9fb2JqID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAwKTsNCj4+ICsgIGlm IChsaHMpDQo+PiArICAgIGV4cGFuZF9hc3NpZ25tZW50IChsaHMsIHJlZl90b19vYmosIGZhbHNl KTsNCj4+ICsgIGVsc2UNCj4+ICsgICAgZW1pdF9pbnNuIChleHBhbmRfbm9ybWFsIChyZWZfdG9f b2JqKSk7DQo+PiArfQ0KPj4gKw0KPj4gIC8qIFRoZSBzaXplIG9mIGFuIE9wZW5BQ0MgY29tcHV0 ZSBkaW1lbnNpb24uICAqLw0KPj4gICAgc3RhdGljIHZvaWQNCj4+IGRpZmYgLS1naXQgYS9nY2Mv aW50ZXJuYWwtZm4uZGVmIGIvZ2NjL2ludGVybmFsLWZuLmRlZg0KPj4gaW5kZXggYzE0ZDMwMzY1 YzE0Li4wODAxYzhiZmU2MWQgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ PiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+PiBAQCAtNTEwLDYgKzUxMCwxMCBAQCBERUZf SU5URVJOQUxfRk4gKFBISSwgMCwgTlVMTCkNCj4+ICAgICBhdXRvbWF0aWMgdmFyaWFibGUuICAq Lw0KPj4gIERFRl9JTlRFUk5BTF9GTiAoREVGRVJSRURfSU5JVCwgRUNGX0NPTlNUIHwgRUNGX0xF QUYgfCBFQ0ZfTk9USFJPVywgTlVMTCkNCj4+ICArLyogQSBmdW5jdGlvbiB0byBhc3NvY2lhdGUg dGhlIGFjY2VzcyBzaXplIGFuZCBhY2Nlc3MgbW9kZSBpbmZvcm1hdGlvbg0KPj4gKyAgIHdpdGgg dGhlIGNvcnJlc3BvbmRpbmcgcmVmZXJlbmNlIHRvIGFuIG9iamVjdC4gICovDQo+PiArREVGX0lO VEVSTkFMX0ZOIChBQ0NFU1NfV0lUSF9TSVpFLCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxM KQ0KPj4gKw0KPj4gIC8qIERJTV9TSVpFIGFuZCBESU1fUE9TIHJldHVybiB0aGUgc2l6ZSBvZiBh IHBhcnRpY3VsYXIgY29tcHV0ZQ0KPj4gICAgIGRpbWVuc2lvbiBhbmQgdGhlIGV4ZWN1dGluZyB0 aHJlYWQncyBwb3NpdGlvbiB3aXRoaW4gdGhhdA0KPj4gICAgIGRpbWVuc2lvbi4gIERJTV9QT1Mg aXMgcHVyZSAoYW5kIG5vdCBjb25zdCkgc28gdGhhdCBpdCBpc24ndA0KPj4gZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0yLmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9mbGV4LWFycmF5LWNvdW50ZWQtYnktMi5jDQo+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NDg5OWFlNjIwZjMNCj4+IC0tLSAvZGV2 L251bGwNCj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1i eS0yLmMNCj4+IEBAIC0wLDAgKzEsMTEyIEBADQo+PiArLyogdGVzdCB0aGUgY29kZSBnZW5lcmF0 aW9uIGZvciB0aGUgbmV3IGF0dHJpYnV0ZSBjb3VudGVkX2J5Lg0KPj4gKyAgIGFuZCBhbHNvIHRo ZSBvZmZzZXRvZiBvcGVyYXRvciBvbiBzdWNoIGFycmF5LiAgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1 biB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0g Ki8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+PiArDQo+PiArc3RydWN0IGFubm90 YXRlZCB7DQo+PiArICBpbnQgYjsNCj4+ICsgIGNoYXIgY1tdIF9fYXR0cmlidXRlX18gKChjb3Vu dGVkX2J5IChiKSkpOw0KPj4gK30gKmFycmF5X2Fubm90YXRlZDsNCj4+ICsNCj4+ICtzdGF0aWMg c3RydWN0IGFubm90YXRlZCBzdGF0aWNfYW5ub3RhdGVkID0geyBzaXplb2YgImhlbGxvIiwgImhl bGxvIiB9Ow0KPj4gK3N0YXRpYyBjaGFyICp5ID0gc3RhdGljX2Fubm90YXRlZC5jOw0KPj4gKw0K Pj4gK3N0cnVjdCBmbGV4IHsNCj4+ICsgIGludCBiOw0KPj4gKyAgY2hhciBjW107DQo+PiArfTsN Cj4+ICsNCj4+ICtzdHJ1Y3QgbmVzdGVkX2Fubm90YXRlZCB7DQo+PiArICBzdHJ1Y3Qgew0KPj4g KyAgICB1bmlvbiB7DQo+PiArICAgICAgaW50IGI7DQo+PiArICAgICAgZmxvYXQgZjsJDQo+PiAr ICAgIH07DQo+PiArICAgIGludCBuOw0KPj4gKyAgfTsNCj4+ICsgIGNoYXIgY1tdIF9fYXR0cmli dXRlX18gKChjb3VudGVkX2J5IChiKSkpOw0KPj4gK30gKmFycmF5X25lc3RlZF9hbm5vdGF0ZWQ7 DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBuZXN0ZWRfYW5ub3RhdGVkIG5lc3RlZF9zdGF0aWNf YW5ub3RhdGVkDQo+PiArCQkJCSA9IHsgc2l6ZW9mICJoZWxsbzEiLCAwLCAiaGVsbG8xIiB9Ow0K Pj4gK3N0YXRpYyBjaGFyICpuZXN0ZWRfeSA9IG5lc3RlZF9zdGF0aWNfYW5ub3RhdGVkLmM7DQo+ PiArDQo+PiArc3RydWN0IG5lc3RlZF9mbGV4IHsNCj4+ICsgIHN0cnVjdCB7DQo+PiArICAgIHVu aW9uIHsNCj4+ICsgICAgICBpbnQgYjsNCj4+ICsgICAgICBmbG9hdCBmOwkNCj4+ICsgICAgfTsN Cj4+ICsgICAgaW50IG47DQo+PiArICB9Ow0KPj4gKyAgY2hhciBjW107DQo+PiArfTsNCj4+ICsN Cj4+ICt2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHNldHVwIChpbnQgbm9ybWFs X2NvdW50LCBpbnQgYXR0cl9jb3VudCkNCj4+ICt7DQo+PiArICBhcnJheV9hbm5vdGF0ZWQNCj4+ ICsgICAgPSAoc3RydWN0IGFubm90YXRlZCAqKW1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgYW5ub3Rh dGVkKQ0KPj4gKwkJCQkgICsgYXR0cl9jb3VudCAqICBzaXplb2YgKGNoYXIpKTsNCj4+ICsgIGFy cmF5X2Fubm90YXRlZC0+YiA9IGF0dHJfY291bnQ7DQo+PiArDQo+PiArICBhcnJheV9uZXN0ZWRf YW5ub3RhdGVkDQo+PiArICAgID0gKHN0cnVjdCBuZXN0ZWRfYW5ub3RhdGVkICopbWFsbG9jIChz aXplb2YgKHN0cnVjdCBuZXN0ZWRfYW5ub3RhdGVkKQ0KPj4gKwkJCQkJICsgYXR0cl9jb3VudCAq ICBzaXplb2YgKGNoYXIpKTsNCj4+ICsgIGFycmF5X25lc3RlZF9hbm5vdGF0ZWQtPmIgPSBhdHRy X2NvdW50Ow0KPj4gKw0KPj4gKyAgcmV0dXJuOw0KPj4gK30NCj4+ICsNCj4+ICt2b2lkIF9fYXR0 cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHRlc3QgKGNoYXIgYSwgY2hhciBiKQ0KPj4gK3sNCj4+ ICsgIGlmIChfX2J1aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBhbm5vdGF0ZWQsIGNbMF0pDQo+PiAr ICAgICAgIT0gX19idWlsdGluX29mZnNldG9mIChzdHJ1Y3QgZmxleCwgY1swXSkpDQo+PiArICAg IGFib3J0ICgpOw0KPj4gKyAgaWYgKF9fYnVpbHRpbl9vZmZzZXRvZiAoc3RydWN0IGFubm90YXRl ZCwgY1sxXSkNCj4+ICsgICAgICAhPSBfX2J1aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBmbGV4LCBj WzFdKSkNCj4+ICsgICAgYWJvcnQgKCk7DQo+PiArICBpZiAoX19idWlsdGluX29mZnNldG9mIChz dHJ1Y3QgbmVzdGVkX2Fubm90YXRlZCwgY1swXSkNCj4+ICsgICAgICAhPSBfX2J1aWx0aW5fb2Zm c2V0b2YgKHN0cnVjdCBuZXN0ZWRfZmxleCwgY1swXSkpDQo+PiArICAgIGFib3J0ICgpOw0KPj4g KyAgaWYgKF9fYnVpbHRpbl9vZmZzZXRvZiAoc3RydWN0IG5lc3RlZF9hbm5vdGF0ZWQsIGNbMV0p DQo+PiArICAgICAgIT0gX19idWlsdGluX29mZnNldG9mIChzdHJ1Y3QgbmVzdGVkX2ZsZXgsIGNb MV0pKQ0KPj4gKyAgICBhYm9ydCAoKTsNCj4+ICsNCj4+ICsgIGlmIChfX2J1aWx0aW5fdHlwZXNf Y29tcGF0aWJsZV9wICh0eXBlb2YgKGFycmF5X2Fubm90YXRlZC0+YyksDQo+PiArCQkJCSAgICB0 eXBlb2YgKCYoYXJyYXlfYW5ub3RhdGVkLT5jKVswXSkpKQ0KPj4gKyAgICBhYm9ydCAoKTsNCj4+ ICsgIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wICh0eXBlb2YgKGFycmF5X25lc3Rl ZF9hbm5vdGF0ZWQtPmMpLA0KPj4gKwkJCQkgICAgdHlwZW9mICgmKGFycmF5X25lc3RlZF9hbm5v dGF0ZWQtPmMpWzBdKSkpDQo+PiArICAgIGFib3J0ICgpOw0KPj4gKw0KPj4gKyAgaWYgKF9fYWxp Z25vZiAoYXJyYXlfYW5ub3RhdGVkLT5jKSAhPSBfX2FsaWdub2YgKGNoYXIpKQ0KPj4gKyAgICBh Ym9ydCAoKTsNCj4+ICsgIGlmIChfX2FsaWdub2YgKGFycmF5X25lc3RlZF9hbm5vdGF0ZWQtPmMp ICE9IF9fYWxpZ25vZiAoY2hhcikpDQo+PiArICAgIGFib3J0ICgpOw0KPj4gKw0KPj4gKyAgaWYg KCh1bnNpZ25lZCBsb25nKSBhcnJheV9hbm5vdGF0ZWQtPmMgIT0gKHVuc2lnbmVkIGxvbmcpICZh cnJheV9hbm5vdGF0ZWQtPmMpDQo+PiArICAgIGFib3J0ICgpOw0KPj4gKyAgaWYgKCh1bnNpZ25l ZCBsb25nKSBhcnJheV9uZXN0ZWRfYW5ub3RhdGVkLT5jDQo+PiArICAgICAgICE9ICh1bnNpZ25l ZCBsb25nKSAmYXJyYXlfbmVzdGVkX2Fubm90YXRlZC0+YykNCj4+ICsgICAgYWJvcnQgKCk7DQo+ PiArDQo+PiArICBhcnJheV9hbm5vdGF0ZWQtPmNbMl0gPSBhOw0KPj4gKyAgYXJyYXlfbmVzdGVk X2Fubm90YXRlZC0+Y1szXSA9IGI7DQo+PiArDQo+PiArICBpZiAoeVsyXSAhPSAnbCcpIGFib3J0 ICgpOw0KPj4gKyAgaWYgKG5lc3RlZF95WzRdICE9J28nKSBhYm9ydCAoKTsNCj4+ICsNCj4+ICt9 DQo+PiArDQo+PiAraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+ICt7DQo+PiAr ICBzZXR1cCAoMTAsMTApOw0KPj4gKyAgdGVzdCAoJ0EnLCAnQicpOw0KPj4gKyAgaWYgKGFycmF5 X2Fubm90YXRlZC0+Y1syXSAhPSAnQScpIGFib3J0ICgpOw0KPj4gKyAgaWYgKGFycmF5X25lc3Rl ZF9hbm5vdGF0ZWQtPmNbM10gIT0gJ0InKSBhYm9ydCAoKTsNCj4+ICsgIHJldHVybiAwOw0KPj4g K30NCj4+ICsNCj4+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkFDQ0VT U19XSVRIX1NJWkUiIDggIm9yaWdpbmFsIiB9IH0gKi8NCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJl ZS1zc2EtYWxpYXMuY2MgYi9nY2MvdHJlZS1zc2EtYWxpYXMuY2MNCj4+IGluZGV4IGU3YzFjMWFh NjI0My4uOGMwNzBlMTczYmRkIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3RyZWUtc3NhLWFsaWFzLmNj DQo+PiArKysgYi9nY2MvdHJlZS1zc2EtYWxpYXMuY2MNCj4+IEBAIC0yODIzLDYgKzI4MjMsNyBA QCByZWZfbWF5YmVfdXNlZF9ieV9jYWxsX3BfMSAoZ2NhbGwgKmNhbGwsIGFvX3JlZiAqcmVmLCBi b29sIHRiYWFfcCkNCj4+ICAJcmV0dXJuIGZhbHNlOw0KPj4gICAgICAgIGNhc2UgSUZOX01BU0tf U1RPUkVfTEFORVM6DQo+PiAgICAgICAgY2FzZSBJRk5fTUFTS19MRU5fU1RPUkVfTEFORVM6DQo+ PiArICAgICAgY2FzZSBJRk5fQUNDRVNTX1dJVEhfU0laRToNCj4+ICAJZ290byBwcm9jZXNzX2Fy Z3M7DQo+PiAgICAgICAgY2FzZSBJRk5fTUFTS19MT0FEOg0KPj4gICAgICAgIGNhc2UgSUZOX0xF Tl9MT0FEOg0KPj4gQEAgLTMwNzMsNiArMzA3NCw3IEBAIGNhbGxfbWF5X2Nsb2JiZXJfcmVmX3Bf MSAoZ2NhbGwgKmNhbGwsIGFvX3JlZiAqcmVmLCBib29sIHRiYWFfcCkNCj4+ICAgICAgICBjYXNl IElGTl9VQlNBTl9PQkpFQ1RfU0laRToNCj4+ICAgICAgICBjYXNlIElGTl9VQlNBTl9QVFI6DQo+ PiAgICAgICAgY2FzZSBJRk5fQVNBTl9DSEVDSzoNCj4+ICsgICAgICBjYXNlIElGTl9BQ0NFU1Nf V0lUSF9TSVpFOg0KPj4gIAlyZXR1cm4gZmFsc2U7DQo+PiAgICAgICAgY2FzZSBJRk5fTUFTS19T VE9SRToNCj4+ICAgICAgICBjYXNlIElGTl9MRU5fU1RPUkU6DQo+PiBkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtc3NhLWRjZS5jYyBiL2djYy90cmVlLXNzYS1kY2UuY2MNCj4+IGluZGV4IDYzNmM0NzFk NGM4OS4uYTU0ZmIxYjc1NGRkIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3RyZWUtc3NhLWRjZS5jYw0K Pj4gKysrIGIvZ2NjL3RyZWUtc3NhLWRjZS5jYw0KPj4gQEAgLTE0NTksOCArMTQ1OSw4IEBAIGVs aW1pbmF0ZV91bm5lY2Vzc2FyeV9zdG10cyAoYm9vbCBhZ2dyZXNzaXZlKQ0KPj4gIAkJICB1cGRh dGVfc3RtdCAoc3RtdCk7DQo+PiAgCQkgIHJlbGVhc2Vfc3NhX25hbWUgKG5hbWUpOw0KPj4gIC0J CSAgLyogR09NUF9TSU1EX0xBTkUgKHVubGVzcyB0aHJlZSBhcmd1bWVudCkgb3IgQVNBTl9QT0lT T04NCj4+IC0JCSAgICAgd2l0aG91dCBsaHMgaXMgbm90IG5lZWRlZC4gICovDQo+PiArCQkgIC8q IEdPTVBfU0lNRF9MQU5FICh1bmxlc3MgdGhyZWUgYXJndW1lbnQpLCBBU0FOX1BPSVNPTg0KPj4g KwkJICAgICBvciAuQUNDRVNTX1dJVEhfU0laRSB3aXRob3V0IGxocyBpcyBub3QgbmVlZGVkLiAg Ki8NCj4+ICAJCSAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQpKQ0KPj4gIAkJICAg IHN3aXRjaCAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKHN0bXQpKQ0KPj4gIAkJICAgICAgew0K Pj4gQEAgLTE0NzAsNiArMTQ3MCw3IEBAIGVsaW1pbmF0ZV91bm5lY2Vzc2FyeV9zdG10cyAoYm9v bCBhZ2dyZXNzaXZlKQ0KPj4gIAkJCSAgYnJlYWs7DQo+PiAgCQkJLyogRkFMTFRIUlUgKi8NCj4+ ICAJCSAgICAgIGNhc2UgSUZOX0FTQU5fUE9JU09OOg0KPj4gKwkJICAgICAgY2FzZSBJRk5fQUND RVNTX1dJVEhfU0laRToNCj4+ICAJCQlyZW1vdmVfZGVhZF9zdG10ICgmZ3NpLCBiYiwgdG9fcmVt b3ZlX2VkZ2VzKTsNCj4+ICAJCQlicmVhazsNCj4+ICAJCSAgICAgIGRlZmF1bHQ6DQo+PiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUuY2MgYi9nY2MvdHJlZS5jYw0KPj4gaW5kZXggM2RmZjhjNTEwODMy Li4xOGI0ZTcyOWE1YmMgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS5jYw0KPj4gKysrIGIvZ2Nj L3RyZWUuY2MNCj4+IEBAIC00MDY4LDcgKzQwNjgsOCBAQCBwcm9jZXNzX2NhbGxfb3BlcmFuZHMg KHRyZWUgdCkNCj4+ICAgIGludCBpID0gY2FsbF9leHByX2ZsYWdzICh0KTsNCj4+ICAgICAgLyog Q2FsbHMgaGF2ZSBzaWRlLWVmZmVjdHMsIGV4Y2VwdCB0aG9zZSB0byBjb25zdCBvciBwdXJlIGZ1 bmN0aW9ucy4gICovDQo+PiAtICBpZiAoKGkgJiBFQ0ZfTE9PUElOR19DT05TVF9PUl9QVVJFKSB8 fCAhKGkgJiAoRUNGX0NPTlNUIHwgRUNGX1BVUkUpKSkNCj4+ICsgIGlmICgoaSAmIEVDRl9MT09Q SU5HX0NPTlNUX09SX1BVUkUpDQo+PiArICAgICAgfHwgKCEoaSAmIChFQ0ZfQ09OU1QgfCBFQ0Zf UFVSRSkpICYmICFpc19hY2Nlc3Nfd2l0aF9zaXplX3AgKHQpKSkNCj4+ICAgICAgc2lkZV9lZmZl Y3RzID0gdHJ1ZTsNCj4+ICAgIC8qIFByb3BhZ2F0ZSBUUkVFX1JFQURPTkxZIG9mIGFyZ3VtZW50 cyBmb3IgY29uc3QgZnVuY3Rpb25zLiAgKi8NCj4+ICAgIGlmIChpICYgRUNGX0NPTlNUKQ0KPj4g QEAgLTEzMzYyLDYgKzEzMzYzLDI4IEBAIGNvbXBvbmVudF9yZWZfc2l6ZSAodHJlZSByZWYsIHNw ZWNpYWxfYXJyYXlfbWVtYmVyICpzYW0gLyogPSBOVUxMICovKQ0KPj4gIAkgID8gTlVMTF9UUkVF IDogc2l6ZV96ZXJvX25vZGUpOw0KPj4gIH0NCj4+ICArLyogUmV0dXJuIHRydWUgaWYgdGhlIGdp dmVuIG5vZGUgQ0FMTCBpcyBhIGNhbGwgdG8gYSAuQUNDRVNTX1dJVEhfU0laRQ0KPj4gKyAgIGZ1 bmN0aW9uLiAgKi8NCj4+ICtib29sDQo+PiAraXNfYWNjZXNzX3dpdGhfc2l6ZV9wIChjb25zdF90 cmVlIGNhbGwpDQo+PiArew0KPj4gKyAgaWYgKFRSRUVfQ09ERSAoY2FsbCkgIT0gQ0FMTF9FWFBS KQ0KPj4gKyAgICByZXR1cm4gZmFsc2U7DQo+PiArICBpZiAoQ0FMTF9FWFBSX0lGTiAoY2FsbCkg PT0gSUZOX0FDQ0VTU19XSVRIX1NJWkUpDQo+PiArICAgIHJldHVybiB0cnVlOw0KPj4gKyAgcmV0 dXJuIGZhbHNlOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcgcmVm ZXJlbmNlIGZyb20gdGhlIGNhbGwgdG8gYSAuQUNDRVNTX1dJVEhfU0laRS4NCj4+ICsgKiBpLmUg dGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoaXMgY2FsbC4gcmV0dXJuIE5VTExfVFJFRSBvdGhlcndp c2UuICAqLw0KPj4gK3RyZWUNCj4+ICtnZXRfcmVmX2Zyb21fYWNjZXNzX3dpdGhfc2l6ZSAodHJl ZSBjYWxsKQ0KPj4gK3sNCj4+ICsgIGlmIChpc19hY2Nlc3Nfd2l0aF9zaXplX3AgKGNhbGwpKQ0K Pj4gKyAgICByZXR1cm4gIENBTExfRVhQUl9BUkcgKGNhbGwsIDApOw0KPj4gKyAgcmV0dXJuIE5V TExfVFJFRTsNCj4+ICt9DQo+PiArDQo+PiAgLyogUmV0dXJuIHRoZSBtYWNoaW5lIG1vZGUgb2Yg VC4gIEZvciB2ZWN0b3JzLCByZXR1cm5zIHRoZSBtb2RlIG9mIHRoZQ0KPj4gICAgIGlubmVyIHR5 cGUuICBUaGUgbWFpbiB1c2UgY2FzZSBpcyB0byBmZWVkIHRoZSByZXN1bHQgdG8gSE9OT1JfTkFO UywNCj4+ICAgICBhdm9pZGluZyB0aGUgQkxLbW9kZSB0aGF0IGEgZGlyZWN0IFRZUEVfTU9ERSAo VCkgbWlnaHQgcmV0dXJuLiAgKi8NCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3Ry ZWUuaA0KPj4gaW5kZXggOTcyYTA2N2ExZjdhLi43MzQ2NGQzZTNhZTMgMTAwNjQ0DQo+PiAtLS0g YS9nY2MvdHJlZS5oDQo+PiArKysgYi9nY2MvdHJlZS5oDQo+PiBAQCAtNTc2MCw2ICs1NzYwLDE0 IEBAIGV4dGVybiBzcGVjaWFsX2FycmF5X21lbWJlciBjb21wb25lbnRfcmVmX3NhbV90eXBlICh0 cmVlKTsNCj4+ICAgICBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4gICovDQo+PiAgZXh0ZXJuIHRyZWUg Y29tcG9uZW50X3JlZl9zaXplICh0cmVlLCBzcGVjaWFsX2FycmF5X21lbWJlciAqID0gTlVMTCk7 DQo+PiAgKy8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBub2RlIGlzIGEgY2FsbCB0byBhIC5B Q0NFU1NfV0lUSF9TSVpFDQo+PiArICAgZnVuY3Rpb24uICAqLw0KPj4gK2V4dGVybiBib29sIGlz X2FjY2Vzc193aXRoX3NpemVfcCAoY29uc3RfdHJlZSk7DQo+PiArDQo+PiArLyogR2V0IHRoZSBj b3JyZXNwb25kaW5nIHJlZmVyZW5jZSBmcm9tIHRoZSBjYWxsIHRvIGEgLkFDQ0VTU19XSVRIX1NJ WkUuDQo+PiArICogaS5lIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGlzIGNhbGwuIHJldHVybiBO VUxMX1RSRUUgb3RoZXJ3aXNlLiAgKi8NCj4+ICtleHRlcm4gdHJlZSBnZXRfcmVmX2Zyb21fYWNj ZXNzX3dpdGhfc2l6ZSAodHJlZSk7DQo+PiArDQo+PiAgZXh0ZXJuIGludCB0cmVlX21hcF9iYXNl X2VxIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7DQo+PiAgZXh0ZXJuIHVuc2lnbmVkIGlu dCB0cmVlX21hcF9iYXNlX2hhc2ggKGNvbnN0IHZvaWQgKik7DQo+PiAgZXh0ZXJuIGJvb2wgdHJl ZV9tYXBfYmFzZV9tYXJrZWRfcCAoY29uc3Qgdm9pZCAqKTsNCj4+IGRpZmYgLS1naXQgYS9nY2Mv dmFyYXNtLmNjIGIvZ2NjL3ZhcmFzbS5jYw0KPj4gaW5kZXggZmExN2VmZjU1MWU4Li4wZTZlNDRl MDQyMGMgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvdmFyYXNtLmNjDQo+PiArKysgYi9nY2MvdmFyYXNt LmNjDQo+PiBAQCAtNTA4Miw2ICs1MDgyLDExIEBAIGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlk X3BfMSAodHJlZSB2YWx1ZSwgdHJlZSBlbmR0eXBlLCB0cmVlICpjYWNoZSkNCj4+ICAJfQ0KPj4g ICAgICAgIHJldHVybiByZXQ7DQo+PiAgKyAgICBjYXNlIENBTExfRVhQUjoNCj4+ICsgICAgICAv KiBmb3IgYSBjYWxsIHRvIC5BQ0NFU1NfV0lUSF9TSVpFLCBjaGVjayB0aGUgZmlyc3QgYXJndW1l bnQuICAqLw0KPj4gKyAgICAgIGlmICh0cmVlIHJlZiA9IGdldF9yZWZfZnJvbV9hY2Nlc3Nfd2l0 aF9zaXplICh2YWx1ZSkpDQo+PiArCXJldHVybiBpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9w XzEgKHJlZiwgZW5kdHlwZSwgY2FjaGUpOw0KPj4gKyAgICAgIC8qIEZBTExUSFJPVUdILiAgKi8N Cj4+ICAgICAgZGVmYXVsdDoNCj4+ICAgICAgICBicmVhazsNCj4+ICAgICAgfQ0KPj4gQEAgLTUy NzYsNiArNTI4MSwxMSBAQCBvdXRwdXRfY29uc3RhbnQgKHRyZWUgZXhwLCB1bnNpZ25lZCBIT1NU X1dJREVfSU5UIHNpemUsIHVuc2lnbmVkIGludCBhbGlnbiwNCj4+ICAJZXhwID0gVFJFRV9PUEVS QU5EIChleHAsIDApOw0KPj4gICAgICB9DQo+PiAgKyAgLyogZm9yIGEgY2FsbCB0byAuQUNDRVNT X1dJVEhfU0laRSwgY2hlY2sgdGhlIGZpcnN0IGFyZ3VtZW50LiAgKi8NCj4+ICsgIGlmIChUUkVF X0NPREUgKGV4cCkgPT0gQ0FMTF9FWFBSKQ0KPj4gKyAgICBpZiAodHJlZSByZWYgPSBnZXRfcmVm X2Zyb21fYWNjZXNzX3dpdGhfc2l6ZSAoZXhwKSkNCj4+ICsgICAgICBleHAgPSByZWY7DQo+PiAr DQo+PiAgICBjb2RlID0gVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cCkpOw0KPj4gICAgdGhpc3Np emUgPSBpbnRfc2l6ZV9pbl9ieXRlcyAoVFJFRV9UWVBFIChleHApKTsNCj4+ICANCg0K